Rime

Coming from shadcn

Rime installs, names and reads like shadcn/ui, so what you (and your AI agents) already know carries over. The components underneath are Rime's own: CSS Modules and tokens, no Tailwind.

What is the same

  • npx shadcn@latest add KezLahd/rime/button: you own the copied source.
  • Item names follow shadcn (button, dialog, dropdown-menu, input-otp, sonner...), and the shadcn MCP server works.
  • Button variants and sizes accept shadcn's names; Card has the shadcn parts; asChild on buttons and triggers; data-slot on every part.
  • shadcn's CSS variable names exist as aliases (shadcn-bridge.css), and the .dark class switches dark mode.
  • Charts take a ChartConfig and the ChartContainer / ChartTooltipContent primitives, with the same gliding tooltip.

What is different

  • Each component is a folder: components/ui/Button/Button.tsx and Button.module.css. Style with tokens, not class strings.
  • No Tailwind, Radix or cva. Install real shadcn components alongside only if a project already runs Tailwind (see the tailwind-bridge item).
  • Every component documents its tokens; Rime Studio themes them, with frosted glass as the default.

Component names

shadcnRimeInstall
buttonButton (variant default→primary, destructive→danger, outline→secondary; link and icon sizes as in shadcn)button
button-groupButtonGroupbutton-group
cardCard (+ CardHeader, CardTitle, CardContent...) (props (title, description, actions, footer) or the shadcn parts)card
dialogModal, ConfirmModaldialog
alert-dialogAlertDialogalert-dialog
sheet, drawerSheet, Drawersheet
dropdown-menuMenudropdown-menu
context-menuContextMenucontext-menu
menubarMenubarmenubar
navigation-menuNavigationMenunavigation-menu
popoverPopoverpopover
hover-cardHoverCardhover-card
tooltipTooltip, Toggletiptooltip
commandCommand, CommandDialogcommand
inputTextInputinput
input-groupInputGroupinput-group
input-otpOtpInputinput-otp
textareaTextareatextarea
labelLabellabel
field, formField, ErrorSummaryfield
checkboxCheckboxcheckbox
radio-groupRadioGroupradio-group
switchSwitchswitch
sliderSliderslider
selectSelect (searchable option)select
comboboxComboboxcombobox
calendar, date-pickerCalendar, DateField, DateRangeFilterdate-field
toggle, toggle-groupToggle, ToggleGrouptoggle
tabsFolderTabs, SegmentedControltabs
accordionAccordionaccordion
collapsibleCollapsiblecollapsible
breadcrumbBreadcrumbbreadcrumb
paginationPagination (in Table)table
table, data-tableTable + FilterBar + Pagination (the list page pattern)table
badgeBadge, StatusPill, CountBadgebadge
avatarAvataravatar
separatorDividerseparator
progressMeter, ProgressBarprogress
skeletonSkeletonskeleton
spinnerSpinnerspinner
kbdKbdkbd
alertAlertalert
sonner, toastToast + ToastProvidersonner
emptyEmptyStateempty
scroll-areaScrollAreascroll-area
aspect-ratioAspectRatioaspect-ratio
carouselCarouselcarousel
resizableResizablePanelGroup, ResizablePanel, ResizableHandleresizable
chartLineChart, AreaChart, BarChart, DonutChart, ChartContainerchart
sidebarSidebarShell (components/shell)sidebar

Variable names

One way only: the shadcn names point at Rime tokens. Edit the Rime tokens (or theme.css), never the aliases.

shadcnRime token
--background--page-base
--foreground--ink-body
--card / --card-foreground--surface-solid / --ink-body
--popover / --popover-foreground--popover-surface / --ink-body
--primary / --primary-foreground--brand-action / --ink-inverse
--secondary / --secondary-foreground--surface-sunken / --ink-heading
--muted / --muted-foreground--surface-sunken / --ink-muted
--accent / --accent-foreground--wash-hover / --ink-heading
--destructive--danger-base-solid
--border--line
--input--line-input
--ring--focus-color
--radius--r-md
--chart-1..5--chart-1..5
--sidebar*--chrome-sidebar, --brand-action, --wash-active, --line-soft
--font-sans / --font-heading--font-body / --font-display