diff --git a/.changeset/button-secondary-hover-border-cleanup.md b/.changeset/button-secondary-hover-border-cleanup.md deleted file mode 100644 index 21e496e07c..0000000000 --- a/.changeset/button-secondary-hover-border-cleanup.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/kumo": patch ---- - -Remove invalid hover border utility from secondary button variants to keep hover styling consistent and avoid unintended class output. diff --git a/.changeset/chart-colors-docs-refine.md b/.changeset/chart-colors-docs-refine.md deleted file mode 100644 index c7508fd312..0000000000 --- a/.changeset/chart-colors-docs-refine.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@cloudflare/kumo": patch -"@cloudflare/kumo-docs-astro": patch ---- - -Update chart color docs and demos, including sequential heatmap/CVD coverage and improved chart demo behavior. \ No newline at end of file diff --git a/.changeset/checkbox-breaking-onCheckedChange.md b/.changeset/checkbox-breaking-onCheckedChange.md deleted file mode 100644 index d20640d732..0000000000 --- a/.changeset/checkbox-breaking-onCheckedChange.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -"@cloudflare/kumo": major ---- - -**BREAKING:** Checkbox `onCheckedChange` now receives event details as second argument - -The `onCheckedChange` callback signature now matches Base UI, providing access to the underlying event: - -```tsx -// Before -onCheckedChange={(checked) => console.log(checked)} - -// After (event details available as optional second arg) -onCheckedChange={(checked, eventDetails) => { - console.log(checked); - console.log(eventDetails.event); // native event -}} -``` - -**Removed deprecated props:** - -- `onChange` - use `onCheckedChange` instead -- `onValueChange` on individual checkboxes - use `onCheckedChange` instead -- `onClick` - was redundant, use standard React event handling via spread props - -**Migration:** - -```tsx -// Before (deprecated) - console.log(e.target.checked)} /> - setChecked(checked)} /> - -// After - setChecked(checked)} /> -``` - -Note: `Checkbox.Group`'s `onValueChange` prop is unchanged - it still accepts `(values: string[]) => void`. diff --git a/.changeset/collapsible-compound-api.md b/.changeset/collapsible-compound-api.md deleted file mode 100644 index 09a8c6ec1b..0000000000 --- a/.changeset/collapsible-compound-api.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -"@cloudflare/kumo": major ---- - -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 - -```tsx - - Content here - -``` - -### After - -```tsx - - Show details - Content here - -``` - -### Migration - -For the quickest migration, use the new `DefaultTrigger` and `DefaultPanel` components which preserve the previous styling: - -```tsx - - Show details - Content here - -``` - -### New Sub-components - -| Component | Description | -|-----------|-------------| -| `Collapsible.Root` | Manages open state | -| `Collapsible.Trigger` | Composable trigger with `render` prop support | -| `Collapsible.Panel` | Content container | -| `Collapsible.DefaultTrigger` | Pre-styled trigger with caret icon (migration helper) | -| `Collapsible.DefaultPanel` | Pre-styled panel with border-left accent (migration helper) | diff --git a/.changeset/combobox-item-disabled-styles.md b/.changeset/combobox-item-disabled-styles.md deleted file mode 100644 index 00b38a8f82..0000000000 --- a/.changeset/combobox-item-disabled-styles.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/kumo": patch ---- - -`Combobox.Item` now renders a visible disabled state when the `disabled` prop is set. Previously the prop was forwarded to Base UI (so click/keyboard selection were correctly blocked) but the row looked identical to an enabled one. Adds `data-[disabled]:*` Tailwind classes for muted text, `cursor-not-allowed`, reduced opacity, and suppresses the highlight background on disabled rows during keyboard navigation. Also fixes `className` passthrough — user-supplied classes are now merged via `cn()` instead of being overridden. diff --git a/.changeset/command-palette-input-group-focus-ring.md b/.changeset/command-palette-input-group-focus-ring.md deleted file mode 100644 index 3daea7630a..0000000000 --- a/.changeset/command-palette-input-group-focus-ring.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@cloudflare/kumo": patch ---- - -Improve focus ring consistency and clipping behavior across inputs and related controls. - -- Move the command palette focus ring to the input header container with `focus-within` and remove duplicate input-level ring styles. -- Update `Select` trigger and option focus styles to use inset focus rings to prevent clipping in rounded/overflow contexts. -- Fix clipboard copy button focus ring clipping by using inset focus-visible ring, matching border-radius inheritance, and isolated stacking. -- Align `InputGroup` and `InputGroup.Button` focus ring color to `ring-kumo-focus`, including hybrid container-zone focus ring classes. -- Update InputGroup tests to match inline focus ring class changes. -- Set DatePicker (`react-day-picker`) focus ring token to `var(--color-kumo-brand)`. -- Update InputGroup container and hybrid keyboard outlines in `kumo-binding.css` to use `var(--color-kumo-focus)` at 1px weight. diff --git a/.changeset/command-palette-input-html-attrs.md b/.changeset/command-palette-input-html-attrs.md deleted file mode 100644 index a960b55ee2..0000000000 --- a/.changeset/command-palette-input-html-attrs.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/kumo": patch ---- - -Allow `CommandPalette.Input` to accept standard HTML input attributes (`autoComplete`, `autoCorrect`, `autoCapitalize`, `spellCheck`, `data-*`, etc.) by extending its props type with `InputHTMLAttributes`. Export new `CommandPaletteInputProps` type. diff --git a/.changeset/composable-group-legend.md b/.changeset/composable-group-legend.md deleted file mode 100644 index f5fed37631..0000000000 --- a/.changeset/composable-group-legend.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@cloudflare/kumo": minor ---- - -feat(radio, checkbox, switch): add composable Legend sub-component for group components - -- Add `Radio.Legend`, `Checkbox.Legend`, and `Switch.Legend` sub-components -- Accepts `className` for full styling control (e.g. `className="sr-only"` to visually hide) -- Make `legend` string prop optional when using the sub-component instead -- Useful when a parent Field already provides a visible label and the legend would be redundant -- **Breaking:** `Switch.Group` no longer renders a visible border/padding/rounded container — now consistent with `Radio.Group` and `Checkbox.Group`. Use `className` to add a border if needed. diff --git a/.changeset/contributing-docs-cleanup.md b/.changeset/contributing-docs-cleanup.md deleted file mode 100644 index 6b4eb878f8..0000000000 --- a/.changeset/contributing-docs-cleanup.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/kumo-docs-astro": patch ---- - -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. diff --git a/.changeset/decouple-text-heading-semantics.md b/.changeset/decouple-text-heading-semantics.md deleted file mode 100644 index 2baa7333a6..0000000000 --- a/.changeset/decouple-text-heading-semantics.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -"@cloudflare/kumo": major ---- - -feat(Text): decouple visual heading variants from semantic HTML elements - -**Breaking change:** `heading1`, `heading2`, `heading3` variants no longer auto-render `

`, `

`, `

` tags. They now render as `` by default. Use the `as` prop to set the appropriate semantic heading level for your document outline. - -Before: - -```tsx -Title // rendered

-``` - -After: - -```tsx - - Title - // explicit semantic element -``` - -The `as` prop is now restricted to valid text elements: `"h1"` through `"h6"`, `"p"`, and `"span"`. diff --git a/.changeset/feat-input-group-revamp.md b/.changeset/feat-input-group-revamp.md deleted file mode 100644 index 25b9d68fc1..0000000000 --- a/.changeset/feat-input-group-revamp.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -"@cloudflare/kumo": minor -"@cloudflare/kumo-docs-astro": patch ---- - -Add `InputGroup` compound component for composing decorated inputs - -Compound structure: `InputGroup`, `InputGroup.Input`, `InputGroup.Addon`, `InputGroup.Suffix`, `InputGroup.Button`. - -- Field integration — pass `label`, `description`, `error`, `required`, and `labelTooltip` directly to `InputGroup` -- Size variants (`xs`, `sm`, `base`, `lg`) propagate to all sub-components via context, including icon sizing in addons -- `InputGroup.Addon` — positions icons, text, or buttons at `align="start"` (default) or `align="end"` of the input -- `InputGroup.Suffix` — inline text suffix (e.g. `.workers.dev`) -- `InputGroup.Button` — ghost button for secondary actions with tooltip support -- Deprecated `InputGroup.Label` — use `InputGroup.Addon` instead -- Deprecated `InputGroup.Description` — use `InputGroup.Suffix` instead - -```tsx -{/* Reveal / hide password */} - - - - setShow(!show)} - > - {show ? : } - - - -``` - -```tsx -{/* Search input */} - - - - - - -``` diff --git a/.changeset/fix-copy-button-zindex.md b/.changeset/fix-copy-button-zindex.md deleted file mode 100644 index 86d7c88b69..0000000000 --- a/.changeset/fix-copy-button-zindex.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/kumo-docs-astro": patch ---- - -Fix copy code button z-index so it no longer appears above the sticky header when scrolling diff --git a/.changeset/fix-input-group-hover-propagation.md b/.changeset/fix-input-group-hover-propagation.md deleted file mode 100644 index cd46f19042..0000000000 --- a/.changeset/fix-input-group-hover-propagation.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/kumo": patch ---- - -Fix `InputGroup` hover state incorrectly propagating to the first child button (e.g. in `Pagination.Controls`). Root now renders as `
` instead of `