Component primitives in-tree: Button / IconButton / Card / Badge / Avatar / Field / Input / Textarea / Select #139
Labels
No labels
area:auth
area:ci
area:db
area:infra
area:native
area:pwa
area:service
epic
feature
foundation
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
james/carol#139
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Every current UI surface uses inline styles. The Carol DS design package (
../carol-design/) is pixel-faithful to a primitive library:Button,IconButton,Card,Badge,Avatar,Field,Input,Textarea,Selecton day one (plusDialog,Toast,Tooltip,Progress,Tabslater). ADR-0012 implicitly punted "component library lands later" — this is the later.Scope
app/components/ui/, theme-token-driven via the new aliases from the token foundation ticket:Button— variantsprimary | secondary | ghost; sizessm | md | lg;leadingIcon/trailingIconslots;fullWidth.IconButton— same variants/sizes, single icon child, accessible label required.Card— surface + border + radius;elevation="raised" | "hover" | undefined.Badge— tones (neutral | accent | success | warning | danger | info), sizes (sm | md).Avatar— initials, optional image, sizes (sm | md | lg | xl), shapes (circle | square).Field— label + optional hint + error slot, wraps a single control.Input/Textarea/Select— controlled, accessible, focus-ring via--ring.lucide-reactas a devDep; runlavamoat.allowScriptsreview per ADR-0010 (lucide has no install scripts today; document the check).next/font/googleself-hosted, weights as the DS calls for (display 600/700, body 400/500, mono 400/500/600)./dev/components(proxy-gated, NODE_ENV !== "production") rendering every primitive variant in both themes for review.Acceptance criteria
/dev/components.lavamoat.allowScriptsentry needed (or the allowlist is updated in the PR per ADR-0010).Out of scope
Dialog,Toast,Tooltip,Progress,Tabs) — file follow-ups once a screen needs them.Composes with
Design package, token-foundation ticket above, ADR-0010 (install scripts), ADR-0012 (TanStack — primitives plug into TanStack Form's controlled inputs).
--success/--warning/--danger/--info— and migrate primitives off inlined hex #149