Changelog
Updates to the Redpanda UI Registry.
2026-03-16 13:00
✨ New
- EditableText - New inline-editing component for text and headings. Click-to-edit with auto-sized input that matches the text width, keyboard support (Enter to confirm, Escape to cancel), error state with message, read-only mode, and optional auto-focus. Supports
as="heading"withheadingLevel1–5. - KeyValueField - New form component for managing dynamic lists of key-value pairs. Supports add/delete rows, duplicate key detection, per-row error messages,
maxItemslimit, and optional Combobox mode for keys or values viakeyFieldProps/valueFieldProps. ExportsKeyValueField,KeyValuePair,KeyValueFieldConfig, andKeyValueFieldError. - input-utils - New utility library for dynamic input list patterns. Exports
findDuplicateIndices,keyValuePairsSchema(Zod schema with duplicate/pattern/length validation),getKeyValueDiff(diff utility for change tracking),useInputListFocus(focus management for dynamic rows),useMemoizedArray(stable reference optimization), anduseUndoRemoval(soft-delete with timed confirm).
🚧 Updated
- Combobox - Added
startprop for a customizable start-slot icon (defaults to a search icon; passnullto hide). AddedcreateLabelprop to customize the noun in the "Type to create a new…" placeholder. Creatable UX improved: the create action is now a persistent footer button (disabled when input is empty or matches an existing option) instead of an inlineCommandItem. - Input -
InputPropsinterface is now exported, enabling type-safe composition when building custom input wrappers. - DataTable -
DataTableColumnHeadersort trigger updated to use thesecondary-ghostbutton variant for improved visual consistency.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r editable-text key-value-field combobox input data-table2026-03-12 12:00
🚨 Breaking Changes
- Typography - The
Linkcomponent's router integration now uses@tanstack/react-routerinstead ofreact-router-dom. If you use<Link as={ReactRouterLink} to="...">, update to<Link as={TanStackLink} to="...">and change the import toimport { Link as TanStackLink } from '@tanstack/react-router'. Thetoprop type also changed fromTo(react-router-dom) tostring.
🚧 Updated
- JSONField - Added
type="button"to internal action buttons to prevent unintended form submissions whenJSONFieldis used inside a<form>element.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r typography json-field2026-03-09 16:30
✨ New
- JSONField - New form component for editing JSON data against a JSON Schema. Renders a smart form UI (text inputs, number inputs, checkboxes, dropdowns, nested object/array fields) derived from a
JSONSchemaTypeschema, with a toggle to switch to a raw JSON editor. SupportsmaxDepth,showPlaceholder,customFieldsfor Combobox overrides,onBlurfor react-hook-form integration, and full read-through ofoneOf,enum,format, and array item schemas. ExportsJSONFieldcomponent and typesJSONValue,JSONSchemaType,JSONSchemaConst,JSONObject,CustomFieldConfig.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r json-field2026-02-23 16:44
✨ New
- CountDot - New indicator component that displays a numeric count as a colored circular badge. Supports
sm,md, andlgsizes, all semantic color variants, and astackedprop for use insideDotGroup. - StatusDot - New indicator component for visualizing status as a pulsing or static colored dot. Supports
xxs–lgsizes, all semantic color variants,pulsinganimation, and astackedprop for grouped layouts. - StatusBadge - New composite badge that combines a
StatusDot(or animatedSpinnerfor transitional states) with a label. Supportssuccess,info,warning,error,disabled,starting, andstoppingvariants insm,md, andlgsizes. - DotGroup - New container component for grouping
StatusDotandCountDotindicators with automatic stacking styles and overflow support. Can be used standalone or anchored to acontentelement with configurableposition(top-right, bottom-left, etc.). - DataTableFilter - New filter UI component for data tables. Renders a filter trigger, active filter pills with operator selectors, and a clear action. Supports
text,option, andmultiOptionfilter types with full keyboard navigation and optional TanStack Table integration. - useDataTableFilter - New hook for managing
DataTableFilterstate. Providesfilters,actions(addFilter, removeFilter, setFilterValues, addFilterValue, removeFilterValue, setFilterOperator, removeAllFilters), and optional controlled mode viavalue/onValueChange. Automatically syncs filter state to a TanStack Table instance whentableis provided. - Command - Added submenu support via three new exports:
CommandSub(context provider + Popover wrapper),CommandSubTrigger(item that opens the submenu), andCommandSubContent(popover content for the nested command list). - Separator - Added
variantprop (default,subtle,strong) for theme-aware divider styling. ExportedseparatorVariantsCVA andSeparatorVarianttype. - Utils - Added shared indicator types and styles:
SemanticVariant,DotSize,StackableProps,dotColorVariants, anddotStackedVariants. These are used internally byStatusDot,CountDot, andDotGroup. - filter-utils - New utility module exporting filter types (
FilterType,FilterModel,FiltersState,FilterOperatorMap), operator configs (textFilterOperators,optionFilterOperators,multiOptionFilterOperators), and filter functions (textFilterFn,optionFilterFn,multiOptionFilterFn,createFilterFn,getDefaultOperator,getOperatorsForType,determineNewOperator) for use withDataTableFilteranduseDataTableFilter.
🚨 Breaking Changes
- BadgeGroup - Refactored from an items-based API to a children composition pattern. The
items: BadgeItem[]prop (and theBadgeItemtype) have been removed. ThedefaultVariantprop has been removed.badgeSizehas been renamed tosize.overflowVarianthas been renamed tovariant. TherenderOverflowContentcallback signature changed from(overflowItems: BadgeItem[]) => ReactNodeto(overflowChildren: ReactNode[]) => ReactNode. Migration: render<Badge>components directly as children instead of passing anitemsarray.
🚧 Updated
- Badge - Improved text contrast for colored variants:
primary,secondary,accent, anddestructivevariants now usetext-inverse(white on dark backgrounds).info-inverted,success-inverted, andwarning-invertedvariants usetext-info-foreground/text-success-foreground/text-warning-foregroundfor better WCAG compliance. - Banner - Updated
secondary,accent, andprimaryvariants to usetext-inversefor improved text contrast on dark backgrounds. - Button - Updated
accentanddestructivevariants to usetext-inversefor improved text contrast. - Checkbox - Updated checked state for
primaryandsecondaryvariants to usetext-inversefor improved icon contrast. - CodeComparison - Updated text selection highlight to use
text-inversefor consistent contrast with thebg-primaryselection background. - CopyButton - Updated
primaryandsecondaryvariants to usetext-inversefor improved contrast. - Sonner - Updated toast action button to use
text-inversefor improved contrast against thebg-primarybackground. - Tooltip - Updated tooltip content text to use
text-inversefor improved contrast against thebg-primarybackground. - Popover - Fixed
sideprop not being forwarded to the underlying RadixPopoverContent, enabling explicit side control. - Theme (CSS) - Improved light mode semantic background tokens:
background-*-subtletokens (success, warning, error, informative) now use-100scale (previously-50) for better visual contrast. Updated foreground tokens (primary-foreground,secondary-foreground,brand-foreground,destructive-foreground,success-foreground,warning-foreground,info-foreground) for WCAG-compliant contrast ratios. Added new--color-divider-default,--color-divider-subtle,--color-divider-strong, and--color-divider-inverttokens. Extended alpha color scales for indigo, primary-brand, dark-blue, red, blue, green, and yellow with 700–900 steps.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r badge-group badge banner button checkbox code-comparison command copy-button count-dot data-table-filter dot-group popover separator sonner status-badge status-dot tooltip2026-02-23 11:11
✨ New
- usePortalContainer - New hook providing a React context for controlling which DOM element portal-based components render into. Wrap your component tree with
PortalContainerProviderto isolate all nested portal content (dialogs, dropdowns, tooltips, etc.) to a specific container element — useful for shadow DOM, CSS isolation, and custom stacking context scenarios.
🚧 Updated
- AlertDialog - Portal content now automatically renders into the nearest
PortalContainerProvidercontext when no explicitcontainerprop is provided. Existingcontainerprop usage is unchanged. - Dialog - Portal content now automatically renders into the nearest
PortalContainerProvidercontext when no explicitcontainerprop is provided. Existingcontainerprop usage is unchanged. - DropdownMenu - Portal content now automatically renders into the nearest
PortalContainerProvidercontext when no explicitcontainerprop is provided. Existingcontainerprop usage is unchanged. - Popover - Portal content now automatically renders into the nearest
PortalContainerProvidercontext when no explicitcontainerprop is provided. Existingcontainerprop usage is unchanged. - Select - Portal content now automatically renders into the nearest
PortalContainerProvidercontext when no explicitcontainerprop is provided. Existingcontainerprop usage is unchanged. - Sheet - Portal content now automatically renders into the nearest
PortalContainerProvidercontext when no explicitcontainerprop is provided. Existingcontainerprop usage is unchanged. - Tooltip - Portal content now automatically renders into the nearest
PortalContainerProvidercontext when no explicitcontainerprop is provided. Existingcontainerprop usage is unchanged.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r alert-dialog dialog dropdown-menu popover select sheet tooltip use-portal-container2026-02-03 09:21
✨ New
- Utils - Added common portal component types for standardized prop definitions. Introduced
PortalRootPropsfor controlled open state (open, defaultOpen, onOpenChange),ModalRootPropsextending PortalRootProps with modal mode control,FocusScopeContentPropsfor auto-focus behavior (onOpenAutoFocus, onCloseAutoFocus),PortalContentPropscombining focus scope with container prop for inline rendering, andFixedPositionContentPropsextending PortalContentProps with showOverlay prop for modal overlays. These types provide a single source of truth for portal components used in visual regression testing.
🚧 Updated
- Alert-dialog - Updated AlertDialogContent to use common
FixedPositionContentPropstype via Pick utility for container, showOverlay, and onOpenAutoFocus props. - Combobox - Updated ComboboxProps to use common
PortalRootPropsfor defaultOpen prop andPortalContentPropsfor container prop via Pick utilities. Added support for controlled defaultOpen state. - Command - Updated CommandDialog to use common
FixedPositionContentPropstype via Pick utility for showOverlay, container, and onOpenAutoFocus props. - Context-menu - Updated ContextMenuContent to use common
PortalContentPropstype via Pick utility for container and onOpenAutoFocus props. - Credenza - Updated CredenzaProps to use common
FixedPositionContentPropstype via Pick utility for container, showOverlay, and onOpenAutoFocus props. - Dialog - Updated DialogContentProps to use common
FixedPositionContentPropstype via Pick utility for container, showOverlay, and onOpenAutoFocus props. - Drawer - Updated DrawerContent to use common
FixedPositionContentPropstype via Pick utility for container, showOverlay, and onOpenAutoFocus props. - Dropdown-menu - Updated DropdownMenuContent to use common
PortalContentPropstype via Pick utility for container and onOpenAutoFocus props. - Hover-card - Updated HoverCardContent to use common
PortalContentPropstype via Pick utility for container and onOpenAutoFocus props. - Menubar - Updated MenubarContent to use common
PortalContentPropstype via Pick utility for container and onOpenAutoFocus props. - Multi-select - Updated SimpleMultiSelectProps to use common
PortalRootPropsandPortalContentPropstypes via Pick utilities for controlled state (open, defaultOpen, onOpenChange) and portal rendering (container, onOpenAutoFocus). Added support for controlled open state and auto-focus behavior. - Popover - Updated PopoverContent to use common
PortalContentPropstype via Pick utility for container and onOpenAutoFocus props. Added onOpenAutoFocus support for auto-focus behavior when popover opens. - Select - Updated SelectContent to use common
PortalContentPropstype via Pick utility for container prop. - Sheet - Updated SheetContent to use common
FixedPositionContentPropstype via Pick utility for container, showOverlay, and onOpenAutoFocus props. - Tooltip - Updated TooltipContent to use common
PortalContentPropstype via Pick utility for container and onOpenAutoFocus props.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r alert-dialog combobox command context-menu credenza dialog drawer dropdown-menu hover-card menubar multi-select popover select sheet tooltip utils2026-02-02 15:45
🚧 Updated
- Button - Updated visual styling for
primaryandsecondaryvariants. Theprimaryvariant now uses surface-secondary tokens (previously surface-primary), andsecondaryvariant now uses surface-primary tokens (previously surface-neutral-dark). All existing variant names remain compatible. - Copy-button - Synchronized variant styling with Button component updates. The
primaryvariant now uses secondary color scheme, andsecondaryvariant uses primary color scheme. All existing variant names remain compatible. - Banner - Enhanced close button customization by adding
ButtonVariantssupport toBannerClosecomponent. Updated default close button to useinverse-ghostvariant andicon-smsize. Added gap-4 spacing between banner content elements. - Stepper - Updated inactive step button styling from
secondaryvariant tooutlinevariant for improved visual hierarchy in step progression.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r button copy-button banner stepper2026-01-28 14:21
✨ New
- BadgeGroup - Added a component for displaying groups of badges with overflow handling. Shows a configurable number of visible badges (default: 3), with overflow items displayed in a tooltip. Supports gap variants (none, xs, sm, md, lg), wrapping, custom badge sizes, variant configuration, and custom overflow tooltip rendering. Exports
BadgeGroup,BadgeItemtype,BadgeGroupProps, andbadgeGroupVariants. - ListCard - Added a card component system designed for list and grid layouts with slot-based composition. Includes
ListCardroot component with click handling,ListCardHeaderwith start/end slots and auto-truncation,ListCardMetafor secondary info,ListCardBodyfor content,ListCardDescriptionwith line-clamping (1-3 lines), andListCardFooterwith start/end slots for actions. Automatically wraps string children in Typography components. - ListView - Added a horizontal list layout component with three-column grid system. Features
ListViewStartslot for primary content with title/description props,ListViewIntermediaryslot for badges/tags (hidden on mobile), andListViewEndslot for single action. IncludesListViewGroupcontainer for grouped items with shared borders. Supports click handling, keyboard navigation, and multiple variants (standard, elevated, outlined, ghost, grouped). Automatically wraps string children in Typography components.
🚧 Updated
- Utils - Enhanced
wrapStringChildutility function to support string child wrapping with Typography components. Changed file extension from.tsto.tsxto support JSX rendering for component composition patterns.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r badge-group list-card list-view utils2026-01-21 22:40
🚧 Updated
- Border Color Specificity - Enhanced border color specificity across 20 components by adding
!importantflags to border color utilities (e.g.,border-input→!border-input) to ensure proper cascade precedence over conflicting global styles from external libraries. Components updated: Alert, Badge, Button, Calendar, Choicebox, Code-block, Code-editor, Code-tabs, Create-layout, Input, Input-group, Input-otp, Kbd, List-layout, Multi-select, Radio-group, Select, Tabs, Textarea, Toggle.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r alert badge button calendar choicebox code-block code-editor code-tabs create-layout input input-group input-otp kbd list-layout multi-select radio-group select tabs textarea toggle2026-01-21 22:02
✨ New
- Alert - Added
warningandsuccessvariants for expanded alert styling options. Thewarningvariant uses blue color scheme for important warnings and cautionary messages, whilesuccessvariant uses green color scheme for successful operations and confirmations. - Button - Added
iconprop for displaying icons alongside button text with automatic gap spacing. Icons are properly sized based on the button size variant (xs: 12px, sm: 14px, md: 16px, lg: 20px).
🚧 Updated
- Alert - Enhanced
destructivevariant styling with improved border transparency, background color, and better link color inheritance for dark mode support. - Button - Improved icon sizing system with size-specific icon dimensions instead of global sizing. Icon-only button sizes now use appropriately scaled icons (icon-xs: 14px, icon-sm: 16px, icon: 20px, icon-lg: 24px). Exported
ButtonPropstype for better TypeScript integration. - Badge - Improved icon sizing system with consistent descendant selector pattern (
[&_svg]:size-*) matching Button component. Added dynamic padding adjustments when icons are present usinghas-[>svg]:px-*modifiers for better visual balance across all size variants (sm, md, lg). Fixed React.Children.only error when usingasChildprop by implementing conditional rendering that passes single child element to Radix UI's Slot component. - Button - Fixed React.Children.only error when using
asChildprop withiconprop by implementing conditional rendering logic. In asChild mode, only children are rendered (icons must be included in children); in normal mode, both children and icon prop are supported. Enhanced icon sizing with size-specific dimensions for all button variants and icon-only sizes, ensuring proper scaling across xs (12px), sm (14px), md (16px), lg (20px), and icon-only variants (icon-xs: 14px, icon-sm: 16px, icon: 20px, icon-lg: 24px).
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r alert button2026-01-15 10:15
🚨 Breaking Changes
- Accordion - Renamed default variant from
defaulttosimple. Migration: Update<Accordion variant="default">to<Accordion variant="simple">or remove the variant prop (defaults tosimple). - Alert - Renamed default variant from
defaulttoinfo. Migration: Update<Alert variant="default">to<Alert variant="info">or remove the variant prop (defaults toinfo). - Badge - Renamed default variant from
defaulttoneutral,default-invertedtoneutral-inverted, anddefault-outlinetoneutral-outline. Renamed default size fromdefaulttomd. Migration: Update<Badge variant="default">to<Badge variant="neutral">,variant="default-inverted"tovariant="neutral-inverted",variant="default-outline"tovariant="neutral-outline", andsize="default"to<Badge>with no size prop (defaults tomd). - Banner - Renamed default variant from
defaulttosecondary. Migration: Update<Banner variant="default">to<Banner variant="secondary">or remove the variant prop (defaults tosecondary). - Card - Renamed variant from
defaulttostandard. Migration: Update<Card variant="default">to<Card variant="standard">or simply remove the variant prop (card defaults toelevatedvariant). - CodeBlock - Renamed default size from
defaulttomd, default width fromdefaulttomd, and default maxHeight fromdefaulttomd. Migration: Updatesize="default"tosize="md",width="default"towidth="md", andmaxHeight="default"tomaxHeight="md", or remove these props (all default tomd). - CodeTabs - Renamed default variant from
defaulttostandard. Migration: Update<CodeTabs variant="default">to<CodeTabs variant="standard">or remove the variant prop (defaults tostandard). - Command - Renamed default variant from
defaulttoelevatedand default size fromdefaulttomd. Migration: Update<Command variant="default">to<Command variant="elevated">andsize="default"tosize="md", or remove these props (defaults toelevatedandmd). - CopyButton - Renamed default variant from
defaulttoprimaryand default size fromdefaulttomd. Migration: Update<CopyButton variant="default">to<CopyButton variant="primary">andsize="default"tosize="md", or remove these props (defaults toprimaryandmd). - Dialog - Renamed default variant from
defaulttostandard. Migration: Update<DialogContent variant="default">to<DialogContent variant="standard">or remove the variant prop (defaults tostandard). - Empty - Renamed default variant from
defaulttotransparent. Migration: Update<EmptyMedia variant="default">to<EmptyMedia variant="transparent">or remove the variant prop (defaults totransparent). - Form - Renamed default layout from
defaulttovertical, default spacing fromdefaulttomd, and FormSection default variant fromdefaulttostandard. Migration: Update layout/spacing/variant props fromdefaulttovertical/md/standard, or remove these props (defaults tovertical,md, andstandard). - Input - Renamed default variant from
defaulttostandardand default container layout fromdefaulttostandard. Migration: Update<Input variant="default">to<Input variant="standard">or remove the variant prop (defaults tostandard). - Kbd - Renamed default variant from
defaulttofilled. Migration: Update<Kbd variant="default">to<Kbd variant="filled">or remove the variant prop (defaults tofilled). - Sidebar - Renamed SidebarMenuButton default variant from
defaulttofilledand default size fromdefaulttomd. Migration: Update<SidebarMenuButton variant="default">to<SidebarMenuButton variant="filled">andsize="default"tosize="md", or remove these props (defaults tofilledandmd). - Skeleton - Renamed default variant from
defaulttorounded, default size fromdefaulttomd, and removeddefaultwidth option (usemdinstead). Migration: Update<Skeleton variant="default">to<Skeleton variant="rounded">,size="default"tosize="md", andwidth="default"towidth="md", or remove these props (defaults torounded,mdsize, andmdwidth). - Table - Renamed default variant from
defaulttostandardand default size fromdefaulttomd. Migration: Update<Table variant="default">to<Table variant="standard">andsize="default"tosize="md", or remove these props (defaults tostandardandmd). - Toggle - Renamed default variant from
defaulttoghostand default size fromdefaulttomd. Migration: Update<Toggle variant="default">to<Toggle variant="ghost">andsize="default"tosize="md", or remove these props (defaults toghostandmd). - Typography - Renamed default variant from
defaulttobody. Migration: Update<Text variant="default">to<Text variant="body">or remove the variant prop (defaults tobody).
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r accordion alert badge banner card code-block code-tabs command copy-button dialog empty form input kbd sidebar skeleton table toggle typography2026-01-14 16:00
🚨 Breaking Changes
- Badge - Removed color alias variants (
green,orange,blue,red,indigo,purple,yellow,cyan,teal,rose,emerald,amber,gray). These convenience aliases have been removed in favor of using semantic variants. Migration: use semantic variants likesuccess(for green),warning(for orange/yellow),info(for blue/cyan),destructive(for red/rose),accent(for indigo/purple), orsimple/neutralfor grey tones. - Button - Renamed default variant from
defaulttoprimary. Update all<Button variant="default">to<Button>with no variant asprimaryis the default value. - Button - Renamed default size from
defaulttomd. Update all<Button size="default">to<Button>. - Button - Reorganized variant structure:
primarynow uses new primary theme tokens ("blurple", formerly brand color which was too similar to destructive),secondaryis now a filled variant (was outline). - Input - Renamed default size from
defaulttomd. Update all<Input size="default">to<Input />.
🚧 Updated
- Badge - Updated styling for semantic variants with improved design token usage. Variant
defaultnow usesbg-background-inverse-subtle,simplevariants updated with secondary text colors,warningnow uses inverse text for better contrast. All existing semantic variant names remain functional. - Button - Major variant system reorganization while maintaining all core functionality. Added new compound variants:
secondary-outline,secondary-ghost, and reorganized existing compound variants for better semantic naming. All variants now use enhanced semantic design tokens with improved hover, active, and disabled states. Better visual hierarchy with primary actions usingsurface-primarytokens and secondary actions using neutral tokens. - Tabs - Added
disabledprop support toTabsTriggercomponent for disabling individual tabs. Disabled tabs receivepointer-events-nonestyling automatically. - Toggle-group - Updated outline variant styling with improved semantic tokens. Outline variant now includes border wrapper with some padding. Active state uses primary surface tokens for stronger visual feedback.
- Theme - Updated CSS design tokens including background base color change (
#fafafa→#f5f5f5), focus ring color now uses primary brand (--color-ringchanged to--color-primary-600), added new surface brand subtle variants (--color-surface-brand-subtle,--color-surface-brand-subtle-hover), added destructive alpha variants (--color-destructive-alpha-subtle/default/strong), reorganized outline primary tokens, and removed deprecated--color-surface-accentin favor of brand surface tokens.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r badge button tabs toggle-group theme2026-01-05 22:30
⛔ Breaking Changes
- Fixed a bug where Fumadocs CLI no longer worked.
- Resolved type errors.
- Linted/formatted components with Ultracite.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r auto-form button card chart code-block-dynamic code-comparison code-editor code-tabs data-table files hover-card input json-viewer motion-highlight multi-select popover select sheet sidebar slider stepper toggle-group tooltip typography use-controllable-state use-file-upload use-fullscreen2025-12-11 10:42
🚨 Breaking Changes
- Theme - Extensive additions to design token system with 200+ new semantic tokens for colors, typography, and spacing. While all existing tokens remain (not technically breaking), you must update
theme.cssto use the redesigned Badge, Button, and Typography components. New tokens include: typography scales (--text-9xlthrough--text-caption-sm), font families (--font-sans,--font-display), letter-spacing tokens (--tracking-heading,--tracking-label,--tracking-number,--tracking-caption), semantic color surfaces (--surface-*,--background-*,--outline-*), and comprehensive alpha variants for all color scales. - Button - Removed
secondaryOutlinevariant. Migrate to the newsecondaryvariant which now uses an outline style by default, or useaccent-outlinefor brand-colored outline buttons.
🚧 Updated
- Badge - Completely redesigned variant system using semantic design tokens for better theme consistency. All existing variant names (default, secondary, destructive, outline, green, orange, blue, purple, indigo, yellow, cyan, teal, rose, emerald, amber, red, gray) remain available but with updated styling. Added 30+ new compound variants with
-invertedand-outlinesuffixes (e.g.,default-inverted,info-outline,accent-outline) providing filled, subtle, and outlined styles for each semantic color (default, simple, info, accent, success, warning, disabled, destructive, secondary, primary). Added new size optionlg(32px height) alongside existingsm(20px) anddefault(24px). Icon sizing now automatically adjusts per size variant. - Button - Major redesign using semantic design tokens with improved interaction states. All core variants (default, secondary, destructive, outline, ghost, link, dashed) remain but with enhanced styling including proper hover, active, and disabled states. Added new
accentvariant for brand/Redpanda Red colored buttons. Added 6 new compound variants:accent-outline,accent-ghost,destructive-outline,destructive-ghost,inverse-outline,inverse-ghostfor expanded styling options. Added newxssize (24px height) and enhanced existing sizes (sm: 32px, default: 40px, lg: 48px) with proper spacing and typography. Added 3 new icon size variants:icon-xs(24px),icon-sm(32px),icon-lg(48px). All buttons now haveactive:scale-[0.98]for tactile feedback on press. - Typography - Major expansion of the type system with 40+ new semantic variants based on Figma design system specifications. Legacy variants (default, lead, large, small, muted, label, xLarge) remain for backward compatibility but now map to new typography scales with updated styling. Added comprehensive variant categories: Titles (titleLarge through titleXSmall), Labels (labelLarge through labelXSmall with normal and strong weights), Body text (bodyXLarge through bodySmall with normal and strong weights), Buttons (buttonLarge through buttonXSmall), Numbers with tabular figures (numberLarge through numberXSmall with normal and strong weights), and Captions (captionMedium and captionSmall with normal and strong weights). Heading levels now support
level={5}in addition to 1-4. Links updated with dotted underline style and 3px offset. Updated font stacks to use Inter and Inter Display. Added new tracking tokens for precise letter-spacing control. - Form - FormSection component now uses Typography
HeadingandTextcomponents internally for title and description rendering, ensuring consistent typography across forms. - Auth0, Checkbox, Command, DataTable, JSONViewer, Label, Pagination, Skeleton, Sonner, Stepper, Tags - Updated to use new Typography components and semantic design tokens for consistent theming.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r theme badge button typography form auth0 checkbox command data-table json-viewer label pagination skeleton sonner stepper tags2025-12-03 13:47
✨ New
- Accordion - Added
variantprop with new "contained" style option providing card-like appearance with rounded borders and background colors. Addedstartandendprops toAccordionTriggerfor displaying custom elements like icons and badges alongside trigger content. AddedAccordionVarianttype export and new context hooksuseAccordionfor accessing variant state across the component tree.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r accordion2025-11-21 00:00
✨ New
- Alert - Added
iconprop for customizable icon display. Accepts ReactNode for custom icons, defaults to InfoIcon, or pass null to render without an icon for more flexible alert styling.
🚧 Updated
- Alert, AlertDialog, Avatar, AvatarGroup, Banner, Breadcrumb, ButtonGroup, Calendar, Chart, Choicebox, CodeBlock, CodeEditor, Collapsible, DataTable, DropdownMenu, Dropzone, Empty, Field, Files, Form, Group, InputGroup, Item, ListLayout, LoadingAnimation, Menubar, MotionHighlight, MultiSelect, RunningRedpanda, RunningRedpandaTreadmill, Spinner, Switch, Tags, Timeline, Typography, WaitingRedpanda - Enhanced with SharedProps type providing consistent testId prop support across all components for easier testing and debugging.
- AlertDialog, Combobox, ContextMenu, Dialog, Drawer, DropdownMenu, HoverCard, LoadingAnimation, Menubar, MotionHighlight, MultiSelect, Popover, Select, Sheet, Tooltip - Added
containerprop to portal-based components, allowing custom portal container element for advanced layout scenarios like modals within specific DOM nodes.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r alert alert-dialog avatar avatar-group banner breadcrumb button-group calendar chart choicebox code-block code-editor collapsible combobox context-menu data-table dialog drawer dropdown-menu dropzone empty field files form group hover-card input-group item list-layout loading-animation menubar motion-highlight multi-select popover running-redpanda running-redpanda-treadmill select sheet spinner switch tabs tags timeline tooltip typography waiting-redpanda2025-11-12 00:00
✨ New
- Badge - Added 13 color variant options (green, orange, blue, purple, indigo, yellow, cyan, teal, rose, emerald, amber, red, gray) with automatic dark mode support. Added flexible size system with sm and default sizes. New icon prop for displaying icons alongside badge content. Exports BadgeVariant and BadgeSize types for enhanced type safety. Includes 3 new demo files showcasing color variants, size options, and icon integration patterns.
- Button - Added secondaryOutline variant for outlined secondary buttons with hover states. Added router integration support with as and to props for seamless use with React Router or other routing libraries without wrapping in Link components. Includes 2 new demo files for secondaryOutline variant and router integration patterns.
- Input - Added InputStart and InputEnd slot components for adding icons, buttons, or other controls inside input fields. Enables better input decoration patterns without wrapper divs. Includes new demo file showcasing slot usage with icons and controls.
- Kbd - Added kbdVariants export for consistent keyboard shortcut styling. New variant prop supporting default and outline styles. Added size prop with xs, sm, and md options for different keyboard display contexts.
🚧 Updated
- Badge - Restructured internal layout to wrap children in span for proper truncation. Removed hardcoded padding in favor of size-based variants.
- Button - Added cursor-pointer class for better UX consistency across interactive elements.
- Card - Enhanced with motion/react animation support. Now supports both static (default) and animated modes via animated prop. Improved TypeScript types with separate StaticCardProps and AnimatedCardProps for better type inference. Added CardVariant and CardSize type exports.
- Choicebox - Enhanced with forwardRef support for better form integration. Improved checked state styling to use dynamic checked prop instead of data-state attributes. Added hover:shadow-elevated for better visual feedback. Refined border styling for cleaner appearance.
- Code-block and Code-block-dynamic - Minor code cleanup removing extra spaces in className definitions.
- Combobox - Major UX improvements with memoization for better performance. Enhanced keyboard navigation with improved Enter key behavior and better autocomplete completion. Added onOpen and onClose callbacks for integration with other components. Added className and containerClassName props for styling flexibility. Fixed blur behavior to maintain user input for creatable mode. Improved cursor positioning on open.
- Data-table - Added use client directive for proper React Server Components compatibility. Enhanced DataTableFacetedFilter with labelClassName prop for custom label styling. Improved faceted filter layout with better spacing and flex handling for icons and counts.
- Input - Added containerClassName prop for styling the input wrapper. Enhanced readOnly support to properly disable password toggle and step control buttons. Fixed placeholder styling with !important to prevent override issues.
- Input-group - Added forwardRef support to InputGroupTextarea for better form library integration and ref forwarding.
- Multi-select - Enhanced with container prop for portal customization. Improved value display with better overflow handling (nowrap instead of wrap). Fixed truncation logic to preserve React node content. Better tooltip behavior for truncated string values only. Improved type safety in handleSelect and handleDeselect callbacks.
- Stepper - Added icon support directly in step definitions with automatic fallback to passed icon prop. Enhanced active state with ring-3 styling and secondary color variants. Added secondaryOutline variant for inactive steps. Fixed button variant logic for better visual hierarchy.
- Radio-group - Added orientation prop with horizontal layout support using CSS grid columns. Fixed googly-eye visual alignment bug with indicator positioning by adjusting margin-top offset. Maintains backward compatibility with vertical orientation as default.
- Tags - Refactored imports to use named imports instead of default React import with namespace.
- Toggle-group - Added attached mode support (default true) for visually connected toggle buttons. Proper border-radius handling for first, middle, and last positions in attached groups. When attached is false, adds gap between items. Enhanced with Group context integration for sophisticated layout control. Includes new demo file showcasing attached mode feature.
- Typography - Added react-router-dom Link integration for seamless routing. Exported textVariants for external styling consistency. Improved List component spacing (reduced margins and improved item spacing). Better default text variant sizing.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r badge button card choicebox code-block code-block-dynamic combobox data-table input input-group kbd multi-select radio-group stepper tags toggle-group typography2025-10-20 16:00
✨ New
- ButtonGroup - Added a flexible container component for grouping buttons and other form controls together. Supports horizontal and vertical orientations with automatic border and border-radius adjustments. Includes
ButtonGroup,ButtonGroupText,ButtonGroupSeparator, andbuttonGroupVariantsexports. Seamlessly integrates with buttons, inputs, selects, dropdowns, and more. - Empty - Added a comprehensive empty state component for displaying no-data scenarios. Features flexible layout with support for icons, images, avatars, titles, descriptions, and actions. Includes
Empty,EmptyHeader,EmptyMedia,EmptyTitle,EmptyDescription, andEmptyContentexports with multiple display variants. - Field - Added a sophisticated form field component system with responsive layout support. Provides vertical, horizontal, and responsive orientation modes with comprehensive field group management. Includes
Field,FieldLabel,FieldTitle,FieldDescription,FieldError,FieldContent,FieldGroup,FieldLegend,FieldSeparator, andFieldSetexports for building accessible, well-structured forms. - InputGroup - Added an advanced input grouping component with support for inline and block addons. Enables combining inputs with labels, buttons, icons, spinners, and tooltips in a unified, styled container. Includes
InputGroup,InputGroupAddon,InputGroupButton,InputGroupText,InputGroupInput, andInputGroupTextareaexports with automatic focus state management. - Item - Added a versatile list item component for building data displays, settings panels, and navigation lists. Supports multiple variants (default, outline, muted), size options, and flexible content layouts with media support. Includes
Item,ItemMedia,ItemContent,ItemTitle,ItemDescription,ItemActions,ItemGroup,ItemSeparator,ItemHeader, andItemFooterexports. - Spinner - Added a simple, accessible loading spinner component using Lucide's Loader2Icon with proper ARIA attributes for screen readers.
- useCopyToClipboard Hook - Added a custom React hook for managing clipboard copy operations with automatic timeout and callback support. Exports
useCopyToClipboardfunction withisCopiedstate andcopyToClipboardmethod.
🚧 Updated
- AutoForm - Enhanced with Typography component integration for headings and text elements. Improved accessibility with better semantic structure for required field indicators and error messages. Updated
ArrayWrapper,BooleanField,FieldWrapper,NumberField, andObjectWrappercomponents. - Banner - Added variant support with new
bannerVariantsexport. Now supportsdefault,accent,muted, andprimarycolor schemes with automatic button text color adjustments based on variant. - Breadcrumb - Added new
BreadcrumbHeadercomponent for consistent breadcrumb positioning in layouts. Integrates seamlessly with sidebar layouts and responsive designs. - Checkbox - Major refactor with new variant system supporting
default,primary,secondary, andoutlinestyles. Fixed infinite loop issue with controlled checkbox state management. Added proper controlled/uncontrolled mode handling and exportedcheckboxVariantsfor styling consistency. - CodeTabs - Enhanced to support both object-based codes and array-based items with JSX labels. Added new
CodeTabItemtype anditemsprop for more flexible tab configuration. Improved responsive design with horizontal scrolling on mobile and better tab spacing. - Command - Removed unnecessary text-color styling from SVG icons in command items, allowing icons to inherit proper colors from parent contexts.
- CopyButton - Added children prop support, allowing the button to display custom content alongside the copy icon. Maintains backward compatibility with icon-only mode.
- DataTable - Improved faceted filter styling by removing gap classes and updating checkbox variant to
default. Better visual consistency in filter dropdown menus. - Dialog - Enhanced overlay with improved transparency and backdrop blur effect (changed from
bg-black/80tobg-black/40 backdrop-blur-xs). Added padding to close button for better hit area. - Icons - Added 4 new AI coding assistant icons:
CursorIcon,WindsurfIcon,ClineIcon,ClaudeDesktopIcon, andClaudeCodeIcon(Anthropic logo). - Kbd - Complete redesign with simplified styling system. Removed variant and size props in favor of a single, consistent design. Added new
KbdGroupcomponent for displaying keyboard shortcut combinations. Enhanced tooltip integration with automatic style adjustments. - Sheet - Enhanced with size variants and improved accessibility. Added proper ARIA attributes and better keyboard navigation support.
- Slider - Minor styling improvements and accessibility enhancements.
🐛 Fixed
- Checkbox - Resolved infinite loop issue in controlled mode where state updates would trigger unnecessary re-renders. Fixed background color inconsistencies across different themes.
- Dialog/Credenza - Adjusted close button positioning and sizing for better accessibility and visual balance.
- RadioGroup - Fixed spacing issues in attached demo mode for better visual consistency.
- Registry Build - Resolved build issues with fumadocs registry generation, ensuring proper TypeScript analysis and dependency resolution.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r button-group empty field input-group item spinner auto-form banner breadcrumb checkbox code-tabs command copy-button data-table dialog icons kbd sheet slider use-copy-to-clipboard2025-10-20 00:00
🚧 Updated
- use-shiki Hook - Fixed TypeScript type checking errors by adding @types/hast as a dev dependency. This resolves type inference issues when working with Shiki's syntax highlighting AST nodes.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r use-shiki2025-09-09 14:00
✨ New
- Combobox - Added a searchable select input component with intelligent autocomplete functionality. Features include typeahead suggestions, creatable options support, keyboard navigation, and accessibility compliance. Exports
Comboboxfunction andComboboxOptiontype interface. - Group - Added a layout component for grouping related form elements together. Supports both attached mode (visually connected elements) and unattached mode (spaced elements) with context-aware styling. Exports
Groupcomponent,useGrouphook, and type definitions.
🚧 Updated
- Button - Enhanced with Group context integration for seamless attached group styling. Buttons now automatically adjust border radius and borders when used within attached groups. Added 'use client' directive for React 18 compatibility.
- Input - Major enhancement with slot support including new
InputStartandInputEndcomponents for icons and controls. Enhanced with Group context integration, improved focus states, and better accessibility. AddedinputVariantsexport for styling consistency. - Select - Enhanced with Group context integration for attached group styling. Select triggers now automatically adjust styling when used within attached groups. Added 'use client' directive.
- Card - Improved sizing system with more practical padding values (reduced from larger px/py values to more reasonable spacing). Enhanced
CardTitleandCardDescriptioncomponents with automatic Typography component integration. AddedCardPropsinterface export and improved shadow styling fromshadow-shadow-elevatedtoshadow-elevated. - Choicebox - Refined visual styling with improved hover states (
hover:shadow-elevated) and enhanced sizing options for better form integration. Updated border styling and spacing improvements. - Sheet - Enhanced with Typography integration for titles, improved overlay transparency (from
bg-black/80tobg-black/50), adjusted padding values, and increased close button size for better accessibility. - Tabs - Updated underline variant styling, changing background from muted to background color for improved visual consistency.
- Typography - Enhanced
Headingcomponent with forward ref support for better React integration and DOM manipulation capabilities. - Label - Updated layout from
flex items-center gap-2toflex gap-1.5 flex-colfor improved form field alignment and spacing.
Update Script
To update existing components in your project:
yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r combobox group button input select card choicebox sheet tabs typography labelBuilt by malinskibeniamin. The source code is available on GitHub.