cloudflare/kumo @cloudflare/kumo@1.19.0
cloudflare/kumo
Captured source
source ↗@cloudflare/kumo@1.19.0
Repository: cloudflare/kumo
Tag: @cloudflare/kumo@1.19.0
Published: 2026-04-16T16:25:25Z
Prerelease: no
Release notes:
Minor Changes
- da6eee1: feat(chart): rename
formattertodangerousHtmlFormatterfor XSS awareness
BREAKING CHANGE: The formatter property in KumoChartOption['tooltip'] has been renamed to dangerousHtmlFormatter. This change makes the security implications of using HTML formatters more explicit to developers. The API remains identical—only the name has changed.
Migration: Replace formatter with dangerousHtmlFormatter in your chart tooltip configurations.
- 4785c43: feat(tooltip, popover): deprecate
asChildin favor ofrenderprop
Unifies composition patterns across the library by adopting Base UI's render prop pattern. The asChild prop is now deprecated on:
TooltipPopover.TriggerPopover.Close
Migration:
- - Save - + Save} /> - - Open - + Open} /> - - Close - + Close} />
The asChild prop remains functional for backward compatibility but will be removed in a future major version.
- a0f2b18: feat(popover): expose
anchorprop onPopover.Contentfor virtual positioning
Forwards Base UI's anchor prop through Popover.Content to the underlying Positioner, enabling popover positioning against custom elements, refs, or virtual points (e.g., a DOMRect from getBoundingClientRect()). This is useful when the popover trigger and the desired anchor are in different component trees, or when anchoring to a coordinate rather than a DOM element.
- 58b5777: Convert Table of Contents to exported Kumo component
- 0cae077: feat(Select): add size prop (xs/sm/base/lg) matching Input and Combobox heights
Patch Changes
- 1e7ba10: feat(layer-card): support simple card usage and deprecate Surface
- allow
LayerCardto be used directly withoutLayerCard.Primaryfor simple single-layer card layouts - keep
LayerCard.SecondaryandLayerCard.Primarysupported for the existing layered card pattern - deprecate
Surfacein favor ofLayerCardwhile keeping the old API working as a compatibility wrapper - update docs and examples to prefer
LayerCard, including table examples that no longer need a nestedLayerCard.Primary
- 2682319: fix(pagination): add ARIA attributes for screen reader accessibility
- Wrap pagination controls in `` for proper landmark navigation
- Add
aria-live="polite"andaria-atomic="true"to status text for page change announcements - Add
navigationtoPaginationLabelsfor i18n customization of the nav aria-label
- 9eb1306: fix(chart): escape HTML in tooltip series name and values
Escapes HTML entities in TimeseriesChart tooltip series names and values before rendering.
- 4565baa: fix(combobox): make TriggerInput caret button clickable for Playwright tests
- 4dfdc3f: fix(dropdown): pass children through when render prop is provided on DropdownMenu.Trigger
- 98e3170: fix(Select): TypeScript inference with
strictNullChecksandrenderValue/placeholderinteraction
TypeScript fix: Under strictNullChecks, using value={objectOrNull} would cause T to be inferred as never, making callbacks like onValueChange and renderValue unusable. This is now fixed.
Runtime fix: renderValue is now only called with non-null values. When value is null, the placeholder is shown instead. Previously, renderValue would receive null at runtime despite being typed as (value: T) => ReactNode.
// Recommended pattern v.name} // v is T (non-null), no defensive coding needed />
- 9c3cdbf: Fix sidebar collapsible content snapping shut instead of animating smoothly when closing.
- 27bcd59: fix(table): align sticky column colors with compact header variant
- a8adf02: fix(tokens): correct text-kumo-subtle dark mode value to provide visible contrast
- 547c7fa: Updated the token value for
kumo-lineandkumo-hairlinein dark mode so they are more visible. - replace
kumo-lineusages withkumo-hairlineacross Kumo components and docs UI/content styles - use
ring-kumo-linefor shadowed surfaces (for example combobox, dialog, select, dropdown, toast, and related surface wrappers) - adjust theme token configuration and generated styles to support updated neutral/hairline appearance
- 460a603: fix(a11y): add accessible labels to icon-only controls