refactor: shadcn consistency audit — idioms, calendar v9, registry deps - #64
Merged
Merged
Conversation
Replace the raw Button with AlertDialogAction, move the description inside AlertDialogHeader to match the alert-dialog composition, and group exports at the bottom per shadcn convention. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Drop the stray displayName from badge-group, use namespace React imports in description-list, switch time to React.ComponentProps, replace the hand-rolled label in the password-input checkbox example with the Label component, and pass the phone-input render prop inline instead of wrapping it in useMemo. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The vendored copy still used the react-day-picker v8 classNames API (caption, nav_button, head_row, cell) whose keys don't exist in the installed v9, so every class was dead and the calendar rendered on v9 defaults. Replace it with the current base-nova calendar (getDefaultClassNames, --cell-size/--cell-radius, captionLayout, CalendarDayButton), resolving the site-internal IconPlaceholder to lucide chevrons and the unreleased cn-calendar-* utilities to their released equivalents. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
shimmer and scroll-fade-x ship in the released shadcn tailwind.css, so the animate-pulse substitute and the missing group scroll fade were over-substitutions; no-scrollbar stays in place of the still unreleased scrollbar-none. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
registryDependencies pointed at https://ui-x.junwen-k.dev/r/*.json, which no longer exists on next (no public/r output), breaking transitive resolution of shadcn add. Use the GitHub item address form (junwen-k/ui-x/<item>) shadcn documents for same-repo dependencies; plain shadcn item names are untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mark the Radix removal, component ports, demo rewrite and registry.json/install-docs items shipped (PR #63 and this branch). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Intl.DisplayNames resolves region names against the runtime ICU data, and Node and Chrome disagree on a few regions (e.g. FK renders as "Falkland Islands (Islas Malvinas)" on the server but "Falkland Islands" in the browser), causing a React hydration error. Use the static en locale labels from react-phone-number-input, which is already a dependency of phone-input-primitive. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Summary
Follow-up to #63: audited all 36 vendored
components/ui/files against the livebase-novaregistry payloads and every registry component/example against current shadcn writing idioms.Audit verdict: the vendored files are current within the limits of the released
shadcn@4.13.0package (live payloads reference unreleasedcn-*utilities we correctly substitute). Two real drifts and a handful of idiom violations were found and fixed:Fixes
caption,nav_button,head_row,cell) — dead keys against the installed v9.7.0, so the calendar rendered on v9 defaults. Rebuilt from the current base-nova calendar (getDefaultClassNames,--cell-size/--cell-radius,captionLayout,CalendarDayButton), withIconPlaceholderresolved to lucide chevrons and unreleasedcn-calendar-*utilities substituted with their released equivalents. Also wired therefupstream forgot, so the focus effect actually works.registryDependenciespointed at deadhttps://ui-x.junwen-k.dev/r/*.jsonURLs, breaking transitive resolution ofshadcn add junwen-k/ui-x/<item>. Switched all 14 refs to the documented GitHub item-address form (junwen-k/ui-x/<item>).shadcn registry validatepasses (26 items).shimmerandscroll-fade-x(both ship in releasedshadcn/tailwind.css; they'd been over-substituted).no-scrollbarstays in place of the unreleasedscrollbar-none.AlertDialogActioninstead of a rawButton; description moved insideAlertDialogHeader; exports grouped at the bottom.displayName(badge-group),import React→import * as React(description-list),ComponentPropsWithoutRef→ComponentProps(time), raw<label>→Label(password-input example),useMemo-wrapped render prop → inline (phone-input example).Verification
tsc --noEmitclean,shadcn registry validatepasses, prettier applied.Intl.DisplayNamesdisagreement ("Falkland Islands (Islas Malvinas)" vs "Falkland Islands") — replaced with the staticreact-phone-number-input/locale/enlabels (already a dependency).🤖 Generated with Claude Code