Open
Conversation
bb8b951 to
d5b7e06
Compare
mattrothenberg
approved these changes
Apr 22, 2026
commit: |
Contributor
Author
Docs PreviewCommit: |
Contributor
Author
5 tasks
5c61563 to
66bd21d
Compare
66bd21d to
7989906
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.






























This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@cloudflare/kumo@2.0.0
Major Changes
bf68ac0: BREAKING: Checkbox
onCheckedChangenow receives event details as second argumentThe
onCheckedChangecallback signature now matches Base UI, providing access to the underlying event:Removed deprecated props:
onChange- useonCheckedChangeinsteadonValueChangeon individual checkboxes - useonCheckedChangeinsteadonClick- was redundant, use standard React event handling via spread propsMigration:
Note:
Checkbox.Group'sonValueChangeprop is unchanged - it still accepts(values: string[]) => void.f9ba3f9: feat(Collapsible)!: refactor to compound component API
Breaking change: Collapsible now uses a compound component pattern matching other Kumo components like Popover and Dialog.
Before
After
Migration
For the quickest migration, use the new
DefaultTriggerandDefaultPanelcomponents which preserve the previous styling:New Sub-components
Collapsible.RootCollapsible.Triggerrenderprop supportCollapsible.PanelCollapsible.DefaultTriggerCollapsible.DefaultPanel3256a7b: feat(Text): decouple visual heading variants from semantic HTML elements
Breaking change:
heading1,heading2,heading3variants no longer auto-render<h1>,<h2>,<h3>tags. They now render as<span>by default. Use theasprop to set the appropriate semantic heading level for your document outline.Before:
After:
The
asprop is now restricted to valid text elements:"h1"through"h6","p", and"span".267ba7a: BREAKING (v2):
Textrequires an explicitasprop whenvariantis a heading ("heading1","heading2","heading3").The previous major bump (#393) decoupled heading variants from semantic HTML — heading variants render as
<span>unless anasprop is provided. That made the library more flexible but introduced a silent accessibility footgun: forgettingason a real section heading produced a<span>, excluding it from the document outline without any type-level feedback.This change makes
asrequired for heading variants via a discriminated union. Body and monospace variants are unchanged (asremains optional; defaults to<p>and<span>respectively).Migration
Every
<Text variant="heading1">,<Text variant="heading2">,<Text variant="heading3">must now passas. TypeScript will flag each call site:For each heading call site, decide whether it's a real section heading (use
as="h1"/"h2"/etc.) or decorative (useas="span"). Codemod cannot make this choice mechanically — it is a semantic judgment per usage.Body and monospace variants: no changes required.
Minor Changes
1954aa8: feat(radio, checkbox, switch): add composable Legend sub-component for group components
Radio.Legend,Checkbox.Legend, andSwitch.Legendsub-componentsclassNamefor full styling control (e.g.className="sr-only"to visually hide)legendstring prop optional when using the sub-component insteadSwitch.Groupno longer renders a visible border/padding/rounded container — now consistent withRadio.GroupandCheckbox.Group. UseclassNameto add a border if needed.1eee41a: Add
InputGroupcompound component for composing decorated inputsCompound structure:
InputGroup,InputGroup.Input,InputGroup.Addon,InputGroup.Suffix,InputGroup.Button.label,description,error,required, andlabelTooltipdirectly toInputGroupxs,sm,base,lg) propagate to all sub-components via context, including icon sizing in addonsInputGroup.Addon— positions icons, text, or buttons atalign="start"(default) oralign="end"of the inputInputGroup.Suffix— inline text suffix (e.g..workers.dev)InputGroup.Button— ghost button for secondary actions with tooltip supportInputGroup.Label— useInputGroup.AddoninsteadInputGroup.Description— useInputGroup.Suffixinstead353faea: Adds Autocomplete component. A free-form text input with an optional filtered suggestion list. Unlike Combobox, the value is not constrained to the items list.
431de04: feat(radio): accept ReactNode for
Radio.Itemlabel and honorcontrolPositionon card appearanceRadio.Item'slabelprop now acceptsReactNode, allowing icons, badges, or other markup alongside text.Radio.Group'scontrolPositionprop now takes effect onappearance="card". Card appearance continues to default to"end"(radio on the right); passcontrolPosition="start"to render the radio on the left of the label and description.f9d8b76: Polish TableOfContents indicator and semantic HTML
ul/liHTML structurehrefandactiveprops toTableOfContents.Groupfor clickable labels07426f6: feat(table): add
onCheckedChangeprop toTable.CheckCellandTable.CheckHead, aligning with theCheckboxcomponent's signature.The new prop exposes an optional second argument with event details, matching Base UI's idiom:
The existing
onValueChangeprop still works but is now deprecated and flagged by theno-deprecated-propslint rule. It will be removed in a future major version. Migrate by renaming the prop — the single-argument callback shape is preserved.This change is additive and does not require consumer code changes at this time.
Patch Changes
ec73bc5: Update chart color docs and demos, including sequential heatmap/CVD coverage and improved chart demo behavior.
69bfc53: Improve focus ring consistency and clipping behavior across inputs and related controls.
focus-withinand remove duplicate input-level ring styles.Selecttrigger and option focus styles to use inset focus rings to prevent clipping in rounded/overflow contexts.InputGroupandInputGroup.Buttonfocus ring color toring-kumo-focus, including hybrid container-zone focus ring classes.react-day-picker) focus ring token tovar(--color-kumo-brand).kumo-binding.cssto usevar(--color-kumo-focus)at 1px weight.b923281: Fix
InputGrouphover state incorrectly propagating to the first child button (e.g. inPagination.Controls). Root now renders as<div>instead of<label>when it contains multiple labelable controls.c019b41: Improved focus and keyboard accessibility styles across Kumo components and docs navigation.
kumo-focussemantic token to the theme generator config and generatedtheme-kumo.cssoutput.Button,Input,InputGroup,Select,Checkbox,Radio,Switch,Sidebar,Tabs,Menubar, and related controls) for more consistent and visible keyboard focus visibility.kumo-focusring to keep pointer and keyboard focus visually consistent where browsers apply:focus-visibleheuristics to typed-input controls.SelectandInputstyling/state combinations to align focus visuals with current semantic token usage.SidebarNavkeyboard-focus affordances (links, section toggles, search trigger) and adjusted collapsible list overflow so focus rings remain visible.Selectwith kumo semantic tokens.6765526: chore: update @base-ui/react to v1.4.0
Bugfix release with improvements to Popover hover state, Checkbox/Switch readOnly mode, Select touch handling, Tabs activation direction, Toast timers, and various other fixes. No breaking changes.
@cloudflare/kumo-docs-astro@1.4.0
Minor Changes
Patch Changes
ec73bc5: Update chart color docs and demos, including sequential heatmap/CVD coverage and improved chart demo behavior.
8cc65bf: Clean up the Contributing page: remove the "Questions?" section that referenced an internal channel, and fix the "Related Docs" links to point to absolute GitHub URLs instead of relative paths that 404'd.
1eee41a: Add
InputGroupcompound component for composing decorated inputsCompound structure:
InputGroup,InputGroup.Input,InputGroup.Addon,InputGroup.Suffix,InputGroup.Button.label,description,error,required, andlabelTooltipdirectly toInputGroupxs,sm,base,lg) propagate to all sub-components via context, including icon sizing in addonsInputGroup.Addon— positions icons, text, or buttons atalign="start"(default) oralign="end"of the inputInputGroup.Suffix— inline text suffix (e.g..workers.dev)InputGroup.Button— ghost button for secondary actions with tooltip supportInputGroup.Label— useInputGroup.AddoninsteadInputGroup.Description— useInputGroup.Suffixinsteadf774e84: Fix copy code button z-index so it no longer appears above the sticky header when scrolling
c019b41: Improved focus and keyboard accessibility styles across Kumo components and docs navigation.
kumo-focussemantic token to the theme generator config and generatedtheme-kumo.cssoutput.Button,Input,InputGroup,Select,Checkbox,Radio,Switch,Sidebar,Tabs,Menubar, and related controls) for more consistent and visible keyboard focus visibility.kumo-focusring to keep pointer and keyboard focus visually consistent where browsers apply:focus-visibleheuristics to typed-input controls.SelectandInputstyling/state combinations to align focus visuals with current semantic token usage.SidebarNavkeyboard-focus affordances (links, section toggles, search trigger) and adjusted collapsible list overflow so focus rings remain visible.Selectwith kumo semantic tokens.87432f8: Add global letter-spacing and typography defaults
letter-spacing: -0.01em,line-height: 1.5, and OpenType font features (cv02,cv03,cv04,calt) onhtmlletter-spacing: normalonpre,code,kbd, and.font-monoelementstracking-[-0.02em]withtracking-tightutility across headingsleading-relaxedtoleading-normalUpdated dependencies [ec73bc5]
Updated dependencies [bf68ac0]
Updated dependencies [f9ba3f9]
Updated dependencies [69bfc53]
Updated dependencies [1954aa8]
Updated dependencies [3256a7b]
Updated dependencies [1eee41a]
Updated dependencies [b923281]
Updated dependencies [c019b41]
Updated dependencies [353faea]
Updated dependencies [431de04]
Updated dependencies [f9d8b76]
Updated dependencies [07426f6]
Updated dependencies [267ba7a]
Updated dependencies [6765526]
@cloudflare/kumo-figma@0.3.24
Patch Changes