@cloudflare/kumo 2.2.2 → 2.4.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 +95 -0
- package/ai/component-registry.json +194 -128
- package/ai/component-registry.md +412 -221
- package/ai/schemas.ts +8 -2
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +58 -38
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/ai/schemas.js +14 -4
- package/dist/ai/schemas.js.map +1 -1
- package/dist/chunks/SankeyChart-npoyr1j06svoxsfe.js +770 -0
- package/dist/chunks/SankeyChart-npoyr1j06svoxsfe.js.map +1 -0
- package/dist/chunks/{autocomplete-mhrvtq4y5n21vr0t.js → autocomplete-cvp5fsdt6gh0p3vu.js} +86 -68
- package/dist/chunks/autocomplete-cvp5fsdt6gh0p3vu.js.map +1 -0
- package/dist/chunks/{badge-kqox9toi0sygfbno.js → badge-c1th6h6ahz7eu49q.js} +80 -19
- package/dist/chunks/badge-c1th6h6ahz7eu49q.js.map +1 -0
- package/dist/chunks/banner-es5iwuk4pf25e29e.js +120 -0
- package/dist/chunks/banner-es5iwuk4pf25e29e.js.map +1 -0
- package/dist/chunks/{breadcrumbs-ohstavaqvycoremm.js → breadcrumbs-j214mimk5zj4ffp4.js} +8 -6
- package/dist/chunks/breadcrumbs-j214mimk5zj4ffp4.js.map +1 -0
- package/dist/chunks/{button-oevxukl0zmwoq4tb.js → button-mnrxu6dud2x5js5b.js} +19 -17
- package/dist/chunks/{button-oevxukl0zmwoq4tb.js.map → button-mnrxu6dud2x5js5b.js.map} +1 -1
- package/dist/chunks/{checkbox-h6vkv17lnq854z2c.js → checkbox-dqih8tzzt3vhp870.js} +25 -19
- package/dist/chunks/checkbox-dqih8tzzt3vhp870.js.map +1 -0
- package/dist/chunks/{clipboard-text-kyy71jmx7umdh8k8.js → clipboard-text-mrut8z3dt1w0efxz.js} +4 -4
- package/dist/chunks/{clipboard-text-kyy71jmx7umdh8k8.js.map → clipboard-text-mrut8z3dt1w0efxz.js.map} +1 -1
- package/dist/chunks/{collapsible-ej6p2bq758sw30nk.js → collapsible-nzqcf9zwnjkxqzr6.js} +21 -17
- package/dist/chunks/collapsible-nzqcf9zwnjkxqzr6.js.map +1 -0
- package/dist/chunks/{combobox-g3cudlfajecou4va.js → combobox-dpptfpcmqfrso1xa.js} +123 -111
- package/dist/chunks/combobox-dpptfpcmqfrso1xa.js.map +1 -0
- package/dist/chunks/{command-palette-eep807rf6iapoz8r.js → command-palette-fqhyacp33fhyf696.js} +12 -12
- package/dist/chunks/{command-palette-eep807rf6iapoz8r.js.map → command-palette-fqhyacp33fhyf696.js.map} +1 -1
- package/dist/chunks/dialog-my9fioafdstq50mi.js +134 -0
- package/dist/chunks/dialog-my9fioafdstq50mi.js.map +1 -0
- package/dist/chunks/{dropdown-cobpydatw4vlb3ov.js → dropdown-g4sb4cw9ffqaw5gx.js} +54 -44
- package/dist/chunks/dropdown-g4sb4cw9ffqaw5gx.js.map +1 -0
- package/dist/chunks/{empty-n3r7xutkb9sxjaso.js → empty-n17inn1z67bpohkw.js} +2 -2
- package/dist/chunks/{empty-n3r7xutkb9sxjaso.js.map → empty-n17inn1z67bpohkw.js.map} +1 -1
- package/dist/chunks/{field-l1oapopp6kjnephi.js → field-c8o7h3rlam4c9pcx.js} +3 -3
- package/dist/chunks/{field-l1oapopp6kjnephi.js.map → field-c8o7h3rlam4c9pcx.js.map} +1 -1
- package/dist/chunks/{input-area-gudamx1ruz8rxiw2.js → input-area-eurk3seud30ricwn.js} +4 -4
- package/dist/chunks/{input-area-gudamx1ruz8rxiw2.js.map → input-area-eurk3seud30ricwn.js.map} +1 -1
- package/dist/chunks/{input-i3os21puacqw4r75.js → input-en8hhb14mmt3tfwn.js} +3 -3
- package/dist/chunks/{input-i3os21puacqw4r75.js.map → input-en8hhb14mmt3tfwn.js.map} +1 -1
- package/dist/chunks/{input-group-gy08vju7eoogil8k.js → input-group-d09ocmjcbdai0gze.js} +70 -70
- package/dist/chunks/input-group-d09ocmjcbdai0gze.js.map +1 -0
- package/dist/chunks/{label-i0bj94d43irz0k1x.js → label-c8rz453pti66slki.js} +3 -3
- package/dist/chunks/{label-i0bj94d43irz0k1x.js.map → label-c8rz453pti66slki.js.map} +1 -1
- package/dist/chunks/{layer-card-hyz8lfxceudt05pv.js → layer-card-er4flkcxmzfug8jw.js} +2 -2
- package/dist/chunks/{layer-card-hyz8lfxceudt05pv.js.map → layer-card-er4flkcxmzfug8jw.js.map} +1 -1
- package/dist/chunks/{link-lkzjiitte3l29q87.js → link-i6vnwyjcwvjz5btm.js} +20 -19
- package/dist/chunks/{link-lkzjiitte3l29q87.js.map → link-i6vnwyjcwvjz5btm.js.map} +1 -1
- package/dist/chunks/menubar-ng5if56amh1tto4j.js +98 -0
- package/dist/chunks/menubar-ng5if56amh1tto4j.js.map +1 -0
- package/dist/chunks/{meter-jbxkh6gfggx1kjna.js → meter-d5igshkjqttl1fdj.js} +2 -2
- package/dist/chunks/{meter-jbxkh6gfggx1kjna.js.map → meter-d5igshkjqttl1fdj.js.map} +1 -1
- package/dist/chunks/{pagination-ceetno8sc1rd0wr2.js → pagination-bw7vwca4wrfjm8vb.js} +3 -3
- package/dist/chunks/{pagination-ceetno8sc1rd0wr2.js.map → pagination-bw7vwca4wrfjm8vb.js.map} +1 -1
- package/dist/chunks/{popover-i4opvl9g0as52fyx.js → popover-ozf1j7oi7pxiudyz.js} +4 -2
- package/dist/chunks/popover-ozf1j7oi7pxiudyz.js.map +1 -0
- package/dist/chunks/{radio-g56o5rftpu1qpxuv.js → radio-gpg6kmzonr2cayq1.js} +54 -46
- package/dist/chunks/radio-gpg6kmzonr2cayq1.js.map +1 -0
- package/dist/chunks/select-dw9iw35ug7yer3o3.js +237 -0
- package/dist/chunks/select-dw9iw35ug7yer3o3.js.map +1 -0
- package/dist/chunks/{sensitive-input-hokm527ollnz9dqc.js → sensitive-input-dgoxjtoxl4zqa51v.js} +101 -92
- package/dist/chunks/sensitive-input-dgoxjtoxl4zqa51v.js.map +1 -0
- package/dist/chunks/sidebar-hzio700cg85f7f31.js +1014 -0
- package/dist/chunks/sidebar-hzio700cg85f7f31.js.map +1 -0
- package/dist/chunks/{surface-ck1nt2uqfzmod4sz.js → surface-iyejjbqogjbo7ise.js} +2 -2
- package/dist/chunks/{surface-ck1nt2uqfzmod4sz.js.map → surface-iyejjbqogjbo7ise.js.map} +1 -1
- package/dist/chunks/{switch-fv0ttj24uhocvuh8.js → switch-g8f77h69h34xld06.js} +50 -45
- package/dist/chunks/switch-g8f77h69h34xld06.js.map +1 -0
- package/dist/chunks/{table-nsfcgpo93gfetrhh.js → table-e1te1im2tt2ez05y.js} +2 -2
- package/dist/chunks/{table-nsfcgpo93gfetrhh.js.map → table-e1te1im2tt2ez05y.js.map} +1 -1
- package/dist/chunks/{table-of-contents-fzyv7uhnnyr13dqu.js → table-of-contents-jco9kvt48d34dwsw.js} +34 -30
- package/dist/chunks/table-of-contents-jco9kvt48d34dwsw.js.map +1 -0
- package/dist/chunks/{tabs-g8ier5pehjpfxauf.js → tabs-hice1yy5q2t889z8.js} +6 -4
- package/dist/chunks/tabs-hice1yy5q2t889z8.js.map +1 -0
- package/dist/chunks/{toast-ofqlfmddcyka091n.js → toast-kvbgct0jvfmn4mas.js} +29 -27
- package/dist/chunks/{toast-ofqlfmddcyka091n.js.map → toast-kvbgct0jvfmn4mas.js.map} +1 -1
- package/dist/chunks/{tooltip-icvb67awe1zolz61.js → tooltip-ken77ixya0qpidie.js} +13 -13
- package/dist/chunks/{tooltip-icvb67awe1zolz61.js.map → tooltip-ken77ixya0qpidie.js.map} +1 -1
- package/dist/chunks/vendor-base-ui-knphx7dts1vm1x37.js +24710 -0
- package/dist/chunks/vendor-base-ui-knphx7dts1vm1x37.js.map +1 -0
- package/dist/chunks/{vendor-floating-ui-dwag5e88viikh2zs.js → vendor-floating-ui-c4mwmh0xmfzevy9l.js} +5 -5
- package/dist/chunks/{vendor-floating-ui-dwag5e88viikh2zs.js.map → vendor-floating-ui-c4mwmh0xmfzevy9l.js.map} +1 -1
- package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js +217 -0
- package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js.map +1 -0
- package/dist/code.js +1 -1
- package/dist/components/autocomplete.js +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/collapsible.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/input-group.js +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/sidebar.js +22 -23
- package/dist/components/surface.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/table-of-contents.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 +122 -123
- 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/otp-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 +37 -39
- package/dist/scripts/theme-generator/config.js.map +1 -1
- package/dist/scripts/theme-generator/generate-css.d.ts.map +1 -1
- package/dist/scripts/theme-generator/types.d.ts +8 -2
- package/dist/scripts/theme-generator/types.d.ts.map +1 -1
- package/dist/src/components/autocomplete/autocomplete.d.ts +1 -0
- package/dist/src/components/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/src/components/autocomplete/index.d.ts +1 -0
- package/dist/src/components/autocomplete/index.d.ts.map +1 -1
- package/dist/src/components/badge/badge.d.ts +51 -3
- package/dist/src/components/badge/badge.d.ts.map +1 -1
- package/dist/src/components/banner/banner.d.ts +14 -7
- package/dist/src/components/banner/banner.d.ts.map +1 -1
- package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
- package/dist/src/components/button/button.d.ts.map +1 -1
- package/dist/src/components/chart/SankeyChart.d.ts +6 -1
- package/dist/src/components/chart/SankeyChart.d.ts.map +1 -1
- package/dist/src/components/chart/TimeseriesChart.d.ts +43 -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/collapsible/collapsible.d.ts.map +1 -1
- package/dist/src/components/combobox/combobox.d.ts +1 -0
- package/dist/src/components/combobox/combobox.d.ts.map +1 -1
- package/dist/src/components/combobox/index.d.ts +1 -0
- package/dist/src/components/combobox/index.d.ts.map +1 -1
- package/dist/src/components/dialog/dialog.d.ts +11 -4
- package/dist/src/components/dialog/dialog.d.ts.map +1 -1
- package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
- package/dist/src/components/input-group/input-group-button.d.ts.map +1 -1
- package/dist/src/components/input-group/input-group-input.d.ts.map +1 -1
- package/dist/src/components/input-group/input-group.d.ts.map +1 -1
- package/dist/src/components/link/link.d.ts.map +1 -1
- package/dist/src/components/menubar/menubar.d.ts.map +1 -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.map +1 -1
- package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
- package/dist/src/components/sidebar/index.d.ts +1 -1
- package/dist/src/components/sidebar/index.d.ts.map +1 -1
- package/dist/src/components/sidebar/sidebar.d.ts +159 -146
- package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/src/components/switch/switch.d.ts.map +1 -1
- package/dist/src/components/table-of-contents/table-of-contents.d.ts.map +1 -1
- package/dist/src/components/tabs/tabs.d.ts.map +1 -1
- package/dist/src/components/toast/toast.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 +0 -18
- package/dist/styles/kumo-standalone.css +1 -1
- package/dist/styles/kumo.css +37 -0
- package/dist/styles/theme-kumo.css +30 -37
- package/package.json +5 -2
- package/scripts/generate-primitives.ts +6 -1
- package/scripts/theme-generator/config.ts +38 -40
- package/scripts/theme-generator/generate-css.ts +4 -1
- package/scripts/theme-generator/types.ts +8 -2
- package/dist/chunks/SankeyChart-dkq90770ad7hgzx3.js +0 -635
- package/dist/chunks/SankeyChart-dkq90770ad7hgzx3.js.map +0 -1
- package/dist/chunks/autocomplete-mhrvtq4y5n21vr0t.js.map +0 -1
- package/dist/chunks/badge-kqox9toi0sygfbno.js.map +0 -1
- package/dist/chunks/banner-ip2lm8r87hich557.js +0 -88
- package/dist/chunks/banner-ip2lm8r87hich557.js.map +0 -1
- package/dist/chunks/breadcrumbs-ohstavaqvycoremm.js.map +0 -1
- package/dist/chunks/checkbox-h6vkv17lnq854z2c.js.map +0 -1
- package/dist/chunks/collapsible-ej6p2bq758sw30nk.js.map +0 -1
- package/dist/chunks/combobox-g3cudlfajecou4va.js.map +0 -1
- package/dist/chunks/dialog-fo3qhv9fgiadq5gp.js +0 -115
- package/dist/chunks/dialog-fo3qhv9fgiadq5gp.js.map +0 -1
- package/dist/chunks/dropdown-cobpydatw4vlb3ov.js.map +0 -1
- package/dist/chunks/input-group-gy08vju7eoogil8k.js.map +0 -1
- package/dist/chunks/menubar-jalggrag4utvdpey.js +0 -96
- package/dist/chunks/menubar-jalggrag4utvdpey.js.map +0 -1
- package/dist/chunks/popover-i4opvl9g0as52fyx.js.map +0 -1
- package/dist/chunks/radio-g56o5rftpu1qpxuv.js.map +0 -1
- package/dist/chunks/select-g1xvti1k1hj7xe5t.js +0 -226
- package/dist/chunks/select-g1xvti1k1hj7xe5t.js.map +0 -1
- package/dist/chunks/sensitive-input-hokm527ollnz9dqc.js.map +0 -1
- package/dist/chunks/sidebar-oan40ylmqkyui21w.js +0 -875
- package/dist/chunks/sidebar-oan40ylmqkyui21w.js.map +0 -1
- package/dist/chunks/switch-fv0ttj24uhocvuh8.js.map +0 -1
- package/dist/chunks/table-of-contents-fzyv7uhnnyr13dqu.js.map +0 -1
- package/dist/chunks/tabs-g8ier5pehjpfxauf.js.map +0 -1
- package/dist/chunks/vendor-base-ui-nbyiqqi138hcoz52.js +0 -24639
- package/dist/chunks/vendor-base-ui-nbyiqqi138hcoz52.js.map +0 -1
- package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js +0 -534
- package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js.map +0 -1
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
},
|
|
62
62
|
"examples": [
|
|
63
63
|
"<Autocomplete items={fruits}>\n <Autocomplete.InputGroup placeholder=\"Search fruits…\" />\n <Autocomplete.Content>\n <Autocomplete.List>\n {(item: string) => (\n <Autocomplete.Item key={item} value={item}>\n {item}\n </Autocomplete.Item>\n )}\n </Autocomplete.List>\n </Autocomplete.Content>\n </Autocomplete>",
|
|
64
|
-
"<div className=\"w-80\">\n <Autocomplete\n items={
|
|
65
|
-
"<div className=\"w-80\">\n <Autocomplete\n items={countries}\n label=\"Country\"\n error={{ message: \"Please enter a valid country\", match: true }}\n filter={
|
|
64
|
+
"<div className=\"w-80\">\n <Autocomplete\n items={languages}\n label=\"Language\"\n description=\"Start typing to filter languages\"\n filter={filter}\n >\n <Autocomplete.InputGroup placeholder=\"Search a language…\" />\n <Autocomplete.Content>\n <Autocomplete.List>\n {(item: Language) => (\n <Autocomplete.Item key={item.value} value={item}>\n {item.emoji} {item.label}\n </Autocomplete.Item>\n )}\n </Autocomplete.List>\n </Autocomplete.Content>\n </Autocomplete>\n </div>",
|
|
65
|
+
"<div className=\"w-80\">\n <Autocomplete\n items={countries}\n label=\"Country\"\n error={{ message: \"Please enter a valid country\", match: true }}\n filter={filter}\n >\n <Autocomplete.InputGroup placeholder=\"Search countries…\" />\n <Autocomplete.Content>\n <Autocomplete.List>\n {(item: Country) => (\n <Autocomplete.Item key={item.code} value={item}>\n {item.label}\n </Autocomplete.Item>\n )}\n </Autocomplete.List>\n </Autocomplete.Content>\n </Autocomplete>\n </div>",
|
|
66
66
|
"<Autocomplete items={servers}>\n <Autocomplete.InputGroup placeholder=\"Select region…\" />\n <Autocomplete.Content>\n <Autocomplete.List>\n {(group: ServerGroup) => (\n <Autocomplete.Group key={group.value} items={group.items}>\n <Autocomplete.GroupLabel>{group.value}</Autocomplete.GroupLabel>\n <Autocomplete.Collection>\n {(item: ServerLocation) => (\n <Autocomplete.Item key={item.value} value={item}>\n {item.label}\n </Autocomplete.Item>\n )}\n </Autocomplete.Collection>\n </Autocomplete.Group>\n )}\n </Autocomplete.List>\n </Autocomplete.Content>\n </Autocomplete>",
|
|
67
67
|
"<div className=\"flex flex-wrap items-center gap-4\">\n <Autocomplete items={fruits.slice(0, 10)}>\n <Autocomplete.InputGroup size=\"xs\" placeholder=\"xs\" />\n <Autocomplete.Content>\n <Autocomplete.List>\n {(item: string) => (\n <Autocomplete.Item key={item} value={item}>\n {item}\n </Autocomplete.Item>\n )}\n </Autocomplete.List>\n </Autocomplete.Content>\n </Autocomplete>\n <Autocomplete items={fruits.slice(0, 10)}>\n <Autocomplete.InputGroup size=\"sm\" placeholder=\"sm\" />\n <Autocomplete.Content>\n <Autocomplete.List>\n {(item: string) => (\n <Autocomplete.Item key={item} value={item}>\n {item}\n </Autocomplete.Item>\n )}\n </Autocomplete.List>\n </Autocomplete.Content>\n </Autocomplete>\n <Autocomplete items={fruits.slice(0, 10)}>\n <Autocomplete.InputGroup size=\"base\" placeholder=\"base (default)\" />\n <Autocomplete.Content>\n <Autocomplete.List>\n {(item: string) => (\n <Autocomplete.Item key={item} value={item}>\n {item}\n </Autocomplete.Item>\n )}\n </Autocomplete.List>\n </Autocomplete.Content>\n </Autocomplete>\n <Autocomplete items={fruits.slice(0, 10)}>\n <Autocomplete.InputGroup size=\"lg\" placeholder=\"lg\" />\n <Autocomplete.Content>\n <Autocomplete.List>\n {(item: string) => (\n <Autocomplete.Item key={item} value={item}>\n {item}\n </Autocomplete.Item>\n )}\n </Autocomplete.List>\n </Autocomplete.Content>\n </Autocomplete>\n </div>",
|
|
68
68
|
"<div className=\"flex flex-col gap-3 w-80\">\n <Autocomplete\n items={fruits}\n value={value}\n onValueChange={(v) => setValue(v)}\n >\n <Autocomplete.InputGroup placeholder=\"Type a fruit…\" />\n <Autocomplete.Content>\n <Autocomplete.List>\n {(item: string) => (\n <Autocomplete.Item key={item} value={item}>\n {item}\n </Autocomplete.Item>\n )}\n </Autocomplete.List>\n </Autocomplete.Content>\n </Autocomplete>\n {value && (\n <p className=\"text-sm text-kumo-subtle\">\n Value: <span className=\"text-kumo-default font-medium\">{value}</span>\n </p>\n )}\n </div>"
|
|
@@ -236,6 +236,23 @@
|
|
|
236
236
|
},
|
|
237
237
|
"default": "primary"
|
|
238
238
|
},
|
|
239
|
+
"appearance": {
|
|
240
|
+
"type": "enum",
|
|
241
|
+
"optional": true,
|
|
242
|
+
"description": "Visual appearance of the badge.\n- `\"filled\"` — Filled background using the variant color (default)\n- `\"dot\"` — Outlined badge with a colored circle dot. Only `success`, `warning`, `error`, and `neutral` variants show a dot; other variants render the badge without a dot.",
|
|
243
|
+
"values": [
|
|
244
|
+
"filled",
|
|
245
|
+
"dot"
|
|
246
|
+
],
|
|
247
|
+
"descriptions": {
|
|
248
|
+
"filled": "Filled badge with background color (default)",
|
|
249
|
+
"dot": "Outlined badge with a colored circle dot indicating status"
|
|
250
|
+
},
|
|
251
|
+
"classes": {
|
|
252
|
+
"dot": "gap-1.5 bg-transparent text-kumo-default ring ring-kumo-hairline"
|
|
253
|
+
},
|
|
254
|
+
"default": "filled"
|
|
255
|
+
},
|
|
239
256
|
"className": {
|
|
240
257
|
"type": "string",
|
|
241
258
|
"optional": true,
|
|
@@ -249,12 +266,12 @@
|
|
|
249
266
|
},
|
|
250
267
|
"examples": [
|
|
251
268
|
"<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"primary\">Primary</Badge>\n <Badge variant=\"secondary\">Secondary</Badge>\n <Badge variant=\"error\">Error</Badge>\n <Badge variant=\"success\">Success</Badge>\n <Badge variant=\"warning\">Warning</Badge>\n <Badge variant=\"info\">Info</Badge>\n <Badge variant=\"outline\">Outline</Badge>\n <Badge variant=\"beta\">Beta</Badge>\n </div>",
|
|
252
|
-
"<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"neutral\">Neutral</Badge>\n <Badge variant=\"red\">Red</Badge>\n <Badge variant=\"orange\">Orange</Badge>\n <Badge variant=\"
|
|
253
|
-
"<p className=\"flex items-center gap-2\">\n Workers\n <Badge variant=\"secondary\">New</Badge>\n </p>"
|
|
269
|
+
"<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"neutral\">Neutral</Badge>\n <Badge variant=\"red\">Red</Badge>\n <Badge variant=\"orange\">Orange</Badge>\n <Badge variant=\"teal\">Teal</Badge>\n <Badge variant=\"blue\">Blue</Badge>\n <Badge variant=\"purple\">Purple</Badge>\n </div>",
|
|
270
|
+
"<p className=\"flex items-center gap-2\">\n Workers\n <Badge variant=\"secondary\">New</Badge>\n </p>",
|
|
271
|
+
"<div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"success\" appearance=\"dot\">Healthy</Badge>\n <Badge variant=\"warning\" appearance=\"dot\">Warning</Badge>\n <Badge variant=\"error\" appearance=\"dot\">Error</Badge>\n <Badge variant=\"neutral\" appearance=\"dot\">Neutral</Badge>\n </div>"
|
|
254
272
|
],
|
|
255
273
|
"colors": [
|
|
256
274
|
"bg-kumo-badge-blue",
|
|
257
|
-
"bg-kumo-badge-green",
|
|
258
275
|
"bg-kumo-badge-inverted",
|
|
259
276
|
"bg-kumo-badge-neutral",
|
|
260
277
|
"bg-kumo-badge-orange",
|
|
@@ -265,10 +282,12 @@
|
|
|
265
282
|
"bg-kumo-danger-tint",
|
|
266
283
|
"bg-kumo-fill",
|
|
267
284
|
"bg-kumo-info-tint",
|
|
285
|
+
"bg-kumo-success",
|
|
268
286
|
"bg-kumo-success-tint",
|
|
269
287
|
"bg-kumo-warning-tint",
|
|
270
288
|
"border-kumo-brand",
|
|
271
289
|
"border-kumo-fill",
|
|
290
|
+
"ring-kumo-hairline",
|
|
272
291
|
"text-kumo-badge-inverted",
|
|
273
292
|
"text-kumo-badge-neutral-subtle",
|
|
274
293
|
"text-kumo-badge-teal-subtle",
|
|
@@ -288,6 +307,19 @@
|
|
|
288
307
|
"importPath": "@cloudflare/kumo",
|
|
289
308
|
"category": "Feedback",
|
|
290
309
|
"props": {
|
|
310
|
+
"className": {
|
|
311
|
+
"type": "string",
|
|
312
|
+
"optional": true,
|
|
313
|
+
"description": "Additional CSS classes merged via `cn()`."
|
|
314
|
+
},
|
|
315
|
+
"id": {
|
|
316
|
+
"type": "string",
|
|
317
|
+
"optional": true
|
|
318
|
+
},
|
|
319
|
+
"lang": {
|
|
320
|
+
"type": "string",
|
|
321
|
+
"optional": true
|
|
322
|
+
},
|
|
291
323
|
"icon": {
|
|
292
324
|
"type": "ReactNode",
|
|
293
325
|
"optional": true,
|
|
@@ -319,35 +351,34 @@
|
|
|
319
351
|
"variant": {
|
|
320
352
|
"type": "enum",
|
|
321
353
|
"optional": true,
|
|
322
|
-
"description": "Visual style of the banner.\n- `\"default\"` — Informational blue banner for general messages\n- `\"alert\"` — Warning yellow banner for cautionary messages\n- `\"error\"` — Error red banner for critical issues",
|
|
354
|
+
"description": "Visual style of the banner.\n- `\"default\"` — Informational blue banner for general messages\n- `\"alert\"` — Warning yellow banner for cautionary messages\n- `\"error\"` — Error red banner for critical issues\n- `\"secondary\"` — Neutral banner for secondary messages",
|
|
323
355
|
"values": [
|
|
324
356
|
"default",
|
|
325
357
|
"alert",
|
|
326
|
-
"error"
|
|
358
|
+
"error",
|
|
359
|
+
"secondary"
|
|
327
360
|
],
|
|
328
361
|
"descriptions": {
|
|
329
362
|
"default": "Informational banner for general messages",
|
|
330
363
|
"alert": "Warning banner for cautionary messages",
|
|
331
|
-
"error": "Error banner for critical issues"
|
|
364
|
+
"error": "Error banner for critical issues",
|
|
365
|
+
"secondary": "Neutral banner for secondary messages"
|
|
332
366
|
},
|
|
333
367
|
"classes": {
|
|
334
|
-
"default": "bg-kumo-
|
|
335
|
-
"alert": "bg-kumo-
|
|
336
|
-
"error": "bg-kumo-danger-tint/
|
|
368
|
+
"default": "bg-kumo-banner-info text-kumo-info",
|
|
369
|
+
"alert": "bg-kumo-banner-warning text-kumo-warning",
|
|
370
|
+
"error": "bg-kumo-danger-tint/60 text-kumo-danger",
|
|
371
|
+
"secondary": "bg-kumo-contrast/5 text-kumo-subtle"
|
|
337
372
|
},
|
|
338
373
|
"default": "default"
|
|
339
|
-
},
|
|
340
|
-
"className": {
|
|
341
|
-
"type": "string",
|
|
342
|
-
"optional": true,
|
|
343
|
-
"description": "Additional CSS classes merged via `cn()`."
|
|
344
374
|
}
|
|
345
375
|
},
|
|
346
376
|
"examples": [
|
|
347
|
-
"<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>",
|
|
377
|
+
"<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 <Banner\n icon={<Info weight=\"fill\" />}\n variant=\"secondary\"\n title=\"Maintenance scheduled\"\n description=\"This service will be unavailable for 10 minutes.\"\n />\n </div>",
|
|
348
378
|
"<Banner\n icon={<Info weight=\"fill\" />}\n title=\"Update available\"\n description=\"A new version is ready to install.\"\n />",
|
|
349
379
|
"<Banner\n icon={<Warning weight=\"fill\" />}\n variant=\"alert\"\n title=\"Session expiring\"\n description=\"Your session will expire in 5 minutes.\"\n />",
|
|
350
380
|
"<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 />",
|
|
381
|
+
"<Banner\n icon={<Info weight=\"fill\" />}\n variant=\"secondary\"\n title=\"Maintenance scheduled\"\n description=\"This service will be unavailable for 10 minutes.\"\n />",
|
|
351
382
|
"<Banner\n icon={<Info weight=\"fill\" />}\n title=\"Your changes have been saved.\"\n />",
|
|
352
383
|
"<Banner\n icon={<Warning weight=\"fill\" />}\n variant=\"alert\"\n title=\"Review required\"\n description=\"Please review your billing information before proceeding.\"\n />",
|
|
353
384
|
"<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 />",
|
|
@@ -356,17 +387,16 @@
|
|
|
356
387
|
"<Banner icon={<Info />}>This is a simple banner using children.</Banner>"
|
|
357
388
|
],
|
|
358
389
|
"colors": [
|
|
390
|
+
"bg-kumo-banner-info",
|
|
391
|
+
"bg-kumo-banner-warning",
|
|
392
|
+
"bg-kumo-contrast",
|
|
359
393
|
"bg-kumo-danger-tint",
|
|
360
|
-
"bg-kumo-info-tint",
|
|
361
|
-
"bg-kumo-warning-tint",
|
|
362
|
-
"border-kumo-danger",
|
|
363
|
-
"border-kumo-info",
|
|
364
|
-
"border-kumo-warning",
|
|
365
394
|
"text-kumo-danger",
|
|
366
395
|
"text-kumo-info",
|
|
396
|
+
"text-kumo-subtle",
|
|
367
397
|
"text-kumo-warning"
|
|
368
398
|
],
|
|
369
|
-
"baseStyles": "flex w-full items-start gap-3 rounded-lg
|
|
399
|
+
"baseStyles": "flex w-full items-start gap-3 rounded-lg px-4 py-3 text-base"
|
|
370
400
|
},
|
|
371
401
|
"Breadcrumbs": {
|
|
372
402
|
"name": "Breadcrumbs",
|
|
@@ -3662,15 +3692,16 @@
|
|
|
3662
3692
|
"<div className=\"w-full max-w-2xs\">\n <InputGroup>\n <InputGroup.Input\n maxLength={20}\n onChange={handleChange}\n value={value}\n />\n <InputGroup.Suffix>.workers.dev</InputGroup.Suffix>\n {status !== \"idle\" && (\n <InputGroup.Addon align=\"end\">\n {status === \"loading\" ? (\n <Loader />\n ) : (\n <CheckCircleIcon weight=\"duotone\" className=\"text-kumo-success\" />\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n </div>",
|
|
3663
3693
|
"<InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>\n <LinkIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Paste a link...\" aria-label=\"Link\" />\n </InputGroup>",
|
|
3664
3694
|
"<div className=\"flex flex-col gap-4\">\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>@</InputGroup.Addon>\n <InputGroup.Input placeholder=\"username\" aria-label=\"Username\" />\n </InputGroup>\n\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Input placeholder=\"email\" aria-label=\"Email\" />\n <InputGroup.Addon align=\"end\">@example.com</InputGroup.Addon>\n </InputGroup>\n\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>/api/</InputGroup.Addon>\n <InputGroup.Input placeholder=\"endpoint\" aria-label=\"API path\" />\n <InputGroup.Addon align=\"end\">.json</InputGroup.Addon>\n </InputGroup>\n </div>",
|
|
3665
|
-
"<div className=\"flex flex-col gap-4\">\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Input\n type={show ? \"text\" : \"password\"}\n defaultValue=\"password\"\n aria-label=\"Password\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={show ? EyeSlashIcon : EyeIcon}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n onClick={() => setShow(!show)}\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input\n value={searchValue}\n placeholder=\"Search\"\n aria-label=\"Search\"\n onChange={(e) => setSearchValue(e.target.value)}\n />\n {searchValue && (\n <InputGroup.Addon align=\"end\" className=\"pr-1\">\n <InputGroup.Button\n aria-label=\"Clear search\"\n onClick={() => setSearchValue(\"\")}\n
|
|
3666
|
-
"<InputGroup className=\"w-full max-w-2xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input\n placeholder=\"Search with query language...\"\n aria-label=\"Search\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n tooltip=\"Query language help\"\n onClick={() => {}}\n />\n </InputGroup.Addon>\n </InputGroup>",
|
|
3695
|
+
"<div className=\"flex flex-col gap-4\">\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Input\n type={show ? \"text\" : \"password\"}\n defaultValue=\"password\"\n aria-label=\"Password\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n shape=\"square\"\n className=\"text-kumo-subtle\"\n icon={show ? EyeSlashIcon : EyeIcon}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n onClick={() => setShow(!show)}\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input\n value={searchValue}\n placeholder=\"Search\"\n aria-label=\"Search\"\n onChange={(e) => setSearchValue(e.target.value)}\n />\n {searchValue && (\n <InputGroup.Addon align=\"end\" className=\"pr-1\">\n <InputGroup.Button\n shape=\"square\"\n icon={XIcon}\n aria-label=\"Clear search\"\n onClick={() => setSearchValue(\"\")}\n />\n </InputGroup.Addon>\n )}\n <InputGroup.Button variant=\"secondary\" onClick={() => {}}>\n Search\n </InputGroup.Button>\n </InputGroup>\n </div>",
|
|
3696
|
+
"<InputGroup className=\"w-full max-w-2xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input\n placeholder=\"Search with query language...\"\n aria-label=\"Search\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n shape=\"square\"\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n aria-label=\"Query language help\"\n tooltip=\"Query language help\"\n onClick={() => {}}\n />\n </InputGroup.Addon>\n </InputGroup>",
|
|
3667
3697
|
"<InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Search...\" aria-label=\"Search\" />\n <InputGroup.Addon align=\"end\">\n <kbd className=\"bg-none! border-none!\">⌘K</kbd>\n </InputGroup.Addon>\n </InputGroup>",
|
|
3668
3698
|
"<InputGroup className=\"w-full max-w-3xs\">\n <InputGroup.Input defaultValue=\"kumo\" aria-label=\"kumo\" />\n <InputGroup.Addon align=\"end\">\n <Loader />\n </InputGroup.Addon>\n </InputGroup>",
|
|
3669
3699
|
"<div className=\"flex w-full max-w-2xs flex-col gap-4\">\n <InputGroup label=\"Subdomain\">\n <InputGroup.Input\n aria-label=\"Subdomain\"\n defaultValue=\"kumo\"\n maxLength={20}\n />\n <InputGroup.Suffix>.workers.dev</InputGroup.Suffix>\n <InputGroup.Addon align=\"end\">\n <CheckCircleIcon weight=\"duotone\" className=\"text-kumo-success\" />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup\n label=\"Subdomain\"\n error={{ message: \"This subdomain is unavailable\", match: true }}\n >\n <InputGroup.Input\n aria-label=\"Subdomain\"\n defaultValue=\"kumo\"\n maxLength={20}\n />\n <InputGroup.Suffix>.workers.dev</InputGroup.Suffix>\n <InputGroup.Addon align=\"end\">\n <XCircleIcon weight=\"duotone\" className=\"text-kumo-danger\" />\n </InputGroup.Addon>\n </InputGroup>\n </div>",
|
|
3670
3700
|
"<div className=\"flex w-full max-w-3xs flex-col gap-4\">\n <InputGroup size=\"xs\" label=\"Extra Small\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Extra small input\" />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n shape=\"square\"\n aria-label=\"Help\"\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup size=\"sm\" label=\"Small\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Small input\" />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n shape=\"square\"\n aria-label=\"Help\"\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup label=\"Base (default)\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Base input\" />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n shape=\"square\"\n aria-label=\"Help\"\n />\n </InputGroup.Addon>\n </InputGroup>\n\n <InputGroup size=\"lg\" label=\"Large\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Large input\" />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={QuestionIcon}\n shape=\"square\"\n aria-label=\"Help\"\n />\n </InputGroup.Addon>\n </InputGroup>\n </div>",
|
|
3671
|
-
"<div className=\"flex w-full max-w-3xs flex-col gap-4\">\n <InputGroup\n label=\"Error State\"\n error={{ message: \"Please enter a valid email address\", match: true }}\n >\n <InputGroup.Input type=\"email\" defaultValue=\"invalid-email\" />\n <InputGroup.Addon align=\"end\">@example.com</InputGroup.Addon>\n </InputGroup>\n\n <InputGroup label=\"Disabled\" disabled>\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Search...\" />\n </InputGroup>\n\n <InputGroup label=\"Optional Field\" required={false}>\n <InputGroup.Addon>$</InputGroup.Addon>\n <InputGroup.Input placeholder=\"0.00\" />\n </InputGroup>\n\n <InputGroup\n label=\"With Description\"\n description=\"Must be at least 8 characters\"\n labelTooltip=\"Your password is stored securely\"\n >\n <InputGroup.Input\n type={show ? \"text\" : \"password\"}\n placeholder=\"Password\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n className=\"text-kumo-subtle\"\n icon={show ? EyeSlashIcon : EyeIcon}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n onClick={() => setShow(!show)}\n />\n </InputGroup.Addon>\n </InputGroup>\n </div>"
|
|
3701
|
+
"<div className=\"flex w-full max-w-3xs flex-col gap-4\">\n <InputGroup\n label=\"Error State\"\n error={{ message: \"Please enter a valid email address\", match: true }}\n >\n <InputGroup.Input type=\"email\" defaultValue=\"invalid-email\" />\n <InputGroup.Addon align=\"end\">@example.com</InputGroup.Addon>\n </InputGroup>\n\n <InputGroup label=\"Disabled\" disabled>\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Search...\" />\n </InputGroup>\n\n <InputGroup label=\"Optional Field\" required={false}>\n <InputGroup.Addon>$</InputGroup.Addon>\n <InputGroup.Input placeholder=\"0.00\" />\n </InputGroup>\n\n <InputGroup\n label=\"With Description\"\n description=\"Must be at least 8 characters\"\n labelTooltip=\"Your password is stored securely\"\n >\n <InputGroup.Input\n type={show ? \"text\" : \"password\"}\n placeholder=\"Password\"\n />\n <InputGroup.Addon align=\"end\">\n <InputGroup.Button\n shape=\"square\"\n className=\"text-kumo-subtle\"\n icon={show ? EyeSlashIcon : EyeIcon}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n onClick={() => setShow(!show)}\n />\n </InputGroup.Addon>\n </InputGroup>\n </div>"
|
|
3672
3702
|
],
|
|
3673
3703
|
"colors": [
|
|
3704
|
+
"border-kumo-focus",
|
|
3674
3705
|
"border-kumo-line",
|
|
3675
3706
|
"ring-kumo-danger",
|
|
3676
3707
|
"ring-kumo-focus",
|
|
@@ -4688,7 +4719,8 @@
|
|
|
4688
4719
|
"<Select\n label=\"Favorite Fruit\"\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v ?? \"apple\")}\n items={{ apple: \"Apple\", banana: \"Banana\", cherry: \"Cherry\" }}\n />",
|
|
4689
4720
|
"<div className=\"grid gap-4\">\n <div className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-kumo-subtle\">xs</span>\n <Select\n aria-label=\"Select size xs\"\n size=\"xs\"\n className=\"w-[200px]\"\n placeholder=\"Choose...\"\n items={{ a: \"Option A\", b: \"Option B\" }}\n />\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-kumo-subtle\">sm</span>\n <Select\n aria-label=\"Select size sm\"\n size=\"sm\"\n className=\"w-[200px]\"\n placeholder=\"Choose...\"\n items={{ a: \"Option A\", b: \"Option B\" }}\n />\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-kumo-subtle\">base</span>\n <Select\n aria-label=\"Select size base\"\n size=\"base\"\n className=\"w-[200px]\"\n placeholder=\"Choose...\"\n items={{ a: \"Option A\", b: \"Option B\" }}\n />\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-kumo-subtle\">lg</span>\n <Select\n aria-label=\"Select size lg\"\n size=\"lg\"\n className=\"w-[200px]\"\n placeholder=\"Choose...\"\n items={{ a: \"Option A\", b: \"Option B\" }}\n />\n </div>\n </div>",
|
|
4690
4721
|
"<Select\n aria-label=\"Select a fruit\"\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v ?? \"apple\")}\n items={{ apple: \"Apple\", banana: \"Banana\", cherry: \"Cherry\" }}\n />",
|
|
4691
|
-
"<Select\n label=\"Issue Type\"\n description=\"Choose the category that best describes your issue\"\n
|
|
4722
|
+
"<Select\n label=\"Issue Type\"\n description=\"Choose the category that best describes your issue\"\n className=\"w-[280px]\"\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n items={{\n bug: \"Bug\",\n documentation: \"Documentation\",\n feature: \"Feature\",\n }}\n />",
|
|
4723
|
+
"<Select\n label=\"Issue Type\"\n error=\"Please select an issue type\"\n className=\"w-[280px]\"\n value={null}\n items={{\n bug: \"Bug\",\n documentation: \"Documentation\",\n feature: \"Feature\",\n }}\n />",
|
|
4692
4724
|
"<Select\n label=\"Category\"\n placeholder=\"Choose a category...\"\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n items={{\n bug: \"Bug\",\n documentation: \"Documentation\",\n feature: \"Feature\",\n }}\n />",
|
|
4693
4725
|
"<Select\n label=\"Priority\"\n labelTooltip=\"Higher priority issues are addressed first\"\n placeholder=\"Select priority\"\n className=\"w-[200px]\"\n value={value}\n onValueChange={(v) => setValue(v as string | null)}\n items={{\n low: \"Low\",\n medium: \"Medium\",\n high: \"High\",\n critical: \"Critical\",\n }}\n />",
|
|
4694
4726
|
"<Select\n label=\"Language\"\n className=\"w-[200px]\"\n renderValue={(v) => (\n <span>\n {v.emoji} {v.label}\n </span>\n )}\n value={value}\n onValueChange={(v) => setValue(v as (typeof languages)[0])}\n >\n {languages.map((language) => (\n <Select.Option key={language.value} value={language}>\n {language.emoji} {language.label}\n </Select.Option>\n ))}\n </Select>",
|
|
@@ -4711,6 +4743,7 @@
|
|
|
4711
4743
|
"bg-kumo-tint",
|
|
4712
4744
|
"border-kumo-line",
|
|
4713
4745
|
"ring-kumo-brand",
|
|
4746
|
+
"ring-kumo-danger",
|
|
4714
4747
|
"ring-kumo-focus",
|
|
4715
4748
|
"ring-kumo-line",
|
|
4716
4749
|
"text-kumo-danger",
|
|
@@ -4922,7 +4955,7 @@
|
|
|
4922
4955
|
"Sidebar": {
|
|
4923
4956
|
"name": "Sidebar",
|
|
4924
4957
|
"type": "component",
|
|
4925
|
-
"description": "Sidebar — responsive navigation panel with expand/collapse support. Compound component: `Sidebar` (root `<aside>`), `.Provider`, `.Header`, `.Content`, `.Footer`, `.Group`, `.GroupLabel`, `.
|
|
4958
|
+
"description": "Sidebar — responsive navigation panel with expand/collapse support. Compound component: `Sidebar` (root `<aside>`), `.Provider`, `.Header`, `.Content`, `.Footer`, `.Group`, `.GroupLabel`, `.Menu`, `.MenuItem`, `.MenuButton`, `.MenuBadge`, `.MenuSub`, `.MenuSubItem`, `.MenuSubButton`, `.Separator`, `.Trigger`, `.Rail`, `.MenuChevron`, `.Collapsible`, `.CollapsibleTrigger`, `.CollapsibleContent`.",
|
|
4926
4959
|
"importPath": "@cloudflare/kumo",
|
|
4927
4960
|
"category": "Other",
|
|
4928
4961
|
"props": {
|
|
@@ -5001,6 +5034,21 @@
|
|
|
5001
5034
|
"optional": true,
|
|
5002
5035
|
"description": "Maximum width in pixels when resizing."
|
|
5003
5036
|
},
|
|
5037
|
+
"contained": {
|
|
5038
|
+
"type": "boolean",
|
|
5039
|
+
"optional": true,
|
|
5040
|
+
"description": "When true, the collapsed sidebar uses absolute positioning instead of fixed, keeping it scoped inside a bounded parent. Useful for demos and embedded sidebars."
|
|
5041
|
+
},
|
|
5042
|
+
"peekable": {
|
|
5043
|
+
"type": "boolean",
|
|
5044
|
+
"optional": true,
|
|
5045
|
+
"description": "When true, hovering or focusing the collapsed sidebar temporarily expands it. The `state` will be `\"peeking\"` during the peek. Moving away collapses it back."
|
|
5046
|
+
},
|
|
5047
|
+
"animationDuration": {
|
|
5048
|
+
"type": "number",
|
|
5049
|
+
"optional": true,
|
|
5050
|
+
"description": "Duration of sidebar expand/collapse animation in milliseconds."
|
|
5051
|
+
},
|
|
5004
5052
|
"children": {
|
|
5005
5053
|
"type": "ReactNode",
|
|
5006
5054
|
"optional": true,
|
|
@@ -5013,24 +5061,25 @@
|
|
|
5013
5061
|
}
|
|
5014
5062
|
},
|
|
5015
5063
|
"examples": [
|
|
5016
|
-
"<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
|
|
5017
|
-
"<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.
|
|
5018
|
-
"<DemoContainer>\n <Sidebar.Provider defaultOpen
|
|
5019
|
-
"<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <
|
|
5020
|
-
"<DemoContainer>\n <Sidebar.Provider
|
|
5021
|
-
"<DemoContainer>\n <Sidebar.Provider defaultOpen
|
|
5064
|
+
"<DemoContainer>\n <Sidebar.Provider contained 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.MenuSubItem>\n <Sidebar.Collapsible>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuSubButton>\n Workers & Pages\n <Sidebar.MenuChevron />\n </Sidebar.MenuSubButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubButton>\n Overview\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Workers\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Pages\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuSubItem>\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>",
|
|
5065
|
+
"<DemoContainer>\n <Sidebar.Provider contained 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>\n Click the button or the sidebar trigger to toggle\n </p>\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
|
|
5066
|
+
"<DemoContainer>\n <Sidebar.Provider contained\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.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>Drag the sidebar edge to resize</p>\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
|
|
5067
|
+
"<DemoContainer>\n <Sidebar.Provider contained 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>",
|
|
5068
|
+
"<DemoContainer>\n <Sidebar.Provider contained defaultOpen peekable 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 <PeekStateIndicator />\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
|
|
5069
|
+
"<DemoContainer>\n <Sidebar.Provider contained defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <button\n type=\"button\"\n onClick={() =>\n setSurface((s) => (s === \"account\" ? \"zone\" : \"account\"))\n }\n className=\"flex w-full cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium text-kumo-default hover:bg-kumo-tint transition-colors\"\n >\n <ArrowsLeftRightIcon className=\"size-4 shrink-0 text-kumo-brand\" />\n <span className=\"flex-1 text-left font-semibold text-kumo-strong\">\n {surface === \"account\" ? \"Account Nav\" : \"Zone Nav\"}\n </span>\n </button>\n </Sidebar.Header>\n\n <Sidebar.SlidingViews\n activeKey={surface}\n direction={surface === \"zone\" ? \"left\" : \"right\"}\n >\n <Sidebar.SlidingView value=\"account\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Account</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={UserIcon}>\n Members\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GearIcon}>\n Settings\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.SlidingView>\n\n <Sidebar.SlidingView value=\"zone\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Zone</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={GlobeIcon} active>\n Overview\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n SSL/TLS\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Caching\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.SlidingView>\n </Sidebar.SlidingViews>\n </Sidebar>\n <DemoMain>\n <div className=\"flex flex-col items-center gap-2\">\n <p className=\"font-medium text-kumo-default\">\n Active: {surface === \"account\" ? \"Account\" : \"Zone\"} surface\n </p>\n <p>\n Click the header button to slide between views\n </p>\n </div>\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
|
|
5070
|
+
"<DemoContainer>\n <Sidebar.Provider contained defaultOpen peekable className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <AccountSwitcher />\n </Sidebar.Header>\n <Sidebar.SlidingViews\n activeKey={surface}\n direction={surface === \"domain\" ? \"left\" : \"right\"}\n >\n <Sidebar.SlidingView value=\"account\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton\n icon={MagnifyingGlassIcon}\n tooltip=\"Search\"\n className=\"ring ring-kumo-line group-data-[state=collapsed]/sidebar:ring-transparent\"\n >\n Quick search…\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n <Sidebar.Group>\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\n icon={GlobeIcon}\n onClick={() => setSurface(\"domain\")}\n >\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.MenuSubItem>\n <Sidebar.Collapsible>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuSubButton>\n Workers & Pages\n <Sidebar.MenuChevron />\n </Sidebar.MenuSubButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubButton>\n Overview\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Workers\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Pages\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuSubItem>\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 </Sidebar.SlidingView>\n\n <Sidebar.SlidingView value=\"domain\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton\n icon={ArrowLeftIcon}\n onClick={() => setSurface(\"account\")}\n >\n Back\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n <Sidebar.Group>\n <Sidebar.GroupLabel>example.com</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={GlobeIcon} active>\n Overview\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n SSL/TLS\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Caching\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.SlidingView>\n </Sidebar.SlidingViews>\n\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain />\n </Sidebar.Provider>\n </DemoContainer>"
|
|
5022
5071
|
],
|
|
5023
5072
|
"colors": [
|
|
5024
5073
|
"bg-kumo-base",
|
|
5025
5074
|
"bg-kumo-brand",
|
|
5026
5075
|
"bg-kumo-hairline",
|
|
5027
|
-
"bg-kumo-
|
|
5076
|
+
"bg-kumo-line",
|
|
5028
5077
|
"bg-kumo-recessed",
|
|
5029
5078
|
"bg-kumo-tint",
|
|
5030
|
-
"border-kumo-
|
|
5079
|
+
"border-kumo-line",
|
|
5031
5080
|
"ring-kumo-brand",
|
|
5032
|
-
"ring-kumo-hairline",
|
|
5033
5081
|
"text-kumo-default",
|
|
5082
|
+
"text-kumo-strong",
|
|
5034
5083
|
"text-kumo-subtle"
|
|
5035
5084
|
],
|
|
5036
5085
|
"subComponents": {
|
|
@@ -5074,6 +5123,18 @@
|
|
|
5074
5123
|
"type": "number",
|
|
5075
5124
|
"optional": true
|
|
5076
5125
|
},
|
|
5126
|
+
"contained": {
|
|
5127
|
+
"type": "boolean",
|
|
5128
|
+
"optional": true
|
|
5129
|
+
},
|
|
5130
|
+
"peekable": {
|
|
5131
|
+
"type": "boolean",
|
|
5132
|
+
"optional": true
|
|
5133
|
+
},
|
|
5134
|
+
"animationDuration": {
|
|
5135
|
+
"type": "number",
|
|
5136
|
+
"optional": true
|
|
5137
|
+
},
|
|
5077
5138
|
"children": {
|
|
5078
5139
|
"type": "ReactNode",
|
|
5079
5140
|
"required": true
|
|
@@ -5088,16 +5149,8 @@
|
|
|
5088
5149
|
"name": "Header",
|
|
5089
5150
|
"description": "Header sub-component",
|
|
5090
5151
|
"props": {
|
|
5091
|
-
"
|
|
5092
|
-
"type": "
|
|
5093
|
-
"optional": true
|
|
5094
|
-
},
|
|
5095
|
-
"defaultOpen": {
|
|
5096
|
-
"type": "boolean",
|
|
5097
|
-
"optional": true
|
|
5098
|
-
},
|
|
5099
|
-
"open": {
|
|
5100
|
-
"type": "boolean",
|
|
5152
|
+
"icon": {
|
|
5153
|
+
"type": "React.ComponentType<{ className?: string",
|
|
5101
5154
|
"optional": true
|
|
5102
5155
|
}
|
|
5103
5156
|
}
|
|
@@ -5106,16 +5159,8 @@
|
|
|
5106
5159
|
"name": "Content",
|
|
5107
5160
|
"description": "Content sub-component",
|
|
5108
5161
|
"props": {
|
|
5109
|
-
"
|
|
5110
|
-
"type": "
|
|
5111
|
-
"optional": true
|
|
5112
|
-
},
|
|
5113
|
-
"defaultOpen": {
|
|
5114
|
-
"type": "boolean",
|
|
5115
|
-
"optional": true
|
|
5116
|
-
},
|
|
5117
|
-
"open": {
|
|
5118
|
-
"type": "boolean",
|
|
5162
|
+
"icon": {
|
|
5163
|
+
"type": "React.ComponentType<{ className?: string",
|
|
5119
5164
|
"optional": true
|
|
5120
5165
|
}
|
|
5121
5166
|
}
|
|
@@ -5124,16 +5169,8 @@
|
|
|
5124
5169
|
"name": "Footer",
|
|
5125
5170
|
"description": "Footer sub-component",
|
|
5126
5171
|
"props": {
|
|
5127
|
-
"
|
|
5128
|
-
"type": "
|
|
5129
|
-
"optional": true
|
|
5130
|
-
},
|
|
5131
|
-
"defaultOpen": {
|
|
5132
|
-
"type": "boolean",
|
|
5133
|
-
"optional": true
|
|
5134
|
-
},
|
|
5135
|
-
"open": {
|
|
5136
|
-
"type": "boolean",
|
|
5172
|
+
"icon": {
|
|
5173
|
+
"type": "React.ComponentType<{ className?: string",
|
|
5137
5174
|
"optional": true
|
|
5138
5175
|
}
|
|
5139
5176
|
}
|
|
@@ -5142,16 +5179,8 @@
|
|
|
5142
5179
|
"name": "Group",
|
|
5143
5180
|
"description": "Group sub-component",
|
|
5144
5181
|
"props": {
|
|
5145
|
-
"
|
|
5146
|
-
"type": "
|
|
5147
|
-
"optional": true
|
|
5148
|
-
},
|
|
5149
|
-
"defaultOpen": {
|
|
5150
|
-
"type": "boolean",
|
|
5151
|
-
"optional": true
|
|
5152
|
-
},
|
|
5153
|
-
"open": {
|
|
5154
|
-
"type": "boolean",
|
|
5182
|
+
"icon": {
|
|
5183
|
+
"type": "React.ComponentType<{ className?: string",
|
|
5155
5184
|
"optional": true
|
|
5156
5185
|
}
|
|
5157
5186
|
}
|
|
@@ -5166,16 +5195,6 @@
|
|
|
5166
5195
|
}
|
|
5167
5196
|
}
|
|
5168
5197
|
},
|
|
5169
|
-
"GroupContent": {
|
|
5170
|
-
"name": "GroupContent",
|
|
5171
|
-
"description": "GroupContent sub-component",
|
|
5172
|
-
"props": {
|
|
5173
|
-
"icon": {
|
|
5174
|
-
"type": "React.ComponentType<{ className?: string",
|
|
5175
|
-
"optional": true
|
|
5176
|
-
}
|
|
5177
|
-
}
|
|
5178
|
-
},
|
|
5179
5198
|
"Menu": {
|
|
5180
5199
|
"name": "Menu",
|
|
5181
5200
|
"description": "Menu sub-component",
|
|
@@ -5206,20 +5225,6 @@
|
|
|
5206
5225
|
}
|
|
5207
5226
|
}
|
|
5208
5227
|
},
|
|
5209
|
-
"MenuAction": {
|
|
5210
|
-
"name": "MenuAction",
|
|
5211
|
-
"description": "MenuAction sub-component",
|
|
5212
|
-
"props": {
|
|
5213
|
-
"active": {
|
|
5214
|
-
"type": "boolean",
|
|
5215
|
-
"optional": true
|
|
5216
|
-
},
|
|
5217
|
-
"href": {
|
|
5218
|
-
"type": "string",
|
|
5219
|
-
"optional": true
|
|
5220
|
-
}
|
|
5221
|
-
}
|
|
5222
|
-
},
|
|
5223
5228
|
"MenuBadge": {
|
|
5224
5229
|
"name": "MenuBadge",
|
|
5225
5230
|
"description": "MenuBadge sub-component",
|
|
@@ -5280,44 +5285,57 @@
|
|
|
5280
5285
|
"name": "Separator",
|
|
5281
5286
|
"description": "Separator sub-component",
|
|
5282
5287
|
"props": {
|
|
5283
|
-
"
|
|
5284
|
-
"type": "
|
|
5288
|
+
"defaultOpen": {
|
|
5289
|
+
"type": "boolean",
|
|
5285
5290
|
"optional": true
|
|
5286
5291
|
},
|
|
5287
|
-
"
|
|
5288
|
-
"type": "
|
|
5292
|
+
"open": {
|
|
5293
|
+
"type": "boolean",
|
|
5289
5294
|
"optional": true
|
|
5290
5295
|
}
|
|
5291
5296
|
}
|
|
5292
5297
|
},
|
|
5293
|
-
"
|
|
5294
|
-
"name": "
|
|
5295
|
-
"description": "
|
|
5298
|
+
"Trigger": {
|
|
5299
|
+
"name": "Trigger",
|
|
5300
|
+
"description": "Trigger sub-component",
|
|
5296
5301
|
"props": {
|
|
5297
|
-
"
|
|
5298
|
-
"type": "
|
|
5302
|
+
"defaultOpen": {
|
|
5303
|
+
"type": "boolean",
|
|
5299
5304
|
"optional": true
|
|
5300
5305
|
},
|
|
5301
|
-
"
|
|
5302
|
-
"type": "
|
|
5306
|
+
"open": {
|
|
5307
|
+
"type": "boolean",
|
|
5303
5308
|
"optional": true
|
|
5304
5309
|
}
|
|
5305
5310
|
}
|
|
5306
5311
|
},
|
|
5307
|
-
"Trigger": {
|
|
5308
|
-
"name": "Trigger",
|
|
5309
|
-
"description": "Trigger sub-component",
|
|
5310
|
-
"props": {}
|
|
5311
|
-
},
|
|
5312
5312
|
"Rail": {
|
|
5313
5313
|
"name": "Rail",
|
|
5314
5314
|
"description": "Rail sub-component",
|
|
5315
|
-
"props": {
|
|
5315
|
+
"props": {
|
|
5316
|
+
"defaultOpen": {
|
|
5317
|
+
"type": "boolean",
|
|
5318
|
+
"optional": true
|
|
5319
|
+
},
|
|
5320
|
+
"open": {
|
|
5321
|
+
"type": "boolean",
|
|
5322
|
+
"optional": true
|
|
5323
|
+
}
|
|
5324
|
+
}
|
|
5316
5325
|
},
|
|
5317
5326
|
"ResizeHandle": {
|
|
5318
5327
|
"name": "ResizeHandle",
|
|
5319
5328
|
"description": "ResizeHandle sub-component",
|
|
5320
|
-
"props": {
|
|
5329
|
+
"props": {
|
|
5330
|
+
"defaultOpen": {
|
|
5331
|
+
"type": "boolean",
|
|
5332
|
+
"optional": true
|
|
5333
|
+
},
|
|
5334
|
+
"open": {
|
|
5335
|
+
"type": "boolean",
|
|
5336
|
+
"optional": true
|
|
5337
|
+
}
|
|
5338
|
+
}
|
|
5321
5339
|
},
|
|
5322
5340
|
"MenuChevron": {
|
|
5323
5341
|
"name": "MenuChevron",
|
|
@@ -5332,23 +5350,70 @@
|
|
|
5332
5350
|
"Collapsible": {
|
|
5333
5351
|
"name": "Collapsible",
|
|
5334
5352
|
"description": "Collapsible sub-component",
|
|
5335
|
-
"props": {
|
|
5353
|
+
"props": {
|
|
5354
|
+
"defaultOpen": {
|
|
5355
|
+
"type": "boolean",
|
|
5356
|
+
"optional": true
|
|
5357
|
+
},
|
|
5358
|
+
"open": {
|
|
5359
|
+
"type": "boolean",
|
|
5360
|
+
"optional": true
|
|
5361
|
+
}
|
|
5362
|
+
}
|
|
5336
5363
|
},
|
|
5337
5364
|
"CollapsibleTrigger": {
|
|
5338
5365
|
"name": "CollapsibleTrigger",
|
|
5339
5366
|
"description": "CollapsibleTrigger sub-component",
|
|
5340
|
-
"props": {
|
|
5367
|
+
"props": {
|
|
5368
|
+
"render": {
|
|
5369
|
+
"type": "React.ReactElement",
|
|
5370
|
+
"required": true
|
|
5371
|
+
}
|
|
5372
|
+
}
|
|
5341
5373
|
},
|
|
5342
5374
|
"CollapsibleContent": {
|
|
5343
5375
|
"name": "CollapsibleContent",
|
|
5344
5376
|
"description": "CollapsibleContent sub-component",
|
|
5345
|
-
"props": {
|
|
5377
|
+
"props": {
|
|
5378
|
+
"activeKey": {
|
|
5379
|
+
"type": "string",
|
|
5380
|
+
"required": true
|
|
5381
|
+
},
|
|
5382
|
+
"direction": {
|
|
5383
|
+
"type": "\"left\" | \"right\"",
|
|
5384
|
+
"optional": true
|
|
5385
|
+
}
|
|
5386
|
+
}
|
|
5387
|
+
},
|
|
5388
|
+
"SlidingViews": {
|
|
5389
|
+
"name": "SlidingViews",
|
|
5390
|
+
"description": "SlidingViews sub-component",
|
|
5391
|
+
"props": {
|
|
5392
|
+
"activeKey": {
|
|
5393
|
+
"type": "string",
|
|
5394
|
+
"required": true
|
|
5395
|
+
},
|
|
5396
|
+
"direction": {
|
|
5397
|
+
"type": "\"left\" | \"right\"",
|
|
5398
|
+
"optional": true
|
|
5399
|
+
}
|
|
5400
|
+
}
|
|
5401
|
+
},
|
|
5402
|
+
"SlidingView": {
|
|
5403
|
+
"name": "SlidingView",
|
|
5404
|
+
"description": "SlidingView sub-component",
|
|
5405
|
+
"props": {
|
|
5406
|
+
"value": {
|
|
5407
|
+
"type": "string",
|
|
5408
|
+
"required": true
|
|
5409
|
+
}
|
|
5410
|
+
}
|
|
5346
5411
|
}
|
|
5347
5412
|
},
|
|
5348
5413
|
"styling": {
|
|
5349
5414
|
"width": {
|
|
5350
|
-
"expanded": "
|
|
5351
|
-
"icon": "
|
|
5415
|
+
"expanded": "16.25rem",
|
|
5416
|
+
"icon": "57px"
|
|
5352
5417
|
},
|
|
5353
5418
|
"mobile": {
|
|
5354
5419
|
"breakpoint": 768
|
|
@@ -6124,11 +6189,11 @@
|
|
|
6124
6189
|
"bg-kumo-base",
|
|
6125
6190
|
"bg-kumo-contrast",
|
|
6126
6191
|
"bg-kumo-control",
|
|
6127
|
-
"bg-kumo-danger",
|
|
6192
|
+
"bg-kumo-danger-tint",
|
|
6128
6193
|
"bg-kumo-fill-hover",
|
|
6129
|
-
"bg-kumo-info",
|
|
6130
|
-
"bg-kumo-success",
|
|
6131
|
-
"bg-kumo-warning",
|
|
6194
|
+
"bg-kumo-info-tint",
|
|
6195
|
+
"bg-kumo-success-tint",
|
|
6196
|
+
"bg-kumo-warning-tint",
|
|
6132
6197
|
"border-kumo-fill",
|
|
6133
6198
|
"ring-kumo-danger",
|
|
6134
6199
|
"ring-kumo-hairline",
|
|
@@ -6216,6 +6281,7 @@
|
|
|
6216
6281
|
"<TooltipProvider>\n <Tooltip\n content=\"Add\"\n render={<Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />}\n />\n </TooltipProvider>",
|
|
6217
6282
|
"<TooltipProvider>\n <div className=\"flex gap-2\">\n <Tooltip\n content=\"Add\"\n render={<Button shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />}\n />\n <Tooltip\n content=\"Change language\"\n render={\n <Button\n shape=\"square\"\n icon={TranslateIcon}\n aria-label=\"Change language\"\n />\n }\n />\n </div>\n </TooltipProvider>",
|
|
6218
6283
|
"<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>",
|
|
6284
|
+
"<TooltipProvider>\n <div className=\"flex w-full justify-between\">\n <Tooltip\n content={longContent}\n side=\"bottom\"\n render={<Button variant=\"secondary\" />}\n >\n Near left edge\n </Tooltip>\n <Tooltip\n content={longContent}\n side=\"bottom\"\n render={<Button variant=\"secondary\" />}\n >\n Centered\n </Tooltip>\n <Tooltip\n content={longContent}\n side=\"bottom\"\n render={<Button variant=\"secondary\" />}\n >\n Near right edge\n </Tooltip>\n </div>\n </TooltipProvider>",
|
|
6219
6285
|
"<TooltipProvider>\n <div className=\"flex gap-4\">\n <Tooltip\n content=\"Opens after 1 second\"\n delay={1000}\n render={<Button variant=\"secondary\" />}\n >\n 1s open delay\n </Tooltip>\n <Tooltip\n content=\"Stays open 500ms after leaving\"\n closeDelay={500}\n render={<Button variant=\"secondary\" />}\n >\n 500ms close delay\n </Tooltip>\n <Tooltip\n content=\"Instant open, stays 1s\"\n delay={0}\n closeDelay={1000}\n render={<Button variant=\"secondary\" />}\n >\n Instant + 1s close\n </Tooltip>\n </div>\n </TooltipProvider>"
|
|
6220
6286
|
],
|
|
6221
6287
|
"colors": [
|