Radix coverage

Every component in the Radix Primitives catalog, against what this platform actually does for that role. The statuses come from the real imports (@radix-ui/react-*), not from intent — regenerate the underlying facts by re-checking taxonomy.ts when dependencies change.

Styled by us · 4Used, not exported · 3Custom analogue · 14Not used · 9
  • Styled by uswe export a styled wrapper of the Radix primitive — use ours, never the raw primitive
  • Used, not exportedthe primitive is in use inside components, but no generic styled wrapper is exported yet
  • Custom analoguethe primitive is not used; a component of our own plays that role
  • Not usednot used and nothing of ours plays the role — a gap, or genuinely not needed

Installed, but nothing to import

The primitive is in use inside a component, but no reusable wrapper is exported. Using it means composing the raw primitive yourself.

Accordion · Popover · Toggle Group

Not in the system at all

No Radix dependency, no component of ours. Each is a decision waiting: adopt the primitive, or state that we do not need it.

Aspect Ratio · Context Menu · Hover Card · Menubar · One-Time Password Field · Password Toggle Field · Scroll Area · Toolbar · Tooltip

Radix primitiveStatusOursNotes
Accordion
@radix-ui/react-accordion
Used, not exportedFAQListUsed only inside FAQList, which is CMS-bound and takes no children. There is no general-purpose accordion to import — Collapse is the nearest generic building block.
Alert Dialog
@radix-ui/react-alert-dialog
Custom analogueConfirmationDialogBuilt on PublicBaseDialog, not the Radix primitive — no enforced focus/dismiss semantics.
Aspect Ratio
@radix-ui/react-aspect-ratio
Not usedTailwind aspect-* utilities cover this.
Avatar
@radix-ui/react-avatar
Custom analogueAvatarCustom image + initials fallback.
Checkbox
@radix-ui/react-checkbox
Custom analogueCustomFieldRenderer, AcceptDocumentsContentNative <input type="checkbox"> inline in forms; no shared Checkbox component. The @radix-ui/react-checkbox dependency is declared but imported nowhere — dead weight.
Collapsible
@radix-ui/react-collapsible
Custom analogueExpandSectionExpandSection is the trigger-less transition wrapper (MUI/Chakra "Collapse"); the caller supplies the trigger.
Context Menu
@radix-ui/react-context-menu
Not used
Dialog
@radix-ui/react-dialog
Custom analoguePublicBaseDialog, DialogCloseButtonHand-rolled: createPortal + scroll lock + header/footer slots.
Dropdown Menu
@radix-ui/react-dropdown-menu
Styled by usDropdownMenuImported by ui/DropdownMenu.tsx but NOT declared in public-web-shared/package.json — resolves transitively through @radix-ui/themes. Undeclared dependency.
Form
@radix-ui/react-form
Custom analogueForms are React Hook Form + Zod platform-wide.
Hover Card
@radix-ui/react-hover-card
Not used
Label
@radix-ui/react-label
Custom analoguePlain <label> elements inside the input components.
Menubar
@radix-ui/react-menubar
Not used
Navigation Menu
@radix-ui/react-navigation-menu
Custom analogueBreadcrumb, LanguagePickerApp chrome is custom (navigation/).
One-Time Password Field
@radix-ui/react-one-time-password-field
Not used
Password Toggle Field
@radix-ui/react-password-toggle-field
Not usedPassword inputs render their own show/hide affordance.
Popover
@radix-ui/react-popover
Used, not exportedLocaleDateField, PublicMemberSelect, CheckboxSelect, ScheduleFilters, ScheduleDatePicker, CalendarTimezoneNote, ClubSelector (AreaPicker), BookingExperienceThe most-used primitive — 10 components — yet no generic styled Popover is exported; every use restyles it locally. Strongest candidate for promotion to ui/.
Progress
@radix-ui/react-progress
Custom analogueMembershipItemInline progress bar in the membership pass; nothing shared.
Radio Group
@radix-ui/react-radio-group
Custom analogueSegmentedControlSegmentedControl implements role="radiogroup" with roving tabindex by hand.
Scroll Area
@radix-ui/react-scroll-area
Not usedNative scrolling with styled scrollbars.
Select
@radix-ui/react-select
Styled by usModernSelect, ClubSelector, CountrySelectorModernSelect is the generic wrapper; ClubSelector and CountrySelector are domain selects on the same primitive.
Separator
@radix-ui/react-separator
Custom analogueBorder utilities.
Slider
@radix-ui/react-slider
Styled by usRangeSlider
Switch
@radix-ui/react-switch
Styled by usModernToggle
Tabs
@radix-ui/react-tabs
Custom analogueModernTabsCustom pill/segmented tabs (links or controlled).
Toast
@radix-ui/react-toast
Custom analogueProviders (react-hot-toast Toaster)Toasts are react-hot-toast, mounted once in Providers; sonner is also a declared dependency — two toast libraries is one too many.
Toggle
@radix-ui/react-toggle
Custom analogueFilterChipFilterChip is a hand-rolled aria-pressed toggle.
Toggle Group
@radix-ui/react-toggle-group
Used, not exportedThemeModeToggle, ModernToggleGroupThemeModeToggle uses the primitive internally; the exported generic ModernToggleGroup is hand-rolled (plain buttons, no aria-pressed) — the two should converge.
Toolbar
@radix-ui/react-toolbar
Not used
Tooltip
@radix-ui/react-tooltip
Not usedNative title attributes only — a real Tooltip is an open gap.