Compatibility
Where zen deliberately differs from shadcn/ui, and what it does not serve.
kosori takes Structure from shadcn/ui and Design from coss/ui. Most shadcn/ui names and snippets transfer unchanged. This page lists the deliberate differences, generated from the Registry sources and this Style's catalog, so it cannot drift from what you install.
Deliberate divergences
Field is not an alias
Field is the one semantic incompatibility. shadcn/ui composes a group, content, title, set and separator; kosori wraps Base UI Field and Fieldset primitives instead. The shared names keep their meaning, but the composition differs, so Field is not aliased to the shadcn/ui API.
FieldContentFieldGroupFieldLegendFieldSeparatorFieldSetFieldTitleFieldControlFieldItemFieldValidityFieldsetFieldsetLegend
InputOTP is an adapter
InputOTP is an adapter, not an alias. The shadcn/ui slot names are preserved, but each slot takes an index and Base UI derives segment order from document position, so slots must be rendered in index order.
InputOTPInputOTPGroupInputOTPSeparatorInputOTPSlot
Toast is a Base UI surface
The toast surface is an adapter over the Base UI toast manager, not Sonner. Mount Toaster once and call toast.add; useToastManager and createToastManager expose the manager to custom compositions.
ToastercreateToastManagertoastuseToastManager
sonner is absent
sonner is not shipped and is not Pending. zen serves toast instead.
sonner@kosori/toast
Tabler icons replace Lucide
Icons come from Tabler, not Lucide. A pasted shadcn/ui snippet that imports Lucide icons needs its icon imports changed; component names and props do not change.
@tabler/icons-reactlucide-react
State Tokens are a kosori addition
kosori adds seven state Tokens to every Base color because coss/ui class strings reference them and shadcn/ui has no equivalent. The values are identical across Base colors, so success, warning and info mean the same thing in every palette.
successsuccess-foregroundwarningwarning-foregroundinfoinfo-foregrounddestructive-foreground
Export aliases
shadcn/ui names that resolve to another exported name in the same item. These are aliases, not second implementations.
- AccordionContent ← accordion/AccordionPanel
- AlertDialogOverlay ← alert-dialog/AlertDialogBackdrop
- AlertDialogContent ← alert-dialog/AlertDialogPopup
- ButtonGroup ← button-group/Group
- ButtonGroupSeparator ← button-group/GroupSeparator
- ButtonGroupText ← button-group/GroupText
- buttonGroupVariants ← button-group/groupVariants
- CardContent ← card/CardPanel
- CollapsibleContent ← collapsible/CollapsiblePanel
- ComboboxLabel ← combobox/ComboboxGroupLabel
- ComboboxContent ← combobox/ComboboxPopup
- ContextMenuLabel ← context-menu/ContextMenuGroupLabel
- ContextMenuContent ← context-menu/ContextMenuPopup
- ContextMenuSubContent ← context-menu/ContextMenuSubPopup
- DialogOverlay ← dialog/DialogBackdrop
- DialogContent ← dialog/DialogPopup
- DrawerOverlay ← drawer/DrawerBackdrop
- DrawerSwipeHandle ← drawer/DrawerBar
- DropdownMenu ← dropdown-menu/Menu
- DropdownMenuCheckboxItem ← dropdown-menu/MenuCheckboxItem
- DropdownMenuCreateHandle ← dropdown-menu/MenuCreateHandle
- DropdownMenuGroup ← dropdown-menu/MenuGroup
- DropdownMenuLabel ← dropdown-menu/MenuGroupLabel
- DropdownMenuItem ← dropdown-menu/MenuItem
- DropdownMenuContent ← dropdown-menu/MenuPopup
- DropdownMenuPortal ← dropdown-menu/MenuPortal
- DropdownMenuRadioGroup ← dropdown-menu/MenuRadioGroup
- DropdownMenuRadioItem ← dropdown-menu/MenuRadioItem
- DropdownMenuSeparator ← dropdown-menu/MenuSeparator
- DropdownMenuShortcut ← dropdown-menu/MenuShortcut
- DropdownMenuSub ← dropdown-menu/MenuSub
- DropdownMenuSubContent ← dropdown-menu/MenuSubPopup
- DropdownMenuSubTrigger ← dropdown-menu/MenuSubTrigger
- DropdownMenuTrigger ← dropdown-menu/MenuTrigger
- HoverCard ← hover-card/PreviewCard
- HoverCardContent ← hover-card/PreviewCardPopup
- HoverCardTrigger ← hover-card/PreviewCardTrigger
- PopoverContent ← popover/PopoverPopup
- RadioGroupItem ← radio-group/Radio
- SelectContent ← select/SelectPopup
- SheetOverlay ← sheet/SheetBackdrop
- SheetContent ← sheet/SheetPopup
- TabsContent ← tabs/TabsPanel
- TabsTrigger ← tabs/TabsTab
- TooltipContent ← tooltip/TooltipPopup
Synthesized shadcn/ui exports
Exports kosori builds because coss/ui has no name to rename.
- alert-dialog: AlertDialogAction, AlertDialogCancel, AlertDialogMedia
- avatar: AvatarBadge
- calendar: CalendarDayButton
- input-group: InputGroupButton
- popover: PopoverHeader
- select: SelectScrollDownButton, SelectScrollUpButton
- tabs: tabsListVariants
Authored
Names shadcn/ui publishes that coss/ui does not ship. The Structure is shadcn/ui's and the Design is inherited from the nearest Port, so an Authored component carries no upstream pin.
- aspect-ratio
- carousel
- chart
- direction
- item
- menubar
- native-select
- navigation-menu
- resizable
Pending
Names this Style publishes as part of its scope but does not serve. They have no page and never appear in the Registry catalog. sonner is not Pending; the divergence above explains why it is absent.
- attachment
- bubble
- code-block
- marker
- message
- message-scroller
- questionnaire
- trace
Compositions
Documented patterns that are not Registry items and never will be.