@cloudflare/kumo 2.5.2 → 2.6.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.
Files changed (193) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/ai/component-registry.json +166 -119
  3. package/ai/component-registry.md +168 -50
  4. package/ai/schemas.ts +23 -12
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +75 -48
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/ai/schemas.js +207 -197
  9. package/dist/ai/schemas.js.map +1 -1
  10. package/dist/chunks/SankeyChart-g1tng405ml2e0qg2.js +890 -0
  11. package/dist/chunks/SankeyChart-g1tng405ml2e0qg2.js.map +1 -0
  12. package/dist/chunks/{autocomplete-d52negr21cedr4rm.js → autocomplete-hgprlcuf0ixbbo6d.js} +18 -18
  13. package/dist/chunks/{autocomplete-d52negr21cedr4rm.js.map → autocomplete-hgprlcuf0ixbbo6d.js.map} +1 -1
  14. package/dist/chunks/{breadcrumbs-bfuf7g8hh36rg7h8.js → breadcrumbs-lyj8ljudrm2owx5y.js} +2 -2
  15. package/dist/chunks/{breadcrumbs-bfuf7g8hh36rg7h8.js.map → breadcrumbs-lyj8ljudrm2owx5y.js.map} +1 -1
  16. package/dist/chunks/button-gtdhvogt5rlrf1is.js +237 -0
  17. package/dist/chunks/button-gtdhvogt5rlrf1is.js.map +1 -0
  18. package/dist/chunks/{checkbox-bt4nfv1i2142kykg.js → checkbox-byg8t8r9vbmif696.js} +3 -3
  19. package/dist/chunks/{checkbox-bt4nfv1i2142kykg.js.map → checkbox-byg8t8r9vbmif696.js.map} +1 -1
  20. package/dist/chunks/{clipboard-text-h3oi6wm5vj2q7q4h.js → clipboard-text-lf909phvldd8rfk8.js} +4 -4
  21. package/dist/chunks/{clipboard-text-h3oi6wm5vj2q7q4h.js.map → clipboard-text-lf909phvldd8rfk8.js.map} +1 -1
  22. package/dist/chunks/{collapsible-nzqcf9zwnjkxqzr6.js → collapsible-dl61f8gd4j897hmv.js} +4 -4
  23. package/dist/chunks/{collapsible-nzqcf9zwnjkxqzr6.js.map → collapsible-dl61f8gd4j897hmv.js.map} +1 -1
  24. package/dist/chunks/{combobox-l6qcou2s3xmsbplp.js → combobox-dxff22zxzq846nec.js} +4 -4
  25. package/dist/chunks/{combobox-l6qcou2s3xmsbplp.js.map → combobox-dxff22zxzq846nec.js.map} +1 -1
  26. package/dist/chunks/{command-palette-fqhyacp33fhyf696.js → command-palette-i4r0402b838wiy0j.js} +21 -21
  27. package/dist/chunks/{command-palette-fqhyacp33fhyf696.js.map → command-palette-i4r0402b838wiy0j.js.map} +1 -1
  28. package/dist/chunks/{dialog-3mpu1i1wssrsz8i6.js → dialog-g1b8161nbyixdit0.js} +7 -7
  29. package/dist/chunks/{dialog-3mpu1i1wssrsz8i6.js.map → dialog-g1b8161nbyixdit0.js.map} +1 -1
  30. package/dist/chunks/{dropdown-g4sb4cw9ffqaw5gx.js → dropdown-irp18txvgz8590e9.js} +27 -27
  31. package/dist/chunks/{dropdown-g4sb4cw9ffqaw5gx.js.map → dropdown-irp18txvgz8590e9.js.map} +1 -1
  32. package/dist/chunks/{empty-frsjvok4w6i0fyex.js → empty-daa6d7u9oleaw24a.js} +2 -2
  33. package/dist/chunks/{empty-frsjvok4w6i0fyex.js.map → empty-daa6d7u9oleaw24a.js.map} +1 -1
  34. package/dist/chunks/{field-m57qcw5b1zt1ohfz.js → field-f1hy08um3jf9jos6.js} +3 -3
  35. package/dist/chunks/{field-m57qcw5b1zt1ohfz.js.map → field-f1hy08um3jf9jos6.js.map} +1 -1
  36. package/dist/chunks/{input-area-o2avpahffav0gydf.js → input-area-bwyujceeulpfkpxv.js} +4 -4
  37. package/dist/chunks/{input-area-o2avpahffav0gydf.js.map → input-area-bwyujceeulpfkpxv.js.map} +1 -1
  38. package/dist/chunks/{input-iahz0dpc9xdar2ju.js → input-f2ct7obgdzypjmp2.js} +3 -3
  39. package/dist/chunks/{input-iahz0dpc9xdar2ju.js.map → input-f2ct7obgdzypjmp2.js.map} +1 -1
  40. package/dist/chunks/{input-group-os810pmsqcftt6mq.js → input-group-kcd3jin5pbdijmw8.js} +5 -5
  41. package/dist/chunks/{input-group-os810pmsqcftt6mq.js.map → input-group-kcd3jin5pbdijmw8.js.map} +1 -1
  42. package/dist/chunks/{label-kib2hn4pkbn28c31.js → label-himqjkdhh0hgfdsa.js} +3 -3
  43. package/dist/chunks/{label-kib2hn4pkbn28c31.js.map → label-himqjkdhh0hgfdsa.js.map} +1 -1
  44. package/dist/chunks/{layer-card-er4flkcxmzfug8jw.js → layer-card-cshi5vydqg3phyfx.js} +2 -2
  45. package/dist/chunks/{layer-card-er4flkcxmzfug8jw.js.map → layer-card-cshi5vydqg3phyfx.js.map} +1 -1
  46. package/dist/chunks/{link-i6vnwyjcwvjz5btm.js → link-bw21ofmgg58igq5n.js} +4 -4
  47. package/dist/chunks/{link-i6vnwyjcwvjz5btm.js.map → link-bw21ofmgg58igq5n.js.map} +1 -1
  48. package/dist/chunks/{menubar-ng5if56amh1tto4j.js → menubar-m12wcbbucuszspw4.js} +2 -2
  49. package/dist/chunks/{menubar-ng5if56amh1tto4j.js.map → menubar-m12wcbbucuszspw4.js.map} +1 -1
  50. package/dist/chunks/{meter-d5igshkjqttl1fdj.js → meter-dn8vgc0smpk0du75.js} +4 -4
  51. package/dist/chunks/{meter-d5igshkjqttl1fdj.js.map → meter-dn8vgc0smpk0du75.js.map} +1 -1
  52. package/dist/chunks/{pagination-mvvg7qfvoqr5l4vt.js → pagination-oafyxvdndm9m8250.js} +3 -3
  53. package/dist/chunks/{pagination-mvvg7qfvoqr5l4vt.js.map → pagination-oafyxvdndm9m8250.js.map} +1 -1
  54. package/dist/chunks/{popover-ozf1j7oi7pxiudyz.js → popover-bbxr39l1lx175hum.js} +18 -18
  55. package/dist/chunks/{popover-ozf1j7oi7pxiudyz.js.map → popover-bbxr39l1lx175hum.js.map} +1 -1
  56. package/dist/chunks/radio-ffx05ih9nc764evh.js +226 -0
  57. package/dist/chunks/radio-ffx05ih9nc764evh.js.map +1 -0
  58. package/dist/chunks/{select-c79vjqmcytn2oujb.js → select-kl1skfh3pmwc33rp.js} +6 -6
  59. package/dist/chunks/{select-c79vjqmcytn2oujb.js.map → select-kl1skfh3pmwc33rp.js.map} +1 -1
  60. package/dist/chunks/{sensitive-input-mxbd0ayw2mbju4ii.js → sensitive-input-izmbyk1t7r56ciiq.js} +4 -4
  61. package/dist/chunks/{sensitive-input-mxbd0ayw2mbju4ii.js.map → sensitive-input-izmbyk1t7r56ciiq.js.map} +1 -1
  62. package/dist/chunks/{sidebar-dqw2uxx6xqln639l.js → sidebar-ior8rnhsd7gy5am5.js} +48 -48
  63. package/dist/chunks/sidebar-ior8rnhsd7gy5am5.js.map +1 -0
  64. package/dist/chunks/{surface-iyejjbqogjbo7ise.js → surface-g5a1buofz4erjov2.js} +2 -2
  65. package/dist/chunks/{surface-iyejjbqogjbo7ise.js.map → surface-g5a1buofz4erjov2.js.map} +1 -1
  66. package/dist/chunks/{switch-dld1q6qdzhe1uip7.js → switch-kh8a6l3l0hszm9h4.js} +3 -3
  67. package/dist/chunks/{switch-dld1q6qdzhe1uip7.js.map → switch-kh8a6l3l0hszm9h4.js.map} +1 -1
  68. package/dist/chunks/{table-l64wm81r9t67mtzm.js → table-dz2k55oab66h2vi9.js} +2 -2
  69. package/dist/chunks/{table-l64wm81r9t67mtzm.js.map → table-dz2k55oab66h2vi9.js.map} +1 -1
  70. package/dist/chunks/{tabs-ho9t1gkq22jb855l.js → tabs-kcw98wibdz4mhpkc.js} +2 -2
  71. package/dist/chunks/{tabs-ho9t1gkq22jb855l.js.map → tabs-kcw98wibdz4mhpkc.js.map} +1 -1
  72. package/dist/chunks/{toast-gewrapiiy5x9ak0o.js → toast-dkdo1lu72tnefya6.js} +7 -7
  73. package/dist/chunks/{toast-gewrapiiy5x9ak0o.js.map → toast-dkdo1lu72tnefya6.js.map} +1 -1
  74. package/dist/chunks/toolbar-o7xe6pd189evdd53.js +172 -0
  75. package/dist/chunks/toolbar-o7xe6pd189evdd53.js.map +1 -0
  76. package/dist/chunks/{tooltip-ken77ixya0qpidie.js → tooltip-eqnhjdbvwapy8gj4.js} +4 -4
  77. package/dist/chunks/{tooltip-ken77ixya0qpidie.js.map → tooltip-eqnhjdbvwapy8gj4.js.map} +1 -1
  78. package/dist/chunks/{vendor-base-ui-knphx7dts1vm1x37.js → vendor-base-ui-f9z44m829vvptrg0.js} +2209 -2207
  79. package/dist/chunks/{vendor-base-ui-knphx7dts1vm1x37.js.map → vendor-base-ui-f9z44m829vvptrg0.js.map} +1 -1
  80. package/dist/code.js +1 -1
  81. package/dist/components/autocomplete.js +1 -1
  82. package/dist/components/breadcrumbs.js +1 -1
  83. package/dist/components/button.js +1 -1
  84. package/dist/components/chart.js +1 -1
  85. package/dist/components/checkbox.js +1 -1
  86. package/dist/components/clipboard-text.js +1 -1
  87. package/dist/components/collapsible.js +1 -1
  88. package/dist/components/combobox.js +1 -1
  89. package/dist/components/command-palette.js +1 -1
  90. package/dist/components/dialog.js +1 -1
  91. package/dist/components/dropdown.js +1 -1
  92. package/dist/components/empty.js +1 -1
  93. package/dist/components/field.js +1 -1
  94. package/dist/components/input-group.js +1 -1
  95. package/dist/components/input.js +3 -3
  96. package/dist/components/label.js +1 -1
  97. package/dist/components/layer-card.js +1 -1
  98. package/dist/components/link.js +1 -1
  99. package/dist/components/menubar.js +1 -1
  100. package/dist/components/meter.js +1 -1
  101. package/dist/components/pagination.js +1 -1
  102. package/dist/components/popover.js +1 -1
  103. package/dist/components/radio.js +1 -1
  104. package/dist/components/select.js +1 -1
  105. package/dist/components/sensitive-input.js +1 -1
  106. package/dist/components/sidebar.js +1 -1
  107. package/dist/components/surface.js +1 -1
  108. package/dist/components/switch.js +1 -1
  109. package/dist/components/table.js +1 -1
  110. package/dist/components/tabs.js +1 -1
  111. package/dist/components/toast.js +2 -2
  112. package/dist/components/toolbar.js +8 -0
  113. package/dist/components/toolbar.js.map +1 -0
  114. package/dist/components/tooltip.js +1 -1
  115. package/dist/index.js +199 -195
  116. package/dist/index.js.map +1 -1
  117. package/dist/primitives/accordion.js +1 -1
  118. package/dist/primitives/alert-dialog.js +1 -1
  119. package/dist/primitives/autocomplete.js +1 -1
  120. package/dist/primitives/avatar.js +1 -1
  121. package/dist/primitives/button.js +1 -1
  122. package/dist/primitives/checkbox-group.js +1 -1
  123. package/dist/primitives/checkbox.js +1 -1
  124. package/dist/primitives/collapsible.js +1 -1
  125. package/dist/primitives/combobox.js +1 -1
  126. package/dist/primitives/context-menu.js +1 -1
  127. package/dist/primitives/csp-provider.js +1 -1
  128. package/dist/primitives/dialog.js +1 -1
  129. package/dist/primitives/direction-provider.js +1 -1
  130. package/dist/primitives/drawer.js +1 -1
  131. package/dist/primitives/field.js +1 -1
  132. package/dist/primitives/fieldset.js +1 -1
  133. package/dist/primitives/form.js +1 -1
  134. package/dist/primitives/input.js +1 -1
  135. package/dist/primitives/menu.js +1 -1
  136. package/dist/primitives/menubar.js +1 -1
  137. package/dist/primitives/meter.js +1 -1
  138. package/dist/primitives/navigation-menu.js +1 -1
  139. package/dist/primitives/number-field.js +1 -1
  140. package/dist/primitives/otp-field.js +1 -1
  141. package/dist/primitives/popover.js +1 -1
  142. package/dist/primitives/preview-card.js +1 -1
  143. package/dist/primitives/progress.js +1 -1
  144. package/dist/primitives/radio-group.js +1 -1
  145. package/dist/primitives/radio.js +1 -1
  146. package/dist/primitives/scroll-area.js +1 -1
  147. package/dist/primitives/select.js +1 -1
  148. package/dist/primitives/separator.js +1 -1
  149. package/dist/primitives/slider.js +1 -1
  150. package/dist/primitives/switch.js +1 -1
  151. package/dist/primitives/tabs.js +1 -1
  152. package/dist/primitives/toast.js +1 -1
  153. package/dist/primitives/toggle-group.js +1 -1
  154. package/dist/primitives/toggle.js +1 -1
  155. package/dist/primitives/toolbar.js +1 -1
  156. package/dist/primitives/tooltip.js +1 -1
  157. package/dist/primitives.js +1 -1
  158. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  159. package/dist/scripts/theme-generator/config.js +13 -2
  160. package/dist/scripts/theme-generator/config.js.map +1 -1
  161. package/dist/src/components/button/button.d.ts +2 -2
  162. package/dist/src/components/button/button.d.ts.map +1 -1
  163. package/dist/src/components/chart/EChart.d.ts +12 -4
  164. package/dist/src/components/chart/EChart.d.ts.map +1 -1
  165. package/dist/src/components/chart/Legend.d.ts +11 -2
  166. package/dist/src/components/chart/Legend.d.ts.map +1 -1
  167. package/dist/src/components/chart/TimeseriesChart.d.ts +15 -1
  168. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
  169. package/dist/src/components/radio/index.d.ts +1 -1
  170. package/dist/src/components/radio/index.d.ts.map +1 -1
  171. package/dist/src/components/radio/radio.d.ts +49 -10
  172. package/dist/src/components/radio/radio.d.ts.map +1 -1
  173. package/dist/src/components/radio/radio.type-spec.d.ts +12 -0
  174. package/dist/src/components/radio/radio.type-spec.d.ts.map +1 -0
  175. package/dist/src/components/toolbar/index.d.ts +2 -0
  176. package/dist/src/components/toolbar/index.d.ts.map +1 -0
  177. package/dist/src/components/toolbar/toolbar.d.ts +50 -0
  178. package/dist/src/components/toolbar/toolbar.d.ts.map +1 -0
  179. package/dist/src/index.d.ts +2 -1
  180. package/dist/src/index.d.ts.map +1 -1
  181. package/dist/styles/kumo-standalone.css +1 -1
  182. package/dist/styles/theme-kumo.css +11 -4
  183. package/package.json +5 -1
  184. package/scripts/component-registry/discovery.ts +16 -11
  185. package/scripts/component-registry/metadata.ts +30 -0
  186. package/scripts/theme-generator/config.ts +14 -2
  187. package/dist/chunks/SankeyChart-i1m7zv0lys3j0iq6.js +0 -775
  188. package/dist/chunks/SankeyChart-i1m7zv0lys3j0iq6.js.map +0 -1
  189. package/dist/chunks/button-ov39dxshqbqrthhd.js +0 -210
  190. package/dist/chunks/button-ov39dxshqbqrthhd.js.map +0 -1
  191. package/dist/chunks/radio-gpg6kmzonr2cayq1.js +0 -218
  192. package/dist/chunks/radio-gpg6kmzonr2cayq1.js.map +0 -1
  193. package/dist/chunks/sidebar-dqw2uxx6xqln639l.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @cloudflare/kumo
2
2
 
3
+ ## 2.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 1b04ee9: Add Toolbar for composing explicit toolbar controls into a shared grouped card.
8
+ - 116e0de: feat(chart): add `enableLegendSelection` prop to `TimeseriesChart`
9
+
10
+ Opt-in (default `false`) hidden ECharts legend that lets consumers drive series
11
+ visibility imperatively via the `legendSelect` / `legendUnSelect` /
12
+ `legendToggleSelect` actions — useful for building a custom interactive legend
13
+ with `ChartLegend`. Series toggled off via the legend are also excluded from the
14
+ tooltip. Requires registering ECharts' `LegendComponent`
15
+ (`echarts.use([LegendComponent])`). When disabled, behaviour is unchanged.
16
+
17
+ - 815628f: Extend LegendItems to take pointer events & timeseries merges forwardref to support those events
18
+
19
+ ### Patch Changes
20
+
21
+ - 430689b: Update the Button primary and destructive variants with token-derived gradient treatments.
22
+ - 539e5bf: Fix horizontal scroll in `Sidebar.Content`: always apply `overflow-x: hidden` on the scroll viewport, not just when collapsed. Base UI's `ScrollArea.Viewport` sets `overflow: scroll` as an inline style, which allowed ~14px of horizontal overflow when consumer content (e.g. search buttons with keyboard shortcuts) exceeded the sidebar width.
23
+ - 4378067: feat(radio): add generic value type support to Radio.Group and Radio.Item
24
+ - fb5fed1: Fix the green Badge variant missing its background color token.
25
+ - bdd890c: Keep generated component registry descriptions to JSDoc summaries before markdown sections or code examples.
26
+
3
27
  ## 2.5.2
4
28
 
5
29
  ### Patch Changes
@@ -4,7 +4,7 @@
4
4
  "Autocomplete": {
5
5
  "name": "Autocomplete",
6
6
  "type": "component",
7
- "description": "Autocomplete — free-form text input with an optional filtered suggestion list. Unlike Combobox, the input value is not restricted to items in the list. Use Combobox when the selected value must come from the list. Compound component: `Autocomplete` (Root), `.InputGroup`, `.Content`, `.Item`, `.GroupLabel`, `.Group`, `.Separator`, `.List`, `.Collection`. `InputGroup` renders the text input with Input component styling. Pass a `size` prop to `InputGroup` to match the Input component sizes.",
7
+ "description": "Autocomplete — free-form text input with an optional filtered suggestion list.",
8
8
  "importPath": "@cloudflare/kumo",
9
9
  "category": "Other",
10
10
  "props": {
@@ -266,12 +266,13 @@
266
266
  },
267
267
  "examples": [
268
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>",
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>",
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=\"green\">Green</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
270
  "<p className=\"flex items-center gap-2\">\n Workers\n <Badge variant=\"secondary\">New</Badge>\n </p>",
271
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>"
272
272
  ],
273
273
  "colors": [
274
274
  "bg-kumo-badge-blue",
275
+ "bg-kumo-badge-green",
275
276
  "bg-kumo-badge-inverted",
276
277
  "bg-kumo-badge-neutral",
277
278
  "bg-kumo-badge-orange",
@@ -560,17 +561,16 @@
560
561
  "outline": "Bordered button with transparent background"
561
562
  },
562
563
  "classes": {
563
- "primary": "bg-kumo-brand !text-white hover:bg-kumo-brand-hover disabled:bg-kumo-brand/50",
564
+ "primary": "relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) disabled:opacity-50",
564
565
  "secondary": "bg-kumo-base !text-kumo-default ring not-disabled:hover:bg-kumo-tint disabled:bg-kumo-base/50 disabled:!text-kumo-default/70 ring-kumo-line data-[state=open]:bg-kumo-base",
565
566
  "ghost": "text-kumo-default hover:bg-kumo-tint shadow-none bg-inherit",
566
- "destructive": "bg-kumo-danger !text-white hover:bg-kumo-danger/70",
567
+ "destructive": "relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) disabled:opacity-50",
567
568
  "secondary-destructive": "bg-kumo-base !text-kumo-danger ring not-disabled:hover:!text-kumo-danger not-disabled:hover:ring-kumo-danger/30 disabled:bg-kumo-base/50 disabled:!text-kumo-danger/70 ring-kumo-line data-[state=open]:bg-kumo-base",
568
569
  "outline": "bg-transparent text-kumo-default ring ring-kumo-line transition-colors not-disabled:hover:text-kumo-strong not-disabled:hover:ring-kumo-focus/25"
569
570
  },
570
571
  "stateClasses": {
571
572
  "primary": {
572
- "hover": "hover:bg-kumo-brand-hover",
573
- "disabled": "disabled:bg-kumo-brand/50"
573
+ "disabled": "disabled:opacity-50"
574
574
  },
575
575
  "secondary": {
576
576
  "not-disabled": "not-disabled:hover:bg-kumo-tint",
@@ -581,7 +581,7 @@
581
581
  "hover": "hover:bg-kumo-tint"
582
582
  },
583
583
  "destructive": {
584
- "hover": "hover:bg-kumo-danger/70"
584
+ "disabled": "disabled:opacity-50"
585
585
  },
586
586
  "secondary-destructive": {
587
587
  "not-disabled": "not-disabled:hover:!text-kumo-danger not-disabled:hover:ring-kumo-danger/30",
@@ -665,9 +665,6 @@
665
665
  ],
666
666
  "colors": [
667
667
  "bg-kumo-base",
668
- "bg-kumo-brand",
669
- "bg-kumo-brand-hover",
670
- "bg-kumo-danger",
671
668
  "bg-kumo-tint",
672
669
  "ring-kumo-brand",
673
670
  "ring-kumo-danger",
@@ -2255,7 +2252,7 @@
2255
2252
  "Collapsible": {
2256
2253
  "name": "Collapsible",
2257
2254
  "type": "component",
2258
- "description": "Collapsible — a composable disclosure component for showing/hiding content. Built on Base UI's Collapsible with full composition support. ## Basic Usage ```tsx const [open, setOpen] = useState(false); <Collapsible.Root open={open} onOpenChange={setOpen}> <Collapsible.Trigger render={<Button variant=\"ghost\" />}> Show details </Collapsible.Trigger> <Collapsible.Panel className=\"mt-2\"> <Text>Hidden content revealed when expanded.</Text> </Collapsible.Panel> </Collapsible.Root> ``` ## With Default Styling Use `DefaultTrigger` and `DefaultPanel` for the classic Kumo style: ```tsx <Collapsible.Root> <Collapsible.DefaultTrigger>Show details</Collapsible.DefaultTrigger> <Collapsible.DefaultPanel> <Text>Content with border-left accent</Text> </Collapsible.DefaultPanel> </Collapsible.Root> ``` ## Controlled Accordion Pattern ```tsx const [activeIndex, setActiveIndex] = useState<number | null>(null); {items.map((item, i) => ( <Collapsible.Root key={i} open={activeIndex === i} onOpenChange={(open) => setActiveIndex(open ? i : null)} > <Collapsible.DefaultTrigger>{item.title}</Collapsible.DefaultTrigger> <Collapsible.DefaultPanel>{item.content}</Collapsible.DefaultPanel> </Collapsible.Root> ))} ```",
2255
+ "description": "Collapsible — a composable disclosure component for showing/hiding content.",
2259
2256
  "importPath": "@cloudflare/kumo",
2260
2257
  "category": "Display",
2261
2258
  "props": {
@@ -2345,7 +2342,7 @@
2345
2342
  "Combobox": {
2346
2343
  "name": "Combobox",
2347
2344
  "type": "component",
2348
- "description": "Combobox — autocomplete input with filterable dropdown list. Compound component: `Combobox` (Root), `.TriggerInput`, `.TriggerValue`, `.TriggerMultipleWithInput`, `.Content`, `.Item`, `.Chip`, `.Input`, `.Empty`, `.GroupLabel`, `.Group`, `.List`, `.Collection`.",
2345
+ "description": "Combobox — autocomplete input with filterable dropdown list.",
2349
2346
  "importPath": "@cloudflare/kumo",
2350
2347
  "category": "Input",
2351
2348
  "props": {
@@ -2582,7 +2579,7 @@
2582
2579
  "CommandPalette": {
2583
2580
  "name": "CommandPalette",
2584
2581
  "type": "component",
2585
- "description": "CommandPalette — accessible command palette / spotlight search overlay. Compound component: `CommandPalette.Root` (or `.Dialog` + `.Panel`), `.Input`, `.List`, `.Results`, `.Items`, `.Group`, `.GroupLabel`, `.Item`, `.ResultItem`, `.HighlightedText`, `.Empty`, `.Loading`, `.Footer`. Built on `@base-ui/react/autocomplete` + `@base-ui/react/dialog`.",
2582
+ "description": "CommandPalette — accessible command palette / spotlight search overlay.",
2586
2583
  "importPath": "@cloudflare/kumo",
2587
2584
  "category": "Navigation",
2588
2585
  "props": {
@@ -2623,7 +2620,7 @@
2623
2620
  "DatePicker": {
2624
2621
  "name": "DatePicker",
2625
2622
  "type": "component",
2626
- "description": "DatePicker — a date selection calendar. Built on [react-day-picker](https://daypicker.dev) with Kumo styling. Supports three selection modes: single, multiple, and range.",
2623
+ "description": "DatePicker — a date selection calendar.",
2627
2624
  "importPath": "@cloudflare/kumo",
2628
2625
  "category": "Other",
2629
2626
  "props": {
@@ -2653,7 +2650,7 @@
2653
2650
  "DateRangePicker": {
2654
2651
  "name": "DateRangePicker",
2655
2652
  "type": "component",
2656
- "description": "DateRangePicker — dual-calendar date range selector. Renders two side-by-side month calendars with click-to-select start/end dates, hover preview of the range, a timezone footer, and a reset button.",
2653
+ "description": "DateRangePicker — dual-calendar date range selector.",
2657
2654
  "importPath": "@cloudflare/kumo",
2658
2655
  "category": "Input",
2659
2656
  "props": {
@@ -2936,7 +2933,7 @@
2936
2933
  "DropdownMenu": {
2937
2934
  "name": "DropdownMenu",
2938
2935
  "type": "component",
2939
- "description": "DropdownMenu — accessible dropdown menu anchored to a trigger. Compound component: `DropdownMenu` (Root), `.Trigger`, `.Content`, `.Item`, `.LinkItem`, `.CheckboxItem`, `.RadioGroup`, `.RadioItem`, `.RadioItemIndicator`, `.Sub`, `.SubTrigger`, `.SubContent`, `.Label`, `.Separator`, `.Shortcut`, `.Group`. Built on `@base-ui/react/menu`.",
2936
+ "description": "DropdownMenu — accessible dropdown menu anchored to a trigger.",
2940
2937
  "importPath": "@cloudflare/kumo",
2941
2938
  "category": "Overlay",
2942
2939
  "props": {
@@ -3784,7 +3781,7 @@
3784
3781
  "Label": {
3785
3782
  "name": "Label",
3786
3783
  "type": "component",
3787
- "description": "Label component for form fields. Provides a standardized way to display labels with optional indicators: - Optional indicator: gray \"(optional)\" text when `showOptional={true}` - Tooltip: info icon with hover tooltip for additional context",
3784
+ "description": "Label component for form fields.",
3788
3785
  "importPath": "@cloudflare/kumo",
3789
3786
  "category": "Other",
3790
3787
  "props": {
@@ -4072,7 +4069,7 @@
4072
4069
  "MenuBar": {
4073
4070
  "name": "MenuBar",
4074
4071
  "type": "component",
4075
- "description": "MenuBar — horizontal icon-button toolbar with keyboard arrow-key navigation. Each option renders as a `<button>` with a Tooltip. The active option is visually highlighted with an elevated background.",
4072
+ "description": "MenuBar — horizontal icon-button toolbar with keyboard arrow-key navigation.",
4076
4073
  "importPath": "@cloudflare/kumo",
4077
4074
  "category": "Navigation",
4078
4075
  "props": {
@@ -4430,37 +4427,33 @@
4430
4427
  "Radio": {
4431
4428
  "name": "Radio",
4432
4429
  "type": "component",
4433
- "description": "Radio — radio button group for single-select choices. Compound component: `Radio.Group` (with built-in Fieldset), `Radio.Item`, and `Radio.Legend`. Built on `@base-ui/react/radio-group` + `@base-ui/react/radio`.",
4430
+ "description": "Radio — radio button group for single-select choices.",
4434
4431
  "importPath": "@cloudflare/kumo",
4435
4432
  "category": "Input",
4436
4433
  "props": {
4437
- "legend": {
4438
- "type": "string",
4439
- "optional": true,
4440
- "description": "Legend text for the group (required for accessibility). For more control over legend styling, omit this prop and use `<Radio.Legend>` as a child instead."
4441
- },
4442
- "children": {
4443
- "type": "ReactNode",
4444
- "optional": true,
4445
- "description": "Child Radio.Item components (and optionally a Radio.Legend)"
4446
- },
4447
- "orientation": {
4434
+ "variant": {
4448
4435
  "type": "enum",
4449
- "optional": true,
4450
- "description": "Layout direction of the radio items",
4451
4436
  "values": [
4452
- "vertical",
4453
- "horizontal"
4454
- ]
4437
+ "default",
4438
+ "error"
4439
+ ],
4440
+ "default": "default",
4441
+ "descriptions": {
4442
+ "default": "Default radio appearance",
4443
+ "error": "Error state for validation failures"
4444
+ },
4445
+ "classes": {
4446
+ "default": "ring-kumo-hairline",
4447
+ "error": "ring-kumo-danger"
4448
+ }
4455
4449
  },
4456
4450
  "appearance": {
4457
4451
  "type": "enum",
4458
- "optional": true,
4459
- "description": "Visual appearance applied to all Radio.Item children.\n- `\"default\"` — Standard inline radio items\n- `\"card\"` — Choice card with border, padding, and highlighted selection state\n\nIndividual items can override this with their own `appearance` prop.",
4460
4452
  "values": [
4461
4453
  "default",
4462
4454
  "card"
4463
4455
  ],
4456
+ "default": "default",
4464
4457
  "descriptions": {
4465
4458
  "default": "Standard inline radio item",
4466
4459
  "card": "Choice card appearance with border, padding, and highlighted selection state"
@@ -4472,47 +4465,27 @@
4472
4465
  "card": {
4473
4466
  "hover": "hover:bg-kumo-tint"
4474
4467
  }
4475
- },
4476
- "default": "default"
4468
+ }
4477
4469
  },
4478
- "error": {
4470
+ "className": {
4479
4471
  "type": "string",
4480
- "optional": true,
4481
- "description": "Error message for the group"
4472
+ "description": "Additional CSS classes"
4482
4473
  },
4483
- "description": {
4474
+ "children": {
4484
4475
  "type": "ReactNode",
4485
- "optional": true,
4486
- "description": "Helper text for the group"
4476
+ "description": "Child elements"
4487
4477
  },
4488
4478
  "value": {
4489
- "type": "string",
4490
- "optional": true,
4491
- "description": "Value of the radio that should be selected (controlled)"
4492
- },
4493
- "disabled": {
4494
- "type": "boolean",
4495
- "optional": true,
4496
- "description": "Whether all radios in the group are disabled"
4497
- },
4498
- "controlPosition": {
4499
- "type": "enum",
4500
- "optional": true,
4501
- "description": "Position of radio control relative to label: \"start\" puts radio before label, \"end\" puts label before radio. Defaults to \"start\" for default appearance and \"end\" for card appearance.",
4502
- "values": [
4503
- "start",
4504
- "end"
4505
- ]
4479
+ "type": "T",
4480
+ "description": "The controlled value of the selected radio item."
4506
4481
  },
4507
- "name": {
4508
- "type": "string",
4509
- "optional": true,
4510
- "description": "Form submission name for the radio group"
4482
+ "defaultValue": {
4483
+ "type": "T",
4484
+ "description": "The uncontrolled initial value of the selected radio item."
4511
4485
  },
4512
- "className": {
4513
- "type": "string",
4514
- "optional": true,
4515
- "description": "Additional CSS classes"
4486
+ "onValueChange": {
4487
+ "type": "(value: T, eventDetails: RadioGroupChangeEventDetails) => void",
4488
+ "description": "Callback fired when the selected value changes. The second argument carries native event details about the interaction."
4516
4489
  }
4517
4490
  },
4518
4491
  "examples": [
@@ -4527,6 +4500,7 @@
4527
4500
  "<Radio.Group defaultValue=\"all\" value={value} onValueChange={setValue}>\n <Radio.Legend className=\"sr-only\">Paths</Radio.Legend>\n <Radio.Item label=\"Allow all paths\" value=\"all\" />\n <Radio.Item label=\"Restrict to specific paths\" value=\"specific\" />\n </Radio.Group>",
4528
4501
  "<Radio.Group value={value} onValueChange={setValue}>\n <Radio.Legend className=\"text-sm font-normal text-kumo-subtle\">\n Notification preference\n </Radio.Legend>\n <Radio.Item label=\"Email\" value=\"email\" />\n <Radio.Item label=\"SMS\" value=\"sms\" />\n <Radio.Item label=\"Push notification\" value=\"push\" />\n </Radio.Group>",
4529
4502
  "<Radio.Group\n legend=\"Choose a plan\"\n appearance=\"card\"\n controlPosition=\"start\"\n value={value}\n onValueChange={setValue}\n >\n <Radio.Item\n label=\"Free\"\n description=\"For personal or hobby projects that aren't business-critical.\"\n value=\"free\"\n />\n <Radio.Item\n label=\"Pro\"\n description=\"For professional websites that aren't business-critical.\"\n value=\"pro\"\n />\n </Radio.Group>",
4503
+ "<div className=\"grid grid-cols-2 gap-6\">\n <Radio.Group<number>\n legend=\"Items per page\"\n value={pageSize}\n onValueChange={setPageSize}\n >\n <Radio.Item<number> label=\"10\" value={10} />\n <Radio.Item<number> label=\"25\" value={25} />\n <Radio.Item<number> label=\"50\" value={50} />\n </Radio.Group>\n <Radio.Group<ThemeType>\n legend=\"Theme\"\n value={theme}\n onValueChange={setTheme}\n >\n <Radio.Item<ThemeType> label=\"Light\" value={ThemeType.light} />\n <Radio.Item<ThemeType> label=\"Dark\" value={ThemeType.dark} />\n <Radio.Item<ThemeType> label=\"System\" value={ThemeType.system} />\n </Radio.Group>\n </div>",
4530
4504
  "<Radio.Group\n legend=\"Choose a plan\"\n appearance=\"card\"\n value={value}\n onValueChange={setValue}\n >\n <Radio.Item\n label={\n <span className=\"flex items-center gap-2\">\n Free\n <Badge variant=\"neutral\">$0</Badge>\n </span>\n }\n description=\"For personal or hobby projects.\"\n value=\"free\"\n />\n <Radio.Item\n label={\n <span className=\"flex items-center gap-2\">\n Pro\n <Badge variant=\"primary\">Popular</Badge>\n </span>\n }\n description=\"For professional websites.\"\n value=\"pro\"\n />\n </Radio.Group>",
4531
4505
  "<Radio.Group\n legend=\"Choose a plan\"\n appearance=\"card\"\n orientation=\"horizontal\"\n value={value}\n onValueChange={setValue}\n >\n <Radio.Item\n label=\"Free\"\n description=\"For personal or hobby projects that aren't business-critical.\"\n value=\"free\"\n />\n <Radio.Item\n label=\"Pro\"\n description=\"For professional websites that aren't business-critical.\"\n value=\"pro\"\n />\n <Radio.Item\n label=\"Business\"\n description=\"For small businesses operating online.\"\n value=\"business\"\n />\n <Radio.Item\n label=\"Contract\"\n description=\"For mission-critical applications that are core to your business.\"\n value=\"contract\"\n />\n </Radio.Group>"
4532
4506
  ],
@@ -4556,53 +4530,17 @@
4556
4530
  "name": "Group",
4557
4531
  "description": "Group sub-component",
4558
4532
  "props": {
4559
- "legend": {
4560
- "type": "string",
4561
- "optional": true
4562
- },
4563
- "children": {
4564
- "type": "ReactNode",
4565
- "required": true
4566
- },
4567
- "orientation": {
4568
- "type": "\"vertical\" | \"horizontal\"",
4569
- "optional": true
4570
- },
4571
- "appearance": {
4572
- "type": "KumoRadioAppearance",
4573
- "optional": true
4574
- },
4575
- "error": {
4576
- "type": "string",
4577
- "optional": true
4578
- },
4579
- "description": {
4580
- "type": "ReactNode",
4581
- "optional": true
4582
- },
4583
4533
  "value": {
4584
- "type": "string",
4585
- "optional": true
4534
+ "type": "T",
4535
+ "description": "The controlled value of the selected radio item."
4586
4536
  },
4587
- "disabled": {
4588
- "type": "boolean",
4589
- "optional": true
4590
- },
4591
- "label": {
4592
- "type": "\"start\" puts radio before label",
4593
- "required": true
4594
- },
4595
- "controlPosition": {
4596
- "type": "RadioControlPosition",
4597
- "optional": true
4598
- },
4599
- "name": {
4600
- "type": "string",
4601
- "optional": true
4537
+ "defaultValue": {
4538
+ "type": "T",
4539
+ "description": "The uncontrolled initial value of the selected radio item."
4602
4540
  },
4603
- "className": {
4604
- "type": "string",
4605
- "optional": true
4541
+ "onValueChange": {
4542
+ "type": "(value: T, eventDetails: RadioGroupChangeEventDetails) => void",
4543
+ "description": "Callback fired when the selected value changes. The second argument carries native event details about the interaction."
4606
4544
  }
4607
4545
  }
4608
4546
  },
@@ -4961,7 +4899,7 @@
4961
4899
  "Sidebar": {
4962
4900
  "name": "Sidebar",
4963
4901
  "type": "component",
4964
- "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`.",
4902
+ "description": "Sidebar — responsive navigation panel with expand/collapse support.",
4965
4903
  "importPath": "@cloudflare/kumo",
4966
4904
  "category": "Other",
4967
4905
  "props": {
@@ -5689,7 +5627,7 @@
5689
5627
  "Table": {
5690
5628
  "name": "Table",
5691
5629
  "type": "component",
5692
- "description": "Table — semantic HTML table with styled rows, cells, and selection support. Compound component: `Table` (Root), `.Header`, `.Head`, `.Body`, `.Row`, `.Cell`, `.Footer`, `.CheckCell`, `.CheckHead`, `.ResizeHandle`.",
5630
+ "description": "Table — semantic HTML table with styled rows, cells, and selection support.",
5693
5631
  "importPath": "@cloudflare/kumo",
5694
5632
  "category": "Other",
5695
5633
  "props": {
@@ -5818,7 +5756,7 @@
5818
5756
  "TableOfContents": {
5819
5757
  "name": "TableOfContents",
5820
5758
  "type": "component",
5821
- "description": "TableOfContents — presentational compound component for section navigation. Purely visual; all interaction logic (scroll tracking, active state management) is left to the consumer.",
5759
+ "description": "TableOfContents — presentational compound component for section navigation.",
5822
5760
  "importPath": "@cloudflare/kumo",
5823
5761
  "category": "Other",
5824
5762
  "props": {
@@ -6169,7 +6107,7 @@
6169
6107
  "Toasty": {
6170
6108
  "name": "Toasty",
6171
6109
  "type": "component",
6172
- "description": "Toasty — toast notification provider and viewport. Renders a `Toast.Provider` with a fixed-position viewport in the bottom-right corner. Toasts stack with smooth enter/exit animations, swipe-to-dismiss, and expand-on-hover. Built on `@base-ui/react/toast`.",
6110
+ "description": "Toasty — toast notification provider and viewport.",
6173
6111
  "importPath": "@cloudflare/kumo",
6174
6112
  "category": "Feedback",
6175
6113
  "props": {
@@ -6274,6 +6212,112 @@
6274
6212
  }
6275
6213
  }
6276
6214
  },
6215
+ "Toolbar": {
6216
+ "name": "Toolbar",
6217
+ "type": "component",
6218
+ "description": "Toolbar component",
6219
+ "importPath": "@cloudflare/kumo",
6220
+ "category": "Other",
6221
+ "props": {
6222
+ "disabled": {
6223
+ "type": "boolean",
6224
+ "optional": true
6225
+ },
6226
+ "orientation": {
6227
+ "type": "ToolbarRoot.Orientation",
6228
+ "optional": true,
6229
+ "description": "The orientation of the toolbar."
6230
+ },
6231
+ "loopFocus": {
6232
+ "type": "boolean",
6233
+ "optional": true,
6234
+ "description": "If `true`, using keyboard navigation will wrap focus to the other end of the toolbar once the end is reached."
6235
+ },
6236
+ "id": {
6237
+ "type": "string",
6238
+ "optional": true
6239
+ },
6240
+ "lang": {
6241
+ "type": "string",
6242
+ "optional": true
6243
+ },
6244
+ "title": {
6245
+ "type": "string",
6246
+ "optional": true
6247
+ },
6248
+ "className": {
6249
+ "type": "string | object",
6250
+ "optional": true,
6251
+ "description": "CSS class applied to the element, or a function that returns a class based on the component's state."
6252
+ },
6253
+ "render": {
6254
+ "type": "ReactNode",
6255
+ "optional": true,
6256
+ "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."
6257
+ },
6258
+ "children": {
6259
+ "type": "ReactNode",
6260
+ "optional": true,
6261
+ "description": "Toolbar controls rendered as one grouped card."
6262
+ },
6263
+ "size": {
6264
+ "type": "enum",
6265
+ "optional": true,
6266
+ "description": "Locks every toolbar item to this size.",
6267
+ "values": [
6268
+ "xs",
6269
+ "sm",
6270
+ "base",
6271
+ "lg"
6272
+ ],
6273
+ "descriptions": {
6274
+ "xs": "Extra small toolbar for compact UIs",
6275
+ "sm": "Small toolbar for secondary controls",
6276
+ "base": "Default toolbar size",
6277
+ "lg": "Large toolbar for prominent controls"
6278
+ },
6279
+ "classes": {
6280
+ "xs": "text-xs",
6281
+ "sm": "text-xs",
6282
+ "base": "text-base",
6283
+ "lg": "text-base"
6284
+ },
6285
+ "default": "base"
6286
+ }
6287
+ },
6288
+ "examples": [
6289
+ "<Toolbar className=\"w-full max-w-md\">\n <Toolbar.InputGroup aria-label=\"Search DNS records\" className=\"flex-1\">\n <InputGroup.Addon>\n <MagnifyingGlassIcon />\n </InputGroup.Addon>\n <InputGroup.Input placeholder=\"Search DNS records\" />\n </Toolbar.InputGroup>\n <Toolbar.Button icon={FunnelSimpleIcon} aria-label=\"Filter\" />\n <Toolbar.Button icon={GearSixIcon} aria-label=\"Settings\" />\n </Toolbar>",
6290
+ "<div className=\"grid gap-3\">\n {([\"xs\", \"sm\", \"base\", \"lg\"] as const).map((size) => (\n <div key={size} className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-kumo-subtle\">{size}</span>\n <Toolbar size={size} className=\"w-fit\">\n <Toolbar.Input aria-label={`${size} search`} placeholder=\"Search...\" />\n <Toolbar.Button>Apply</Toolbar.Button>\n </Toolbar>\n </div>\n ))}\n </div>",
6291
+ "<Toolbar className=\"w-full max-w-md\">\n <Toolbar.Input\n aria-label=\"Search DNS records\"\n placeholder=\"Search DNS records\"\n className=\"flex-1\"\n />\n <Toolbar.Button icon={FunnelSimpleIcon} aria-label=\"Filter\" />\n <Toolbar.Button icon={GearSixIcon} aria-label=\"Settings\" />\n </Toolbar>",
6292
+ "<Toolbar className=\"w-full max-w-lg\">\n <Toolbar.InputGroup aria-label=\"Worker subdomain\" className=\"flex-1\">\n <InputGroup.Input placeholder=\"my-worker\" />\n <InputGroup.Suffix>.workers.dev</InputGroup.Suffix>\n </Toolbar.InputGroup>\n <Toolbar.Button>Visit</Toolbar.Button>\n </Toolbar>",
6293
+ "<Toolbar>\n <Toolbar.Button icon={UploadSimpleIcon}>Upload</Toolbar.Button>\n <Toolbar.Button icon={DownloadSimpleIcon}>Download</Toolbar.Button>\n </Toolbar>",
6294
+ "<Toolbar className=\"w-full max-w-lg\">\n <Toolbar.Input aria-label=\"Search records\" className=\"flex-1\" placeholder=\"Search\" />\n <Toolbar.Button icon={MagnifyingGlassIcon} aria-label=\"Search\" />\n </Toolbar>"
6295
+ ],
6296
+ "colors": [
6297
+ "bg-kumo-control",
6298
+ "border-kumo-line",
6299
+ "ring-kumo-brand",
6300
+ "ring-kumo-focus",
6301
+ "ring-kumo-line"
6302
+ ],
6303
+ "subComponents": {
6304
+ "Button": {
6305
+ "name": "Button",
6306
+ "description": "Button sub-component",
6307
+ "props": {}
6308
+ },
6309
+ "Input": {
6310
+ "name": "Input",
6311
+ "description": "Input sub-component",
6312
+ "props": {}
6313
+ },
6314
+ "InputGroup": {
6315
+ "name": "InputGroup",
6316
+ "description": "InputGroup sub-component",
6317
+ "props": {}
6318
+ }
6319
+ }
6320
+ },
6277
6321
  "Tooltip": {
6278
6322
  "name": "Tooltip",
6279
6323
  "type": "component",
@@ -6555,7 +6599,7 @@
6555
6599
  "ResourceListPage": {
6556
6600
  "name": "ResourceListPage",
6557
6601
  "type": "block",
6558
- "description": "ResourceListPage - A layout component for resource list pages Layouts are page-level components that provide consistent structure for common page patterns like resource lists, dashboards, and settings.",
6602
+ "description": "ResourceListPage - A layout component for resource list pages",
6559
6603
  "importPath": "@cloudflare/kumo",
6560
6604
  "category": "Layout",
6561
6605
  "props": {
@@ -6616,6 +6660,7 @@
6616
6660
  "Sidebar",
6617
6661
  "Table",
6618
6662
  "TableOfContents",
6663
+ "Toolbar",
6619
6664
  "DeleteResource"
6620
6665
  ],
6621
6666
  "Display": [
@@ -6711,6 +6756,7 @@
6711
6756
  "Tabs",
6712
6757
  "Text",
6713
6758
  "Toasty",
6759
+ "Toolbar",
6714
6760
  "Tooltip"
6715
6761
  ],
6716
6762
  "byType": {
@@ -6755,6 +6801,7 @@
6755
6801
  "Tabs",
6756
6802
  "Text",
6757
6803
  "Toasty",
6804
+ "Toolbar",
6758
6805
  "Tooltip"
6759
6806
  ],
6760
6807
  "block": [