Repository navigation
feat: token contract, example truth and shadcn/ui structure parity - #47
Merged
Merged
Conversation
- autocomplete, combobox: drop upstream-removed aria labels - segmented-control: add indicator constants and current variants - tabs: import the indicator surface and keep reduced-motion guard - VERSION: re-pin the four items and bump fetched revision
Assert the pin record names every catalog Port, stays ordered and carries one sha256 per row without reaching coss.com.
…label and pagination Match upstream useRender + mergeProps plumbing on the 33 components that lost the render prop, keeping every class string and data-slot verbatim. Extend the render fixtures and install suite so a Consumer rendering a Card header, Dialog footer and Table as another element typechecks.
Add InputOTP, InputOTPGroup, InputOTPSlot and InputOTPSeparator over the Base UI OTP field. The indexed slot API maps to segments via maxLength, with coss styling and labels intact. Install fixture now typechecks a pasted shadcn/ui OTP snippet.
Context Menu, Combobox and Drawer parts now answer to shadcn/ui names. Synthesize AvatarBadge, CalendarDayButton, InputGroupButton, PopoverHeader, Select scroll buttons, buttonGroupVariants and tabsListVariants. Consumer fixture pastes each snippet and typechecks.
Add a Playwright harness that screenshots each Example's live docs preview, a manifest test that keeps coverage exact, and a non-blocking CI workflow that uploads the captures as artifacts.
Mark the preview wrapper rather than the whole card, and filter captures with VISUAL_EXAMPLES so a local run can check a few Examples first.
|
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.
Closes #35
Closes #36
Closes #37
Closes #38
Closes #39
Closes #40
Closes #41
Closes #42
Closes #43
Closes #44
Closes #45
Closes #46
What this fixes
State colour never worked.
success,warningandinfowere defined in the Base colors but never mapped in@theme, so Badge, Alert and Toast rendered colourless — and a consumer who installed a single component got no tokens at all.destructive-foregroundwas referenced in eight places and defined nowhere, which is whydestructive-outlinestayed black.Tokens now have one source. The Base color definitions drive the light/dark declarations, the
@themecolour mappings, the generated docs stylesheet and the per-item declarations, so a partial install is self-sufficient.destructive-foregroundjoins as the seventh state token.Examples now show the shipped design. The two Drawer footers and the Alert Dialog footer stopped overriding the default variant, close buttons and the Sheet footer came back, status dots use state tokens instead of
bg-emerald-500, and an allowlist test fails on any future override that isn't explained.Structure parity is restored:
renderreturned to 33 components, Alert Dialog gainedAction/Cancel/Media, shadcn/ui export names exist for pure renames,InputOTPhas a real indexed adapter, andtoastexposes shadcn's surface on Base UI's manager.sonneris absent and explained; 15 names are Pending;data-table,typographyanddate-pickerare Compositions;aspect-ratioanddirectionshipped.Fieldremains a deliberate divergence — shadcn'sFieldis a layout wrapper, ours isField.Root. It is documented, not aliased.Verification
bun run check— cleanbun run check-types— cleanbun test— 40 pass, 0 fail, 2742 assertionsbun run registry:build— clean, and the new sync step is idempotentNotes
Tableis a consumer-visible behaviour change:classNameandrendernow land on the rendered element, not the inner<table>.apps/web/public/r/**stays gitignored; the install suite rebuilds it.