@cloudflare/kumo 1.13.1 → 1.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/ai/component-registry.json +57 -30
- package/ai/component-registry.md +247 -19
- package/ai/schemas.ts +3 -2
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +10 -2
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/ai/schemas.js +175 -173
- package/dist/ai/schemas.js.map +1 -1
- package/dist/chunks/Legend-mkh1v83sz972e29d.js +407 -0
- package/dist/chunks/Legend-mkh1v83sz972e29d.js.map +1 -0
- package/dist/chunks/{breadcrumbs-e564gabk59go37cg.js → breadcrumbs-gr907zcoo65rpn90.js} +2 -2
- package/dist/chunks/{breadcrumbs-e564gabk59go37cg.js.map → breadcrumbs-gr907zcoo65rpn90.js.map} +1 -1
- package/dist/chunks/{button-b1yp3lbrhjr9eg07.js → button-d82sexqgnd834eaa.js} +2 -2
- package/dist/chunks/{button-b1yp3lbrhjr9eg07.js.map → button-d82sexqgnd834eaa.js.map} +1 -1
- package/dist/chunks/{checkbox-khvh0efmlzvlo6qi.js → checkbox-f4qsbq6xycaji7qw.js} +3 -3
- package/dist/chunks/{checkbox-khvh0efmlzvlo6qi.js.map → checkbox-f4qsbq6xycaji7qw.js.map} +1 -1
- package/dist/chunks/{clipboard-text-jvrlvyz5ulm49h5b.js → clipboard-text-fvggzgqrza82t5om.js} +4 -4
- package/dist/chunks/{clipboard-text-jvrlvyz5ulm49h5b.js.map → clipboard-text-fvggzgqrza82t5om.js.map} +1 -1
- package/dist/chunks/{combobox-i3mdp6f01dvpoc5j.js → combobox-om4zw74o076sa00p.js} +61 -50
- package/dist/chunks/combobox-om4zw74o076sa00p.js.map +1 -0
- package/dist/chunks/{command-palette-l8dym46a74o7j8ci.js → command-palette-ejoszjfivybu9yi5.js} +3 -3
- package/dist/chunks/{command-palette-l8dym46a74o7j8ci.js.map → command-palette-ejoszjfivybu9yi5.js.map} +1 -1
- package/dist/chunks/{dialog-emk68n0piw8u7hkb.js → dialog-gkmecnx48ge38jrr.js} +11 -11
- package/dist/chunks/dialog-gkmecnx48ge38jrr.js.map +1 -0
- package/dist/chunks/{dropdown-ejgjnn9gq3daua1h.js → dropdown-i8n7nv3cvkvb1x3e.js} +2 -2
- package/dist/chunks/{dropdown-ejgjnn9gq3daua1h.js.map → dropdown-i8n7nv3cvkvb1x3e.js.map} +1 -1
- package/dist/chunks/{empty-crbntv0dhud7besh.js → empty-h3qhwtx0z8arupc9.js} +2 -2
- package/dist/chunks/{empty-crbntv0dhud7besh.js.map → empty-h3qhwtx0z8arupc9.js.map} +1 -1
- package/dist/chunks/{field-ftrgblg9mbmz9eo3.js → field-lc4gr226y5aqlctf.js} +3 -3
- package/dist/chunks/{field-ftrgblg9mbmz9eo3.js.map → field-lc4gr226y5aqlctf.js.map} +1 -1
- package/dist/chunks/input-area-ce3bf8m8wvot44kg.js +74 -0
- package/dist/chunks/input-area-ce3bf8m8wvot44kg.js.map +1 -0
- package/dist/chunks/{input-group-g6qyhe5jvpe02hee.js → input-group-kttdor9mr32k289o.js} +3 -3
- package/dist/chunks/{input-group-g6qyhe5jvpe02hee.js.map → input-group-kttdor9mr32k289o.js.map} +1 -1
- package/dist/chunks/{input-me56hug8sl0u650q.js → input-nvne68upfj8b2bk6.js} +20 -20
- package/dist/chunks/input-nvne68upfj8b2bk6.js.map +1 -0
- package/dist/chunks/{label-eooot7dhtfvw7n3x.js → label-e42o95ab0dxmchxb.js} +3 -3
- package/dist/chunks/{label-eooot7dhtfvw7n3x.js.map → label-e42o95ab0dxmchxb.js.map} +1 -1
- package/dist/chunks/{layer-card-8azgeai6zsrdbeoj.js → layer-card-mu2w82x6ko1nhhtr.js} +7 -7
- package/dist/chunks/{layer-card-8azgeai6zsrdbeoj.js.map → layer-card-mu2w82x6ko1nhhtr.js.map} +1 -1
- package/dist/chunks/{link-moetfdbgxda0yhwg.js → link-lpzl5s47pmobk361.js} +2 -2
- package/dist/chunks/{link-moetfdbgxda0yhwg.js.map → link-lpzl5s47pmobk361.js.map} +1 -1
- package/dist/chunks/{menubar-c2zwv4mbo3xqq7is.js → menubar-ifxxdoa35zz79z1q.js} +2 -2
- package/dist/chunks/{menubar-c2zwv4mbo3xqq7is.js.map → menubar-ifxxdoa35zz79z1q.js.map} +1 -1
- package/dist/chunks/{meter-em2hfu8j2rhmf5ae.js → meter-fbtqfg0okpwmaiju.js} +2 -2
- package/dist/chunks/{meter-em2hfu8j2rhmf5ae.js.map → meter-fbtqfg0okpwmaiju.js.map} +1 -1
- package/dist/chunks/{pagination-xt93wvwvow4z44lc.js → pagination-owm6h66jjgv1tjoe.js} +3 -3
- package/dist/chunks/{pagination-xt93wvwvow4z44lc.js.map → pagination-owm6h66jjgv1tjoe.js.map} +1 -1
- package/dist/chunks/{popover-irccwetx73p8pnua.js → popover-dd7hi5ajeoq9od1i.js} +2 -2
- package/dist/chunks/{popover-irccwetx73p8pnua.js.map → popover-dd7hi5ajeoq9od1i.js.map} +1 -1
- package/dist/chunks/radio-ff1csb328f12smd4.js +200 -0
- package/dist/chunks/radio-ff1csb328f12smd4.js.map +1 -0
- package/dist/chunks/{select-jxxef2rf76pgdrf8.js → select-go7a0z3evkh9cfxq.js} +41 -34
- package/dist/chunks/select-go7a0z3evkh9cfxq.js.map +1 -0
- package/dist/chunks/{sensitive-input-i7ey1w0ky7nco012.js → sensitive-input-gtzk3vit4i35n95g.js} +34 -34
- package/dist/chunks/sensitive-input-gtzk3vit4i35n95g.js.map +1 -0
- package/dist/chunks/switch-cpbp0i75jnazkani.js +241 -0
- package/dist/chunks/switch-cpbp0i75jnazkani.js.map +1 -0
- package/dist/chunks/{table-d4ql7fjvok30xs1f.js → table-g41yb7ruredizqr8.js} +3 -3
- package/dist/chunks/table-g41yb7ruredizqr8.js.map +1 -0
- package/dist/chunks/{tabs-n3rcvuzx0gbslyy6.js → tabs-hy6oa7xtf96d9mxt.js} +27 -27
- package/dist/chunks/{tabs-n3rcvuzx0gbslyy6.js.map → tabs-hy6oa7xtf96d9mxt.js.map} +1 -1
- package/dist/chunks/{toast-j05qj3vk688ht1i1.js → toast-j5gtfc50xpzzd0hc.js} +3 -3
- package/dist/chunks/{toast-j05qj3vk688ht1i1.js.map → toast-j5gtfc50xpzzd0hc.js.map} +1 -1
- package/dist/chunks/{tooltip-es2dwwbhftg4k2jy.js → tooltip-k68wcv9mrigb7rcb.js} +2 -2
- package/dist/chunks/{tooltip-es2dwwbhftg4k2jy.js.map → tooltip-k68wcv9mrigb7rcb.js.map} +1 -1
- package/dist/chunks/{vendor-base-ui-kxxocm122zr4pipe.js → vendor-base-ui-cpvkrhz4zgw9nw2b.js} +18 -18
- package/dist/chunks/{vendor-base-ui-kxxocm122zr4pipe.js.map → vendor-base-ui-cpvkrhz4zgw9nw2b.js.map} +1 -1
- package/dist/code.js +1 -1
- package/dist/code.js.map +1 -1
- package/dist/components/breadcrumbs.js +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/chart.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/clipboard-text.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-palette.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/empty.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/flow.js +1435 -1431
- package/dist/components/flow.js.map +1 -1
- package/dist/components/input.js +3 -3
- package/dist/components/label.js +1 -1
- package/dist/components/layer-card.js +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/menubar.js +1 -1
- package/dist/components/meter.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sensitive-input.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/toast.js +2 -2
- package/dist/components/tooltip.js +1 -1
- package/dist/index.js +70 -69
- package/dist/primitives/accordion.js +1 -1
- package/dist/primitives/alert-dialog.js +1 -1
- package/dist/primitives/autocomplete.js +1 -1
- package/dist/primitives/avatar.js +1 -1
- package/dist/primitives/button.js +1 -1
- package/dist/primitives/checkbox-group.js +1 -1
- package/dist/primitives/checkbox.js +1 -1
- package/dist/primitives/collapsible.js +1 -1
- package/dist/primitives/combobox.js +1 -1
- package/dist/primitives/context-menu.js +1 -1
- package/dist/primitives/csp-provider.js +1 -1
- package/dist/primitives/dialog.js +1 -1
- package/dist/primitives/direction-provider.js +1 -1
- package/dist/primitives/drawer.js +1 -1
- package/dist/primitives/field.js +1 -1
- package/dist/primitives/fieldset.js +1 -1
- package/dist/primitives/form.js +1 -1
- package/dist/primitives/input.js +1 -1
- package/dist/primitives/menu.js +1 -1
- package/dist/primitives/menubar.js +1 -1
- package/dist/primitives/meter.js +1 -1
- package/dist/primitives/navigation-menu.js +1 -1
- package/dist/primitives/number-field.js +1 -1
- package/dist/primitives/popover.js +1 -1
- package/dist/primitives/preview-card.js +1 -1
- package/dist/primitives/progress.js +1 -1
- package/dist/primitives/radio-group.js +1 -1
- package/dist/primitives/radio.js +1 -1
- package/dist/primitives/scroll-area.js +1 -1
- package/dist/primitives/select.js +1 -1
- package/dist/primitives/separator.js +1 -1
- package/dist/primitives/slider.js +1 -1
- package/dist/primitives/switch.js +1 -1
- package/dist/primitives/tabs.js +1 -1
- package/dist/primitives/toast.js +1 -1
- package/dist/primitives/toggle-group.js +1 -1
- package/dist/primitives/toggle.js +1 -1
- package/dist/primitives/toolbar.js +1 -1
- package/dist/primitives/tooltip.js +1 -1
- package/dist/primitives.js +1 -1
- package/dist/scripts/theme-generator/config.d.ts.map +1 -1
- package/dist/scripts/theme-generator/config.js +12 -3
- package/dist/scripts/theme-generator/config.js.map +1 -1
- package/dist/src/code/code-highlighted.d.ts +2 -2
- package/dist/src/code/code-highlighted.d.ts.map +1 -1
- package/dist/src/code/provider.d.ts +2 -2
- package/dist/src/code/provider.d.ts.map +1 -1
- package/dist/src/components/chart/EChart.d.ts +7 -2
- package/dist/src/components/chart/EChart.d.ts.map +1 -1
- package/dist/src/components/combobox/combobox.d.ts.map +1 -1
- package/dist/src/components/flow/diagram.d.ts.map +1 -1
- package/dist/src/components/input/input-area.d.ts.map +1 -1
- package/dist/src/components/radio/index.d.ts +1 -1
- package/dist/src/components/radio/index.d.ts.map +1 -1
- package/dist/src/components/radio/radio.d.ts +43 -4
- package/dist/src/components/radio/radio.d.ts.map +1 -1
- package/dist/src/components/select/select.d.ts.map +1 -1
- package/dist/src/components/switch/switch.d.ts +8 -8
- package/dist/src/components/switch/switch.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/styles/kumo-binding.css +5 -0
- package/dist/styles/kumo-standalone.css +1 -1
- package/dist/styles/theme-kumo.css +7 -0
- package/package.json +3 -6
- package/scripts/theme-generator/config.ts +12 -3
- package/dist/chunks/Legend-fu32ev5ph2ehbfzy.js +0 -402
- package/dist/chunks/Legend-fu32ev5ph2ehbfzy.js.map +0 -1
- package/dist/chunks/combobox-i3mdp6f01dvpoc5j.js.map +0 -1
- package/dist/chunks/dialog-emk68n0piw8u7hkb.js.map +0 -1
- package/dist/chunks/input-area-hxtyrqpp44m18j72.js +0 -59
- package/dist/chunks/input-area-hxtyrqpp44m18j72.js.map +0 -1
- package/dist/chunks/input-me56hug8sl0u650q.js.map +0 -1
- package/dist/chunks/radio-394mfs3au5m8cgd8.js +0 -125
- package/dist/chunks/radio-394mfs3au5m8cgd8.js.map +0 -1
- package/dist/chunks/select-jxxef2rf76pgdrf8.js.map +0 -1
- package/dist/chunks/sensitive-input-i7ey1w0ky7nco012.js.map +0 -1
- package/dist/chunks/switch-b0xo8fxsfzv87krj.js +0 -257
- package/dist/chunks/switch-b0xo8fxsfzv87krj.js.map +0 -1
- package/dist/chunks/table-d4ql7fjvok30xs1f.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# @cloudflare/kumo
|
|
2
2
|
|
|
3
|
+
## 1.14.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 839b0cb: fix: update styling for mostly-used components with new greyscale tokens (combobox, dialog, input, layerCard, select & tabs) as well as homegrid and component preview backgrounds.
|
|
8
|
+
- 7083a17: Remove es2022 build target that caused Jest/babel-jest test failures in stratus
|
|
9
|
+
|
|
10
|
+
## 1.14.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- 8b2d6a0: Add radio card appearance via `appearance="card"` prop on Radio.Group and Radio.Item. Cards display a bordered, selectable container with title and description. Also adds `description` prop to Radio.Item for helper text. Supports vertical and horizontal orientations, error state, and disabled state.
|
|
15
|
+
- abbf586: Expose Chart `optionUpdateBehavior` to control how ECharts applies option updates; `notMerge` now defaults to `false`.
|
|
16
|
+
- c6aa554: Add neutral variant to Switch component and improve accessibility
|
|
17
|
+
- New `variant="neutral"` option: monochrome switch with squircle shape, matching the design from stratus
|
|
18
|
+
- Improved off-state visibility for default variant with darker background/ring colors
|
|
19
|
+
- Removed `error` variant (not useful for toggle switches)
|
|
20
|
+
- Added defensive fallback so invalid variant values don't cause runtime crashes
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- f2e17d7: removed `outline-none` to bring back focus states on all buttons
|
|
25
|
+
- eba693e: Fix flaky vitest "Closing rpc while fetch was pending" error in deep-imports test
|
|
26
|
+
- db91f50: Fix InputArea label click not focusing textarea. Use FieldBase.Control with render callback to properly associate the label with the textarea element.
|
|
27
|
+
- 80afd4d: Fix TypeScript return types for ShikiProvider and CodeHighlighted components.
|
|
28
|
+
|
|
29
|
+
Changed return type from `ReactNode` to `React.JSX.Element` to resolve JSX compatibility errors. This fixes issues when consuming these components in projects with stricter TypeScript configurations (e.g., `skipLibCheck: false`), where `ReactNode` was incorrectly inferred as a valid JSX element return type.
|
|
30
|
+
|
|
31
|
+
- dc9742d: Fix table header font size to ensure consistent rendering across dashboards with different default font sizes
|
|
32
|
+
- f94fee7: Add dedicated `kumo-placeholder` text color token and use it for Input, InputArea, SensitiveInput, and CommandPalette placeholder text. The new token provides better visual distinction between placeholder and active text in both light and dark modes.
|
|
33
|
+
- 66012b7: Replace the package-level ESLint pass with Oxlint JS plugin coverage for the remaining jsx-a11y rules, and pin the library build to `es2022` with a post-build browser-compat test that blocks newer runtime APIs from shipping in `dist`.
|
|
34
|
+
- e8acdd8: fix(Select): prevent chevron overflow with long multi-select values
|
|
35
|
+
|
|
36
|
+
Added `min-w-0 truncate` to the value element and `shrink-0` to the chevron icon so that long option names truncate gracefully instead of pushing the chevron outside the select bounds.
|
|
37
|
+
|
|
3
38
|
## 1.13.1
|
|
4
39
|
|
|
5
40
|
### Patch Changes
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
"ghost": "text-kumo-default hover:bg-kumo-tint shadow-none bg-inherit",
|
|
323
323
|
"destructive": "bg-kumo-danger !text-white hover:bg-kumo-danger/70",
|
|
324
324
|
"secondary-destructive": "bg-kumo-base !text-kumo-danger ring not-disabled:hover:border-secondary! not-disabled:hover:bg-kumo-base disabled:bg-kumo-base/50 disabled:!text-kumo-danger/70 ring-kumo-line data-[state=open]:bg-kumo-base",
|
|
325
|
-
"outline": "text-kumo-default ring-2 ring-kumo-ring"
|
|
325
|
+
"outline": "bg-transparent text-kumo-default ring-2 ring-kumo-ring"
|
|
326
326
|
},
|
|
327
327
|
"stateClasses": {
|
|
328
328
|
"primary": {
|
|
@@ -2130,11 +2130,11 @@
|
|
|
2130
2130
|
"<div className=\"flex flex-wrap items-center gap-4\">\n <Combobox\n size=\"sm\"\n value={smValue}\n onValueChange={(v) => setSmValue(v as Language)}\n items={languages}\n >\n <Combobox.TriggerValue className=\"w-[160px]\" />\n <Combobox.Content>\n <Combobox.Input placeholder=\"Search\" />\n <Combobox.Empty />\n <Combobox.List>\n {(item: Language) => (\n <Combobox.Item key={item.value} value={item}>\n {item.emoji} {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n <Combobox\n size=\"base\"\n value={baseValue}\n onValueChange={(v) => setBaseValue(v as Language)}\n items={languages}\n >\n <Combobox.TriggerValue className=\"w-[180px]\" />\n <Combobox.Content>\n <Combobox.Input placeholder=\"Search\" />\n <Combobox.Empty />\n <Combobox.List>\n {(item: Language) => (\n <Combobox.Item key={item.value} value={item}>\n {item.emoji} {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n </div>"
|
|
2131
2131
|
],
|
|
2132
2132
|
"colors": [
|
|
2133
|
-
"bg-kumo-
|
|
2133
|
+
"bg-kumo-base",
|
|
2134
2134
|
"bg-kumo-fill-hover",
|
|
2135
2135
|
"bg-kumo-overlay",
|
|
2136
|
+
"bg-kumo-tint",
|
|
2136
2137
|
"border-kumo-line",
|
|
2137
|
-
"fill-kumo-ring",
|
|
2138
2138
|
"ring-kumo-line",
|
|
2139
2139
|
"text-kumo-default",
|
|
2140
2140
|
"text-kumo-strong",
|
|
@@ -2474,7 +2474,6 @@
|
|
|
2474
2474
|
],
|
|
2475
2475
|
"colors": [
|
|
2476
2476
|
"bg-kumo-base",
|
|
2477
|
-
"bg-kumo-overlay",
|
|
2478
2477
|
"text-kumo-default"
|
|
2479
2478
|
],
|
|
2480
2479
|
"subComponents": {
|
|
@@ -3166,6 +3165,7 @@
|
|
|
3166
3165
|
"colors": [
|
|
3167
3166
|
"bg-kumo-base",
|
|
3168
3167
|
"bg-kumo-elevated",
|
|
3168
|
+
"bg-kumo-recessed",
|
|
3169
3169
|
"ring-kumo-fill",
|
|
3170
3170
|
"ring-kumo-line",
|
|
3171
3171
|
"text-kumo-strong"
|
|
@@ -3718,6 +3718,28 @@
|
|
|
3718
3718
|
"horizontal"
|
|
3719
3719
|
]
|
|
3720
3720
|
},
|
|
3721
|
+
"appearance": {
|
|
3722
|
+
"type": "enum",
|
|
3723
|
+
"optional": true,
|
|
3724
|
+
"description": "Visual appearance applied to all Radio.Item children.\n- `\"default\"` — Standard inline radio items\n- `\"card\"` — Choice card with border, padding, and highlighted selection state\n\nIndividual items can override this with their own `appearance` prop.",
|
|
3725
|
+
"values": [
|
|
3726
|
+
"default",
|
|
3727
|
+
"card"
|
|
3728
|
+
],
|
|
3729
|
+
"descriptions": {
|
|
3730
|
+
"default": "Standard inline radio item",
|
|
3731
|
+
"card": "Choice card appearance with border, padding, and highlighted selection state"
|
|
3732
|
+
},
|
|
3733
|
+
"classes": {
|
|
3734
|
+
"card": "rounded-lg border border-kumo-ring bg-kumo-base p-3 transition-colors hover:bg-kumo-tint has-[[data-checked]]:border-kumo-interact has-[[data-checked]]:bg-kumo-tint"
|
|
3735
|
+
},
|
|
3736
|
+
"stateClasses": {
|
|
3737
|
+
"card": {
|
|
3738
|
+
"hover": "hover:bg-kumo-tint"
|
|
3739
|
+
}
|
|
3740
|
+
},
|
|
3741
|
+
"default": "default"
|
|
3742
|
+
},
|
|
3721
3743
|
"error": {
|
|
3722
3744
|
"type": "string",
|
|
3723
3745
|
"optional": true,
|
|
@@ -3741,7 +3763,7 @@
|
|
|
3741
3763
|
"controlPosition": {
|
|
3742
3764
|
"type": "enum",
|
|
3743
3765
|
"optional": true,
|
|
3744
|
-
"description": "Position of radio control relative to label: \"start\" (default) puts radio before label, \"end\" puts label before radio",
|
|
3766
|
+
"description": "Position of radio control relative to label: \"start\" (default) puts radio before label, \"end\" puts label before radio. Note: In card appearance, the control is always positioned at the end.",
|
|
3745
3767
|
"values": [
|
|
3746
3768
|
"start",
|
|
3747
3769
|
"end"
|
|
@@ -3763,14 +3785,20 @@
|
|
|
3763
3785
|
"<Radio.Group legend=\"Account type\" value={value} onValueChange={setValue}>\n <Radio.Item label=\"Personal\" value=\"personal\" />\n <Radio.Item label=\"Business\" value=\"business\" />\n <Radio.Item label=\"Enterprise\" value=\"enterprise\" />\n </Radio.Group>",
|
|
3764
3786
|
"<Radio.Group\n legend=\"Size\"\n orientation=\"horizontal\"\n value={value}\n onValueChange={setValue}\n >\n <Radio.Item label=\"Small\" value=\"sm\" />\n <Radio.Item label=\"Medium\" value=\"md\" />\n <Radio.Item label=\"Large\" value=\"lg\" />\n </Radio.Group>",
|
|
3765
3787
|
"<Radio.Group\n legend=\"Shipping method\"\n description=\"Choose how you'd like to receive your order\"\n value={value}\n onValueChange={setValue}\n >\n <Radio.Item label=\"Standard (5-7 days)\" value=\"standard\" />\n <Radio.Item label=\"Express (2-3 days)\" value=\"express\" />\n <Radio.Item label=\"Overnight\" value=\"overnight\" />\n </Radio.Group>",
|
|
3766
|
-
"<Radio.Group\n
|
|
3767
|
-
"<div className=\"
|
|
3768
|
-
"<Radio.Group legend=\"Preferences\" controlPosition=\"end\" defaultValue=\"a\">\n <Radio.Item label=\"Label before radio\" value=\"a\" />\n <Radio.Item label=\"Another option\" value=\"b\" />\n </Radio.Group>"
|
|
3788
|
+
"<div className=\"grid grid-cols-2 gap-6\">\n <Radio.Group\n legend=\"Payment method\"\n error=\"Please select a payment method to continue\"\n >\n <Radio.Item label=\"Credit Card\" value=\"card\" variant=\"error\" />\n <Radio.Item label=\"PayPal\" value=\"paypal\" variant=\"error\" />\n </Radio.Group>\n <Radio.Group\n legend=\"Payment method\"\n appearance=\"card\"\n error=\"Please select a payment method to continue\"\n >\n <Radio.Item\n label=\"Credit Card\"\n description=\"Pay with Visa, Mastercard, American Express, or Elo.\"\n value=\"card\"\n variant=\"error\"\n />\n <Radio.Item\n label=\"PayPal\"\n description=\"Pay with your PayPal account.\"\n value=\"paypal\"\n variant=\"error\"\n />\n </Radio.Group>\n </div>",
|
|
3789
|
+
"<div className=\"grid grid-cols-2 gap-6\">\n <Radio.Group legend=\"Disabled group\" disabled defaultValue=\"a\">\n <Radio.Item label=\"Option A\" value=\"a\" />\n <Radio.Item label=\"Option B\" value=\"b\" />\n </Radio.Group>\n <Radio.Group legend=\"Individual disabled\" defaultValue=\"available\">\n <Radio.Item label=\"Available\" value=\"available\" />\n <Radio.Item label=\"Unavailable\" value=\"unavailable\" disabled />\n </Radio.Group>\n <Radio.Group\n legend=\"Disabled card group\"\n appearance=\"card\"\n disabled\n defaultValue=\"a\"\n >\n <Radio.Item\n label=\"Option A\"\n description=\"This option is disabled.\"\n value=\"a\"\n />\n <Radio.Item\n label=\"Option B\"\n description=\"This option is disabled.\"\n value=\"b\"\n />\n </Radio.Group>\n <Radio.Group\n legend=\"Individual disabled card\"\n appearance=\"card\"\n defaultValue=\"available\"\n >\n <Radio.Item\n label=\"Available\"\n description=\"This option can be selected.\"\n value=\"available\"\n />\n <Radio.Item\n label=\"Unavailable\"\n description=\"This option is not available.\"\n value=\"unavailable\"\n disabled\n />\n </Radio.Group>\n </div>",
|
|
3790
|
+
"<Radio.Group legend=\"Preferences\" controlPosition=\"end\" defaultValue=\"a\">\n <Radio.Item label=\"Label before radio\" value=\"a\" />\n <Radio.Item label=\"Another option\" value=\"b\" />\n </Radio.Group>",
|
|
3791
|
+
"<Radio.Group\n legend=\"Choose a plan\"\n appearance=\"card\"\n value={value}\n onValueChange={setValue}\n >\n <Radio.Item\n label=\"Free\"\n description=\"For personal or hobby projects that aren't business-critical.\"\n value=\"free\"\n />\n <Radio.Item\n label=\"Pro\"\n description=\"For professional websites that aren't business-critical.\"\n value=\"pro\"\n />\n <Radio.Item\n label=\"Business\"\n description=\"For small businesses operating online.\"\n value=\"business\"\n />\n <Radio.Item\n label=\"Contract\"\n description=\"For mission-critical applications that are core to your business.\"\n value=\"contract\"\n />\n </Radio.Group>",
|
|
3792
|
+
"<Radio.Group\n legend=\"Choose a plan\"\n appearance=\"card\"\n orientation=\"horizontal\"\n value={value}\n onValueChange={setValue}\n >\n <Radio.Item\n label=\"Free\"\n description=\"For personal or hobby projects that aren't business-critical.\"\n value=\"free\"\n />\n <Radio.Item\n label=\"Pro\"\n description=\"For professional websites that aren't business-critical.\"\n value=\"pro\"\n />\n <Radio.Item\n label=\"Business\"\n description=\"For small businesses operating online.\"\n value=\"business\"\n />\n <Radio.Item\n label=\"Contract\"\n description=\"For mission-critical applications that are core to your business.\"\n value=\"contract\"\n />\n </Radio.Group>"
|
|
3769
3793
|
],
|
|
3770
3794
|
"colors": [
|
|
3771
3795
|
"bg-kumo-base",
|
|
3772
3796
|
"bg-kumo-contrast",
|
|
3797
|
+
"bg-kumo-tint",
|
|
3798
|
+
"border-kumo-danger",
|
|
3799
|
+
"border-kumo-interact",
|
|
3773
3800
|
"border-kumo-line",
|
|
3801
|
+
"border-kumo-ring",
|
|
3774
3802
|
"ring-kumo-danger",
|
|
3775
3803
|
"ring-kumo-line",
|
|
3776
3804
|
"ring-kumo-ring",
|
|
@@ -3864,12 +3892,13 @@
|
|
|
3864
3892
|
"<Select aria-label=\"Loading select\" className=\"w-[200px]\" loading />",
|
|
3865
3893
|
"<Select\n label=\"Assignee\"\n className=\"w-[200px]\"\n loading={loading}\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n placeholder=\"Select assignee\"\n items={items}\n />",
|
|
3866
3894
|
"<Select\n label=\"Visible Columns\"\n className=\"w-[250px]\"\n multiple\n renderValue={(value) => {\n if (value.length > 3) {\n return (\n <span className=\"line-clamp-1\">\n {value.slice(0, 2).join(\", \") + ` and ${value.length - 2} more`}\n </span>\n );\n }\n return <span>{value.join(\", \")}</span>;\n }}\n value={value}\n onValueChange={(v) => setValue(v as string[])}\n >\n <Select.Option value=\"Name\">Name</Select.Option>\n <Select.Option value=\"Location\">Location</Select.Option>\n <Select.Option value=\"Size\">Size</Select.Option>\n <Select.Option value=\"Read\">Read</Select.Option>\n <Select.Option value=\"Write\">Write</Select.Option>\n <Select.Option value=\"CreatedAt\">Created At</Select.Option>\n </Select>",
|
|
3895
|
+
"<Select\n label=\"Compliance Frameworks\"\n className=\"w-[280px]\"\n multiple\n value={value}\n onValueChange={(v) => setValue(v as string[])}\n >\n <Select.Option value=\"European Union Privacy Regulation\">\n European Union Privacy Regulation\n </Select.Option>\n <Select.Option value=\"California Consumer Protection Act\">\n California Consumer Protection Act\n </Select.Option>\n <Select.Option value=\"Health Insurance Portability Act\">\n Health Insurance Portability Act\n </Select.Option>\n <Select.Option value=\"Payment Card Industry Standard\">\n Payment Card Industry Standard\n </Select.Option>\n </Select>",
|
|
3896
|
+
"<Select\n label=\"Issue Types\"\n className=\"w-[220px]\"\n multiple\n renderValue={(selected) => (\n <span className=\"flex items-center gap-2\">\n <span>Issue Types</span>\n {selected.length > 0 && (\n <Badge variant=\"secondary\">{selected.length}</Badge>\n )}\n </span>\n )}\n value={value}\n onValueChange={(v) => setValue(v as string[])}\n >\n {allOptions.map((option) => (\n <Select.Option key={option.value} value={option.value}>\n {option.label}\n </Select.Option>\n ))}\n </Select>",
|
|
3867
3897
|
"<Select\n label=\"Author\"\n description=\"Select the primary author for this document\"\n className=\"w-[200px]\"\n onValueChange={(v) => setValue(v as (typeof authors)[0] | null)}\n value={value}\n isItemEqualToValue={(item, value) => item?.id === value?.id}\n renderValue={(author) => {\n return author?.name ?? \"Select an author\";\n }}\n >\n {authors.map((author) => (\n <Select.Option key={author.id} value={author}>\n <div className=\"flex w-[300px] items-center justify-between gap-2\">\n <Text>{author.name}</Text>\n <Text variant=\"secondary\">{author.title}</Text>\n </div>\n </Select.Option>\n ))}\n </Select>"
|
|
3868
3898
|
],
|
|
3869
3899
|
"colors": [
|
|
3870
|
-
"bg-kumo-
|
|
3871
|
-
"bg-kumo-
|
|
3872
|
-
"ring-kumo-line",
|
|
3900
|
+
"bg-kumo-base",
|
|
3901
|
+
"bg-kumo-tint",
|
|
3873
3902
|
"ring-kumo-ring",
|
|
3874
3903
|
"text-kumo-danger",
|
|
3875
3904
|
"text-kumo-default",
|
|
@@ -4102,17 +4131,14 @@
|
|
|
4102
4131
|
"variant": {
|
|
4103
4132
|
"type": "enum",
|
|
4104
4133
|
"optional": true,
|
|
4105
|
-
"description": "Visual variant: \"default\" or \"
|
|
4134
|
+
"description": "Visual variant: \"default\" (pill, brand color) or \"neutral\" (squircle, monochrome)",
|
|
4106
4135
|
"values": [
|
|
4107
4136
|
"default",
|
|
4108
|
-
"
|
|
4137
|
+
"neutral"
|
|
4109
4138
|
],
|
|
4110
4139
|
"descriptions": {
|
|
4111
|
-
"default": "Default switch
|
|
4112
|
-
"
|
|
4113
|
-
},
|
|
4114
|
-
"classes": {
|
|
4115
|
-
"error": "ring-kumo-danger"
|
|
4140
|
+
"default": "Default switch with squircle shape and brand blue color",
|
|
4141
|
+
"neutral": "Monochrome switch with squircle shape for subtle toggles"
|
|
4116
4142
|
},
|
|
4117
4143
|
"default": "default"
|
|
4118
4144
|
},
|
|
@@ -4211,16 +4237,15 @@
|
|
|
4211
4237
|
"<Switch label=\"Switch\" checked={checked} onCheckedChange={setChecked} />",
|
|
4212
4238
|
"<Switch label=\"Switch\" checked={false} onCheckedChange={() => {}} />",
|
|
4213
4239
|
"<Switch label=\"Switch\" checked={true} onCheckedChange={() => {}} />",
|
|
4214
|
-
"<Switch label=\"Disabled\" checked={false} disabled />"
|
|
4240
|
+
"<Switch label=\"Disabled\" checked={false} disabled />",
|
|
4241
|
+
"<Switch\n label=\"Neutral switch\"\n variant=\"neutral\"\n checked={checked}\n onCheckedChange={setChecked}\n />",
|
|
4242
|
+
"<div className=\"flex flex-col gap-4\">\n <Switch\n label=\"Neutral off\"\n variant=\"neutral\"\n checked={false}\n onCheckedChange={() => {}}\n />\n <Switch\n label=\"Neutral on\"\n variant=\"neutral\"\n checked={true}\n onCheckedChange={() => {}}\n />\n <Switch\n label=\"Neutral disabled\"\n variant=\"neutral\"\n checked={false}\n disabled\n />\n </div>",
|
|
4243
|
+
"<div className=\"flex flex-col gap-4\">\n <Switch\n label=\"Default variant\"\n checked={true}\n onCheckedChange={() => {}}\n />\n <Switch\n label=\"Neutral variant\"\n variant=\"neutral\"\n checked={true}\n onCheckedChange={() => {}}\n />\n </div>"
|
|
4215
4244
|
],
|
|
4216
4245
|
"colors": [
|
|
4217
|
-
"bg-kumo-
|
|
4218
|
-
"bg-kumo-brand-hover",
|
|
4219
|
-
"bg-kumo-danger",
|
|
4220
|
-
"bg-kumo-interact",
|
|
4221
|
-
"bg-kumo-recessed",
|
|
4246
|
+
"bg-kumo-base",
|
|
4222
4247
|
"border-kumo-line",
|
|
4223
|
-
"ring-kumo-
|
|
4248
|
+
"ring-kumo-line",
|
|
4224
4249
|
"text-kumo-danger",
|
|
4225
4250
|
"text-kumo-default",
|
|
4226
4251
|
"text-kumo-subtle"
|
|
@@ -4438,11 +4463,12 @@
|
|
|
4438
4463
|
"<Tabs\n tabs={[\n {\n value: \"tab1\",\n label: \"Regular Tab\",\n },\n {\n value: \"tab2\",\n label: \"Link Tab\",\n render: (props) => <a {...props} href=\"#tab2\" />,\n },\n {\n value: \"tab3\",\n label: \"Cloudflare\",\n render: (props) => (\n <a {...props} href=\"https://cloudflare.com\" target=\"_blank\" />\n ),\n },\n ]}\n selectedValue=\"tab1\"\n />"
|
|
4439
4464
|
],
|
|
4440
4465
|
"colors": [
|
|
4466
|
+
"bg-kumo-base",
|
|
4441
4467
|
"bg-kumo-brand",
|
|
4442
|
-
"bg-kumo-
|
|
4468
|
+
"bg-kumo-recessed",
|
|
4469
|
+
"bg-kumo-surface",
|
|
4443
4470
|
"bg-kumo-tint",
|
|
4444
|
-
"border-kumo-
|
|
4445
|
-
"ring-kumo-fill-hover",
|
|
4471
|
+
"border-kumo-ring",
|
|
4446
4472
|
"ring-kumo-ring",
|
|
4447
4473
|
"text-kumo-default",
|
|
4448
4474
|
"text-kumo-strong",
|
|
@@ -4708,7 +4734,8 @@
|
|
|
4708
4734
|
"examples": [
|
|
4709
4735
|
"<TooltipProvider>\n <Tooltip content=\"Add new item\" asChild>\n <Button shape=\"square\" icon={PlusIcon} aria-label=\"Add new item\" />\n </Tooltip>\n </TooltipProvider>",
|
|
4710
4736
|
"<TooltipProvider>\n <Tooltip content=\"Add\" asChild>\n <Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />\n </Tooltip>\n </TooltipProvider>",
|
|
4711
|
-
"<TooltipProvider>\n <div className=\"flex gap-2\">\n <Tooltip content=\"Add\" asChild>\n <Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />\n </Tooltip>\n <Tooltip content=\"Change language\" asChild>\n <Button\n shape=\"square\"\n icon={TranslateIcon}\n aria-label=\"Change language\"\n />\n </Tooltip>\n </div>\n </TooltipProvider>"
|
|
4737
|
+
"<TooltipProvider>\n <div className=\"flex gap-2\">\n <Tooltip content=\"Add\" asChild>\n <Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />\n </Tooltip>\n <Tooltip content=\"Change language\" asChild>\n <Button\n shape=\"square\"\n icon={TranslateIcon}\n aria-label=\"Change language\"\n />\n </Tooltip>\n </div>\n </TooltipProvider>",
|
|
4738
|
+
"<TooltipProvider>\n <Tooltip\n content=\"Click to learn more\"\n className=\"inline-flex items-center gap-1.5 rounded-full bg-kumo-brand px-3 py-1.5 text-sm font-medium text-white shadow-md transition-transform hover:scale-105 active:scale-95\"\n >\n <Info className=\"size-4\" />\n <span>Help</span>\n </Tooltip>\n </TooltipProvider>"
|
|
4712
4739
|
],
|
|
4713
4740
|
"colors": [
|
|
4714
4741
|
"bg-kumo-base",
|
|
@@ -5111,4 +5138,4 @@
|
|
|
5111
5138
|
]
|
|
5112
5139
|
}
|
|
5113
5140
|
}
|
|
5114
|
-
}
|
|
5141
|
+
}
|
package/ai/component-registry.md
CHANGED
|
@@ -1209,7 +1209,7 @@ Combobox — autocomplete input with filterable dropdown list. Compound compone
|
|
|
1209
1209
|
|
|
1210
1210
|
**Colors (kumo tokens used):**
|
|
1211
1211
|
|
|
1212
|
-
`bg-kumo-
|
|
1212
|
+
`bg-kumo-base`, `bg-kumo-fill-hover`, `bg-kumo-overlay`, `bg-kumo-tint`, `border-kumo-line`, `ring-kumo-line`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
|
|
1213
1213
|
|
|
1214
1214
|
**Sub-Components:**
|
|
1215
1215
|
|
|
@@ -2035,7 +2035,7 @@ Dialog component
|
|
|
2035
2035
|
|
|
2036
2036
|
**Colors (kumo tokens used):**
|
|
2037
2037
|
|
|
2038
|
-
`bg-kumo-base`, `
|
|
2038
|
+
`bg-kumo-base`, `text-kumo-default`
|
|
2039
2039
|
|
|
2040
2040
|
**Styling:**
|
|
2041
2041
|
|
|
@@ -3100,7 +3100,7 @@ LayerCard component
|
|
|
3100
3100
|
|
|
3101
3101
|
**Colors (kumo tokens used):**
|
|
3102
3102
|
|
|
3103
|
-
`bg-kumo-base`, `bg-kumo-elevated`, `ring-kumo-fill`, `ring-kumo-line`, `text-kumo-strong`
|
|
3103
|
+
`bg-kumo-base`, `bg-kumo-elevated`, `bg-kumo-recessed`, `ring-kumo-fill`, `ring-kumo-line`, `text-kumo-strong`
|
|
3104
3104
|
|
|
3105
3105
|
**Styling:**
|
|
3106
3106
|
|
|
@@ -3815,6 +3815,13 @@ Radio — radio button group for single-select choices. Compound component: `Ra
|
|
|
3815
3815
|
Child Radio.Item components
|
|
3816
3816
|
- `orientation`: enum
|
|
3817
3817
|
Layout direction of the radio items
|
|
3818
|
+
- `appearance`: enum [default: default]
|
|
3819
|
+
- `"default"`: Standard inline radio item
|
|
3820
|
+
- `"card"`: Choice card appearance with border, padding, and highlighted selection state
|
|
3821
|
+
|
|
3822
|
+
**State Classes:**
|
|
3823
|
+
- `"card"`:
|
|
3824
|
+
- `hover`: `hover:bg-kumo-tint`
|
|
3818
3825
|
- `error`: string
|
|
3819
3826
|
Error message for the group
|
|
3820
3827
|
- `description`: ReactNode
|
|
@@ -3824,7 +3831,7 @@ Radio — radio button group for single-select choices. Compound component: `Ra
|
|
|
3824
3831
|
- `disabled`: boolean
|
|
3825
3832
|
Whether all radios in the group are disabled
|
|
3826
3833
|
- `controlPosition`: enum
|
|
3827
|
-
Position of radio control relative to label: "start" (default) puts radio before label, "end" puts label before radio
|
|
3834
|
+
Position of radio control relative to label: "start" (default) puts radio before label, "end" puts label before radio. Note: In card appearance, the control is always positioned at the end.
|
|
3828
3835
|
- `name`: string
|
|
3829
3836
|
Form submission name for the radio group
|
|
3830
3837
|
- `className`: string
|
|
@@ -3832,7 +3839,7 @@ Radio — radio button group for single-select choices. Compound component: `Ra
|
|
|
3832
3839
|
|
|
3833
3840
|
**Colors (kumo tokens used):**
|
|
3834
3841
|
|
|
3835
|
-
`bg-kumo-base`, `bg-kumo-contrast`, `border-kumo-line`, `ring-kumo-danger`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
|
|
3842
|
+
`bg-kumo-base`, `bg-kumo-contrast`, `bg-kumo-tint`, `border-kumo-danger`, `border-kumo-interact`, `border-kumo-line`, `border-kumo-ring`, `ring-kumo-danger`, `ring-kumo-line`, `ring-kumo-ring`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
|
|
3836
3843
|
|
|
3837
3844
|
**Examples:**
|
|
3838
3845
|
|
|
@@ -3875,18 +3882,37 @@ Radio — radio button group for single-select choices. Compound component: `Ra
|
|
|
3875
3882
|
```
|
|
3876
3883
|
|
|
3877
3884
|
```tsx
|
|
3878
|
-
<
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
|
|
3885
|
+
<div className="grid grid-cols-2 gap-6">
|
|
3886
|
+
<Radio.Group
|
|
3887
|
+
legend="Payment method"
|
|
3888
|
+
error="Please select a payment method to continue"
|
|
3889
|
+
>
|
|
3890
|
+
<Radio.Item label="Credit Card" value="card" variant="error" />
|
|
3891
|
+
<Radio.Item label="PayPal" value="paypal" variant="error" />
|
|
3892
|
+
</Radio.Group>
|
|
3893
|
+
<Radio.Group
|
|
3894
|
+
legend="Payment method"
|
|
3895
|
+
appearance="card"
|
|
3896
|
+
error="Please select a payment method to continue"
|
|
3897
|
+
>
|
|
3898
|
+
<Radio.Item
|
|
3899
|
+
label="Credit Card"
|
|
3900
|
+
description="Pay with Visa, Mastercard, American Express, or Elo."
|
|
3901
|
+
value="card"
|
|
3902
|
+
variant="error"
|
|
3903
|
+
/>
|
|
3904
|
+
<Radio.Item
|
|
3905
|
+
label="PayPal"
|
|
3906
|
+
description="Pay with your PayPal account."
|
|
3907
|
+
value="paypal"
|
|
3908
|
+
variant="error"
|
|
3909
|
+
/>
|
|
3910
|
+
</Radio.Group>
|
|
3911
|
+
</div>
|
|
3886
3912
|
```
|
|
3887
3913
|
|
|
3888
3914
|
```tsx
|
|
3889
|
-
<div className="
|
|
3915
|
+
<div className="grid grid-cols-2 gap-6">
|
|
3890
3916
|
<Radio.Group legend="Disabled group" disabled defaultValue="a">
|
|
3891
3917
|
<Radio.Item label="Option A" value="a" />
|
|
3892
3918
|
<Radio.Item label="Option B" value="b" />
|
|
@@ -3895,6 +3921,40 @@ Radio — radio button group for single-select choices. Compound component: `Ra
|
|
|
3895
3921
|
<Radio.Item label="Available" value="available" />
|
|
3896
3922
|
<Radio.Item label="Unavailable" value="unavailable" disabled />
|
|
3897
3923
|
</Radio.Group>
|
|
3924
|
+
<Radio.Group
|
|
3925
|
+
legend="Disabled card group"
|
|
3926
|
+
appearance="card"
|
|
3927
|
+
disabled
|
|
3928
|
+
defaultValue="a"
|
|
3929
|
+
>
|
|
3930
|
+
<Radio.Item
|
|
3931
|
+
label="Option A"
|
|
3932
|
+
description="This option is disabled."
|
|
3933
|
+
value="a"
|
|
3934
|
+
/>
|
|
3935
|
+
<Radio.Item
|
|
3936
|
+
label="Option B"
|
|
3937
|
+
description="This option is disabled."
|
|
3938
|
+
value="b"
|
|
3939
|
+
/>
|
|
3940
|
+
</Radio.Group>
|
|
3941
|
+
<Radio.Group
|
|
3942
|
+
legend="Individual disabled card"
|
|
3943
|
+
appearance="card"
|
|
3944
|
+
defaultValue="available"
|
|
3945
|
+
>
|
|
3946
|
+
<Radio.Item
|
|
3947
|
+
label="Available"
|
|
3948
|
+
description="This option can be selected."
|
|
3949
|
+
value="available"
|
|
3950
|
+
/>
|
|
3951
|
+
<Radio.Item
|
|
3952
|
+
label="Unavailable"
|
|
3953
|
+
description="This option is not available."
|
|
3954
|
+
value="unavailable"
|
|
3955
|
+
disabled
|
|
3956
|
+
/>
|
|
3957
|
+
</Radio.Group>
|
|
3898
3958
|
</div>
|
|
3899
3959
|
```
|
|
3900
3960
|
|
|
@@ -3905,6 +3965,67 @@ Radio — radio button group for single-select choices. Compound component: `Ra
|
|
|
3905
3965
|
</Radio.Group>
|
|
3906
3966
|
```
|
|
3907
3967
|
|
|
3968
|
+
```tsx
|
|
3969
|
+
<Radio.Group
|
|
3970
|
+
legend="Choose a plan"
|
|
3971
|
+
appearance="card"
|
|
3972
|
+
value={value}
|
|
3973
|
+
onValueChange={setValue}
|
|
3974
|
+
>
|
|
3975
|
+
<Radio.Item
|
|
3976
|
+
label="Free"
|
|
3977
|
+
description="For personal or hobby projects that aren't business-critical."
|
|
3978
|
+
value="free"
|
|
3979
|
+
/>
|
|
3980
|
+
<Radio.Item
|
|
3981
|
+
label="Pro"
|
|
3982
|
+
description="For professional websites that aren't business-critical."
|
|
3983
|
+
value="pro"
|
|
3984
|
+
/>
|
|
3985
|
+
<Radio.Item
|
|
3986
|
+
label="Business"
|
|
3987
|
+
description="For small businesses operating online."
|
|
3988
|
+
value="business"
|
|
3989
|
+
/>
|
|
3990
|
+
<Radio.Item
|
|
3991
|
+
label="Contract"
|
|
3992
|
+
description="For mission-critical applications that are core to your business."
|
|
3993
|
+
value="contract"
|
|
3994
|
+
/>
|
|
3995
|
+
</Radio.Group>
|
|
3996
|
+
```
|
|
3997
|
+
|
|
3998
|
+
```tsx
|
|
3999
|
+
<Radio.Group
|
|
4000
|
+
legend="Choose a plan"
|
|
4001
|
+
appearance="card"
|
|
4002
|
+
orientation="horizontal"
|
|
4003
|
+
value={value}
|
|
4004
|
+
onValueChange={setValue}
|
|
4005
|
+
>
|
|
4006
|
+
<Radio.Item
|
|
4007
|
+
label="Free"
|
|
4008
|
+
description="For personal or hobby projects that aren't business-critical."
|
|
4009
|
+
value="free"
|
|
4010
|
+
/>
|
|
4011
|
+
<Radio.Item
|
|
4012
|
+
label="Pro"
|
|
4013
|
+
description="For professional websites that aren't business-critical."
|
|
4014
|
+
value="pro"
|
|
4015
|
+
/>
|
|
4016
|
+
<Radio.Item
|
|
4017
|
+
label="Business"
|
|
4018
|
+
description="For small businesses operating online."
|
|
4019
|
+
value="business"
|
|
4020
|
+
/>
|
|
4021
|
+
<Radio.Item
|
|
4022
|
+
label="Contract"
|
|
4023
|
+
description="For mission-critical applications that are core to your business."
|
|
4024
|
+
value="contract"
|
|
4025
|
+
/>
|
|
4026
|
+
</Radio.Group>
|
|
4027
|
+
```
|
|
4028
|
+
|
|
3908
4029
|
|
|
3909
4030
|
---
|
|
3910
4031
|
|
|
@@ -3950,7 +4071,7 @@ Select component
|
|
|
3950
4071
|
|
|
3951
4072
|
**Colors (kumo tokens used):**
|
|
3952
4073
|
|
|
3953
|
-
`bg-kumo-
|
|
4074
|
+
`bg-kumo-base`, `bg-kumo-tint`, `ring-kumo-ring`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
|
|
3954
4075
|
|
|
3955
4076
|
**Styling:**
|
|
3956
4077
|
|
|
@@ -4087,6 +4208,53 @@ Option sub-component
|
|
|
4087
4208
|
</Select>
|
|
4088
4209
|
```
|
|
4089
4210
|
|
|
4211
|
+
```tsx
|
|
4212
|
+
<Select
|
|
4213
|
+
label="Compliance Frameworks"
|
|
4214
|
+
className="w-[280px]"
|
|
4215
|
+
multiple
|
|
4216
|
+
value={value}
|
|
4217
|
+
onValueChange={(v) => setValue(v as string[])}
|
|
4218
|
+
>
|
|
4219
|
+
<Select.Option value="European Union Privacy Regulation">
|
|
4220
|
+
European Union Privacy Regulation
|
|
4221
|
+
</Select.Option>
|
|
4222
|
+
<Select.Option value="California Consumer Protection Act">
|
|
4223
|
+
California Consumer Protection Act
|
|
4224
|
+
</Select.Option>
|
|
4225
|
+
<Select.Option value="Health Insurance Portability Act">
|
|
4226
|
+
Health Insurance Portability Act
|
|
4227
|
+
</Select.Option>
|
|
4228
|
+
<Select.Option value="Payment Card Industry Standard">
|
|
4229
|
+
Payment Card Industry Standard
|
|
4230
|
+
</Select.Option>
|
|
4231
|
+
</Select>
|
|
4232
|
+
```
|
|
4233
|
+
|
|
4234
|
+
```tsx
|
|
4235
|
+
<Select
|
|
4236
|
+
label="Issue Types"
|
|
4237
|
+
className="w-[220px]"
|
|
4238
|
+
multiple
|
|
4239
|
+
renderValue={(selected) => (
|
|
4240
|
+
<span className="flex items-center gap-2">
|
|
4241
|
+
<span>Issue Types</span>
|
|
4242
|
+
{selected.length > 0 && (
|
|
4243
|
+
<Badge variant="secondary">{selected.length}</Badge>
|
|
4244
|
+
)}
|
|
4245
|
+
</span>
|
|
4246
|
+
)}
|
|
4247
|
+
value={value}
|
|
4248
|
+
onValueChange={(v) => setValue(v as string[])}
|
|
4249
|
+
>
|
|
4250
|
+
{allOptions.map((option) => (
|
|
4251
|
+
<Select.Option key={option.value} value={option.value}>
|
|
4252
|
+
{option.label}
|
|
4253
|
+
</Select.Option>
|
|
4254
|
+
))}
|
|
4255
|
+
</Select>
|
|
4256
|
+
```
|
|
4257
|
+
|
|
4090
4258
|
```tsx
|
|
4091
4259
|
<Select
|
|
4092
4260
|
label="Author"
|
|
@@ -4316,8 +4484,8 @@ Switch component
|
|
|
4316
4484
|
**Props:**
|
|
4317
4485
|
|
|
4318
4486
|
- `variant`: enum [default: default]
|
|
4319
|
-
- `"default"`: Default switch
|
|
4320
|
-
- `"
|
|
4487
|
+
- `"default"`: Default switch with squircle shape and brand blue color
|
|
4488
|
+
- `"neutral"`: Monochrome switch with squircle shape for subtle toggles
|
|
4321
4489
|
- `label`: ReactNode
|
|
4322
4490
|
Label content for the switch (Field wrapper is built-in) - can be a string or any React node. Optional when used standalone for visual-only purposes.
|
|
4323
4491
|
- `labelTooltip`: ReactNode
|
|
@@ -4345,7 +4513,7 @@ Switch component
|
|
|
4345
4513
|
|
|
4346
4514
|
**Colors (kumo tokens used):**
|
|
4347
4515
|
|
|
4348
|
-
`bg-kumo-
|
|
4516
|
+
`bg-kumo-base`, `border-kumo-line`, `ring-kumo-line`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-subtle`
|
|
4349
4517
|
|
|
4350
4518
|
**Sub-Components:**
|
|
4351
4519
|
|
|
@@ -4379,6 +4547,54 @@ Props:
|
|
|
4379
4547
|
<Switch label="Disabled" checked={false} disabled />
|
|
4380
4548
|
```
|
|
4381
4549
|
|
|
4550
|
+
```tsx
|
|
4551
|
+
<Switch
|
|
4552
|
+
label="Neutral switch"
|
|
4553
|
+
variant="neutral"
|
|
4554
|
+
checked={checked}
|
|
4555
|
+
onCheckedChange={setChecked}
|
|
4556
|
+
/>
|
|
4557
|
+
```
|
|
4558
|
+
|
|
4559
|
+
```tsx
|
|
4560
|
+
<div className="flex flex-col gap-4">
|
|
4561
|
+
<Switch
|
|
4562
|
+
label="Neutral off"
|
|
4563
|
+
variant="neutral"
|
|
4564
|
+
checked={false}
|
|
4565
|
+
onCheckedChange={() => {}}
|
|
4566
|
+
/>
|
|
4567
|
+
<Switch
|
|
4568
|
+
label="Neutral on"
|
|
4569
|
+
variant="neutral"
|
|
4570
|
+
checked={true}
|
|
4571
|
+
onCheckedChange={() => {}}
|
|
4572
|
+
/>
|
|
4573
|
+
<Switch
|
|
4574
|
+
label="Neutral disabled"
|
|
4575
|
+
variant="neutral"
|
|
4576
|
+
checked={false}
|
|
4577
|
+
disabled
|
|
4578
|
+
/>
|
|
4579
|
+
</div>
|
|
4580
|
+
```
|
|
4581
|
+
|
|
4582
|
+
```tsx
|
|
4583
|
+
<div className="flex flex-col gap-4">
|
|
4584
|
+
<Switch
|
|
4585
|
+
label="Default variant"
|
|
4586
|
+
checked={true}
|
|
4587
|
+
onCheckedChange={() => {}}
|
|
4588
|
+
/>
|
|
4589
|
+
<Switch
|
|
4590
|
+
label="Neutral variant"
|
|
4591
|
+
variant="neutral"
|
|
4592
|
+
checked={true}
|
|
4593
|
+
onCheckedChange={() => {}}
|
|
4594
|
+
/>
|
|
4595
|
+
</div>
|
|
4596
|
+
```
|
|
4597
|
+
|
|
4382
4598
|
|
|
4383
4599
|
---
|
|
4384
4600
|
|
|
@@ -4741,7 +4957,7 @@ Tab navigation component with segmented or underline style. Built on Base UI Tab
|
|
|
4741
4957
|
|
|
4742
4958
|
**Colors (kumo tokens used):**
|
|
4743
4959
|
|
|
4744
|
-
`bg-kumo-brand`, `bg-kumo-
|
|
4960
|
+
`bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-recessed`, `bg-kumo-surface`, `bg-kumo-tint`, `border-kumo-ring`, `ring-kumo-ring`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
|
|
4745
4961
|
|
|
4746
4962
|
**Styling:**
|
|
4747
4963
|
|
|
@@ -5041,6 +5257,18 @@ Accessible popup that shows additional information on hover/focus. Wrap your app
|
|
|
5041
5257
|
</TooltipProvider>
|
|
5042
5258
|
```
|
|
5043
5259
|
|
|
5260
|
+
```tsx
|
|
5261
|
+
<TooltipProvider>
|
|
5262
|
+
<Tooltip
|
|
5263
|
+
content="Click to learn more"
|
|
5264
|
+
className="inline-flex items-center gap-1.5 rounded-full bg-kumo-brand px-3 py-1.5 text-sm font-medium text-white shadow-md transition-transform hover:scale-105 active:scale-95"
|
|
5265
|
+
>
|
|
5266
|
+
<Info className="size-4" />
|
|
5267
|
+
<span>Help</span>
|
|
5268
|
+
</Tooltip>
|
|
5269
|
+
</TooltipProvider>
|
|
5270
|
+
```
|
|
5271
|
+
|
|
5044
5272
|
|
|
5045
5273
|
---
|
|
5046
5274
|
|
package/ai/schemas.ts
CHANGED
|
@@ -606,11 +606,12 @@ export const RadioPropsSchema = z.object({
|
|
|
606
606
|
legend: z.string(), // Legend text for the group (required for accessibility)
|
|
607
607
|
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child Radio.Item components
|
|
608
608
|
orientation: z.enum(["vertical", "horizontal"]).optional(), // Layout direction of the radio items
|
|
609
|
+
appearance: z.enum(["default", "card"]).optional(), // Visual appearance applied to all Radio.Item children. - `"default"` — Standard inline radio items - `"card"` — Choice card with border, padding, and highlighted selection state Individual items can override this with their own `appearance` prop.
|
|
609
610
|
error: z.string().optional(), // Error message for the group
|
|
610
611
|
description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text for the group
|
|
611
612
|
value: z.string().optional(), // Value of the radio that should be selected (controlled)
|
|
612
613
|
disabled: z.boolean().optional(), // Whether all radios in the group are disabled
|
|
613
|
-
controlPosition: z.enum(["start", "end"]).optional(), // Position of radio control relative to label: "start" (default) puts radio before label, "end" puts label before radio
|
|
614
|
+
controlPosition: z.enum(["start", "end"]).optional(), // Position of radio control relative to label: "start" (default) puts radio before label, "end" puts label before radio. Note: In card appearance, the control is always positioned at the end.
|
|
614
615
|
name: z.string().optional(), // Form submission name for the radio group
|
|
615
616
|
className: z.string().optional(), // Additional CSS classes
|
|
616
617
|
});
|
|
@@ -665,7 +666,7 @@ export const SurfacePropsSchema = z.object({
|
|
|
665
666
|
});
|
|
666
667
|
|
|
667
668
|
export const SwitchPropsSchema = z.object({
|
|
668
|
-
variant: z.enum(["default", "
|
|
669
|
+
variant: z.enum(["default", "neutral"]).optional(), // Visual variant: "default" (pill, brand color) or "neutral" (squircle, monochrome)
|
|
669
670
|
label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the switch (Field wrapper is built-in) - can be a string or any React node. Optional when used standalone for visual-only purposes.
|
|
670
671
|
labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
|
|
671
672
|
required: z.boolean().optional(), // Whether the switch is required. When explicitly false, shows "(optional)" text after the label.
|
package/dist/.build-complete
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1773937426378
|