2.14.1Patch

Patch changes

  • 7d91721

    Preserve ButtonGroup's outer corners while an overlay control is open.

2.14.0Minor

Minor changes

  • da41be5

    Update the bundled Base UI dependency to version 1.8.0 and expose its Combobox item collection and functional Toast update APIs.

  • 9ad4c57

    Add ButtonGroup component for joining a small set of tightly-coupled buttons into a single control — most commonly a split button (a primary action next to a dropdown trigger). Handles layout only: children keep their own variant, size, and shape while the group flattens inner corners and overlaps borders so the buttons share one seam. Renders role="group". For grouping multiple independent buttons or inputs, use Toolbar instead.

  • d0b18d6

    Add sidebar open-change completion callbacks.

  • cd119ab

    Add the TagInput component for creating and removing free-form values.

  • 5d19dee

    Add InlineCopyText, a compact borderless copy control for short values in dense interfaces and table cells. It accepts string or rich children, Text typography props excluding heading variants, an explicit copied value for rich content, localized accessible labels, inline success feedback, and hover or focus icon reveal.

  • 77489b5

    Add an optional yAxisMinInterval prop to TimeseriesChart for discrete data.

  • 6989681

    Add support for footer text below TimeseriesChart tooltip values.

  • 06321ce

    Add a strict responsive LayerDialog component with automatic dismissal composition, alert-dialog semantics, mobile drawer behavior, and application-wide defaults for its built-in close and cancel copy through KumoLocaleProvider.

  • d4a3e71

    Add GlobeMap, an SVG orthographic globe with boundary-free hatched land, horizon-faded geographic markers, optional geographic guides, pointer and keyboard rotation, automatic rotation, Kumo-themed tooltips, and no WebGL or ECharts requirement.

Patch changes

  • de80043

    Reset the native fieldset padding in radio and checkbox groups.

  • 1175556

    Refine Empty state typography and balance description text when it wraps.

  • 5b1e222

    Support nested LayerDialog drawers with independently layered backdrops and responsive mobile actions.

  • 9c970e3

    Add a plain CodeHighlighted variant for frameless, padding-free code blocks with a correctly positioned copy button.

  • cfffa4e

    Document app-root CSS isolation for reliable stacking of portaled components.

  • 6e7bd82

    Update formatting for Vite+ 0.3.1.

  • 78d05b6

    Use the up/down double chevron in Combobox value and input triggers to match Select.

  • 86029e4

    Add a visual regression contract for truncating text in default Tooltip triggers.

2.13.2Patch

Patch changes

  • 36fc155

    Add scrollItemIntoView() to preserve the position of visible sidebar items while honoring alignment for offscreen items.

2.13.1Patch

Patch changes

  • 7d5241d

    Allow default Tooltip trigger children to control their line height, preventing inherited text from being clipped.

2.13.0Minor

Minor changes

  • 4066307

    Add unknown-total pagination support through hasNextPage.

  • f74936f

    Add Toolbar.Link, which renders a LinkButton with toolbar sizing, styling, and keyboard navigation.

Patch changes

  • d004940

    Position dialogs near the top of the viewport instead of vertically centering them.

  • 8f0a1f0

    Use the elevated surface color for even rows in the default Table variant.

  • 1ede8bf

    fix(select): align the trigger surface with form controls

    Select triggers now use bg-kumo-control, including their open and disabled states, so they match Input, Combobox, and the rest of the form-control family. Consumer background classes can still override the default without using !important. The popup remains on the floating bg-kumo-base surface.

  • 8482c50

    fix(select): anchor the popup below the trigger and expose placement props

    Select.Positioner relied on Base UI's alignItemWithTrigger default (true), which overlays the popup on the trigger so the selected option's text lands on the trigger's value text, emulating a native <select>. Options always render at text-base, so on xs/sm triggers the popup was much taller than its anchor, and Base UI's compensating shift detached it from the trigger — on xs it overhung by 12.5px above and 45.5px below and sat 8px to the left, covering adjacent content.

    The popup now prefers bottom placement and is offset from the trigger, with Base UI's collision avoidance still flipping it automatically when the preferred side lacks space. Placement is configurable:

    propdefaultnotes
    side"bottom"preferred side; still flips automatically on collision
    sideOffset4gap between trigger and popup, matching Combobox/Autocomplete
    align"start"alignment along the trigger edge
    alignOffsetadditional offset along the alignment axis
    alignItemWithTriggerfalseopt back in to the native <select> overlay

    The remaining Base UI Positioner controls are also forwarded unchanged: anchor, arrowPadding, positionMethod, collisionAvoidance, collisionBoundary, collisionPadding, sticky, and disableAnchorTracking.

    The popup also now tracks the trigger width via min-w-(--anchor-width) instead of min-w-[calc(var(--anchor-width)+3px)], which existed to visually offset the old item-alignment shift.

  • 7526a6a

    Allow non-heading Text variants to inherit line height from their surrounding context.

  • b094a5a

    Make Combobox.Input sit flush with the top and sides of Combobox.Content and remove its bottom corner rounding.

  • 20b7880

    Reduce the trailing inset for buttons inside large InputGroup addons.

2.12.0Minor

Minor changes

  • 716e5b8

    Add the Text heading variant with a 16px semibold default and a 20px size="lg" option. The variant defaults to a span, so callers choose heading semantics explicitly with as. Deprecate the numbered heading1, heading2, and heading3 variants.

Patch changes

  • d7a7a35

    Collapsible.DefaultTrigger now uses text-kumo-default (neutral) with font-medium instead of the blue text-kumo-link color.

  • 0db4f66

    deprecate MenuBar in favor of segmented Tabs

    • mark the MenuBar component (and its exports) as @deprecated; it will be removed in a future release
    • new usage should prefer Tabs with variant="segmented" (the default Tabs variant)
    • the runtime behaviour of MenuBar is unchanged for existing consumers
    • remove the MenuBar documentation page and demos from the docs site
  • c64183b

    Fix Toast background clipping the ring outline at the corners — the inner background layer's radius (11px) was smaller than the root's rounded-xl (12px), painting over the ring at the corners. Matched them up.

  • ef13cb4

    Restore disabled and loading state handling for Toolbar.Button so disabled controls expose the correct semantics and cannot be activated.

  • 51d0f03

    Normalize shadows and outlines on tip-style overlays (Popover, Tooltip, ClipboardText, Chart tooltip).

    • Drop the shadow-kumo-tip-shadow color override so shadows use Tailwind's default translucent black instead of an opaque light-gray in light mode.
    • Tune shadow sizes: Popover, Tooltip, ClipboardText tooltip, and Chart tooltip use shadow-md; ClipboardText's "Copied" toast keeps shadow-lg to match the Toast component.
    • Switch these overlays from outline-kumo-fill to outline-kumo-line, matching every other floating surface (Dropdown, Select, Combobox, Dialog, etc.).
    • Rename kumo-tip-shadowkumo-arrow-edge and kumo-tip-strokekumo-arrow-stroke. The tokens draw the border on Popover/Tooltip arrow SVGs, not a box shadow. Both now resolve to kumo-line, so the arrow border aligns with the popup outline in both modes.
  • d586bf3

    Add scrollToItem(id, options?) to useSidebar() for imperatively scrolling a nav item into the sidebar viewport. Tag items with the new itemId prop on Sidebar.MenuButton or Sidebar.MenuItem.

    Options:

    • align: "start" | "center" | "end" | "auto" (default "auto" — no-op if the item is already visible; otherwise scroll the minimum distance).
    • behavior: "auto" | "smooth" (default "auto" — instant, best for cross-app landings so users don't watch the sidebar animate on entry). prefers-reduced-motion forces "auto".

    Scrolls only the sidebar viewport (never the document) and works with Sidebar.SlidingViews: items register with the provider via an internal map, so scrollToItem walks up from the target to find its owning viewport rather than querying the DOM.

2.11.0Minor

Minor changes

  • aa6edff

    Add icon support to filled Badge variants through the icon prop, add linked-badge hover styles, and use the base surface background for outline badges.

Patch changes

  • bba0f5e

    Allow users to select and copy LinkButton text while preserving Button text selection behavior.

  • c2c8d42

    Update Table rows to use borderless, alternating background styling.

  • 0ad1926

    Fix hydration mismatch in the Sidebar's useIsMobile hook on SSR frameworks like Next.js. The hook now uses useSyncExternalStore with a desktop getServerSnapshot, so the server-rendered HTML (desktop <aside>) hydrates cleanly on mobile viewports before switching to the mobile overlay.

2.10.0Minor

Minor changes

  • 4b9a4dc

    Allow Select and Combobox triggers to compose directly with Toolbar.Button and Toolbar.Input through their render props, adding grouped styling and arrow-key focus management while preserving regular Select.* and Combobox.* APIs.

    Deprecate Toolbar's configurable size prop and size metadata exports. They remain functional for compatibility; omitting size continues to use the base size.

Patch changes

  • 65db2e6

    Forward link-specific props in Tabs and Sidebar so link-rendered tabs can opt out of native button semantics, and Sidebar link buttons preserve attributes like aria-current.

  • 0c58325

    Expose all positioner props on Combobox.Content (anchor, positionMethod, collisionAvoidance, collisionBoundary, collisionPadding, sticky, disableAnchorTracking).

  • 528d5ff

    Populate InputArea props in component registry so the docs API reference table renders correctly

  • 75c3b14

    Fix Sidebar peeking state during SlidingViews transitions.

  • 1d9b588

    Fix Tabs overflow controls when tabs are removed and the remaining tabs fit.

2.9.2Patch

Patch changes

  • 188a82c

    Remove the elevated chip styling from Tabs overflow scroll controls.

  • c5ad709

    Constrain Tabs overflow controls to segmented tabs and focus the caret target.

2.9.1Patch

Patch changes

  • ff76f30

    Update the default collapsible trigger and panel styling.

    Collapsible.DefaultPanel now uses an inner content wrapper so the outer panel can animate height smoothly while clipping overflow during the transition. Consumers applying custom layout or spacing classes directly to DefaultPanel may need to move those styles to their content, or use Collapsible.Panel for a fully custom layout.

  • 7468623

    Fix initCatalog so it actually loads the validation schemas.

    Previously it triggered a synchronous validation whose "schemas not loaded" error was swallowed, so await initCatalog(catalog) could resolve while hasComponent, componentNames, and the other synchronous catalog APIs still reported no components. It now awaits loadSchemas() directly.

    A failed schema load is also no longer cached: retrying initCatalog (or loadSchemas) after a transient failure now re-attempts the import instead of returning the stale rejection.

  • d7639f2

    Fix Shiki highlighter lifecycle in ShikiProvider and CodeHighlighted.

    ShikiProvider no longer re-creates the highlighter when a parent rerender passes an equivalent inline languages array — initialization is keyed on the normalized language set. Highlighters are now disposed on unmount and when the engine or language set changes, instead of leaking. CodeHighlighted memoizes the highlighted HTML so unrelated rerenders (such as copy-button state changes) no longer re-highlight unchanged code, and initialization errors are logged once instead of on every render. Reinitializing after a failed initialization now clears the stale error state instead of showing it during the retry.

  • c599590

    Reset the Tabs overflow control background so host button styles do not show through the scrim gradient.

Showing 1-10 of 61