feat(ui): add @reui/onboarding-3 block and wire up the @reui registry - #6277
Open
forrestchang wants to merge 1 commit into
Open
feat(ui): add @reui/onboarding-3 block and wire up the @reui registry#6277forrestchang wants to merge 1 commit into
forrestchang wants to merge 1 commit into
Conversation
Adds the ReUI split-screen onboarding wizard block (six-step signup with a vertical stepper sidebar and animated dot-sphere canvas) via `pnpm dlx shadcn@latest add @reui/onboarding-3`, plus the repo wiring the install needed. Registry setup: - Register the authenticated `@reui` registry in packages/ui/components.json. - Add tsconfig paths for the bare `components` / `lib` aliases. shadcn resolves components.json aliases through package exports and tsconfig paths, and `@multica/ui/components` / `@multica/ui/lib` matched neither, so any registry item targeting those roots failed to install. - Flip `rsc` to true. With it false shadcn strips "use client" on the way in, which silently broke the client-only block files; 44 of 60 existing components in this package already carry the directive. - Export ./components/reui/* and ./components/blocks/* so the installed files resolve for consumers. Repo conformance fixes on the vendored output: - Satisfy noUncheckedIndexedAccess: non-empty tuple types for the cycled sphere/step constants, a guarded drop-file path, and a clamped unit index in formatBytes (which previously produced "1.5undefined" past YB). - Pass the `items` prop our Select requires as its single source of value labels. - Move off-scale font sizes onto the role-named type scale that apps/web/app/type-scale.test.ts enforces. The block is reference/demo UI and is not routed or imported by the product. Co-authored-by: multica-agent <github@multica.ai>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tests the ReUI install flow end-to-end and lands the block it produced. Ref MUL-5628.
The flow works, but not out of the box — three repo-config gaps blocked it and the vendored output needed conformance fixes before it would compile here.
What the install did
pnpm dlx shadcn@latest add @reui/onboarding-3frompackages/ui, answeringnto every overwrite prompt so local component customizations survive. It created 7 block files plus@reui/stepper,@reui/icon-stack, anduse-file-upload, and skipped the 15 base components (avatar,button,field,combobox,select, …) that already exist here — none were modified.Import rewriting worked cleanly:
@/components/ui/button→@multica/ui/components/ui/button. The registry's internal@/app/(create)/components/icon-placeholderplaceholder resolved into reallucide-reactimports from ouriconLibrarysetting.@hugeicons/*is a genuine new dependency — it supplies the brand icons (Google, LinkedIn, Reddit, YouTube) for the discovery-source step that lucide doesn't ship.Registry setup
@reuiregistry inpackages/ui/components.json.components/libaliases. The first install failed outright:Could not resolve the following aliases: components, lib. shadcn resolvescomponents.jsonaliases through workspace package exports and tsconfig paths, and@multica/ui/components/@multica/ui/libmatched neither (we export./components/ui/*and./lib/utils, but nothing at those roots). This blocks any registry item targeting those roots, not just this block.rsctotrue. With itfalse, shadcn strips"use client"on the way in. The first run silently landedonboarding.tsxanddot-sphere.tsx— bothuseState/useRef/canvas components — without the directive, which breaks them under the App Router. 44 of the 60 existing components in this package already carry it, sorsc: falsewas stale config../components/reui/*and./components/blocks/*so the installed files resolve for consumers.Conformance fixes on the vendored output
The block does not compile against this repo's settings as shipped:
noUncheckedIndexedAccess— 20 errors. Fixed with non-empty tuple types for the cycled sphere/step constants (readonly [T, ...T[]], so index 0 is a sound fallback), a guarded drop-file path, and a clamped unit index informatBytes, which previously returned"1.5undefined"for sizes past YB.Selectrequiresitems— our localselect.tsxdeliberately makes it required ("Base UI renders the raw value unless Root receives an items label map"). The block passed aSelectValuefunction child instead.apps/web/app/type-scale.test.tsflagged 15 off-scale sizes (text-xs,text-sm,text-2xl,text-[0.8125rem], …). Moved onto the role-named steps, droppingleading-*utilities that became redundant once the token supplied the same line-height.Verification
pnpm typecheck— 6/6 passpnpm lint— 0 errors. 4react-hooks/exhaustive-depswarnings remain inside the vendoredstepper.tsx/use-file-upload.ts; left as upstream ships them so future re-installs stay a clean diff.pnpm test—web22/22 (including the type-scale, text-contrast, and brand-variant guards),desktop47/47,docs4/4. The 8@multica/corefailures and theviewssidebar-resizefailure reproduce on a clean tree without this branch — pre-existing, unrelated.Notes for review
packages/ui/components/blocks/.packages/ui= "atomic UI components only" rule in CLAUDE.md. If you'd rather this live inpackages/views/, say so and I'll move it — it would mean hand-relocating on every re-install.REUI_LICENSE_KEYis a Pro credential. It stays inpackages/ui/.env.local(already covered by the.env*gitignore) or your shell; nothing secret is committed. Documented in the CLAUDE.md UI Rules section.