VI

Vinu

@vinutv

Total Points
720

All time

Total Activities
445

All time

Activity Types
8

Different types

Activity Overview

372 contributions in the last year

Jul
Aug
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Mon
Wed
Fri
Less
More
Points Milestone - silver

Points Milestone

Awarded for reaching points milestones

2 / 3 tiers earned

bronze
bronze

100+ points

silver
silver

500+ points

gold
gold

1,000+ points

Consistency Champion - silver

Consistency Champion

Awarded for maintaining activity streaks

2 / 3 tiers earned

bronze
bronze

7 day streak

silver
silver

14 day streak

gold
gold

30 day streak

Activity Milestone - gold

Activity Milestone

Awarded for reaching activity count milestones

3 / 4 tiers earned

bronze
bronze

10+ activities

silver
silver

50+ activities

gold
gold

100+ activities

platinum
platinum

500+ activities

Activity Breakdown

365 total activities · 720 total points

Commit Created
277 (75.9%)·554 pts
Issue Opened
29 (7.9%)·58 pts
PR Merged
10 (2.7%)·50 pts
Issue Assigned
29 (7.9%)·29 pts
PR Reviewed
9 (2.5%)·18 pts
PR Opened
11 (3.0%)·11 pts
365
Total Activities
720
Total Points
6
Activity Types
2.0
Avg Points/Activity
Activity Timeline

57 of 445 activities· 1 of 27 months

July 202657 activities

Commit Created+2
docs: remove remaining Radix references from docs and demos - Update install instructions in registry docs (checkbox, collapsible, context-menu, dialog, dropdown-menu, popover, radio-group, scroll-area, separator, sheet, switch, tooltip, button-group, sidebar) from 'radix-ui' to '@base-ui/react'. - Fix stale @dependencies JSDoc in field.tsx, combobox.tsx, command.tsx that still referenced radix-ui/vaul; regenerate registry JSON. - Update Get Started, Accessibility, and documentation.ts prose to credit Base UI instead of Radix for accessibility primitives and focus-trap behavior. - Replace dead --radix-dropdown-menu-*/--radix-popover-* CSS vars (never set by Base UI) with --anchor-width/--available-height in filters.tsx, sidebar.tsx, sidebar-01-demo.tsx, nav-user.tsx, and inner-page-01.tsx.
Commit Created+2
chore: complete Radix -> Base UI migration - Flip components.json style from radix-vega to base-vega - Remove radix-ui dependency from package.json, pnpm install to sync the lockfile and prune it from node_modules - Delete src/components/careui/button.tsx and menubar.tsx: confirmed unused orphaned duplicates (not imported anywhere, not part of the active registry) that still imported radix-ui directly and would have broken compilation once the package was removed Verified after this change: - npx tsc -b --noEmit: clean - pnpm lint: clean (same 3 pre-existing unrelated warnings as before) - pnpm run build: succeeds - pnpm run build:registry: no diff (registry already in sync) - grep -rl 'from "radix-ui"' src/: zero matches anywhere in the project This is the final step of the progressive Radix -> Base UI migration covering all 32 active registry components (see .migration/*.md for the full per-component history).
Commit Created+2
refactor(studio-sidebar): migrate 5 Slot/asChild parts to useRender - Replace radix-ui Slot with @base-ui/react's useRender across SidebarGroupLabel, SidebarGroupAction, SidebarMenuButton, SidebarMenuAction, SidebarMenuSubButton - Drop asChild entirely (render-only): zero usages found anywhere for this component (used only by App.tsx/app-sidebar.tsx/search-form.tsx, none pass asChild) - Same literal-data-attribute design as sidebar.tsx (not via state) for consistency and to avoid the same data-active value risk - Update @dependencies JSDoc tag, regenerate registry JSON - Add .migration/studio-sidebar.md report This is the last component on Radix in src/components/ui -- 0 files remain. Flagging the components.json style flip (radix-vega -> base-vega) and radix-ui package removal as a separate, explicit decision, not bundled into this commit.
Commit Created+2
refactor(sidebar): migrate 5 Slot/asChild parts to useRender - Replace radix-ui Slot with @base-ui/react's useRender across SidebarGroupLabel, SidebarGroupAction, SidebarMenuButton, SidebarMenuAction, SidebarMenuSubButton - Keep asChild compat shim only on SidebarMenuButton/SidebarMenuSubButton (real usage in nav-main.tsx/nav-projects.tsx/nav-secondary.tsx/ lib/registry/sidebar.tsx); drop it cleanly on the other 3 (zero usage) - Keep data-slot/data-sidebar/data-size/data-active as literal attributes, NOT via useRender's state param: verified a real consumer selector (data-[active=true]:font-medium) depends on the exact string value, which state-based conversion would silently break (data-active="" instead of data-active="true") - Drop mergeProps (TypeScript rejects data-* keys in its strict generic); use plain object spread instead, since props never actually conflicts with the explicit attributes - Update @dependencies JSDoc tag, regenerate registry JSON - Add .migration/sidebar.md report
refactor(button-group): migrate ButtonGroupText off Slot/asChild - Replace radix-ui Slot with useRender + mergeProps (matches golden base-vega ButtonGroupText exactly) - No asChild compat shim: zero real usages found anywhere in the repo - Adds data-slot="button-group-text" (previously missing, matching every other part in this file; purely additive) - Update @dependencies JSDoc tag, regenerate registry JSON - Add .migration/button-group.md report
Commit Created+2
refactor(collapsible): migrate to Base UI - Switch primitives from radix-ui to @base-ui/react/collapsible - Rename CollapsibleTrigger/CollapsibleContent parts to Trigger/Panel - Add asChild compat shim on both Root and Trigger (real consumers use asChild on the Root itself, e.g. nav-main.tsx/sidebar.tsx) - Fix 3 real consumer data-attribute selectors after verifying the actual runtime behavior against installed @base-ui/react source (not just the reference doc or official example, which disagreed): CollapsibleRoot emits data-open/data-closed on itself; CollapsibleTrigger emits only data-panel-open. Updated nav-main.tsx, lib/registry/collapsible.tsx (6 occurrences), and lib/registry/sidebar.tsx accordingly - Regenerate registry JSON - Add .migration/collapsible.md report Flagged (not fixed, out of scope): lib/registry/sidebar.tsx has 3 likely-dead data-[state=open] selectors tied to the already-migrated dropdown-menu.tsx, discovered while investigating this component but belonging to that migration instead.
Commit Created+2
refactor(navigation-menu): migrate to Base UI - Swap radix-ui import for @base-ui/react/navigation-menu: the biggest structural rewrite in this batch. viewport boolean prop dropped entirely; NavigationMenuViewport replaced by NavigationMenuPositioner (Portal>Positioner>Popup>Viewport), always mounted unconditionally in Root instead of Radix's below-the-list-viewport toggle - NavigationMenuIndicator now wraps Icon instead of .Indicator (Base UI's Icon is a different concept, a chevron inside the Trigger, not a tracker below the list) - unused by the one consumer here - NavigationMenuLink gains the standard asChild -> render compat shim - No consumer changes needed (viewport prop and NavigationMenuViewport/Indicator aren't used anywhere in this repo) - Verified live: menu open, animated content-swap between two different triggers, and chevron rotation all confirmed working, zero console errors - Regenerate registry JSON, add .migration/navigation-menu.md report
Commit Created+2
refactor(menubar): migrate to Base UI - Swap radix-ui import for @base-ui/react/menu (shared parts) + @base-ui/react/menubar (the Root container, single-part callable) - Deliberately kept self-contained on MenuPrimitive rather than composing this project's dropdown-menu.tsx (which the shadcn golden does): dropdown-menu.tsx here is customized with larger responsive item sizing, and composing it would have silently leaked that sizing into menubar's independently-sized, smaller items - Part renames (exported names unchanged): Label -> GroupLabel, ItemIndicator splits per item type, Sub -> SubmenuRoot, SubTrigger -> SubmenuTrigger; SubContent composes the file's own MenubarContent - No consumer changes needed (Root's dropped value/onValueChange system and loop prop aren't used; the one consumer never uses MenubarLabel) - Verified live: hover-switching between menus, submenus, and a radio group all confirmed working, zero console errors - Regenerate registry JSON, add .migration/menubar.md report
Commit Created+2
refactor(context-menu): migrate to Base UI - Swap radix-ui import for @base-ui/react/context-menu (shares the Menu part set with dropdown-menu): Content -> Portal>Positioner>Popup, Label -> GroupLabel, ItemIndicator splits per item type, Sub -> SubmenuRoot, SubTrigger -> SubmenuTrigger; SubContent stays a true minimal compose (side="right" + shadow-lg only) - The wrapper's own `side` prop was silently dead under Radix (ContextMenu.Content has no positioning props at all); Base UI's Positioner makes it genuinely functional now, with no observed behavior change since no consumer passed it - Confirmed the two hard Base UI drops (Root has no modal, Trigger has no disabled) aren't used anywhere in this repo - No consumer changes needed; the one demo file already wrapped every ContextMenuLabel in a ContextMenuGroup - Verified live: right-click menu, submenu, checkbox/radio items, and destructive styling all confirmed working, zero console errors - Regenerate registry JSON, add .migration/context-menu.md report
Commit Created+2
refactor(dropdown-menu): migrate to Base UI - Swap radix-ui import for @base-ui/react/menu (Radix DropdownMenu -> Base UI Menu): Content -> Portal>Positioner>Popup, Label -> GroupLabel, ItemIndicator splits into CheckboxItemIndicator/ RadioItemIndicator, Sub -> SubmenuRoot, SubTrigger -> SubmenuTrigger; SubContent now composes DropdownMenuContent (matches the shadcn golden's own SubContent shape) - DropdownMenuTrigger gains the standard asChild -> render compat shim (21+ call sites across the app) - onSelect -> onClick + closeOnClick (restructure, not rename): fixed 14 call sites in the docs demo and 1 in filters.tsx; the 4 CheckboxItem occurrences became pure no-ops (closeOnClick already defaults false there) and were removed outright, the rest got explicit closeOnClick to replicate the old preventDefault-to-stay-open behavior - Caught live, not by typecheck: Base UI's GroupLabel throws at runtime unless rendered inside a Group. Wrapped every bare in across 8 files (inner-page-01.tsx, sidebar-01.tsx, data-table.tsx, sidebar-01-demo.tsx, sidebar.tsx, and 9 spots in the docs demo) - Verified live: every menu trigger, submenu positioning, and checkbox-item stay-open behavior confirmed working, zero console errors - Regenerate registry JSON, add .migration/dropdown-menu.md report
Commit Created+2
refactor(hover-card): migrate to Base UI's Preview Card - Swap radix-ui import for @base-ui/react/preview-card (renamed primitive; exported wrapper names HoverCard/HoverCardTrigger/ HoverCardContent kept unchanged for consumers) - HoverCardTrigger gains the standard asChild -> render compat shim - Fix the one consumer: openDelay/closeDelay move from Root to Trigger as delay/closeDelay (both the main and "Sides" demo, display code strings and executable previews) - Regenerate registry JSON, add .migration/hover-card.md report
Commit Created+2
refactor(popover): migrate to Base UI - Swap radix-ui import for @base-ui/react/popover: Content -> Portal>Positioner>Popup, PopoverAnchor dropped entirely (Base UI has no Anchor part, replaced by a Positioner anchor prop; unused here) - PopoverTrigger gains the standard asChild -> render compat shim (initially migrated as a bare passthrough; typecheck immediately caught 12 broken asChild call sites across the app, confirming the shim was needed) - PopoverTitle/PopoverDescription now render real Base UI Title/ Description primitives instead of plain div/p (new a11y wiring, Radix's Popover never had these parts) - Fix filters.tsx's "Saved filters" popover: onOpenAutoFocus (focus the popup container itself, not an input) -> initialFocus via a ref attached to the now ref-forwarding PopoverContent - Regenerate registry JSON, add .migration/popover.md report
Commit Created+2
fix(sheet): regenerate registry JSON to include the useEffect refs fix The registry JSON for sheet was generated before the eslint react-hooks/refs fix (writing to refs during render -> useEffect) was applied to the source, so it had gone stale relative to the committed source file. No source changes here, just re-syncing the generated artifact.
Commit Created+2
refactor(sheet): migrate to Base UI - Swap radix-ui import for @base-ui/react/dialog (Sheet is built on the Dialog family): Overlay -> Backdrop, Content -> Popup - Outside-dismiss blocking restructured: moved from Content-level onInteractOutside/onPointerDownOutside to a Root-level onOpenChange interception, bridged via always-latest refs since `dismissible` is a Content-level prop but onOpenChange is now Root-only - onOpenAutoFocus -> initialFocus (same restructure as dialog.tsx), preserving the mobile-skip-autofocus behavior - All custom behavior (shake-on-blocked-dismiss, scroll-collapsing header, viewport-aware sizing) verified live and unchanged - No consumer changes needed - Regenerate registry JSON, add .migration/sheet.md report
Commit Created+2
refactor(dialog): migrate to Base UI - Swap radix-ui import for @base-ui/react/dialog: Overlay -> Backdrop, Content -> Popup (exported names unchanged); DialogTrigger/DialogClose gain the standard asChild -> render compat shim (101+ call sites project-wide use asChild) - onOpenAutoFocus -> initialFocus, restructured not renamed: attached a ref to Popup and default initialFocus to a function that queries it for the first enabled input, reproducing the original auto-focus-first-input behavior exactly (verified live) - Preserve the project's own inner-div layout (innerClassName) and header-embedded close button unchanged - Fix command.tsx's CommandDialogProps: it inherited React.ComponentProps wholesale, which now conflicts with also passing the same children/onOpenChange into (a separately-typed sibling); narrowed to a boolean-only onOpenChange and plain ReactNode children (no runtime behavior change, command.tsx itself remains untouched cmdk code) - Regenerate registry JSON, add .migration/dialog.md report
Commit Created+2
refactor(select): migrate to Base UI - Swap radix-ui import for @base-ui/react/select: restructured onto the positioner model (Content -> Portal>Positioner>Popup), position prop dropped in favor of alignItemWithTrigger, Viewport -> List, Label -> GroupLabel, ScrollUpButton/ScrollDownButton -> ScrollUpArrow/ScrollDownArrow, Select itself becomes a bare re-export (SelectPrimitive.Root.Props is generic and breaks the usual ComponentProps pattern) - Preserve the project's own larger trigger/item sizing and responsive breakpoints - Fix one consumer (lib/registry/button-group.tsx's currency selector): the bare-re-export Select has no explicit generic here, so onValueChange's value typed as unknown; cast to string - Regenerate registry JSON, add .migration/select.md report
Commit Created+2
refactor(breadcrumb): migrate BreadcrumbLink off Slot/asChild - This file only ever imported Slot from radix-ui (not a stateful Radix primitive); replaced the asChild ? Slot.Root : "a" idiom with useRender + mergeProps, matching the badge.tsx precedent for non-button polymorphic components - Preserve the project's own soft-background/soft-foreground link and page styling unchanged - Update the docs "Link component" example's prose (asChild -> render) - Regenerate registry JSON, add .migration/breadcrumb.md report
Commit Created+2
refactor(tabs): migrate to Base UI - Swap radix-ui import for @base-ui/react/tabs (Trigger -> Tab, Content -> Panel; exported names unchanged) - Preserve the project's own browser-style third variant, larger dimensions, and custom active-tab indicator colors; merged the one real upstream delta (added aria-disabled hook) onto the customized classes - Flagged, not patched: Base UI defaults to manual tab activation (arrow-key focus no longer auto-switches the panel), a behavior change from Radix's automatic default - No consumer changes needed - Regenerate registry JSON, add .migration/tabs.md report
Commit Created+2
refactor(scroll-area): migrate to Base UI - Swap radix-ui import for @base-ui/react/scroll-area (direct 1:1, ScrollAreaScrollbar/ScrollAreaThumb renamed to Scrollbar/Thumb) - No consumer changes needed (the dropped type prop isn't used anywhere in this repo) - Regenerate registry JSON, add .migration/scroll-area.md report
Commit Created+2
refactor(progress): migrate to Base UI - Swap radix-ui import for @base-ui/react/progress: restructured with new Track/Label/Value sub-parts; Progress itself keeps the same simple call shape (value/className/children) so existing usage is unaffected - Manual translateX() width calculation removed; Base UI's Indicator computes it internally - No consumer changes needed - Regenerate registry JSON, add .migration/progress.md report
Commit Created+2
refactor(slider): migrate to Base UI - Swap radix-ui import for @base-ui/react/slider: new required Control part (Root > Control > Track > (Indicator, Thumb)), Range -> Indicator rename, thumbAlignment="edge" added to match Radix's original thumb-edge alignment - value/defaultValue/onValueChange widen to number | number[] (a bare number now means a single-thumb slider); fix 4 consumers whose useState setters no longer satisfied the widened onValueChange type: playground.tsx, lib/registry/filters.tsx, lib/registry/progress.tsx, lib/registry/slider.tsx (both the display code string and executable preview for the range-slider example) - Regenerate registry JSON, add .migration/slider.md report
Commit Created+2
refactor(radio-group): migrate to Base UI - Swap radix-ui import for @base-ui/react/radio-group + @base-ui/react/radio: Base UI splits Radix's single RadioGroup namespace into a standalone callable RadioGroup and a separate Radio primitive (Root/Indicator) - RadioGroupItem now renders Radio.Root internally (exported name unchanged) - No consumer changes needed (orientation prop, the one dropped prop, isn't used anywhere in this repo) - Regenerate registry JSON, add .migration/radio-group.md report
Commit Created+2
refactor(switch): migrate to Base UI - Swap radix-ui import for @base-ui/react/switch (Root/Thumb parts unchanged; checked/onCheckedChange/disabled/required/name/value all unchanged prop names) - Preserve the project's own larger sizing scale, responsive breakpoints, and checked/unchecked thumb icons unchanged - No consumer changes needed - Regenerate registry JSON, add .migration/switch.md report
Commit Created+2
refactor(checkbox): migrate to Base UI - Swap radix-ui import for @base-ui/react/checkbox (Root/Indicator parts unchanged, Checkbox is not single-part-callable) - Preserve the project's own size variant (default/md via cva) and concrete lucide CheckIcon - checked="indeterminate" -> separate indeterminate boolean prop (Base UI split): fix 8 call sites in the data-table docs demo that used the old combined Radix idiom for the "select all" header checkbox, splitting into checked={allSelected} + indeterminate={someSelected && !allSelected} - Update the docs prop table (checked/onCheckedChange narrowed to boolean, new indeterminate row) - Regenerate registry JSON, add .migration/checkbox.md report
Commit Created+2
refactor(label): drop Radix, use native
Commit Created+2
refactor(separator): migrate to Base UI - Swap radix-ui import for @base-ui/react/separator (direct 1:1 mapping, Separator is a callable single-part primitive) - Drop the decorative prop entirely (Base UI has no equivalent; no consumer passed it explicitly) - Preserve the project's own variant system (solid/dashed/inset/dotted via cva) unchanged - Remove the decorative row from the docs prop table - Regenerate registry JSON, add .migration/separator.md report
Commit Created+2
refactor(toggle-group): migrate to Base UI - Swap radix-ui import for @base-ui/react/toggle-group + @base-ui/react/toggle - ToggleGroupPrimitive.Root -> ToggleGroupPrimitive (callable single-part primitive); ToggleGroupPrimitive.Item -> TogglePrimitive (Base UI has no dedicated Item part: group items ARE Toggle primitives) - Customized wrapper (different default spacing, verbose data-[orientation=vertical] selector instead of shadcn's data-vertical shorthand, no has-data-[icon=...] utilities): merged via git merge-file so all three customizations survived - Corrected a bug in the live shadcn base-vega registry: its ToggleGroupItem still uses data-[state=on]:bg-muted, but Base UI's Toggle never emits data-state, only data-pressed (confirmed against node_modules/@base-ui/react/toggle/ToggleDataAttributes.js). Reproducing it verbatim would have silently broken the pressed background highlight; used data-pressed:bg-muted instead - Update the one demo consumer (lib/registry/toggle-group.tsx): type="single" dropped entirely (Base UI ToggleGroup has no type prop; multiple defaults to false, same as the old single mode) - Regenerate registry JSON, add .migration/toggle-group.md report - Verified live: dev server + headless browser click-through confirmed press/highlight and single-select mutual exclusivity both work, no console errors
Commit Created+2
refactor(toggle): migrate to Base UI - Swap radix-ui import for @base-ui/react/toggle - TogglePrimitive.Root -> TogglePrimitive (Base UI's Toggle is a callable single-part primitive, no .Root) - Customized wrapper (project's own size-variant padding scale, no has-data-[icon=...] utilities from the shadcn default): merged via git merge-file (radix-vega golden as ancestor, base-vega golden as target) so the customization survived byte-for-byte - Drop now-unused React import; keep pre-existing "use client" directive as-is - pressed/defaultPressed/onPressedChange/disabled and the aria-pressed:bg-muted class hook are unchanged (Base UI's Toggle sets a real aria-pressed attribute, confirmed against node_modules/@base-ui/react/toggle/Toggle.js) - Regenerate registry JSON, add .migration/toggle.md report
Commit Created+2
refactor(tooltip): migrate to Base UI - Switch primitives from radix-ui to @base-ui/react/tooltip - Restructure Content -> Portal > Positioner > Popup per the positioner model; side/sideOffset/align/alignOffset move to Positioner - TooltipTrigger keeps an asChild compat prop translated to render via a local resolveAsChild helper, matching the alert-dialog.tsx/drawer.tsx/ button.tsx precedent (101+ asChild call sites project-wide) - TooltipProvider delayDuration -> delay (straight rename, no compat shim needed): update call sites in sidebar.tsx, filters.tsx, and button-group.tsx docs demo - Update docs prop table (delayDuration -> delay) - Regenerate registry JSON (tooltip, sidebar, filters, index) - Add .migration/tooltip.md and .migration/command.md reports (command.md documents that command.tsx is built on cmdk, not Radix, and is out of migration scope per the hard rules) Flagged behavior change: TooltipContent's default sideOffset moves from 0 to 4 (the base-vega registry's own default, not a discarded project customization) -- tooltips now render with a small gap from their trigger instead of touching it.
Commit Created+2
refactor(button): migrate to the real @base-ui/react/button primitive - Use ButtonPrimitive from @base-ui/react/button directly, per the skill's hard rule (never a hand-rolled useRender wrapper) - Keep asChild as a compat prop translated to render, matching the drawer.tsx/alert-dialog.tsx precedent already in this repo (101 asChild call sites across 28 files, out of scope to hand-migrate for a single-component request) - Add nativeButton auto-inference: Base UI's real Button logs a dev console warning when nativeButton doesn't match the rendered tag; automatically set nativeButton=false when asChild wraps a plain non-button DOM tag (e.g. ), matching real usages in brands-page.tsx/invalid-browser.tsx/empty.tsx with no consumer edits - Preserve data-slot/data-variant/data-size as explicit attributes (deviates from the golden pair, which drops them; kept since this project's existing public contract includes them) - Update @dependencies JSDoc tag, regenerate registry JSON - Add .migration/button.md report Full project typecheck stayed clean with zero consumer file changes.
refactor(badge): migrate Slot/asChild to useRender + mergeProps - Replace radix-ui Slot-based polymorphism with @base-ui/react's useRender + mergeProps (first Slot/asChild component migrated in this project) - asChild -> render; zero consumers use it, no compat shim needed - data-slot/data-variant now generated automatically via useRender's state param (verified byte-identical output against getStateAttributesProps.mjs) - data-solid now renders as data-solid="" instead of data-solid="true"; flagged as a behavior change, harmless since nothing selects on the specific string value - Preserve all custom features unchanged: dot, solid, counter, onClose, full color variant system (badgeVariants CVA untouched) - Update @dependencies JSDoc tag, regenerate registry JSON - Add .migration/badge.md report
Commit Created+2
refactor(avatar): migrate to Base UI - Swap radix-ui import for @base-ui/react/avatar (direct 1:1 mapping, confirmed via golden pair: identical anatomy/props/behavior) - Update type annotations to the AvatarPrimitive.X.Props idiom - Update @dependencies JSDoc tag - Regenerate registry JSON - Add .migration/avatar.md report No consumer or docs changes needed: no usage of asChild or delayMs anywhere in this repo, both of which are the only props that changed shape in the Radix -> Base UI avatar mapping.
Commit Created+2
refactor(aspect-ratio): drop Radix, use CSS aspect-ratio - Replace AspectRatioPrimitive.Root with a plain div using the aspect-(--ratio) Tailwind v4 utility driven by a --ratio CSS var, matching the canonical shadcn base-vega golden pair exactly - ratio is now a required prop (previously an implicit Radix default); verified as a no-op against all real consumers, which already pass it - Apply the same fix to tv-display.tsx, which independently imported AspectRatioPrimitive directly from radix-ui - Update @dependencies JSDoc tags and the aspect-ratio docs install snippet - Regenerate registry JSON - Add .migration/aspect-ratio.md report
Commit Created+2
docs(alert-dialog): document AlertDialogAction no longer auto-closes Add a props table entry clarifying that AlertDialogAction renders a plain button and does not close the dialog automatically on click (Base UI has no Action primitive), unlike AlertDialogCancel which still does.
Commit Created+2
fix(alert-dialog): match canonical Base UI golden pair - Import from @base-ui/react/alert-dialog subpath instead of the barrel - Use AlertDialogPrimitive.Root.Props idiom on the Root type - Add isolate to AlertDialogOverlay (Base UI-specific stacking fix) - Revert AlertDialogAction to a plain Button: Base UI has no Action primitive, so wrapping it in Close (as done previously) silently reintroduced auto-close-on-click behavior that the canonical shadcn base-vega target intentionally drops. Flagged as a behavior change. - Regenerate alert-dialog.json - Add .migration/alert-dialog.md and .migration/alert.md reports (alert.md documents that plain alert.tsx has no Radix dependency and needs no migration)
Commit Created+2
refactor(accordion): migrate to Base UI - Switch primitives from radix-ui to @base-ui/react/accordion - Rename Content -> Panel, disabled: -> aria-disabled: on trigger - Rename CSS var --radix-accordion-content-height -> --accordion-panel-height - Update docs registry examples for Base UI Root API (drop type/collapsible, always-array value/defaultValue, multiple boolean for multi-mode) - Regenerate registry JSON - Add .migration/accordion.md migration report
Commit Created+2
refactor(alert-dialog): migrate to Base UI - Switch primitives from radix-ui to @base-ui/react - Add asChild compatibility shim for AlertDialogTrigger - Map AlertDialogOverlay -> Backdrop, AlertDialogContent -> Popup - Map AlertDialogAction/AlertDialogCancel -> Close rendered with Button - Update registry docs install snippet and regenerate registry JSON
Commit Created+2
chore: apply low-risk dependency upgrades and sync registry artifacts
Commit Created+2
feat: migrate drawer to Base UI and refresh docs/examples
PR Opened+1
feat: Prototype Flow Builder for the Care Design Library
Commit Created+2
Update docs spacing and typography
Commit Created+2
Update shadcn guidance and docs content
Commit Created+2
Refine brand and typography docs
Commit Created+2
fix: update brands-page SectionHeading to use SectionTitle component - Add SectionTitle to typography imports (missed in bulk update) - Update SectionHeading function body to delegate to SectionTitle - Align header spacing with other docs pages (mt-3/mt-6 instead of space-y-4)
Commit Created+2
refactor: use Care UI typography components across all documentation pages - Replace local SectionHeading wrappers with SectionTitle from @/components/ui/typography - Replace raw h1/div/p headers with PageTitle, EyebrowTitle, Lead components - Apply consistent border-b pb-2 scroll-m-20 classes to SectionTitle usage - Add typography imports to accessibility, contributing, foundations, colors, brands pages - Add Lead import to typography page - Update get-started-page header to match other docs pages pattern - Remove custom PageHeading function from get-started-page - All 7 documentation pages now use the same Care typography component set
Commit Created+2
fix: align Get Started page heading with documentation style - Replace PageTitle with custom PageHeading component - Add border-bottom separator to main title matching Colors, Accessibility, Foundation pages - Remove redundant Separator component - Use consistent heading styling: border-b pb-3 text-4xl font-bold tracking-tight
Commit Created+2
refactor: redesign Get Started page with improved layout and typography - Create dedicated GetStartedPage component with custom JSX rendering - Follow documentation page layout pattern (PageTitle, SectionTitle, Lead) - Add styled CodeBlock component with copy-to-clipboard functionality - Reorganize content into clear sections: Prerequisites, Add a component, Tailwind setup, Use in app, What you get, Next steps - Include feature list with visual indicators - Add navigation links to related documentation pages - Improve readability and visual hierarchy matching other docs pages
Commit Created+2
fix: prevent trackpad horizontal scroll in sidebars - Change SidebarContent overflow-auto to overflow-y-auto with overflow-x-hidden - Add overflow-x-hidden to sidebar-inner container - Prevents unintended horizontal scrolling via trackpad while preserving vertical scroll - Fixes issue in Main Dashboard, Inner Page, and Patient Detail blocks
Commit Created+2
feat: improve mobile touch behavior on Snellen chart - Capture touch coordinates and apply radial gradient mask at touch point - Single touch now shows unblurred area exactly where user touched (matching mouse behavior) - Unblurs for 6 seconds then re-blurs automatically
Commit Created+2
fix: resolve TypeScript errors - Replace NodeJS.Timeout with ReturnType for timeout refs - Remove unused ANIMATION_CYCLE_MS constant
Commit Created+2
refactor: optimize error pages with refined animations and mobile support - Load Failed: Add Snellen chart visual effect with optimized mouse tracking and mobile touch support - Session Expired: Implement ripple timer with pulsating squircles, breathing animation, and accessibility - Add ripple animations to index.css with reduced-motion support - Optimize for mobile with responsive scaling and typography - Improve performance with memoization, throttling, and GPU acceleration hints - Add prefers-reduced-motion support for accessibility compliance - Unify error page typography and layout patterns
Commented
Commented
Commit Created+2
Add brands page, clearspace guidance, and color page fixes
Commit Created+2
feat(colors): improve copy controls and accurate hex display
Commit Created+2
chore: update local changes