@cloudflare/kumo 1.15.0 → 1.17.0
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 +144 -0
- package/ai/USAGE.md +3 -1
- package/ai/component-registry.json +511 -66
- package/ai/component-registry.md +776 -59
- package/ai/schemas.ts +33 -7
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +158 -39
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/ai/schemas.js +456 -418
- package/dist/ai/schemas.js.map +1 -1
- package/dist/chunks/{Legend-mkh1v83sz972e29d.js → Legend-o0ntojbaplmszwk0.js} +115 -101
- package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +1 -0
- package/dist/chunks/badge-n80t3z8u9ttlxi20.js +120 -0
- package/dist/chunks/badge-n80t3z8u9ttlxi20.js.map +1 -0
- package/dist/chunks/banner-nz0eryqnz3qd86ln.js +79 -0
- package/dist/chunks/banner-nz0eryqnz3qd86ln.js.map +1 -0
- package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js → breadcrumbs-cjgn3w4drahvqnuj.js} +3 -3
- package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js.map → breadcrumbs-cjgn3w4drahvqnuj.js.map} +1 -1
- package/dist/chunks/{button-j0hi0afn33w9lxgi.js → button-odxi0hp4fvi5i2w3.js} +50 -48
- package/dist/chunks/button-odxi0hp4fvi5i2w3.js.map +1 -0
- package/dist/chunks/{checkbox-bvzuggmadtqawis4.js → checkbox-dx8x0rzv582yjv7n.js} +38 -47
- package/dist/chunks/{checkbox-bvzuggmadtqawis4.js.map → checkbox-dx8x0rzv582yjv7n.js.map} +1 -1
- package/dist/chunks/{clipboard-text-mwcknzn75qdvigrd.js → clipboard-text-kyk51d1ze7zvdn4q.js} +55 -54
- package/dist/chunks/clipboard-text-kyk51d1ze7zvdn4q.js.map +1 -0
- package/dist/chunks/{combobox-ndbaroqh1c0u49ye.js → combobox-9fhjzprab46csmon.js} +97 -82
- package/dist/chunks/combobox-9fhjzprab46csmon.js.map +1 -0
- package/dist/chunks/{command-palette-ejoszjfivybu9yi5.js → command-palette-kenx2bbdzd4kpx36.js} +158 -154
- package/dist/chunks/command-palette-kenx2bbdzd4kpx36.js.map +1 -0
- package/dist/chunks/{dialog-gkmecnx48ge38jrr.js → dialog-e05ysa8t2fklw065.js} +22 -20
- package/dist/chunks/dialog-e05ysa8t2fklw065.js.map +1 -0
- package/dist/chunks/{dropdown-i8n7nv3cvkvb1x3e.js → dropdown-g587px7zv3ssaxr4.js} +96 -90
- package/dist/chunks/dropdown-g587px7zv3ssaxr4.js.map +1 -0
- package/dist/chunks/{empty-hrwtammqp0b2nvtf.js → empty-fuz1un7r7mbz0kim.js} +2 -2
- package/dist/chunks/{empty-hrwtammqp0b2nvtf.js.map → empty-fuz1un7r7mbz0kim.js.map} +1 -1
- package/dist/chunks/{field-lweivfadxgpqhuqi.js → field-fq504lyu7ttsh5m9.js} +3 -3
- package/dist/chunks/{field-lweivfadxgpqhuqi.js.map → field-fq504lyu7ttsh5m9.js.map} +1 -1
- package/dist/chunks/hcl-hcu7d6ja6t540ijn.js +8 -0
- package/dist/chunks/hcl-hcu7d6ja6t540ijn.js.map +1 -0
- package/dist/chunks/{input-area-obli4ufvu40bfpgp.js → input-area-nq40szg9110on89c.js} +4 -4
- package/dist/chunks/{input-area-obli4ufvu40bfpgp.js.map → input-area-nq40szg9110on89c.js.map} +1 -1
- package/dist/chunks/{input-group-dwtsd04lzf2bcsdo.js → input-group-hbebbyh8fo6aqydn.js} +3 -3
- package/dist/chunks/{input-group-dwtsd04lzf2bcsdo.js.map → input-group-hbebbyh8fo6aqydn.js.map} +1 -1
- package/dist/chunks/{input-ko2dne1givlxq7sz.js → input-kvhyo3p4859bexvx.js} +4 -4
- package/dist/chunks/input-kvhyo3p4859bexvx.js.map +1 -0
- package/dist/chunks/{label-kjahhybc191quieo.js → label-j9owppbgnn35mebg.js} +3 -3
- package/dist/chunks/{label-kjahhybc191quieo.js.map → label-j9owppbgnn35mebg.js.map} +1 -1
- package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js → layer-card-l5yjvrxry1dhte57.js} +8 -8
- package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js.map → layer-card-l5yjvrxry1dhte57.js.map} +1 -1
- package/dist/chunks/{link-lpzl5s47pmobk361.js → link-hmmf3k1xn6rm72rt.js} +2 -2
- package/dist/chunks/{link-lpzl5s47pmobk361.js.map → link-hmmf3k1xn6rm72rt.js.map} +1 -1
- package/dist/chunks/{menubar-ifxxdoa35zz79z1q.js → menubar-abojnm0uwjuni8ok.js} +20 -20
- package/dist/chunks/menubar-abojnm0uwjuni8ok.js.map +1 -0
- package/dist/chunks/{meter-fbtqfg0okpwmaiju.js → meter-i84dte2f82qmvn7y.js} +2 -2
- package/dist/chunks/{meter-fbtqfg0okpwmaiju.js.map → meter-i84dte2f82qmvn7y.js.map} +1 -1
- package/dist/chunks/{pagination-eo0gzzm7v5w8niqe.js → pagination-pbd7qqik97ac0l7m.js} +3 -3
- package/dist/chunks/{pagination-eo0gzzm7v5w8niqe.js.map → pagination-pbd7qqik97ac0l7m.js.map} +1 -1
- package/dist/chunks/{popover-dd7hi5ajeoq9od1i.js → popover-i951xjcgezeqr4iv.js} +31 -28
- package/dist/chunks/popover-i951xjcgezeqr4iv.js.map +1 -0
- package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js +18 -0
- package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js.map +1 -0
- package/dist/chunks/{radio-oi9iw7ls1t04j377.js → radio-l2vkcue40d84fmo1.js} +13 -16
- package/dist/chunks/{radio-oi9iw7ls1t04j377.js.map → radio-l2vkcue40d84fmo1.js.map} +1 -1
- package/dist/chunks/{select-0m0xklfwdlx8dwba.js → select-paedwa3nlhpq82ua.js} +39 -37
- package/dist/chunks/select-paedwa3nlhpq82ua.js.map +1 -0
- package/dist/chunks/{sensitive-input-rjpykxn2llh0thx1.js → sensitive-input-kznmknpp5h1grc6k.js} +97 -91
- package/dist/chunks/sensitive-input-kznmknpp5h1grc6k.js.map +1 -0
- package/dist/chunks/sidebar-jepeq7gaf4issuw6.js +875 -0
- package/dist/chunks/sidebar-jepeq7gaf4issuw6.js.map +1 -0
- package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js +33 -0
- package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js.map +1 -0
- package/dist/chunks/surface-blo81kgy9g0sexgm.js +36 -0
- package/dist/chunks/surface-blo81kgy9g0sexgm.js.map +1 -0
- package/dist/chunks/{switch-lv4mrrkfl5uc99xo.js → switch-i0zwcp3wq6vsxm1c.js} +64 -64
- package/dist/chunks/{switch-lv4mrrkfl5uc99xo.js.map → switch-i0zwcp3wq6vsxm1c.js.map} +1 -1
- package/dist/chunks/table-nrcw19tlpduayukl.js +183 -0
- package/dist/chunks/table-nrcw19tlpduayukl.js.map +1 -0
- package/dist/chunks/tabs-bw92jb303zxw7w4f.js +92 -0
- package/dist/chunks/{tabs-hy6oa7xtf96d9mxt.js.map → tabs-bw92jb303zxw7w4f.js.map} +1 -1
- package/dist/chunks/{text-gzt92mlji1lug13d.js → text-nmyi1rkwdj37f30f.js} +24 -22
- package/dist/chunks/text-nmyi1rkwdj37f30f.js.map +1 -0
- package/dist/chunks/{toast-kswfqmjysxcrwij3.js → toast-lrnwby56drs7vtae.js} +61 -59
- package/dist/chunks/toast-lrnwby56drs7vtae.js.map +1 -0
- package/dist/chunks/toml-nczb2z9n0o23o3ci.js +8 -0
- package/dist/chunks/toml-nczb2z9n0o23o3ci.js.map +1 -0
- package/dist/chunks/{tooltip-k68wcv9mrigb7rcb.js → tooltip-cit9ltlxfuhwctuj.js} +24 -21
- package/dist/chunks/tooltip-cit9ltlxfuhwctuj.js.map +1 -0
- package/dist/chunks/{vendor-base-ui-cpvkrhz4zgw9nw2b.js → vendor-base-ui-n30qblevnpk9cc5c.js} +551 -549
- package/dist/chunks/{vendor-base-ui-cpvkrhz4zgw9nw2b.js.map → vendor-base-ui-n30qblevnpk9cc5c.js.map} +1 -1
- package/dist/code/server.js +11 -9
- package/dist/code/server.js.map +1 -1
- package/dist/code.js +16 -14
- package/dist/code.js.map +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/banner.js +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 +2142 -2090
- 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/loader.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/sidebar.js +35 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/surface.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/text.js +1 -1
- package/dist/components/toast.js +2 -2
- package/dist/components/tooltip.js +1 -1
- package/dist/index.js +192 -159
- package/dist/index.js.map +1 -1
- 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 +288 -24
- package/dist/scripts/theme-generator/config.js.map +1 -1
- package/dist/src/code/provider.d.ts.map +1 -1
- package/dist/src/code/server.d.ts.map +1 -1
- package/dist/src/code/types.d.ts +1 -1
- package/dist/src/code/types.d.ts.map +1 -1
- package/dist/src/components/badge/badge.d.ts +95 -22
- package/dist/src/components/badge/badge.d.ts.map +1 -1
- package/dist/src/components/banner/banner.d.ts +2 -0
- package/dist/src/components/banner/banner.d.ts.map +1 -1
- package/dist/src/components/button/button.d.ts +2 -0
- package/dist/src/components/button/button.d.ts.map +1 -1
- package/dist/src/components/chart/EChart.d.ts.map +1 -1
- package/dist/src/components/chart/TimeseriesChart.d.ts +11 -1
- package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
- package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
- package/dist/src/components/clipboard-text/clipboard-text.d.ts +2 -0
- package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
- package/dist/src/components/combobox/combobox.d.ts +8 -1
- package/dist/src/components/combobox/combobox.d.ts.map +1 -1
- package/dist/src/components/command-palette/command-palette.d.ts +9 -2
- package/dist/src/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/src/components/command-palette/types.d.ts +7 -0
- package/dist/src/components/command-palette/types.d.ts.map +1 -1
- package/dist/src/components/dialog/dialog.d.ts +8 -1
- package/dist/src/components/dialog/dialog.d.ts.map +1 -1
- package/dist/src/components/dropdown/dropdown.d.ts +17 -2
- package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
- package/dist/src/components/flow/diagram.d.ts.map +1 -1
- package/dist/src/components/flow/node.d.ts.map +1 -1
- package/dist/src/components/flow/parallel.d.ts.map +1 -1
- package/dist/src/components/loader/skeleton-line.d.ts +2 -1
- package/dist/src/components/loader/skeleton-line.d.ts.map +1 -1
- package/dist/src/components/popover/popover.d.ts +8 -1
- package/dist/src/components/popover/popover.d.ts.map +1 -1
- package/dist/src/components/radio/radio.d.ts.map +1 -1
- package/dist/src/components/select/select.d.ts +8 -1
- package/dist/src/components/select/select.d.ts.map +1 -1
- package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
- package/dist/src/components/sidebar/index.d.ts +2 -0
- package/dist/src/components/sidebar/index.d.ts.map +1 -0
- package/dist/src/components/sidebar/sidebar.d.ts +556 -0
- package/dist/src/components/sidebar/sidebar.d.ts.map +1 -0
- package/dist/src/components/surface/surface.d.ts +23 -23
- package/dist/src/components/surface/surface.d.ts.map +1 -1
- package/dist/src/components/table/table.d.ts +34 -2
- package/dist/src/components/table/table.d.ts.map +1 -1
- package/dist/src/components/tabs/tabs.d.ts.map +1 -1
- package/dist/src/components/text/text.d.ts +5 -0
- package/dist/src/components/text/text.d.ts.map +1 -1
- package/dist/src/components/toast/toast.d.ts +16 -9
- package/dist/src/components/toast/toast.d.ts.map +1 -1
- package/dist/src/components/tooltip/tooltip.d.ts +11 -6
- package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/portal-provider.d.ts +56 -0
- package/dist/src/utils/portal-provider.d.ts.map +1 -0
- package/dist/styles/kumo-binding.css +49 -46
- package/dist/styles/kumo-standalone.css +1 -1
- package/dist/styles/theme-fedramp.css +3 -3
- package/dist/styles/theme-kumo.css +202 -22
- package/dist/utils.js +8 -6
- package/dist/utils.js.map +1 -1
- package/package.json +7 -3
- package/scripts/component-registry/index.ts +12 -0
- package/scripts/theme-generator/config.ts +298 -24
- package/dist/chunks/Legend-mkh1v83sz972e29d.js.map +0 -1
- package/dist/chunks/badge-mrshucy2530o70cq.js +0 -56
- package/dist/chunks/badge-mrshucy2530o70cq.js.map +0 -1
- package/dist/chunks/banner-vzdjbqsb6em7tmdk.js +0 -75
- package/dist/chunks/banner-vzdjbqsb6em7tmdk.js.map +0 -1
- package/dist/chunks/button-j0hi0afn33w9lxgi.js.map +0 -1
- package/dist/chunks/clipboard-text-mwcknzn75qdvigrd.js.map +0 -1
- package/dist/chunks/combobox-ndbaroqh1c0u49ye.js.map +0 -1
- package/dist/chunks/command-palette-ejoszjfivybu9yi5.js.map +0 -1
- package/dist/chunks/dialog-gkmecnx48ge38jrr.js.map +0 -1
- package/dist/chunks/dropdown-i8n7nv3cvkvb1x3e.js.map +0 -1
- package/dist/chunks/input-ko2dne1givlxq7sz.js.map +0 -1
- package/dist/chunks/menubar-ifxxdoa35zz79z1q.js.map +0 -1
- package/dist/chunks/popover-dd7hi5ajeoq9od1i.js.map +0 -1
- package/dist/chunks/select-0m0xklfwdlx8dwba.js.map +0 -1
- package/dist/chunks/sensitive-input-rjpykxn2llh0thx1.js.map +0 -1
- package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js +0 -28
- package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js.map +0 -1
- package/dist/chunks/surface-dhshylwccuaz91d1.js +0 -21
- package/dist/chunks/surface-dhshylwccuaz91d1.js.map +0 -1
- package/dist/chunks/table-fh7jmfip27vdapxm.js +0 -155
- package/dist/chunks/table-fh7jmfip27vdapxm.js.map +0 -1
- package/dist/chunks/tabs-hy6oa7xtf96d9mxt.js +0 -86
- package/dist/chunks/text-gzt92mlji1lug13d.js.map +0 -1
- package/dist/chunks/toast-kswfqmjysxcrwij3.js.map +0 -1
- package/dist/chunks/tooltip-k68wcv9mrigb7rcb.js.map +0 -1
|
@@ -11,32 +11,77 @@
|
|
|
11
11
|
"variant": {
|
|
12
12
|
"type": "enum",
|
|
13
13
|
"optional": true,
|
|
14
|
-
"description": "
|
|
14
|
+
"description": "Color variant of the badge.\n- `\"red\"` / `\"red-subtle\"` — Red badge\n- `\"orange\"` / `\"orange-subtle\"` — Orange badge\n- `\"yellow\"` / `\"yellow-subtle\"` — Yellow badge\n- `\"green\"` / `\"green-subtle\"` — Green badge (emerald scale)\n- `\"teal\"` / `\"teal-subtle\"` — Teal badge\n- `\"blue\"` / `\"blue-subtle\"` — Blue badge\n- `\"neutral\"` / `\"neutral-subtle\"` — Neutral badge\n- `\"inverted\"` — Inverted badge (near-black, white in dark mode)\n- `\"outline\"` — Bordered badge with transparent background\n- `\"beta\"` — Dashed-border badge for beta/experimental features\n- `\"primary\"` — **Deprecated.** Use `\"inverted\"` instead.\n- `\"secondary\"` — **Deprecated.** Use `\"neutral\"` instead.\n- `\"destructive\"` — **Deprecated.** Use `\"red\"` instead.\n- `\"success\"` — **Deprecated.** Use `\"green\"` instead.",
|
|
15
15
|
"values": [
|
|
16
|
+
"red",
|
|
17
|
+
"red-subtle",
|
|
18
|
+
"orange",
|
|
19
|
+
"orange-subtle",
|
|
20
|
+
"yellow",
|
|
21
|
+
"yellow-subtle",
|
|
22
|
+
"green",
|
|
23
|
+
"green-subtle",
|
|
24
|
+
"teal",
|
|
25
|
+
"teal-subtle",
|
|
26
|
+
"blue",
|
|
27
|
+
"blue-subtle",
|
|
28
|
+
"neutral",
|
|
29
|
+
"neutral-subtle",
|
|
30
|
+
"inverted",
|
|
31
|
+
"outline",
|
|
32
|
+
"beta",
|
|
16
33
|
"primary",
|
|
17
34
|
"secondary",
|
|
18
35
|
"destructive",
|
|
19
|
-
"success"
|
|
20
|
-
"outline",
|
|
21
|
-
"beta"
|
|
36
|
+
"success"
|
|
22
37
|
],
|
|
23
38
|
"descriptions": {
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
39
|
+
"red": "Red badge",
|
|
40
|
+
"red-subtle": "Subtle red badge",
|
|
41
|
+
"orange": "Orange badge",
|
|
42
|
+
"orange-subtle": "Subtle orange badge",
|
|
43
|
+
"yellow": "Yellow badge",
|
|
44
|
+
"yellow-subtle": "Subtle yellow badge",
|
|
45
|
+
"green": "Green badge",
|
|
46
|
+
"green-subtle": "Subtle green badge",
|
|
47
|
+
"teal": "Teal badge",
|
|
48
|
+
"teal-subtle": "Subtle teal badge",
|
|
49
|
+
"blue": "Blue badge",
|
|
50
|
+
"blue-subtle": "Subtle blue badge",
|
|
51
|
+
"neutral": "Neutral badge",
|
|
52
|
+
"neutral-subtle": "Subtle neutral badge",
|
|
53
|
+
"inverted": "Inverted badge",
|
|
28
54
|
"outline": "Bordered badge with transparent background",
|
|
29
|
-
"beta": "Indicates beta or experimental features"
|
|
55
|
+
"beta": "Indicates beta or experimental features",
|
|
56
|
+
"primary": "Deprecated. Use inverted instead.",
|
|
57
|
+
"secondary": "Deprecated. Use neutral instead.",
|
|
58
|
+
"destructive": "Deprecated. Use red instead.",
|
|
59
|
+
"success": "Deprecated. Use green instead."
|
|
30
60
|
},
|
|
31
61
|
"classes": {
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
62
|
+
"red": "bg-kumo-badge-red text-white",
|
|
63
|
+
"red-subtle": "bg-kumo-badge-red-subtle text-kumo-badge-red-subtle",
|
|
64
|
+
"orange": "bg-kumo-badge-orange text-white",
|
|
65
|
+
"orange-subtle": "bg-kumo-badge-orange-subtle text-kumo-badge-orange-subtle",
|
|
66
|
+
"yellow": "bg-kumo-badge-yellow text-white",
|
|
67
|
+
"yellow-subtle": "bg-kumo-badge-yellow-subtle text-kumo-badge-yellow-subtle",
|
|
68
|
+
"green": "bg-kumo-badge-green text-white",
|
|
69
|
+
"green-subtle": "bg-kumo-badge-green-subtle text-kumo-badge-green-subtle",
|
|
70
|
+
"teal": "bg-kumo-badge-teal text-white",
|
|
71
|
+
"teal-subtle": "bg-kumo-badge-teal-subtle text-kumo-badge-teal-subtle",
|
|
72
|
+
"blue": "bg-kumo-badge-blue text-white",
|
|
73
|
+
"blue-subtle": "bg-kumo-badge-blue-subtle text-kumo-badge-blue-subtle",
|
|
74
|
+
"neutral": "bg-kumo-badge-neutral text-white",
|
|
75
|
+
"neutral-subtle": "bg-kumo-fill text-kumo-badge-neutral-subtle",
|
|
76
|
+
"inverted": "bg-kumo-badge-inverted text-kumo-badge-inverted",
|
|
36
77
|
"outline": "border border-kumo-fill bg-transparent text-kumo-default",
|
|
37
|
-
"beta": "border border-dashed border-kumo-brand bg-transparent text-kumo-link"
|
|
78
|
+
"beta": "border border-dashed border-kumo-brand bg-transparent text-kumo-link",
|
|
79
|
+
"primary": "bg-kumo-badge-inverted text-kumo-badge-inverted",
|
|
80
|
+
"secondary": "bg-kumo-badge-neutral text-white",
|
|
81
|
+
"destructive": "bg-kumo-badge-red text-white",
|
|
82
|
+
"success": "bg-kumo-badge-green text-white"
|
|
38
83
|
},
|
|
39
|
-
"default": "
|
|
84
|
+
"default": "neutral"
|
|
40
85
|
},
|
|
41
86
|
"className": {
|
|
42
87
|
"type": "string",
|
|
@@ -50,24 +95,53 @@
|
|
|
50
95
|
}
|
|
51
96
|
},
|
|
52
97
|
"examples": [
|
|
53
|
-
"<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"
|
|
54
|
-
"<Badge variant=\"
|
|
55
|
-
"<Badge variant=\"
|
|
56
|
-
"<Badge variant=\"
|
|
57
|
-
"<Badge variant=\"
|
|
98
|
+
"<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"red\">Red</Badge>\n <Badge variant=\"orange\">Orange</Badge>\n <Badge variant=\"yellow\">Yellow</Badge>\n <Badge variant=\"green\">Green</Badge>\n <Badge variant=\"teal\">Teal</Badge>\n <Badge variant=\"blue\">Blue</Badge>\n <Badge variant=\"neutral\">Neutral</Badge>\n <Badge variant=\"inverted\">Inverted</Badge>\n <Badge variant=\"outline\">Outline</Badge>\n <Badge variant=\"beta\">Beta</Badge>\n <Badge variant=\"red-subtle\">Red subtle</Badge>\n <Badge variant=\"orange-subtle\">Orange subtle</Badge>\n <Badge variant=\"yellow-subtle\">Yellow subtle</Badge>\n <Badge variant=\"green-subtle\">Green subtle</Badge>\n <Badge variant=\"teal-subtle\">Teal subtle</Badge>\n <Badge variant=\"blue-subtle\">Blue subtle</Badge>\n <Badge variant=\"neutral-subtle\">Neutral subtle</Badge>\n </div>",
|
|
99
|
+
"<Badge variant=\"red\">Red</Badge>",
|
|
100
|
+
"<Badge variant=\"red-subtle\">Red subtle</Badge>",
|
|
101
|
+
"<Badge variant=\"orange\">Orange</Badge>",
|
|
102
|
+
"<Badge variant=\"orange-subtle\">Orange subtle</Badge>",
|
|
103
|
+
"<Badge variant=\"yellow\">Yellow</Badge>",
|
|
104
|
+
"<Badge variant=\"yellow-subtle\">Yellow subtle</Badge>",
|
|
105
|
+
"<Badge variant=\"green\">Green</Badge>",
|
|
106
|
+
"<Badge variant=\"green-subtle\">Green subtle</Badge>",
|
|
107
|
+
"<Badge variant=\"teal\">Teal</Badge>",
|
|
108
|
+
"<Badge variant=\"teal-subtle\">Teal subtle</Badge>",
|
|
109
|
+
"<Badge variant=\"blue\">Blue</Badge>",
|
|
110
|
+
"<Badge variant=\"blue-subtle\">Blue subtle</Badge>",
|
|
111
|
+
"<Badge variant=\"neutral\">Neutral</Badge>",
|
|
112
|
+
"<Badge variant=\"neutral-subtle\">Neutral subtle</Badge>",
|
|
113
|
+
"<Badge variant=\"inverted\">Inverted</Badge>",
|
|
58
114
|
"<Badge variant=\"outline\">Outline</Badge>",
|
|
59
115
|
"<Badge variant=\"beta\">Beta</Badge>",
|
|
60
|
-
"<p className=\"flex items-center gap-2\">\n Workers\n <Badge variant=\"
|
|
116
|
+
"<p className=\"flex items-center gap-2\">\n Workers\n <Badge variant=\"blue\">New</Badge>\n </p>"
|
|
61
117
|
],
|
|
62
118
|
"colors": [
|
|
63
|
-
"bg-kumo-
|
|
64
|
-
"bg-kumo-
|
|
119
|
+
"bg-kumo-badge-blue",
|
|
120
|
+
"bg-kumo-badge-blue-subtle",
|
|
121
|
+
"bg-kumo-badge-green",
|
|
122
|
+
"bg-kumo-badge-green-subtle",
|
|
123
|
+
"bg-kumo-badge-inverted",
|
|
124
|
+
"bg-kumo-badge-neutral",
|
|
125
|
+
"bg-kumo-badge-orange",
|
|
126
|
+
"bg-kumo-badge-orange-subtle",
|
|
127
|
+
"bg-kumo-badge-red",
|
|
128
|
+
"bg-kumo-badge-red-subtle",
|
|
129
|
+
"bg-kumo-badge-teal",
|
|
130
|
+
"bg-kumo-badge-teal-subtle",
|
|
131
|
+
"bg-kumo-badge-yellow",
|
|
132
|
+
"bg-kumo-badge-yellow-subtle",
|
|
65
133
|
"bg-kumo-fill",
|
|
66
|
-
"bg-kumo-success",
|
|
67
134
|
"border-kumo-brand",
|
|
68
135
|
"border-kumo-fill",
|
|
136
|
+
"text-kumo-badge-blue-subtle",
|
|
137
|
+
"text-kumo-badge-green-subtle",
|
|
138
|
+
"text-kumo-badge-inverted",
|
|
139
|
+
"text-kumo-badge-neutral-subtle",
|
|
140
|
+
"text-kumo-badge-orange-subtle",
|
|
141
|
+
"text-kumo-badge-red-subtle",
|
|
142
|
+
"text-kumo-badge-teal-subtle",
|
|
143
|
+
"text-kumo-badge-yellow-subtle",
|
|
69
144
|
"text-kumo-default",
|
|
70
|
-
"text-kumo-inverse",
|
|
71
145
|
"text-kumo-link"
|
|
72
146
|
],
|
|
73
147
|
"baseStyles": "inline-flex w-fit flex-none shrink-0 items-center justify-self-start rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap"
|
|
@@ -94,6 +168,11 @@
|
|
|
94
168
|
"optional": true,
|
|
95
169
|
"description": "Secondary description text displayed below the title. Use for i18n string injection."
|
|
96
170
|
},
|
|
171
|
+
"action": {
|
|
172
|
+
"type": "ReactNode",
|
|
173
|
+
"optional": true,
|
|
174
|
+
"description": "Action slot rendered at the trailing end of the banner (e.g. a CTA button or link). Only used in structured mode (with `title` or `description`)."
|
|
175
|
+
},
|
|
97
176
|
"text": {
|
|
98
177
|
"type": "string",
|
|
99
178
|
"optional": true
|
|
@@ -130,13 +209,15 @@
|
|
|
130
209
|
}
|
|
131
210
|
},
|
|
132
211
|
"examples": [
|
|
133
|
-
"<div className=\"space-y-3\">\n <Banner\n icon={<Info weight=\"fill\" />}\n title=\"Update available\"\n description=\"A new version is ready to install.\"\n />\n <Banner\n icon={<Warning weight=\"fill\" />}\n variant=\"alert\"\n title=\"Session expiring\"\n description=\"Your session will expire in 5 minutes.\"\n />\n <Banner\n icon={<WarningCircle weight=\"fill\" />}\n variant=\"error\"\n title=\"Save failed\"\n description=\"We couldn't save your changes. Please try again.\"\n />\n </div>",
|
|
212
|
+
"<div className=\"w-full space-y-3\">\n <Banner\n icon={<Info weight=\"fill\" />}\n title=\"Update available\"\n description=\"A new version is ready to install.\"\n />\n <Banner\n icon={<Warning weight=\"fill\" />}\n variant=\"alert\"\n title=\"Session expiring\"\n description=\"Your session will expire in 5 minutes.\"\n />\n <Banner\n icon={<WarningCircle weight=\"fill\" />}\n variant=\"error\"\n title=\"Save failed\"\n description=\"We couldn't save your changes. Please try again.\"\n />\n </div>",
|
|
134
213
|
"<Banner\n icon={<Info weight=\"fill\" />}\n title=\"Update available\"\n description=\"A new version is ready to install.\"\n />",
|
|
135
214
|
"<Banner\n icon={<Warning weight=\"fill\" />}\n variant=\"alert\"\n title=\"Session expiring\"\n description=\"Your session will expire in 5 minutes.\"\n />",
|
|
136
215
|
"<Banner\n icon={<WarningCircle weight=\"fill\" />}\n variant=\"error\"\n title=\"Save failed\"\n description=\"We couldn't save your changes. Please try again.\"\n />",
|
|
137
216
|
"<Banner\n icon={<Info weight=\"fill\" />}\n title=\"Your changes have been saved.\"\n />",
|
|
138
217
|
"<Banner\n icon={<Warning weight=\"fill\" />}\n variant=\"alert\"\n title=\"Review required\"\n description=\"Please review your billing information before proceeding.\"\n />",
|
|
139
218
|
"<Banner\n icon={<Info weight=\"fill\" />}\n title=\"Custom content supported\"\n description={\n <Text DANGEROUS_className=\"text-inherit\">\n This banner supports <strong>custom content</strong> with Text.\n </Text>\n }\n />",
|
|
219
|
+
"<div className=\"w-full space-y-3\">\n <Banner\n icon={<Info weight=\"fill\" />}\n title=\"Update available\"\n description=\"A new version is ready to install.\"\n action={<Button size=\"sm\">Update now</Button>}\n />\n <Banner\n icon={<Info weight=\"fill\" />}\n title=\"Update available\"\n description=\"A new version is ready to install.\"\n action={\n <Button\n size=\"sm\"\n variant=\"ghost\"\n shape=\"square\"\n icon={X}\n aria-label=\"Dismiss\"\n />\n }\n />\n </div>",
|
|
220
|
+
"<Banner\n icon={<Warning weight=\"fill\" />}\n variant=\"alert\"\n title=\"Session expiring\"\n description=\"Your session will expire in 5 minutes.\"\n action={\n <>\n <Button size=\"sm\" variant=\"secondary\">\n Dismiss\n </Button>\n <Button size=\"sm\">Extend session</Button>\n </>\n }\n />",
|
|
140
221
|
"<Banner icon={<Info />}>This is a simple banner using children.</Banner>"
|
|
141
222
|
],
|
|
142
223
|
"colors": [
|
|
@@ -367,15 +448,15 @@
|
|
|
367
448
|
"optional": true,
|
|
368
449
|
"description": "Shows a loading spinner and disables interaction."
|
|
369
450
|
},
|
|
370
|
-
"
|
|
451
|
+
"title": {
|
|
371
452
|
"type": "string",
|
|
372
453
|
"optional": true
|
|
373
454
|
},
|
|
374
|
-
"
|
|
455
|
+
"id": {
|
|
375
456
|
"type": "string",
|
|
376
457
|
"optional": true
|
|
377
458
|
},
|
|
378
|
-
"
|
|
459
|
+
"lang": {
|
|
379
460
|
"type": "string",
|
|
380
461
|
"optional": true
|
|
381
462
|
},
|
|
@@ -413,7 +494,9 @@
|
|
|
413
494
|
"<Button variant=\"secondary\" icon={PlusIcon}>\n Create Worker\n </Button>",
|
|
414
495
|
"<div className=\"flex flex-wrap items-center gap-3\">\n <Button\n variant=\"secondary\"\n shape=\"square\"\n icon={PlusIcon}\n aria-label=\"Add item\"\n />\n <Button\n variant=\"secondary\"\n shape=\"circle\"\n icon={PlusIcon}\n aria-label=\"Add item\"\n />\n </div>",
|
|
415
496
|
"<Button variant=\"primary\" loading>\n Loading...\n </Button>",
|
|
416
|
-
"<Button variant=\"secondary\" disabled>\n Disabled\n </Button>"
|
|
497
|
+
"<Button variant=\"secondary\" disabled>\n Disabled\n </Button>",
|
|
498
|
+
"<Button variant=\"secondary\">Click me</Button>",
|
|
499
|
+
"<div className=\"flex flex-wrap items-center gap-3\">\n <Button variant=\"secondary\" title=\"Create a new Worker\">\n Create Worker\n </Button>\n <Button\n variant=\"secondary\"\n shape=\"square\"\n icon={PlusIcon}\n aria-label=\"Add item\"\n title=\"Add item\"\n />\n </div>"
|
|
417
500
|
],
|
|
418
501
|
"colors": [
|
|
419
502
|
"bg-kumo-base",
|
|
@@ -523,7 +606,6 @@
|
|
|
523
606
|
"colors": [
|
|
524
607
|
"bg-kumo-base",
|
|
525
608
|
"bg-kumo-contrast",
|
|
526
|
-
"border-kumo-line",
|
|
527
609
|
"ring-kumo-contrast",
|
|
528
610
|
"ring-kumo-danger",
|
|
529
611
|
"ring-kumo-line",
|
|
@@ -659,6 +741,11 @@
|
|
|
659
741
|
"required": true,
|
|
660
742
|
"description": "The text to display and copy to clipboard."
|
|
661
743
|
},
|
|
744
|
+
"textToCopy": {
|
|
745
|
+
"type": "string",
|
|
746
|
+
"optional": true,
|
|
747
|
+
"description": "If provided, this text will be copied to clipboard instead of the `text` prop."
|
|
748
|
+
},
|
|
662
749
|
"className": {
|
|
663
750
|
"type": "string",
|
|
664
751
|
"optional": true,
|
|
@@ -679,6 +766,7 @@
|
|
|
679
766
|
"<ClipboardText text=\"0c239dd2\" />",
|
|
680
767
|
"<ClipboardText text=\"abc123\" />",
|
|
681
768
|
"<ClipboardText text=\"sk_live_51H8...\" />",
|
|
769
|
+
"<ClipboardText\n text=\"sk_live_***********\"\n textToCopy=\"sk_live_51H8_abc123\"\n />",
|
|
682
770
|
"<ClipboardText text=\"https://example.com/very/long/url/path\" />",
|
|
683
771
|
"<ClipboardText\n text=\"npx kumo add button\"\n tooltip={{ text: \"Copy\", copiedText: \"Copied!\", side: \"top\" }}\n />"
|
|
684
772
|
],
|
|
@@ -1938,13 +2026,7 @@
|
|
|
1938
2026
|
"description": "Additional CSS classes merged via `cn()`."
|
|
1939
2027
|
}
|
|
1940
2028
|
},
|
|
1941
|
-
"examples": [
|
|
1942
|
-
"<CodeBlock\n lang=\"tsx\"\n code={`const greeting = \"Hello, World!\";\nconsole.log(greeting);`}\n />",
|
|
1943
|
-
"<CodeBlock\n lang=\"tsx\"\n code={`interface User {\n id: string;\n name: string;\n email: string;\n}\n\nconst user: User = {\n id: \"1\",\n name: \"John Doe\",\n email: \"john@example.com\"\n};`}\n />",
|
|
1944
|
-
"<CodeBlock\n lang=\"bash\"\n code={`npm install @cloudflare/kumo\npnpm add @cloudflare/kumo`}\n />",
|
|
1945
|
-
"<CodeBlock\n lang=\"jsonc\"\n code={`{\n \"name\": \"kumo\",\n \"version\": \"1.0.0\",\n \"dependencies\": {\n \"react\": \"^19.0.0\"\n }\n}`}\n />",
|
|
1946
|
-
"<Code\n lang=\"bash\"\n code=\"export API_KEY={{apiKey}}\"\n values={{\n apiKey: { value: \"sk_live_123\", highlight: true },\n }}\n />"
|
|
1947
|
-
],
|
|
2029
|
+
"examples": [],
|
|
1948
2030
|
"colors": [
|
|
1949
2031
|
"bg-kumo-base",
|
|
1950
2032
|
"border-kumo-fill",
|
|
@@ -2125,6 +2207,7 @@
|
|
|
2125
2207
|
"<Combobox\n value={value}\n onValueChange={(v) => setValue(v as ServerLocation | null)}\n items={servers}\n >\n <Combobox.TriggerInput\n className=\"w-[200px]\"\n placeholder=\"Select server\"\n />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(group: ServerLocationGroup) => (\n <Combobox.Group key={group.value} items={group.items}>\n <Combobox.GroupLabel>{group.value}</Combobox.GroupLabel>\n <Combobox.Collection>\n {(item: ServerLocation) => (\n <Combobox.Item key={item.value} value={item}>\n {item.label}\n </Combobox.Item>\n )}\n </Combobox.Collection>\n </Combobox.Group>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>",
|
|
2126
2208
|
"<div className=\"flex gap-2\">\n <Combobox\n value={value}\n onValueChange={setValue}\n items={bots}\n isItemEqualToValue={(bot: BotItem, selected: BotItem) =>\n bot.value === selected.value\n }\n multiple\n >\n <Combobox.TriggerMultipleWithInput\n className=\"w-[400px]\"\n placeholder=\"Select bots\"\n renderItem={(selected: BotItem) => (\n <Combobox.Chip key={selected.value}>{selected.label}</Combobox.Chip>\n )}\n inputSide=\"right\"\n />\n <Combobox.Content className=\"max-h-[200px] min-w-auto overflow-y-auto\">\n <Combobox.Empty />\n <Combobox.List>\n {(item: BotItem) => (\n <Combobox.Item key={item.value} value={item}>\n <div className=\"flex gap-2\">\n <Text>{item.label}</Text>\n <Text variant=\"secondary\">{item.author}</Text>\n </div>\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n <Button variant=\"primary\">Submit</Button>\n </div>",
|
|
2127
2209
|
"<div className=\"w-80\">\n <Combobox\n items={databases}\n value={value}\n onValueChange={setValue}\n label=\"Database\"\n description=\"Select your preferred database\"\n >\n <Combobox.TriggerInput placeholder=\"Select database\" />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: DatabaseItem) => (\n <Combobox.Item key={item.value} value={item}>\n {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n </div>",
|
|
2210
|
+
"<div className=\"flex flex-wrap gap-4 items-start\">\n <Combobox value=\"Apple\" items={fruits} disabled>\n <Combobox.TriggerInput\n className=\"w-[200px]\"\n placeholder=\"Select fruit\"\n />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: string) => (\n <Combobox.Item key={item} value={item}>\n {item}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n\n <Combobox value={languages[0]} items={languages} disabled>\n <Combobox.TriggerValue className=\"w-[200px]\" />\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>",
|
|
2128
2211
|
"<div className=\"w-80\">\n <Combobox\n items={databases}\n value={value}\n onValueChange={setValue}\n label=\"Database\"\n error={{ message: \"Please select a database\", match: true }}\n >\n <Combobox.TriggerInput placeholder=\"Select database\" />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: DatabaseItem) => (\n <Combobox.Item key={item.value} value={item}>\n {item.label}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n </div>",
|
|
2129
2212
|
"<div className=\"flex flex-wrap items-center gap-4\">\n <Combobox\n size=\"sm\"\n value={smValue}\n onValueChange={(v) => setSmValue(v as string | null)}\n items={fruits.slice(0, 8)}\n >\n <Combobox.TriggerInput placeholder=\"Small (sm)\" />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: string) => (\n <Combobox.Item key={item} value={item}>\n {item}\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 string | null)}\n items={fruits.slice(0, 8)}\n >\n <Combobox.TriggerInput placeholder=\"Base (default)\" />\n <Combobox.Content>\n <Combobox.Empty />\n <Combobox.List>\n {(item: string) => (\n <Combobox.Item key={item} value={item}>\n {item}\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Content>\n </Combobox>\n </div>",
|
|
2130
2213
|
"<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>"
|
|
@@ -2164,6 +2247,10 @@
|
|
|
2164
2247
|
"sideOffset": {
|
|
2165
2248
|
"type": "ComboboxBase.Positioner.Props[\"sideOffset\"]",
|
|
2166
2249
|
"optional": true
|
|
2250
|
+
},
|
|
2251
|
+
"container": {
|
|
2252
|
+
"type": "PortalContainer",
|
|
2253
|
+
"optional": true
|
|
2167
2254
|
}
|
|
2168
2255
|
}
|
|
2169
2256
|
},
|
|
@@ -2251,6 +2338,11 @@
|
|
|
2251
2338
|
"type": "ReactNode",
|
|
2252
2339
|
"optional": true,
|
|
2253
2340
|
"description": "Child content - typically one or more Panel components"
|
|
2341
|
+
},
|
|
2342
|
+
"container": {
|
|
2343
|
+
"type": "PortalContainer",
|
|
2344
|
+
"optional": true,
|
|
2345
|
+
"description": "Container element for the portal. Use this to render the command palette inside a Shadow DOM or custom container. Overrides `KumoPortalProvider` context."
|
|
2254
2346
|
}
|
|
2255
2347
|
},
|
|
2256
2348
|
"examples": [
|
|
@@ -2438,6 +2530,11 @@
|
|
|
2438
2530
|
"optional": true,
|
|
2439
2531
|
"description": "Dialog content (typically Title, Description, Close, and action buttons)."
|
|
2440
2532
|
},
|
|
2533
|
+
"container": {
|
|
2534
|
+
"type": "PortalContainer",
|
|
2535
|
+
"optional": true,
|
|
2536
|
+
"description": "Container element for the portal. Use this to render the dialog inside a Shadow DOM or custom container. Overrides `KumoPortalProvider` context."
|
|
2537
|
+
},
|
|
2441
2538
|
"size": {
|
|
2442
2539
|
"type": "enum",
|
|
2443
2540
|
"optional": true,
|
|
@@ -2474,6 +2571,7 @@
|
|
|
2474
2571
|
],
|
|
2475
2572
|
"colors": [
|
|
2476
2573
|
"bg-kumo-base",
|
|
2574
|
+
"bg-kumo-recessed",
|
|
2477
2575
|
"text-kumo-default"
|
|
2478
2576
|
],
|
|
2479
2577
|
"subComponents": {
|
|
@@ -3165,7 +3263,6 @@
|
|
|
3165
3263
|
"colors": [
|
|
3166
3264
|
"bg-kumo-base",
|
|
3167
3265
|
"bg-kumo-elevated",
|
|
3168
|
-
"bg-kumo-recessed",
|
|
3169
3266
|
"ring-kumo-fill",
|
|
3170
3267
|
"ring-kumo-line",
|
|
3171
3268
|
"text-kumo-strong"
|
|
@@ -3354,7 +3451,8 @@
|
|
|
3354
3451
|
"examples": [
|
|
3355
3452
|
"<Loader />",
|
|
3356
3453
|
"<div className=\"flex items-center gap-4\">\n <Loader size=\"sm\" />\n <Loader size=\"base\" />\n <Loader size=\"lg\" />\n </div>",
|
|
3357
|
-
"<Loader size={24} />"
|
|
3454
|
+
"<Loader size={24} />",
|
|
3455
|
+
"<Loader className=\"text-kumo-subtle\" />"
|
|
3358
3456
|
],
|
|
3359
3457
|
"colors": []
|
|
3360
3458
|
},
|
|
@@ -3387,14 +3485,15 @@
|
|
|
3387
3485
|
}
|
|
3388
3486
|
},
|
|
3389
3487
|
"examples": [
|
|
3390
|
-
"<MenuBar\n isActive
|
|
3391
|
-
"<MenuBar\n isActive
|
|
3392
|
-
"<MenuBar\n isActive
|
|
3488
|
+
"<MenuBar\n isActive={active}\n optionIds\n options={[\n {\n icon: <TextBolderIcon />,\n id: \"bold\",\n tooltip: \"Bold\",\n onClick: () => setActive(active === \"bold\" ? undefined : \"bold\"),\n },\n {\n icon: <TextItalicIcon />,\n id: \"italic\",\n tooltip: \"Italic\",\n onClick: () => setActive(active === \"italic\" ? undefined : \"italic\"),\n },\n ]}\n />",
|
|
3489
|
+
"<MenuBar\n isActive={active}\n optionIds\n options={[\n {\n icon: <TextBolderIcon />,\n id: \"bold\",\n tooltip: \"Bold\",\n onClick: () => setActive(active === \"bold\" ? undefined : \"bold\"),\n },\n {\n icon: <TextItalicIcon />,\n id: \"italic\",\n tooltip: \"Italic\",\n onClick: () => setActive(active === \"italic\" ? undefined : \"italic\"),\n },\n ]}\n />",
|
|
3490
|
+
"<MenuBar\n isActive={active}\n optionIds\n options={[\n {\n icon: <TextBolderIcon />,\n id: \"bold\",\n tooltip: \"Bold\",\n onClick: () => setActive(active === \"bold\" ? undefined : \"bold\"),\n },\n {\n icon: <TextItalicIcon />,\n id: \"italic\",\n tooltip: \"Italic\",\n onClick: () => setActive(active === \"italic\" ? undefined : \"italic\"),\n },\n ]}\n />"
|
|
3393
3491
|
],
|
|
3394
3492
|
"colors": [
|
|
3395
3493
|
"bg-kumo-base",
|
|
3396
|
-
"bg-kumo-
|
|
3397
|
-
"border-kumo-fill"
|
|
3494
|
+
"bg-kumo-recessed",
|
|
3495
|
+
"border-kumo-fill",
|
|
3496
|
+
"border-kumo-recessed"
|
|
3398
3497
|
],
|
|
3399
3498
|
"styling": {
|
|
3400
3499
|
"container": {
|
|
@@ -3461,7 +3560,7 @@
|
|
|
3461
3560
|
"<Meter label=\"Progress\" value={40} showValue={false} />",
|
|
3462
3561
|
"<Meter label=\"Quota reached\" value={100} />",
|
|
3463
3562
|
"<Meter label=\"Memory usage\" value={15} />",
|
|
3464
|
-
"<Meter\n label=\"Upload progress\"\n value={80}\n indicatorClassName=\"from-
|
|
3563
|
+
"<Meter\n label=\"Upload progress\"\n value={80}\n indicatorClassName=\"from-kumo-success via-kumo-success to-kumo-success\"\n />"
|
|
3465
3564
|
],
|
|
3466
3565
|
"colors": [
|
|
3467
3566
|
"bg-kumo-fill",
|
|
@@ -3797,7 +3896,6 @@
|
|
|
3797
3896
|
"bg-kumo-tint",
|
|
3798
3897
|
"border-kumo-danger",
|
|
3799
3898
|
"border-kumo-interact",
|
|
3800
|
-
"border-kumo-line",
|
|
3801
3899
|
"border-kumo-ring",
|
|
3802
3900
|
"ring-kumo-danger",
|
|
3803
3901
|
"ring-kumo-line",
|
|
@@ -3958,7 +4056,7 @@
|
|
|
3958
4056
|
"<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 />",
|
|
3959
4057
|
"<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>",
|
|
3960
4058
|
"<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>",
|
|
3961
|
-
"<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=\"
|
|
4059
|
+
"<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=\"neutral\">{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>",
|
|
3962
4060
|
"<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>"
|
|
3963
4061
|
],
|
|
3964
4062
|
"colors": [
|
|
@@ -4154,32 +4252,338 @@
|
|
|
4154
4252
|
"text-kumo-subtle"
|
|
4155
4253
|
]
|
|
4156
4254
|
},
|
|
4255
|
+
"Sidebar": {
|
|
4256
|
+
"name": "Sidebar",
|
|
4257
|
+
"type": "component",
|
|
4258
|
+
"description": "Sidebar — responsive navigation panel with expand/collapse support. Compound component: `Sidebar` (root `<aside>`), `.Provider`, `.Header`, `.Content`, `.Footer`, `.Group`, `.GroupLabel`, `.GroupContent`, `.Menu`, `.MenuItem`, `.MenuButton`, `.MenuAction`, `.MenuBadge`, `.MenuSub`, `.MenuSubItem`, `.MenuSubButton`, `.Separator`, `.Input`, `.Trigger`, `.Rail`, `.MenuChevron`, `.Collapsible`, `.CollapsibleTrigger`, `.CollapsibleContent`. Built on `@base-ui/react/collapsible` + `@base-ui/react/dialog`.",
|
|
4259
|
+
"importPath": "@cloudflare/kumo",
|
|
4260
|
+
"category": "Other",
|
|
4261
|
+
"props": {
|
|
4262
|
+
"defaultOpen": {
|
|
4263
|
+
"type": "boolean",
|
|
4264
|
+
"optional": true,
|
|
4265
|
+
"description": "Initial open state when uncontrolled."
|
|
4266
|
+
},
|
|
4267
|
+
"open": {
|
|
4268
|
+
"type": "boolean",
|
|
4269
|
+
"optional": true,
|
|
4270
|
+
"description": "Controlled open state."
|
|
4271
|
+
},
|
|
4272
|
+
"variant": {
|
|
4273
|
+
"type": "enum",
|
|
4274
|
+
"optional": true,
|
|
4275
|
+
"description": "Sidebar layout variant.",
|
|
4276
|
+
"values": [
|
|
4277
|
+
"sidebar",
|
|
4278
|
+
"floating",
|
|
4279
|
+
"inset"
|
|
4280
|
+
],
|
|
4281
|
+
"descriptions": {
|
|
4282
|
+
"sidebar": "Standard sidebar with border separator",
|
|
4283
|
+
"floating": "Floating sidebar with shadow and rounded corners",
|
|
4284
|
+
"inset": "Inset sidebar within the content area"
|
|
4285
|
+
},
|
|
4286
|
+
"default": "sidebar"
|
|
4287
|
+
},
|
|
4288
|
+
"side": {
|
|
4289
|
+
"type": "enum",
|
|
4290
|
+
"optional": true,
|
|
4291
|
+
"description": "Which side the sidebar is on.",
|
|
4292
|
+
"values": [
|
|
4293
|
+
"left",
|
|
4294
|
+
"right"
|
|
4295
|
+
],
|
|
4296
|
+
"descriptions": {
|
|
4297
|
+
"left": "Left-aligned sidebar",
|
|
4298
|
+
"right": "Right-aligned sidebar"
|
|
4299
|
+
},
|
|
4300
|
+
"default": "left"
|
|
4301
|
+
},
|
|
4302
|
+
"collapsible": {
|
|
4303
|
+
"type": "enum",
|
|
4304
|
+
"optional": true,
|
|
4305
|
+
"values": [
|
|
4306
|
+
"icon",
|
|
4307
|
+
"offcanvas",
|
|
4308
|
+
"none"
|
|
4309
|
+
],
|
|
4310
|
+
"descriptions": {
|
|
4311
|
+
"icon": "Collapses to show icons only",
|
|
4312
|
+
"offcanvas": "Slides off screen when collapsed",
|
|
4313
|
+
"none": "Cannot be collapsed"
|
|
4314
|
+
},
|
|
4315
|
+
"default": "icon"
|
|
4316
|
+
},
|
|
4317
|
+
"resizable": {
|
|
4318
|
+
"type": "boolean",
|
|
4319
|
+
"optional": true,
|
|
4320
|
+
"description": "Enable drag-to-resize on the sidebar edge."
|
|
4321
|
+
},
|
|
4322
|
+
"defaultWidth": {
|
|
4323
|
+
"type": "number",
|
|
4324
|
+
"optional": true,
|
|
4325
|
+
"description": "Initial width in pixels when resizable."
|
|
4326
|
+
},
|
|
4327
|
+
"minWidth": {
|
|
4328
|
+
"type": "number",
|
|
4329
|
+
"optional": true,
|
|
4330
|
+
"description": "Minimum width in pixels when resizing."
|
|
4331
|
+
},
|
|
4332
|
+
"maxWidth": {
|
|
4333
|
+
"type": "number",
|
|
4334
|
+
"optional": true,
|
|
4335
|
+
"description": "Maximum width in pixels when resizing."
|
|
4336
|
+
},
|
|
4337
|
+
"children": {
|
|
4338
|
+
"type": "ReactNode",
|
|
4339
|
+
"optional": true,
|
|
4340
|
+
"description": "Content — typically `<Sidebar>` + main content."
|
|
4341
|
+
},
|
|
4342
|
+
"className": {
|
|
4343
|
+
"type": "string",
|
|
4344
|
+
"optional": true,
|
|
4345
|
+
"description": "Additional CSS classes for the wrapper div."
|
|
4346
|
+
}
|
|
4347
|
+
},
|
|
4348
|
+
"examples": [
|
|
4349
|
+
"<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GlobeIcon}>\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuItem>\n <Sidebar.Collapsible defaultOpen>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuButton icon={CodeIcon}>\n Compute\n <Sidebar.MenuChevron />\n </Sidebar.MenuButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubButton>\n Workers & Pages\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Durable Objects\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuItem>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar>\n <DemoMain />\n </Sidebar.Provider>\n </DemoContainer>",
|
|
4350
|
+
"<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Content>\n {/* GroupContent is required for collapsible groups (provides grid-rows animation) */}\n <Sidebar.Group collapsible defaultOpen>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GlobeIcon}>\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n\n <Sidebar.Group collapsible defaultOpen>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={CodeIcon}>\n Compute\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n\n <Sidebar.Group collapsible defaultOpen={false}>\n <Sidebar.GroupLabel>Protect & Connect</Sidebar.GroupLabel>\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n Zero Trust\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar>\n <DemoMain />\n </Sidebar.Provider>\n </DemoContainer>",
|
|
4351
|
+
"<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <BrandLogo />\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} tooltip=\"Home\" active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon} tooltip=\"Analytics\">\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={CodeIcon} tooltip=\"Compute\">\n Compute\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon} tooltip=\"Storage\">\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain>\n <ToggleButton />\n <p className=\"text-sm\">\n Click the button or the sidebar trigger to toggle\n </p>\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
|
|
4352
|
+
"<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <AccountSwitcher />\n </Sidebar.Header>\n\n <Sidebar.Content>\n <div className=\"px-1 pb-2\">\n <Sidebar.Input placeholder=\"Quick search...\" shortcut=\"⌘K\" />\n </div>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics & Logs\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GlobeIcon}>\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Separator />\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuItem>\n <Sidebar.Collapsible defaultOpen>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuButton icon={CodeIcon}>\n Compute\n <Sidebar.MenuChevron />\n </Sidebar.MenuButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubButton>\n Workers & Pages\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Durable Objects\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Containers\n <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuItem>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Protect & Connect</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n Zero Trust\n <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n\n <Sidebar.Footer>\n <Sidebar.MenuButton icon={GearIcon}>\n Manage account\n </Sidebar.MenuButton>\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain />\n </Sidebar.Provider>\n </DemoContainer>",
|
|
4353
|
+
"<DemoContainer>\n <Sidebar.Provider\n defaultOpen\n resizable\n defaultWidth={240}\n minWidth={180}\n maxWidth={400}\n className=\"min-h-0! h-full\"\n >\n <Sidebar>\n <Sidebar.Header>\n <BrandLogo />\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n <Sidebar.ResizeHandle />\n </Sidebar>\n <DemoMain>\n <p className=\"text-sm\">Drag the sidebar edge to resize</p>\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
|
|
4354
|
+
"<DemoContainer>\n <Sidebar.Provider defaultOpen side=\"right\" className=\"min-h-0! h-full\">\n <DemoMain />\n <Sidebar>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Details</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={GearIcon} active>\n Properties\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Metrics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={BellIcon}>Alerts</Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar>\n </Sidebar.Provider>\n </DemoContainer>"
|
|
4355
|
+
],
|
|
4356
|
+
"colors": [
|
|
4357
|
+
"bg-kumo-base",
|
|
4358
|
+
"bg-kumo-brand",
|
|
4359
|
+
"bg-kumo-line",
|
|
4360
|
+
"bg-kumo-overlay",
|
|
4361
|
+
"bg-kumo-recessed",
|
|
4362
|
+
"bg-kumo-tint",
|
|
4363
|
+
"border-kumo-line",
|
|
4364
|
+
"ring-kumo-line",
|
|
4365
|
+
"ring-kumo-ring",
|
|
4366
|
+
"text-kumo-default",
|
|
4367
|
+
"text-kumo-strong",
|
|
4368
|
+
"text-kumo-subtle"
|
|
4369
|
+
],
|
|
4370
|
+
"subComponents": {
|
|
4371
|
+
"Provider": {
|
|
4372
|
+
"name": "Provider",
|
|
4373
|
+
"description": "Provider sub-component",
|
|
4374
|
+
"props": {
|
|
4375
|
+
"defaultOpen": {
|
|
4376
|
+
"type": "boolean",
|
|
4377
|
+
"optional": true
|
|
4378
|
+
},
|
|
4379
|
+
"open": {
|
|
4380
|
+
"type": "boolean",
|
|
4381
|
+
"optional": true
|
|
4382
|
+
},
|
|
4383
|
+
"variant": {
|
|
4384
|
+
"type": "SidebarVariant",
|
|
4385
|
+
"optional": true
|
|
4386
|
+
},
|
|
4387
|
+
"side": {
|
|
4388
|
+
"type": "SidebarSide",
|
|
4389
|
+
"optional": true
|
|
4390
|
+
},
|
|
4391
|
+
"collapsible": {
|
|
4392
|
+
"type": "\"icon\" | \"offcanvas\" | \"none\"",
|
|
4393
|
+
"optional": true
|
|
4394
|
+
},
|
|
4395
|
+
"resizable": {
|
|
4396
|
+
"type": "boolean",
|
|
4397
|
+
"optional": true
|
|
4398
|
+
},
|
|
4399
|
+
"defaultWidth": {
|
|
4400
|
+
"type": "number",
|
|
4401
|
+
"optional": true
|
|
4402
|
+
},
|
|
4403
|
+
"minWidth": {
|
|
4404
|
+
"type": "number",
|
|
4405
|
+
"optional": true
|
|
4406
|
+
},
|
|
4407
|
+
"maxWidth": {
|
|
4408
|
+
"type": "number",
|
|
4409
|
+
"optional": true
|
|
4410
|
+
},
|
|
4411
|
+
"children": {
|
|
4412
|
+
"type": "ReactNode",
|
|
4413
|
+
"required": true
|
|
4414
|
+
},
|
|
4415
|
+
"className": {
|
|
4416
|
+
"type": "string",
|
|
4417
|
+
"optional": true
|
|
4418
|
+
}
|
|
4419
|
+
}
|
|
4420
|
+
},
|
|
4421
|
+
"Header": {
|
|
4422
|
+
"name": "Header",
|
|
4423
|
+
"description": "Header sub-component",
|
|
4424
|
+
"props": {}
|
|
4425
|
+
},
|
|
4426
|
+
"Content": {
|
|
4427
|
+
"name": "Content",
|
|
4428
|
+
"description": "Content sub-component",
|
|
4429
|
+
"props": {}
|
|
4430
|
+
},
|
|
4431
|
+
"Footer": {
|
|
4432
|
+
"name": "Footer",
|
|
4433
|
+
"description": "Footer sub-component",
|
|
4434
|
+
"props": {}
|
|
4435
|
+
},
|
|
4436
|
+
"Group": {
|
|
4437
|
+
"name": "Group",
|
|
4438
|
+
"description": "Group sub-component",
|
|
4439
|
+
"props": {}
|
|
4440
|
+
},
|
|
4441
|
+
"GroupLabel": {
|
|
4442
|
+
"name": "GroupLabel",
|
|
4443
|
+
"description": "GroupLabel sub-component",
|
|
4444
|
+
"props": {}
|
|
4445
|
+
},
|
|
4446
|
+
"GroupContent": {
|
|
4447
|
+
"name": "GroupContent",
|
|
4448
|
+
"description": "GroupContent sub-component",
|
|
4449
|
+
"props": {}
|
|
4450
|
+
},
|
|
4451
|
+
"Menu": {
|
|
4452
|
+
"name": "Menu",
|
|
4453
|
+
"description": "Menu sub-component",
|
|
4454
|
+
"props": {}
|
|
4455
|
+
},
|
|
4456
|
+
"MenuItem": {
|
|
4457
|
+
"name": "MenuItem",
|
|
4458
|
+
"description": "MenuItem sub-component",
|
|
4459
|
+
"props": {}
|
|
4460
|
+
},
|
|
4461
|
+
"MenuButton": {
|
|
4462
|
+
"name": "MenuButton",
|
|
4463
|
+
"description": "MenuButton sub-component",
|
|
4464
|
+
"props": {}
|
|
4465
|
+
},
|
|
4466
|
+
"MenuAction": {
|
|
4467
|
+
"name": "MenuAction",
|
|
4468
|
+
"description": "MenuAction sub-component",
|
|
4469
|
+
"props": {}
|
|
4470
|
+
},
|
|
4471
|
+
"MenuBadge": {
|
|
4472
|
+
"name": "MenuBadge",
|
|
4473
|
+
"description": "MenuBadge sub-component",
|
|
4474
|
+
"props": {}
|
|
4475
|
+
},
|
|
4476
|
+
"MenuSub": {
|
|
4477
|
+
"name": "MenuSub",
|
|
4478
|
+
"description": "MenuSub sub-component",
|
|
4479
|
+
"props": {}
|
|
4480
|
+
},
|
|
4481
|
+
"MenuSubItem": {
|
|
4482
|
+
"name": "MenuSubItem",
|
|
4483
|
+
"description": "MenuSubItem sub-component",
|
|
4484
|
+
"props": {}
|
|
4485
|
+
},
|
|
4486
|
+
"MenuSubButton": {
|
|
4487
|
+
"name": "MenuSubButton",
|
|
4488
|
+
"description": "MenuSubButton sub-component",
|
|
4489
|
+
"props": {}
|
|
4490
|
+
},
|
|
4491
|
+
"Separator": {
|
|
4492
|
+
"name": "Separator",
|
|
4493
|
+
"description": "Separator sub-component",
|
|
4494
|
+
"props": {}
|
|
4495
|
+
},
|
|
4496
|
+
"Input": {
|
|
4497
|
+
"name": "Input",
|
|
4498
|
+
"description": "Input sub-component",
|
|
4499
|
+
"props": {}
|
|
4500
|
+
},
|
|
4501
|
+
"Trigger": {
|
|
4502
|
+
"name": "Trigger",
|
|
4503
|
+
"description": "Trigger sub-component",
|
|
4504
|
+
"props": {}
|
|
4505
|
+
},
|
|
4506
|
+
"Rail": {
|
|
4507
|
+
"name": "Rail",
|
|
4508
|
+
"description": "Rail sub-component",
|
|
4509
|
+
"props": {}
|
|
4510
|
+
},
|
|
4511
|
+
"ResizeHandle": {
|
|
4512
|
+
"name": "ResizeHandle",
|
|
4513
|
+
"description": "ResizeHandle sub-component",
|
|
4514
|
+
"props": {}
|
|
4515
|
+
},
|
|
4516
|
+
"MenuChevron": {
|
|
4517
|
+
"name": "MenuChevron",
|
|
4518
|
+
"description": "MenuChevron sub-component",
|
|
4519
|
+
"props": {}
|
|
4520
|
+
},
|
|
4521
|
+
"Collapsible": {
|
|
4522
|
+
"name": "Collapsible",
|
|
4523
|
+
"description": "Collapsible sub-component",
|
|
4524
|
+
"props": {}
|
|
4525
|
+
},
|
|
4526
|
+
"CollapsibleTrigger": {
|
|
4527
|
+
"name": "CollapsibleTrigger",
|
|
4528
|
+
"description": "CollapsibleTrigger sub-component",
|
|
4529
|
+
"props": {}
|
|
4530
|
+
},
|
|
4531
|
+
"CollapsibleContent": {
|
|
4532
|
+
"name": "CollapsibleContent",
|
|
4533
|
+
"description": "CollapsibleContent sub-component",
|
|
4534
|
+
"props": {}
|
|
4535
|
+
}
|
|
4536
|
+
},
|
|
4537
|
+
"styling": {
|
|
4538
|
+
"width": {
|
|
4539
|
+
"expanded": "16rem",
|
|
4540
|
+
"icon": "3rem"
|
|
4541
|
+
},
|
|
4542
|
+
"mobile": {
|
|
4543
|
+
"breakpoint": 768
|
|
4544
|
+
}
|
|
4545
|
+
}
|
|
4546
|
+
},
|
|
4157
4547
|
"Surface": {
|
|
4158
4548
|
"name": "Surface",
|
|
4159
4549
|
"type": "component",
|
|
4160
|
-
"description": "Surface
|
|
4550
|
+
"description": "Polymorphic container with consistent background, shadow, and border styling. Use the `render` prop to change the underlying element: ```tsx <Surface render={<section />} className=\"rounded-lg p-4\">Card content</Surface> ```",
|
|
4161
4551
|
"importPath": "@cloudflare/kumo",
|
|
4162
4552
|
"category": "Layout",
|
|
4163
4553
|
"props": {
|
|
4164
4554
|
"as": {
|
|
4165
4555
|
"type": "React.ElementType",
|
|
4166
|
-
"optional": true
|
|
4167
|
-
"description": "The HTML element type to render as (e.g. `\"div\"`, `\"section\"`, `\"article\"`)."
|
|
4556
|
+
"optional": true
|
|
4168
4557
|
},
|
|
4169
|
-
"
|
|
4170
|
-
"type": "
|
|
4558
|
+
"render": {
|
|
4559
|
+
"type": "ReactNode",
|
|
4171
4560
|
"optional": true,
|
|
4172
|
-
"description": "
|
|
4561
|
+
"description": "Allows you to replace the component’s HTML element with a different tag, or compose it with another component.\n\nAccepts a `ReactElement` or a function that returns the element to render."
|
|
4173
4562
|
},
|
|
4174
4563
|
"children": {
|
|
4175
4564
|
"type": "ReactNode",
|
|
4176
|
-
"optional": true
|
|
4177
|
-
|
|
4565
|
+
"optional": true
|
|
4566
|
+
},
|
|
4567
|
+
"className": {
|
|
4568
|
+
"type": "string",
|
|
4569
|
+
"optional": true
|
|
4570
|
+
},
|
|
4571
|
+
"id": {
|
|
4572
|
+
"type": "string",
|
|
4573
|
+
"optional": true
|
|
4574
|
+
},
|
|
4575
|
+
"lang": {
|
|
4576
|
+
"type": "string",
|
|
4577
|
+
"optional": true
|
|
4578
|
+
},
|
|
4579
|
+
"title": {
|
|
4580
|
+
"type": "string",
|
|
4581
|
+
"optional": true
|
|
4178
4582
|
}
|
|
4179
4583
|
},
|
|
4180
4584
|
"examples": [
|
|
4181
4585
|
"<Surface className=\"rounded-lg p-6\">\n <Text size=\"lg\" bold>\n Surface Component\n </Text>\n <div className=\"mt-2\">\n <Text variant=\"secondary\">\n A container with consistent elevation and border styling.\n </Text>\n </div>\n </Surface>",
|
|
4182
|
-
"<div className=\"flex flex-col gap-4\">\n <Surface
|
|
4586
|
+
"<div className=\"flex flex-col gap-4\">\n <Surface render={<section />} className=\"rounded-lg p-4\">\n <Text bold>As section element</Text>\n </Surface>\n <Surface render={<article />} className=\"rounded-lg p-4\">\n <Text bold>As article element</Text>\n </Surface>\n <Surface render={<aside />} className=\"rounded-lg p-4\">\n <Text bold>As aside element</Text>\n </Surface>\n </div>",
|
|
4183
4587
|
"<Surface className=\"rounded-lg p-6\">\n <Text bold>Outer Surface</Text>\n <Surface className=\"mt-4 rounded-md bg-kumo-elevated p-4\">\n <Text variant=\"secondary\">Nested Surface</Text>\n </Surface>\n </Surface>"
|
|
4184
4588
|
],
|
|
4185
4589
|
"colors": [
|
|
@@ -4306,7 +4710,8 @@
|
|
|
4306
4710
|
"<Switch label=\"Disabled\" checked={false} disabled />",
|
|
4307
4711
|
"<Switch\n label=\"Neutral switch\"\n variant=\"neutral\"\n checked={checked}\n onCheckedChange={setChecked}\n />",
|
|
4308
4712
|
"<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>",
|
|
4309
|
-
"<div className=\"
|
|
4713
|
+
"<div className=\"grid grid-cols-2 gap-x-8 gap-y-4\">\n <Switch\n label=\"Default off\"\n checked={false}\n onCheckedChange={() => {}}\n />\n <Switch\n label=\"Default on\"\n checked={true}\n onCheckedChange={() => {}}\n />\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 </div>",
|
|
4714
|
+
"<div className=\"flex flex-col gap-4\">\n <Switch\n label=\"Small\"\n size=\"sm\"\n checked={true}\n onCheckedChange={() => {}}\n />\n <Switch\n label=\"Base (default)\"\n size=\"base\"\n checked={true}\n onCheckedChange={() => {}}\n />\n <Switch\n label=\"Large\"\n size=\"lg\"\n checked={true}\n onCheckedChange={() => {}}\n />\n </div>"
|
|
4310
4715
|
],
|
|
4311
4716
|
"colors": [
|
|
4312
4717
|
"bg-kumo-base",
|
|
@@ -4375,6 +4780,9 @@
|
|
|
4375
4780
|
"descriptions": {
|
|
4376
4781
|
"auto": "Auto table layout - columns resize based on content",
|
|
4377
4782
|
"fixed": "Fixed table layout - columns have equal width, controlled via colgroup"
|
|
4783
|
+
},
|
|
4784
|
+
"classes": {
|
|
4785
|
+
"fixed": "table-fixed"
|
|
4378
4786
|
}
|
|
4379
4787
|
},
|
|
4380
4788
|
"variant": {
|
|
@@ -4387,6 +4795,24 @@
|
|
|
4387
4795
|
"descriptions": {
|
|
4388
4796
|
"default": "Default row variant",
|
|
4389
4797
|
"selected": "Selected row variant"
|
|
4798
|
+
},
|
|
4799
|
+
"classes": {
|
|
4800
|
+
"selected": "bg-kumo-tint"
|
|
4801
|
+
}
|
|
4802
|
+
},
|
|
4803
|
+
"sticky": {
|
|
4804
|
+
"type": "enum",
|
|
4805
|
+
"values": [
|
|
4806
|
+
"left",
|
|
4807
|
+
"right"
|
|
4808
|
+
],
|
|
4809
|
+
"descriptions": {
|
|
4810
|
+
"left": "Pin column to the left edge of the scroll container",
|
|
4811
|
+
"right": "Pin column to the right edge of the scroll container"
|
|
4812
|
+
},
|
|
4813
|
+
"classes": {
|
|
4814
|
+
"left": "sticky left-0",
|
|
4815
|
+
"right": "sticky right-0"
|
|
4390
4816
|
}
|
|
4391
4817
|
},
|
|
4392
4818
|
"className": {
|
|
@@ -4404,6 +4830,7 @@
|
|
|
4404
4830
|
"<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header variant=\"compact\">\n <Table.Row>\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.slice(0, 3).map((row) => (\n <Table.Row key={row.id}>\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
|
|
4405
4831
|
"<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead\n checked={selectedIds.size === rows.length}\n indeterminate={\n selectedIds.size > 0 && selectedIds.size < rows.length\n }\n onValueChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {rows.map((row) => (\n <Table.Row\n key={row.id}\n variant={selectedIds.has(row.id) ? \"selected\" : \"default\"}\n >\n <Table.CheckCell\n checked={selectedIds.has(row.id)}\n onValueChange={() => toggleRow(row.id)}\n aria-label={`Select ${row.subject}`}\n />\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
|
|
4406
4832
|
"<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table layout=\"fixed\">\n <colgroup>\n <col />\n <col className=\"w-[150px]\" />\n <col className=\"w-[150px]\" />\n </colgroup>\n <Table.Header>\n <Table.Row>\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.map((row) => (\n <Table.Row key={row.id}>\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
|
|
4833
|
+
"<LayerCard>\n <LayerCard.Primary className=\"w-full max-w-md overflow-x-auto p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n <Table.Head>Tags</Table.Head>\n <Table.Head sticky=\"right\">\n <span className=\"sr-only\">Actions</span>\n </Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.map((row) => (\n <Table.Row key={row.id}>\n <Table.Cell className=\"whitespace-nowrap\">\n {row.subject}\n </Table.Cell>\n <Table.Cell className=\"whitespace-nowrap\">\n {row.from}\n </Table.Cell>\n <Table.Cell className=\"whitespace-nowrap\">\n {row.date}\n </Table.Cell>\n <Table.Cell className=\"whitespace-nowrap\">\n {row.tags ? (\n <div className=\"inline-flex gap-1\">\n {row.tags.map((tag) => (\n <Badge key={tag}>{tag}</Badge>\n ))}\n </div>\n ) : (\n \"—\"\n )}\n </Table.Cell>\n <Table.Cell sticky=\"right\" className=\"text-right\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n shape=\"square\"\n aria-label=\"More options\"\n >\n <DotsThree weight=\"bold\" size={16} />\n </Button>\n }\n />\n <DropdownMenu.Content>\n <DropdownMenu.Item icon={Eye}>View</DropdownMenu.Item>\n <DropdownMenu.Item icon={PencilSimple}>\n Edit\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item icon={Trash} variant=\"danger\">\n Delete\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
|
|
4407
4834
|
"<LayerCard>\n <LayerCard.Primary className=\"w-full overflow-x-auto p-0\">\n <Table layout=\"fixed\">\n <colgroup>\n <col />{\" \"}\n {/* Checkbox column - width handled by Table.CheckHead/CheckCell */}\n <col />\n <col style={{ width: \"150px\" }} />\n <col style={{ width: \"120px\" }} />\n <col style={{ width: \"50px\" }} />\n </colgroup>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead\n checked={selectedIds.size === emailData.length}\n indeterminate={\n selectedIds.size > 0 && selectedIds.size < emailData.length\n }\n onValueChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n <Table.Head></Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.map((row) => (\n <Table.Row\n key={row.id}\n variant={selectedIds.has(row.id) ? \"selected\" : \"default\"}\n >\n <Table.CheckCell\n checked={selectedIds.has(row.id)}\n onValueChange={() => toggleRow(row.id)}\n aria-label={`Select ${row.subject}`}\n />\n <Table.Cell>\n <div className=\"flex items-center gap-2\">\n <EnvelopeSimple size={16} />\n <span className=\"truncate\">{row.subject}</span>\n {row.tags && (\n <div className=\"ml-2 inline-flex gap-1\">\n {row.tags.map((tag) => (\n <Badge key={tag}>{tag}</Badge>\n ))}\n </div>\n )}\n </div>\n </Table.Cell>\n <Table.Cell>\n <span className=\"truncate\">{row.from}</span>\n </Table.Cell>\n <Table.Cell>\n <span className=\"truncate\">{row.date}</span>\n </Table.Cell>\n <Table.Cell className=\"text-right\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n shape=\"square\"\n aria-label=\"More options\"\n >\n <DotsThree weight=\"bold\" size={16} />\n </Button>\n }\n />\n <DropdownMenu.Content>\n <DropdownMenu.Item icon={Eye}>View</DropdownMenu.Item>\n <DropdownMenu.Item icon={PencilSimple}>\n Edit\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item icon={Trash} variant=\"danger\">\n Delete\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>"
|
|
4408
4835
|
],
|
|
4409
4836
|
"colors": [
|
|
@@ -4532,9 +4959,9 @@
|
|
|
4532
4959
|
"bg-kumo-base",
|
|
4533
4960
|
"bg-kumo-brand",
|
|
4534
4961
|
"bg-kumo-recessed",
|
|
4535
|
-
"bg-kumo-surface",
|
|
4536
4962
|
"bg-kumo-tint",
|
|
4537
4963
|
"border-kumo-ring",
|
|
4964
|
+
"ring-kumo-line",
|
|
4538
4965
|
"ring-kumo-ring",
|
|
4539
4966
|
"text-kumo-default",
|
|
4540
4967
|
"text-kumo-strong",
|
|
@@ -4639,6 +5066,11 @@
|
|
|
4639
5066
|
"optional": true,
|
|
4640
5067
|
"description": "Whether to use bold font weight (only applies to body variants)."
|
|
4641
5068
|
},
|
|
5069
|
+
"truncate": {
|
|
5070
|
+
"type": "boolean",
|
|
5071
|
+
"optional": true,
|
|
5072
|
+
"description": "Whether to truncate overflowing text with an ellipsis. Adds `truncate min-w-0` classes."
|
|
5073
|
+
},
|
|
4642
5074
|
"as": {
|
|
4643
5075
|
"type": "React.ElementType",
|
|
4644
5076
|
"optional": true,
|
|
@@ -4651,7 +5083,8 @@
|
|
|
4651
5083
|
}
|
|
4652
5084
|
},
|
|
4653
5085
|
"examples": [
|
|
4654
|
-
"<div className=\"grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"heading1\">Heading 1</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-3xl (30px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"heading2\">Heading 2</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-2xl (24px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"heading3\">Heading 3</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-lg (16px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text>Body</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text bold>Body bold</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text size=\"lg\">Body lg</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-lg (16px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text size=\"sm\">Body sm</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-sm (13px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text size=\"xs\">Body xs</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-xs (12px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"secondary\">Body secondary</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"mono\">Monospace</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-sm (13px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"mono\" size=\"lg\">\n Monospace lg\n </Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"mono-secondary\">Monospace secondary</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-sm (13px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"success\">Success</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"error\">Error</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n </div>"
|
|
5086
|
+
"<div className=\"grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"heading1\">Heading 1</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-3xl (30px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"heading2\">Heading 2</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-2xl (24px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"heading3\">Heading 3</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-lg (16px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text>Body</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text bold>Body bold</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text size=\"lg\">Body lg</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-lg (16px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text size=\"sm\">Body sm</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-sm (13px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text size=\"xs\">Body xs</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-xs (12px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"secondary\">Body secondary</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"mono\">Monospace</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-sm (13px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"mono\" size=\"lg\">\n Monospace lg\n </Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"mono-secondary\">Monospace secondary</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-sm (13px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"success\">Success</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n <div className=\"flex flex-col justify-end gap-1 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text variant=\"error\">Error</Text>\n <p className=\"font-mono text-xs text-kumo-subtle\">text-base (14px)</p>\n </div>\n </div>",
|
|
5087
|
+
"<div className=\"w-64 rounded-lg border border-kumo-line bg-kumo-base p-4\">\n <Text truncate>\n This is a long piece of text that will be truncated with an ellipsis\n when it overflows its container.\n </Text>\n </div>"
|
|
4655
5088
|
],
|
|
4656
5089
|
"colors": [
|
|
4657
5090
|
"text-kumo-danger",
|
|
@@ -4712,6 +5145,13 @@
|
|
|
4712
5145
|
"error": "Error toast for critical issues",
|
|
4713
5146
|
"warning": "Warning toast for cautionary messages",
|
|
4714
5147
|
"info": "Info toast for neutral informational messages"
|
|
5148
|
+
},
|
|
5149
|
+
"classes": {
|
|
5150
|
+
"default": "border-kumo-fill bg-kumo-base",
|
|
5151
|
+
"success": "ring-[0.3px] ring-kumo-success bg-kumo-base [&_[data-toast-icon]]:text-kumo-success [&_[data-toast-title]]:text-kumo-success",
|
|
5152
|
+
"error": "ring-[0.3px] ring-kumo-danger bg-kumo-base [&_[data-toast-icon]]:text-kumo-danger [&_[data-toast-title]]:text-kumo-danger",
|
|
5153
|
+
"warning": "ring-[0.3px] ring-kumo-warning bg-kumo-base [&_[data-toast-icon]]:text-kumo-warning [&_[data-toast-title]]:text-kumo-warning",
|
|
5154
|
+
"info": "ring-[0.3px] ring-kumo-info bg-kumo-control [&_[data-toast-icon]]:text-kumo-info [&_[data-toast-title]]:text-kumo-info"
|
|
4715
5155
|
}
|
|
4716
5156
|
},
|
|
4717
5157
|
"className": {
|
|
@@ -4725,6 +5165,7 @@
|
|
|
4725
5165
|
},
|
|
4726
5166
|
"examples": [],
|
|
4727
5167
|
"colors": [
|
|
5168
|
+
"bg-kumo-base",
|
|
4728
5169
|
"bg-kumo-contrast",
|
|
4729
5170
|
"bg-kumo-control",
|
|
4730
5171
|
"bg-kumo-danger-tint",
|
|
@@ -4732,11 +5173,12 @@
|
|
|
4732
5173
|
"bg-kumo-info-tint",
|
|
4733
5174
|
"bg-kumo-success-tint",
|
|
4734
5175
|
"bg-kumo-warning-tint",
|
|
4735
|
-
"border-kumo-danger",
|
|
4736
5176
|
"border-kumo-fill",
|
|
4737
|
-
"
|
|
4738
|
-
"
|
|
4739
|
-
"
|
|
5177
|
+
"ring-kumo-danger",
|
|
5178
|
+
"ring-kumo-info",
|
|
5179
|
+
"ring-kumo-ring",
|
|
5180
|
+
"ring-kumo-success",
|
|
5181
|
+
"ring-kumo-warning",
|
|
4740
5182
|
"text-kumo-danger",
|
|
4741
5183
|
"text-kumo-default",
|
|
4742
5184
|
"text-kumo-info",
|
|
@@ -4750,8 +5192,8 @@
|
|
|
4750
5192
|
"width": 300,
|
|
4751
5193
|
"padding": 16,
|
|
4752
5194
|
"borderRadius": 8,
|
|
4753
|
-
"background": "
|
|
4754
|
-
"border": "
|
|
5195
|
+
"background": "bg-kumo-base",
|
|
5196
|
+
"border": "ring-[0.3px] ring-kumo-ring",
|
|
4755
5197
|
"shadow": "shadow-lg",
|
|
4756
5198
|
"gap": 4
|
|
4757
5199
|
},
|
|
@@ -5109,6 +5551,7 @@
|
|
|
5109
5551
|
"Label",
|
|
5110
5552
|
"Link",
|
|
5111
5553
|
"SensitiveInput",
|
|
5554
|
+
"Sidebar",
|
|
5112
5555
|
"Table",
|
|
5113
5556
|
"DeleteResource"
|
|
5114
5557
|
],
|
|
@@ -5165,6 +5608,7 @@
|
|
|
5165
5608
|
"ResourceListPage",
|
|
5166
5609
|
"Select",
|
|
5167
5610
|
"SensitiveInput",
|
|
5611
|
+
"Sidebar",
|
|
5168
5612
|
"Surface",
|
|
5169
5613
|
"Switch",
|
|
5170
5614
|
"Table",
|
|
@@ -5205,6 +5649,7 @@
|
|
|
5205
5649
|
"Radio",
|
|
5206
5650
|
"Select",
|
|
5207
5651
|
"SensitiveInput",
|
|
5652
|
+
"Sidebar",
|
|
5208
5653
|
"Surface",
|
|
5209
5654
|
"Switch",
|
|
5210
5655
|
"Table",
|