@cloudflare/kumo 2.3.1 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/CHANGELOG.md +82 -2
  2. package/ai/component-registry.json +166 -123
  3. package/ai/component-registry.md +349 -215
  4. package/ai/schemas.ts +7 -2
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +46 -34
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/ai/schemas.js +12 -4
  9. package/dist/ai/schemas.js.map +1 -1
  10. package/dist/chunks/SankeyChart-npoyr1j06svoxsfe.js +770 -0
  11. package/dist/chunks/SankeyChart-npoyr1j06svoxsfe.js.map +1 -0
  12. package/dist/chunks/{autocomplete-bdjo7k4zep86bwh8.js → autocomplete-d0w42h1frdu03df6.js} +29 -25
  13. package/dist/chunks/{autocomplete-bdjo7k4zep86bwh8.js.map → autocomplete-d0w42h1frdu03df6.js.map} +1 -1
  14. package/dist/chunks/{badge-e9w8qrjmeu9nocf6.js → badge-c1th6h6ahz7eu49q.js} +2 -2
  15. package/dist/chunks/badge-c1th6h6ahz7eu49q.js.map +1 -0
  16. package/dist/chunks/banner-es5iwuk4pf25e29e.js +120 -0
  17. package/dist/chunks/banner-es5iwuk4pf25e29e.js.map +1 -0
  18. package/dist/chunks/{breadcrumbs-g4pyoikibpoxsgw4.js → breadcrumbs-j214mimk5zj4ffp4.js} +8 -6
  19. package/dist/chunks/breadcrumbs-j214mimk5zj4ffp4.js.map +1 -0
  20. package/dist/chunks/{button-fxdpoacmq5rv1adk.js → button-mnrxu6dud2x5js5b.js} +19 -17
  21. package/dist/chunks/{button-fxdpoacmq5rv1adk.js.map → button-mnrxu6dud2x5js5b.js.map} +1 -1
  22. package/dist/chunks/{checkbox-dtoq56ieijj9m6vr.js → checkbox-dqih8tzzt3vhp870.js} +25 -19
  23. package/dist/chunks/checkbox-dqih8tzzt3vhp870.js.map +1 -0
  24. package/dist/chunks/{clipboard-text-nvdsloomefwgcxat.js → clipboard-text-mrut8z3dt1w0efxz.js} +4 -4
  25. package/dist/chunks/{clipboard-text-nvdsloomefwgcxat.js.map → clipboard-text-mrut8z3dt1w0efxz.js.map} +1 -1
  26. package/dist/chunks/{collapsible-cnsxmp7dko87pgx0.js → collapsible-nzqcf9zwnjkxqzr6.js} +21 -17
  27. package/dist/chunks/collapsible-nzqcf9zwnjkxqzr6.js.map +1 -0
  28. package/dist/chunks/{combobox-kjmt3aoy4sia7g0o.js → combobox-msvukodjsqzlvpqc.js} +142 -130
  29. package/dist/chunks/combobox-msvukodjsqzlvpqc.js.map +1 -0
  30. package/dist/chunks/{command-palette-jrq7p16tff6n46nj.js → command-palette-fqhyacp33fhyf696.js} +5 -5
  31. package/dist/chunks/{command-palette-jrq7p16tff6n46nj.js.map → command-palette-fqhyacp33fhyf696.js.map} +1 -1
  32. package/dist/chunks/{dialog-gndju3sqg1lmpb3f.js → dialog-my9fioafdstq50mi.js} +49 -33
  33. package/dist/chunks/{dialog-gndju3sqg1lmpb3f.js.map → dialog-my9fioafdstq50mi.js.map} +1 -1
  34. package/dist/chunks/{dropdown-k6orz4j043xybf54.js → dropdown-g4sb4cw9ffqaw5gx.js} +54 -44
  35. package/dist/chunks/dropdown-g4sb4cw9ffqaw5gx.js.map +1 -0
  36. package/dist/chunks/{empty-ni12ufom1kkakbuc.js → empty-n17inn1z67bpohkw.js} +2 -2
  37. package/dist/chunks/{empty-ni12ufom1kkakbuc.js.map → empty-n17inn1z67bpohkw.js.map} +1 -1
  38. package/dist/chunks/{field-n16udu32tpyq5udz.js → field-c8o7h3rlam4c9pcx.js} +3 -3
  39. package/dist/chunks/{field-n16udu32tpyq5udz.js.map → field-c8o7h3rlam4c9pcx.js.map} +1 -1
  40. package/dist/chunks/{input-area-hhhpgg0ev8bowtrk.js → input-area-eurk3seud30ricwn.js} +4 -4
  41. package/dist/chunks/{input-area-hhhpgg0ev8bowtrk.js.map → input-area-eurk3seud30ricwn.js.map} +1 -1
  42. package/dist/chunks/{input-mv7giprcc6hfkpq3.js → input-en8hhb14mmt3tfwn.js} +3 -3
  43. package/dist/chunks/{input-mv7giprcc6hfkpq3.js.map → input-en8hhb14mmt3tfwn.js.map} +1 -1
  44. package/dist/chunks/{input-group-kkw5j7rwzhj66h10.js → input-group-d09ocmjcbdai0gze.js} +5 -5
  45. package/dist/chunks/{input-group-kkw5j7rwzhj66h10.js.map → input-group-d09ocmjcbdai0gze.js.map} +1 -1
  46. package/dist/chunks/{label-f6yvqca8qhbpvkq8.js → label-c8rz453pti66slki.js} +3 -3
  47. package/dist/chunks/{label-f6yvqca8qhbpvkq8.js.map → label-c8rz453pti66slki.js.map} +1 -1
  48. package/dist/chunks/{layer-card-gegkqhkjy65l1ueo.js → layer-card-er4flkcxmzfug8jw.js} +2 -2
  49. package/dist/chunks/{layer-card-gegkqhkjy65l1ueo.js.map → layer-card-er4flkcxmzfug8jw.js.map} +1 -1
  50. package/dist/chunks/{link-jjk7qolyol7s1jkk.js → link-i6vnwyjcwvjz5btm.js} +20 -19
  51. package/dist/chunks/{link-jjk7qolyol7s1jkk.js.map → link-i6vnwyjcwvjz5btm.js.map} +1 -1
  52. package/dist/chunks/menubar-ng5if56amh1tto4j.js +98 -0
  53. package/dist/chunks/menubar-ng5if56amh1tto4j.js.map +1 -0
  54. package/dist/chunks/{meter-kxn34sy6l2mz5dwq.js → meter-d5igshkjqttl1fdj.js} +2 -2
  55. package/dist/chunks/{meter-kxn34sy6l2mz5dwq.js.map → meter-d5igshkjqttl1fdj.js.map} +1 -1
  56. package/dist/chunks/{pagination-ixbq8ssuuo0jxaa4.js → pagination-bw7vwca4wrfjm8vb.js} +3 -3
  57. package/dist/chunks/{pagination-ixbq8ssuuo0jxaa4.js.map → pagination-bw7vwca4wrfjm8vb.js.map} +1 -1
  58. package/dist/chunks/{popover-js5ds3szd43kspja.js → popover-ozf1j7oi7pxiudyz.js} +4 -2
  59. package/dist/chunks/popover-ozf1j7oi7pxiudyz.js.map +1 -0
  60. package/dist/chunks/{radio-nyw89v4eafptepmz.js → radio-gpg6kmzonr2cayq1.js} +54 -46
  61. package/dist/chunks/radio-gpg6kmzonr2cayq1.js.map +1 -0
  62. package/dist/chunks/{select-o2i7aovnu8v1zv8t.js → select-dw9iw35ug7yer3o3.js} +101 -91
  63. package/dist/chunks/select-dw9iw35ug7yer3o3.js.map +1 -0
  64. package/dist/chunks/{sensitive-input-bjg6m791yz7g6bn3.js → sensitive-input-dgoxjtoxl4zqa51v.js} +50 -44
  65. package/dist/chunks/{sensitive-input-bjg6m791yz7g6bn3.js.map → sensitive-input-dgoxjtoxl4zqa51v.js.map} +1 -1
  66. package/dist/chunks/sidebar-hzio700cg85f7f31.js +1014 -0
  67. package/dist/chunks/sidebar-hzio700cg85f7f31.js.map +1 -0
  68. package/dist/chunks/{surface-lzwbh3f5t0gxc83t.js → surface-iyejjbqogjbo7ise.js} +2 -2
  69. package/dist/chunks/{surface-lzwbh3f5t0gxc83t.js.map → surface-iyejjbqogjbo7ise.js.map} +1 -1
  70. package/dist/chunks/{switch-d9cs31oj4rjtg717.js → switch-g8f77h69h34xld06.js} +50 -45
  71. package/dist/chunks/switch-g8f77h69h34xld06.js.map +1 -0
  72. package/dist/chunks/{table-c6qemc2jmv22cv3p.js → table-e1te1im2tt2ez05y.js} +2 -2
  73. package/dist/chunks/{table-c6qemc2jmv22cv3p.js.map → table-e1te1im2tt2ez05y.js.map} +1 -1
  74. package/dist/chunks/{table-of-contents-fzyv7uhnnyr13dqu.js → table-of-contents-jco9kvt48d34dwsw.js} +34 -30
  75. package/dist/chunks/table-of-contents-jco9kvt48d34dwsw.js.map +1 -0
  76. package/dist/chunks/{tabs-f0ztlooi91ko9g04.js → tabs-hice1yy5q2t889z8.js} +6 -4
  77. package/dist/chunks/tabs-hice1yy5q2t889z8.js.map +1 -0
  78. package/dist/chunks/{toast-ejfm5cbt9yulqhol.js → toast-kvbgct0jvfmn4mas.js} +29 -27
  79. package/dist/chunks/{toast-ejfm5cbt9yulqhol.js.map → toast-kvbgct0jvfmn4mas.js.map} +1 -1
  80. package/dist/chunks/{tooltip-o6xfw9jjclv9pxaj.js → tooltip-ken77ixya0qpidie.js} +6 -6
  81. package/dist/chunks/{tooltip-o6xfw9jjclv9pxaj.js.map → tooltip-ken77ixya0qpidie.js.map} +1 -1
  82. package/dist/chunks/{vendor-base-ui-mzjqwv5teijixz8h.js → vendor-base-ui-knphx7dts1vm1x37.js} +1726 -1719
  83. package/dist/chunks/{vendor-base-ui-mzjqwv5teijixz8h.js.map → vendor-base-ui-knphx7dts1vm1x37.js.map} +1 -1
  84. package/dist/code.js +1 -1
  85. package/dist/components/autocomplete.js +1 -1
  86. package/dist/components/badge.js +1 -1
  87. package/dist/components/banner.js +1 -1
  88. package/dist/components/breadcrumbs.js +1 -1
  89. package/dist/components/button.js +1 -1
  90. package/dist/components/chart.js +1 -1
  91. package/dist/components/checkbox.js +1 -1
  92. package/dist/components/clipboard-text.js +1 -1
  93. package/dist/components/collapsible.js +1 -1
  94. package/dist/components/combobox.js +1 -1
  95. package/dist/components/command-palette.js +1 -1
  96. package/dist/components/dialog.js +1 -1
  97. package/dist/components/dropdown.js +1 -1
  98. package/dist/components/empty.js +1 -1
  99. package/dist/components/field.js +1 -1
  100. package/dist/components/input-group.js +1 -1
  101. package/dist/components/input.js +3 -3
  102. package/dist/components/label.js +1 -1
  103. package/dist/components/layer-card.js +1 -1
  104. package/dist/components/link.js +1 -1
  105. package/dist/components/menubar.js +1 -1
  106. package/dist/components/meter.js +1 -1
  107. package/dist/components/pagination.js +1 -1
  108. package/dist/components/popover.js +1 -1
  109. package/dist/components/radio.js +1 -1
  110. package/dist/components/select.js +1 -1
  111. package/dist/components/sensitive-input.js +1 -1
  112. package/dist/components/sidebar.js +22 -23
  113. package/dist/components/surface.js +1 -1
  114. package/dist/components/switch.js +1 -1
  115. package/dist/components/table-of-contents.js +1 -1
  116. package/dist/components/table.js +1 -1
  117. package/dist/components/tabs.js +1 -1
  118. package/dist/components/toast.js +2 -2
  119. package/dist/components/tooltip.js +1 -1
  120. package/dist/index.js +122 -123
  121. package/dist/primitives/accordion.js +1 -1
  122. package/dist/primitives/alert-dialog.js +1 -1
  123. package/dist/primitives/autocomplete.js +1 -1
  124. package/dist/primitives/avatar.js +1 -1
  125. package/dist/primitives/button.js +1 -1
  126. package/dist/primitives/checkbox-group.js +1 -1
  127. package/dist/primitives/checkbox.js +1 -1
  128. package/dist/primitives/collapsible.js +1 -1
  129. package/dist/primitives/combobox.js +1 -1
  130. package/dist/primitives/context-menu.js +1 -1
  131. package/dist/primitives/csp-provider.js +1 -1
  132. package/dist/primitives/dialog.js +1 -1
  133. package/dist/primitives/direction-provider.js +1 -1
  134. package/dist/primitives/drawer.js +1 -1
  135. package/dist/primitives/field.js +1 -1
  136. package/dist/primitives/fieldset.js +1 -1
  137. package/dist/primitives/form.js +1 -1
  138. package/dist/primitives/input.js +1 -1
  139. package/dist/primitives/menu.js +1 -1
  140. package/dist/primitives/menubar.js +1 -1
  141. package/dist/primitives/meter.js +1 -1
  142. package/dist/primitives/navigation-menu.js +1 -1
  143. package/dist/primitives/number-field.js +1 -1
  144. package/dist/primitives/otp-field.js +1 -1
  145. package/dist/primitives/popover.js +1 -1
  146. package/dist/primitives/preview-card.js +1 -1
  147. package/dist/primitives/progress.js +1 -1
  148. package/dist/primitives/radio-group.js +1 -1
  149. package/dist/primitives/radio.js +1 -1
  150. package/dist/primitives/scroll-area.js +1 -1
  151. package/dist/primitives/select.js +1 -1
  152. package/dist/primitives/separator.js +1 -1
  153. package/dist/primitives/slider.js +1 -1
  154. package/dist/primitives/switch.js +1 -1
  155. package/dist/primitives/tabs.js +1 -1
  156. package/dist/primitives/toast.js +1 -1
  157. package/dist/primitives/toggle-group.js +1 -1
  158. package/dist/primitives/toggle.js +1 -1
  159. package/dist/primitives/toolbar.js +1 -1
  160. package/dist/primitives/tooltip.js +1 -1
  161. package/dist/primitives.js +1 -1
  162. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  163. package/dist/scripts/theme-generator/config.js +36 -38
  164. package/dist/scripts/theme-generator/config.js.map +1 -1
  165. package/dist/scripts/theme-generator/generate-css.d.ts.map +1 -1
  166. package/dist/scripts/theme-generator/types.d.ts +8 -2
  167. package/dist/scripts/theme-generator/types.d.ts.map +1 -1
  168. package/dist/src/components/autocomplete/autocomplete.d.ts +1 -0
  169. package/dist/src/components/autocomplete/autocomplete.d.ts.map +1 -1
  170. package/dist/src/components/autocomplete/index.d.ts +1 -0
  171. package/dist/src/components/autocomplete/index.d.ts.map +1 -1
  172. package/dist/src/components/badge/badge.d.ts +1 -1
  173. package/dist/src/components/banner/banner.d.ts +14 -7
  174. package/dist/src/components/banner/banner.d.ts.map +1 -1
  175. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  176. package/dist/src/components/button/button.d.ts.map +1 -1
  177. package/dist/src/components/chart/TimeseriesChart.d.ts +43 -1
  178. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
  179. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
  180. package/dist/src/components/collapsible/collapsible.d.ts.map +1 -1
  181. package/dist/src/components/combobox/combobox.d.ts +1 -0
  182. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  183. package/dist/src/components/combobox/index.d.ts +1 -0
  184. package/dist/src/components/combobox/index.d.ts.map +1 -1
  185. package/dist/src/components/dialog/dialog.d.ts.map +1 -1
  186. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  187. package/dist/src/components/link/link.d.ts.map +1 -1
  188. package/dist/src/components/menubar/menubar.d.ts.map +1 -1
  189. package/dist/src/components/popover/popover.d.ts.map +1 -1
  190. package/dist/src/components/radio/radio.d.ts.map +1 -1
  191. package/dist/src/components/select/select.d.ts.map +1 -1
  192. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
  193. package/dist/src/components/sidebar/index.d.ts +1 -1
  194. package/dist/src/components/sidebar/index.d.ts.map +1 -1
  195. package/dist/src/components/sidebar/sidebar.d.ts +159 -146
  196. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
  197. package/dist/src/components/switch/switch.d.ts.map +1 -1
  198. package/dist/src/components/table-of-contents/table-of-contents.d.ts.map +1 -1
  199. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  200. package/dist/src/index.d.ts +1 -1
  201. package/dist/src/index.d.ts.map +1 -1
  202. package/dist/styles/kumo-standalone.css +1 -1
  203. package/dist/styles/kumo.css +37 -0
  204. package/dist/styles/theme-kumo.css +28 -35
  205. package/package.json +4 -1
  206. package/scripts/theme-generator/config.ts +37 -39
  207. package/scripts/theme-generator/generate-css.ts +4 -1
  208. package/scripts/theme-generator/types.ts +8 -2
  209. package/dist/chunks/SankeyChart-krkvltewpn3bbupw.js +0 -651
  210. package/dist/chunks/SankeyChart-krkvltewpn3bbupw.js.map +0 -1
  211. package/dist/chunks/badge-e9w8qrjmeu9nocf6.js.map +0 -1
  212. package/dist/chunks/banner-ip2lm8r87hich557.js +0 -88
  213. package/dist/chunks/banner-ip2lm8r87hich557.js.map +0 -1
  214. package/dist/chunks/breadcrumbs-g4pyoikibpoxsgw4.js.map +0 -1
  215. package/dist/chunks/checkbox-dtoq56ieijj9m6vr.js.map +0 -1
  216. package/dist/chunks/collapsible-cnsxmp7dko87pgx0.js.map +0 -1
  217. package/dist/chunks/combobox-kjmt3aoy4sia7g0o.js.map +0 -1
  218. package/dist/chunks/dropdown-k6orz4j043xybf54.js.map +0 -1
  219. package/dist/chunks/menubar-d5s6h96nw8ggy04a.js +0 -96
  220. package/dist/chunks/menubar-d5s6h96nw8ggy04a.js.map +0 -1
  221. package/dist/chunks/popover-js5ds3szd43kspja.js.map +0 -1
  222. package/dist/chunks/radio-nyw89v4eafptepmz.js.map +0 -1
  223. package/dist/chunks/select-o2i7aovnu8v1zv8t.js.map +0 -1
  224. package/dist/chunks/sidebar-izcfqkrzt4vqn8ez.js +0 -875
  225. package/dist/chunks/sidebar-izcfqkrzt4vqn8ez.js.map +0 -1
  226. package/dist/chunks/switch-d9cs31oj4rjtg717.js.map +0 -1
  227. package/dist/chunks/table-of-contents-fzyv7uhnnyr13dqu.js.map +0 -1
  228. package/dist/chunks/tabs-f0ztlooi91ko9g04.js.map +0 -1
@@ -115,19 +115,17 @@ Collection sub-component (wraps AutocompleteBase)
115
115
  ```tsx
116
116
  <div className="w-80">
117
117
  <Autocomplete
118
- items={countries}
119
- label="Country"
120
- description="Start typing to filter countries"
121
- filter={(item: Country, query: string) =>
122
- item.label.toLowerCase().includes(query.toLowerCase())
123
- }
118
+ items={languages}
119
+ label="Language"
120
+ description="Start typing to filter languages"
121
+ filter={filter}
124
122
  >
125
- <Autocomplete.InputGroup placeholder="Search countries…" />
123
+ <Autocomplete.InputGroup placeholder="Search a language…" />
126
124
  <Autocomplete.Content>
127
125
  <Autocomplete.List>
128
- {(item: Country) => (
129
- <Autocomplete.Item key={item.code} value={item}>
130
- {item.label}
126
+ {(item: Language) => (
127
+ <Autocomplete.Item key={item.value} value={item}>
128
+ {item.emoji} {item.label}
131
129
  </Autocomplete.Item>
132
130
  )}
133
131
  </Autocomplete.List>
@@ -142,9 +140,7 @@ Collection sub-component (wraps AutocompleteBase)
142
140
  items={countries}
143
141
  label="Country"
144
142
  error={{ message: "Please enter a valid country", match: true }}
145
- filter={(item: Country, query: string) =>
146
- item.label.toLowerCase().includes(query.toLowerCase())
147
- }
143
+ filter={filter}
148
144
  >
149
145
  <Autocomplete.InputGroup placeholder="Search countries…" />
150
146
  <Autocomplete.Content>
@@ -304,7 +300,7 @@ Small status label for categorizing or highlighting content.
304
300
 
305
301
  **Colors (kumo tokens used):**
306
302
 
307
- `bg-kumo-badge-blue`, `bg-kumo-badge-green`, `bg-kumo-badge-inverted`, `bg-kumo-badge-neutral`, `bg-kumo-badge-orange`, `bg-kumo-badge-purple`, `bg-kumo-badge-red`, `bg-kumo-badge-teal`, `bg-kumo-badge-teal-subtle`, `bg-kumo-danger-tint`, `bg-kumo-fill`, `bg-kumo-info-tint`, `bg-kumo-success-tint`, `bg-kumo-warning-tint`, `border-kumo-brand`, `border-kumo-fill`, `ring-kumo-hairline`, `text-kumo-badge-inverted`, `text-kumo-badge-neutral-subtle`, `text-kumo-badge-teal-subtle`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-info`, `text-kumo-link`, `text-kumo-success`, `text-kumo-warning`
303
+ `bg-kumo-badge-blue`, `bg-kumo-badge-inverted`, `bg-kumo-badge-neutral`, `bg-kumo-badge-orange`, `bg-kumo-badge-purple`, `bg-kumo-badge-red`, `bg-kumo-badge-teal`, `bg-kumo-badge-teal-subtle`, `bg-kumo-danger-tint`, `bg-kumo-fill`, `bg-kumo-info-tint`, `bg-kumo-success`, `bg-kumo-success-tint`, `bg-kumo-warning-tint`, `border-kumo-brand`, `border-kumo-fill`, `ring-kumo-hairline`, `text-kumo-badge-inverted`, `text-kumo-badge-neutral-subtle`, `text-kumo-badge-teal-subtle`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-info`, `text-kumo-link`, `text-kumo-success`, `text-kumo-warning`
308
304
 
309
305
  **Examples:**
310
306
 
@@ -326,7 +322,6 @@ Small status label for categorizing or highlighting content.
326
322
  <Badge variant="neutral">Neutral</Badge>
327
323
  <Badge variant="red">Red</Badge>
328
324
  <Badge variant="orange">Orange</Badge>
329
- <Badge variant="green">Green</Badge>
330
325
  <Badge variant="teal">Teal</Badge>
331
326
  <Badge variant="blue">Blue</Badge>
332
327
  <Badge variant="purple">Purple</Badge>
@@ -364,6 +359,10 @@ Full-width message bar for informational, warning, or error notices. Supports st
364
359
 
365
360
  **Props:**
366
361
 
362
+ - `className`: string
363
+ Additional CSS classes merged via `cn()`.
364
+ - `id`: string
365
+ - `lang`: string
367
366
  - `icon`: ReactNode
368
367
  Icon element rendered before the banner content (e.g. from `@phosphor-icons/react`).
369
368
  - `title`: string
@@ -378,12 +377,11 @@ Full-width message bar for informational, warning, or error notices. Supports st
378
377
  - `"default"`: Informational banner for general messages
379
378
  - `"alert"`: Warning banner for cautionary messages
380
379
  - `"error"`: Error banner for critical issues
381
- - `className`: string
382
- Additional CSS classes merged via `cn()`.
380
+ - `"secondary"`: Neutral banner for secondary messages
383
381
 
384
382
  **Colors (kumo tokens used):**
385
383
 
386
- `bg-kumo-danger-tint`, `bg-kumo-info-tint`, `bg-kumo-warning-tint`, `border-kumo-danger`, `border-kumo-info`, `border-kumo-warning`, `text-kumo-danger`, `text-kumo-info`, `text-kumo-warning`
384
+ `bg-kumo-banner-info`, `bg-kumo-banner-warning`, `bg-kumo-contrast`, `bg-kumo-danger-tint`, `text-kumo-danger`, `text-kumo-info`, `text-kumo-subtle`, `text-kumo-warning`
387
385
 
388
386
  **Examples:**
389
387
 
@@ -406,6 +404,12 @@ Full-width message bar for informational, warning, or error notices. Supports st
406
404
  title="Save failed"
407
405
  description="We couldn't save your changes. Please try again."
408
406
  />
407
+ <Banner
408
+ icon={<Info weight="fill" />}
409
+ variant="secondary"
410
+ title="Maintenance scheduled"
411
+ description="This service will be unavailable for 10 minutes."
412
+ />
409
413
  </div>
410
414
  ```
411
415
 
@@ -6114,7 +6118,7 @@ Password/secret input that masks its value by default and reveals on click. Incl
6114
6118
 
6115
6119
  ### Sidebar
6116
6120
 
6117
- Sidebar — responsive navigation panel with expand/collapse support. Compound component: `Sidebar` (root `<aside>`), `.Provider`, `.Header`, `.Content`, `.Footer`, `.Group`, `.GroupLabel`, `.GroupContent`, `.Menu`, `.MenuItem`, `.MenuButton`, `.MenuAction`, `.MenuBadge`, `.MenuSub`, `.MenuSubItem`, `.MenuSubButton`, `.Separator`, `.Input`, `.Trigger`, `.Rail`, `.MenuChevron`, `.Collapsible`, `.CollapsibleTrigger`, `.CollapsibleContent`. Built on `@base-ui/react/collapsible` + `@base-ui/react/dialog`.
6121
+ 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`.
6118
6122
 
6119
6123
  **Type:** component
6120
6124
 
@@ -6147,6 +6151,12 @@ Sidebar — responsive navigation panel with expand/collapse support. Compound
6147
6151
  Minimum width in pixels when resizing.
6148
6152
  - `maxWidth`: number
6149
6153
  Maximum width in pixels when resizing.
6154
+ - `contained`: boolean
6155
+ When true, the collapsed sidebar uses absolute positioning instead of fixed, keeping it scoped inside a bounded parent. Useful for demos and embedded sidebars.
6156
+ - `peekable`: boolean
6157
+ When true, hovering or focusing the collapsed sidebar temporarily expands it. The `state` will be `"peeking"` during the peek. Moving away collapses it back.
6158
+ - `animationDuration`: number
6159
+ Duration of sidebar expand/collapse animation in milliseconds.
6150
6160
  - `children`: ReactNode
6151
6161
  Content — typically `<Sidebar>` + main content.
6152
6162
  - `className`: string
@@ -6154,7 +6164,7 @@ Sidebar — responsive navigation panel with expand/collapse support. Compound
6154
6164
 
6155
6165
  **Colors (kumo tokens used):**
6156
6166
 
6157
- `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-hairline`, `bg-kumo-overlay`, `bg-kumo-recessed`, `bg-kumo-tint`, `border-kumo-hairline`, `ring-kumo-brand`, `ring-kumo-hairline`, `text-kumo-default`, `text-kumo-subtle`
6167
+ `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-hairline`, `bg-kumo-line`, `bg-kumo-recessed`, `bg-kumo-tint`, `border-kumo-line`, `ring-kumo-brand`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
6158
6168
 
6159
6169
  **Styling:**
6160
6170
 
@@ -6177,6 +6187,9 @@ Props:
6177
6187
  - `defaultWidth`: number
6178
6188
  - `minWidth`: number
6179
6189
  - `maxWidth`: number
6190
+ - `contained`: boolean
6191
+ - `peekable`: boolean
6192
+ - `animationDuration`: number
6180
6193
  - `children`: ReactNode (required)
6181
6194
  - `className`: string
6182
6195
 
@@ -6185,36 +6198,28 @@ Props:
6185
6198
  Header sub-component
6186
6199
 
6187
6200
  Props:
6188
- - `collapsible`: boolean
6189
- - `defaultOpen`: boolean
6190
- - `open`: boolean
6201
+ - `icon`: React.ComponentType<{ className?: string
6191
6202
 
6192
6203
  #### Sidebar.Content
6193
6204
 
6194
6205
  Content sub-component
6195
6206
 
6196
6207
  Props:
6197
- - `collapsible`: boolean
6198
- - `defaultOpen`: boolean
6199
- - `open`: boolean
6208
+ - `icon`: React.ComponentType<{ className?: string
6200
6209
 
6201
6210
  #### Sidebar.Footer
6202
6211
 
6203
6212
  Footer sub-component
6204
6213
 
6205
6214
  Props:
6206
- - `collapsible`: boolean
6207
- - `defaultOpen`: boolean
6208
- - `open`: boolean
6215
+ - `icon`: React.ComponentType<{ className?: string
6209
6216
 
6210
6217
  #### Sidebar.Group
6211
6218
 
6212
6219
  Group sub-component
6213
6220
 
6214
6221
  Props:
6215
- - `collapsible`: boolean
6216
- - `defaultOpen`: boolean
6217
- - `open`: boolean
6222
+ - `icon`: React.ComponentType<{ className?: string
6218
6223
 
6219
6224
  #### Sidebar.GroupLabel
6220
6225
 
@@ -6223,13 +6228,6 @@ GroupLabel sub-component
6223
6228
  Props:
6224
6229
  - `icon`: React.ComponentType<{ className?: string
6225
6230
 
6226
- #### Sidebar.GroupContent
6227
-
6228
- GroupContent sub-component
6229
-
6230
- Props:
6231
- - `icon`: React.ComponentType<{ className?: string
6232
-
6233
6231
  #### Sidebar.Menu
6234
6232
 
6235
6233
  Menu sub-component
@@ -6251,14 +6249,6 @@ MenuButton sub-component
6251
6249
  Props:
6252
6250
  - `icon`: React.ComponentType<{ className?: string
6253
6251
 
6254
- #### Sidebar.MenuAction
6255
-
6256
- MenuAction sub-component
6257
-
6258
- Props:
6259
- - `active`: boolean
6260
- - `href`: string
6261
-
6262
6252
  #### Sidebar.MenuBadge
6263
6253
 
6264
6254
  MenuBadge sub-component
@@ -6296,29 +6286,33 @@ Props:
6296
6286
  Separator sub-component
6297
6287
 
6298
6288
  Props:
6299
- - `placeholder`: string
6300
- - `shortcut`: string
6301
-
6302
- #### Sidebar.Input
6303
-
6304
- Input sub-component
6305
-
6306
- Props:
6307
- - `placeholder`: string
6308
- - `shortcut`: string
6289
+ - `defaultOpen`: boolean
6290
+ - `open`: boolean
6309
6291
 
6310
6292
  #### Sidebar.Trigger
6311
6293
 
6312
6294
  Trigger sub-component
6313
6295
 
6296
+ Props:
6297
+ - `defaultOpen`: boolean
6298
+ - `open`: boolean
6299
+
6314
6300
  #### Sidebar.Rail
6315
6301
 
6316
6302
  Rail sub-component
6317
6303
 
6304
+ Props:
6305
+ - `defaultOpen`: boolean
6306
+ - `open`: boolean
6307
+
6318
6308
  #### Sidebar.ResizeHandle
6319
6309
 
6320
6310
  ResizeHandle sub-component
6321
6311
 
6312
+ Props:
6313
+ - `defaultOpen`: boolean
6314
+ - `open`: boolean
6315
+
6322
6316
  #### Sidebar.MenuChevron
6323
6317
 
6324
6318
  MenuChevron sub-component
@@ -6330,20 +6324,46 @@ Props:
6330
6324
 
6331
6325
  Collapsible sub-component
6332
6326
 
6327
+ Props:
6328
+ - `defaultOpen`: boolean
6329
+ - `open`: boolean
6330
+
6333
6331
  #### Sidebar.CollapsibleTrigger
6334
6332
 
6335
6333
  CollapsibleTrigger sub-component
6336
6334
 
6335
+ Props:
6336
+ - `render`: React.ReactElement (required)
6337
+
6337
6338
  #### Sidebar.CollapsibleContent
6338
6339
 
6339
6340
  CollapsibleContent sub-component
6340
6341
 
6342
+ Props:
6343
+ - `activeKey`: string (required)
6344
+ - `direction`: "left" | "right"
6345
+
6346
+ #### Sidebar.SlidingViews
6347
+
6348
+ SlidingViews sub-component
6349
+
6350
+ Props:
6351
+ - `activeKey`: string (required)
6352
+ - `direction`: "left" | "right"
6353
+
6354
+ #### Sidebar.SlidingView
6355
+
6356
+ SlidingView sub-component
6357
+
6358
+ Props:
6359
+ - `value`: string (required)
6360
+
6341
6361
 
6342
6362
  **Examples:**
6343
6363
 
6344
6364
  ```tsx
6345
6365
  <DemoContainer>
6346
- <Sidebar.Provider defaultOpen className="min-h-0! h-full">
6366
+ <Sidebar.Provider contained defaultOpen className="min-h-0! h-full">
6347
6367
  <Sidebar>
6348
6368
  <Sidebar.Content>
6349
6369
  <Sidebar.Group>
@@ -6376,9 +6396,31 @@ CollapsibleContent sub-component
6376
6396
  />
6377
6397
  <Sidebar.CollapsibleContent>
6378
6398
  <Sidebar.MenuSub>
6379
- <Sidebar.MenuSubButton>
6380
- Workers & Pages
6381
- </Sidebar.MenuSubButton>
6399
+ <Sidebar.MenuSubItem>
6400
+ <Sidebar.Collapsible>
6401
+ <Sidebar.CollapsibleTrigger
6402
+ render={
6403
+ <Sidebar.MenuSubButton>
6404
+ Workers & Pages
6405
+ <Sidebar.MenuChevron />
6406
+ </Sidebar.MenuSubButton>
6407
+ }
6408
+ />
6409
+ <Sidebar.CollapsibleContent>
6410
+ <Sidebar.MenuSub>
6411
+ <Sidebar.MenuSubButton>
6412
+ Overview
6413
+ </Sidebar.MenuSubButton>
6414
+ <Sidebar.MenuSubButton>
6415
+ Workers
6416
+ </Sidebar.MenuSubButton>
6417
+ <Sidebar.MenuSubButton>
6418
+ Pages
6419
+ </Sidebar.MenuSubButton>
6420
+ </Sidebar.MenuSub>
6421
+ </Sidebar.CollapsibleContent>
6422
+ </Sidebar.Collapsible>
6423
+ </Sidebar.MenuSubItem>
6382
6424
  <Sidebar.MenuSubButton>
6383
6425
  Durable Objects
6384
6426
  </Sidebar.MenuSubButton>
@@ -6400,64 +6442,7 @@ CollapsibleContent sub-component
6400
6442
 
6401
6443
  ```tsx
6402
6444
  <DemoContainer>
6403
- <Sidebar.Provider defaultOpen className="min-h-0! h-full">
6404
- <Sidebar>
6405
- <Sidebar.Content>
6406
- {/* GroupContent is required for collapsible groups (provides grid-rows animation) */}
6407
- <Sidebar.Group collapsible defaultOpen>
6408
- <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>
6409
- <Sidebar.GroupContent>
6410
- <Sidebar.Menu>
6411
- <Sidebar.MenuButton icon={HouseIcon} active>
6412
- Home
6413
- </Sidebar.MenuButton>
6414
- <Sidebar.MenuButton icon={ChartBarIcon}>
6415
- Analytics
6416
- </Sidebar.MenuButton>
6417
- <Sidebar.MenuButton icon={GlobeIcon}>
6418
- Domains
6419
- </Sidebar.MenuButton>
6420
- </Sidebar.Menu>
6421
- </Sidebar.GroupContent>
6422
- </Sidebar.Group>
6423
-
6424
- <Sidebar.Group collapsible defaultOpen>
6425
- <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>
6426
- <Sidebar.GroupContent>
6427
- <Sidebar.Menu>
6428
- <Sidebar.MenuButton icon={CodeIcon}>
6429
- Compute
6430
- </Sidebar.MenuButton>
6431
- <Sidebar.MenuButton icon={DatabaseIcon}>
6432
- Storage
6433
- </Sidebar.MenuButton>
6434
- </Sidebar.Menu>
6435
- </Sidebar.GroupContent>
6436
- </Sidebar.Group>
6437
-
6438
- <Sidebar.Group collapsible defaultOpen={false}>
6439
- <Sidebar.GroupLabel>Protect & Connect</Sidebar.GroupLabel>
6440
- <Sidebar.GroupContent>
6441
- <Sidebar.Menu>
6442
- <Sidebar.MenuButton icon={ShieldCheckIcon}>
6443
- Security
6444
- </Sidebar.MenuButton>
6445
- <Sidebar.MenuButton icon={LockIcon}>
6446
- Zero Trust
6447
- </Sidebar.MenuButton>
6448
- </Sidebar.Menu>
6449
- </Sidebar.GroupContent>
6450
- </Sidebar.Group>
6451
- </Sidebar.Content>
6452
- </Sidebar>
6453
- <DemoMain />
6454
- </Sidebar.Provider>
6455
- </DemoContainer>
6456
- ```
6457
-
6458
- ```tsx
6459
- <DemoContainer>
6460
- <Sidebar.Provider defaultOpen className="min-h-0! h-full">
6445
+ <Sidebar.Provider contained defaultOpen className="min-h-0! h-full">
6461
6446
  <Sidebar>
6462
6447
  <Sidebar.Header>
6463
6448
  <BrandLogo />
@@ -6486,7 +6471,7 @@ CollapsibleContent sub-component
6486
6471
  </Sidebar>
6487
6472
  <DemoMain>
6488
6473
  <ToggleButton />
6489
- <p className="text-sm">
6474
+ <p>
6490
6475
  Click the button or the sidebar trigger to toggle
6491
6476
  </p>
6492
6477
  </DemoMain>
@@ -6496,97 +6481,7 @@ CollapsibleContent sub-component
6496
6481
 
6497
6482
  ```tsx
6498
6483
  <DemoContainer>
6499
- <Sidebar.Provider defaultOpen className="min-h-0! h-full">
6500
- <Sidebar>
6501
- <Sidebar.Header>
6502
- <AccountSwitcher />
6503
- </Sidebar.Header>
6504
-
6505
- <Sidebar.Content>
6506
- <div className="px-1 pb-2">
6507
- <Sidebar.Input placeholder="Quick search..." shortcut="⌘K" />
6508
- </div>
6509
-
6510
- <Sidebar.Group>
6511
- <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>
6512
- <Sidebar.Menu>
6513
- <Sidebar.MenuButton icon={HouseIcon} active>
6514
- Home
6515
- </Sidebar.MenuButton>
6516
- <Sidebar.MenuButton icon={ChartBarIcon}>
6517
- Analytics & Logs
6518
- </Sidebar.MenuButton>
6519
- <Sidebar.MenuButton icon={GlobeIcon}>
6520
- Domains
6521
- </Sidebar.MenuButton>
6522
- </Sidebar.Menu>
6523
- </Sidebar.Group>
6524
-
6525
- <Sidebar.Separator />
6526
-
6527
- <Sidebar.Group>
6528
- <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>
6529
- <Sidebar.Menu>
6530
- <Sidebar.MenuItem>
6531
- <Sidebar.Collapsible defaultOpen>
6532
- <Sidebar.CollapsibleTrigger
6533
- render={
6534
- <Sidebar.MenuButton icon={CodeIcon}>
6535
- Compute
6536
- <Sidebar.MenuChevron />
6537
- </Sidebar.MenuButton>
6538
- }
6539
- />
6540
- <Sidebar.CollapsibleContent>
6541
- <Sidebar.MenuSub>
6542
- <Sidebar.MenuSubButton>
6543
- Workers & Pages
6544
- </Sidebar.MenuSubButton>
6545
- <Sidebar.MenuSubButton>
6546
- Durable Objects
6547
- </Sidebar.MenuSubButton>
6548
- <Sidebar.MenuSubButton>
6549
- Containers
6550
- <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>
6551
- </Sidebar.MenuSubButton>
6552
- </Sidebar.MenuSub>
6553
- </Sidebar.CollapsibleContent>
6554
- </Sidebar.Collapsible>
6555
- </Sidebar.MenuItem>
6556
- <Sidebar.MenuButton icon={DatabaseIcon}>
6557
- Storage
6558
- </Sidebar.MenuButton>
6559
- </Sidebar.Menu>
6560
- </Sidebar.Group>
6561
-
6562
- <Sidebar.Group>
6563
- <Sidebar.GroupLabel>Protect & Connect</Sidebar.GroupLabel>
6564
- <Sidebar.Menu>
6565
- <Sidebar.MenuButton icon={ShieldCheckIcon}>
6566
- Security
6567
- </Sidebar.MenuButton>
6568
- <Sidebar.MenuButton icon={LockIcon}>
6569
- Zero Trust
6570
- <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>
6571
- </Sidebar.MenuButton>
6572
- </Sidebar.Menu>
6573
- </Sidebar.Group>
6574
- </Sidebar.Content>
6575
-
6576
- <Sidebar.Footer>
6577
- <Sidebar.MenuButton icon={GearIcon}>
6578
- Manage account
6579
- </Sidebar.MenuButton>
6580
- </Sidebar.Footer>
6581
- </Sidebar>
6582
- <DemoMain />
6583
- </Sidebar.Provider>
6584
- </DemoContainer>
6585
- ```
6586
-
6587
- ```tsx
6588
- <DemoContainer>
6589
- <Sidebar.Provider
6484
+ <Sidebar.Provider contained
6590
6485
  defaultOpen
6591
6486
  resizable
6592
6487
  defaultWidth={240}
@@ -6600,7 +6495,6 @@ CollapsibleContent sub-component
6600
6495
  </Sidebar.Header>
6601
6496
  <Sidebar.Content>
6602
6497
  <Sidebar.Group>
6603
- <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>
6604
6498
  <Sidebar.Menu>
6605
6499
  <Sidebar.MenuButton icon={HouseIcon} active>
6606
6500
  Home
@@ -6620,7 +6514,7 @@ CollapsibleContent sub-component
6620
6514
  <Sidebar.ResizeHandle />
6621
6515
  </Sidebar>
6622
6516
  <DemoMain>
6623
- <p className="text-sm">Drag the sidebar edge to resize</p>
6517
+ <p>Drag the sidebar edge to resize</p>
6624
6518
  </DemoMain>
6625
6519
  </Sidebar.Provider>
6626
6520
  </DemoContainer>
@@ -6628,7 +6522,7 @@ CollapsibleContent sub-component
6628
6522
 
6629
6523
  ```tsx
6630
6524
  <DemoContainer>
6631
- <Sidebar.Provider defaultOpen side="right" className="min-h-0! h-full">
6525
+ <Sidebar.Provider contained defaultOpen side="right" className="min-h-0! h-full">
6632
6526
  <DemoMain />
6633
6527
  <Sidebar>
6634
6528
  <Sidebar.Content>
@@ -6650,6 +6544,246 @@ CollapsibleContent sub-component
6650
6544
  </DemoContainer>
6651
6545
  ```
6652
6546
 
6547
+ ```tsx
6548
+ <DemoContainer>
6549
+ <Sidebar.Provider contained defaultOpen className="min-h-0! h-full">
6550
+ <Sidebar>
6551
+ <Sidebar.Header>
6552
+ <button
6553
+ type="button"
6554
+ onClick={() =>
6555
+ setSurface((s) => (s === "account" ? "zone" : "account"))
6556
+ }
6557
+ 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"
6558
+ >
6559
+ <ArrowsLeftRightIcon className="size-4 shrink-0 text-kumo-brand" />
6560
+ <span className="flex-1 text-left font-semibold text-kumo-strong">
6561
+ {surface === "account" ? "Account Nav" : "Zone Nav"}
6562
+ </span>
6563
+ </button>
6564
+ </Sidebar.Header>
6565
+
6566
+ <Sidebar.SlidingViews
6567
+ activeKey={surface}
6568
+ direction={surface === "zone" ? "left" : "right"}
6569
+ >
6570
+ <Sidebar.SlidingView value="account">
6571
+ <Sidebar.Content>
6572
+ <Sidebar.Group>
6573
+ <Sidebar.GroupLabel>Account</Sidebar.GroupLabel>
6574
+ <Sidebar.Menu>
6575
+ <Sidebar.MenuButton icon={HouseIcon} active>
6576
+ Home
6577
+ </Sidebar.MenuButton>
6578
+ <Sidebar.MenuButton icon={UserIcon}>
6579
+ Members
6580
+ </Sidebar.MenuButton>
6581
+ <Sidebar.MenuButton icon={ChartBarIcon}>
6582
+ Analytics
6583
+ </Sidebar.MenuButton>
6584
+ <Sidebar.MenuButton icon={GearIcon}>
6585
+ Settings
6586
+ </Sidebar.MenuButton>
6587
+ </Sidebar.Menu>
6588
+ </Sidebar.Group>
6589
+ </Sidebar.Content>
6590
+ </Sidebar.SlidingView>
6591
+
6592
+ <Sidebar.SlidingView value="zone">
6593
+ <Sidebar.Content>
6594
+ <Sidebar.Group>
6595
+ <Sidebar.GroupLabel>Zone</Sidebar.GroupLabel>
6596
+ <Sidebar.Menu>
6597
+ <Sidebar.MenuButton icon={GlobeIcon} active>
6598
+ Overview
6599
+ </Sidebar.MenuButton>
6600
+ <Sidebar.MenuButton icon={ShieldCheckIcon}>
6601
+ Security
6602
+ </Sidebar.MenuButton>
6603
+ <Sidebar.MenuButton icon={LockIcon}>
6604
+ SSL/TLS
6605
+ </Sidebar.MenuButton>
6606
+ <Sidebar.MenuButton icon={DatabaseIcon}>
6607
+ Caching
6608
+ </Sidebar.MenuButton>
6609
+ </Sidebar.Menu>
6610
+ </Sidebar.Group>
6611
+ </Sidebar.Content>
6612
+ </Sidebar.SlidingView>
6613
+ </Sidebar.SlidingViews>
6614
+ </Sidebar>
6615
+ <DemoMain>
6616
+ <div className="flex flex-col items-center gap-2">
6617
+ <p className="font-medium text-kumo-default">
6618
+ Active: {surface === "account" ? "Account" : "Zone"} surface
6619
+ </p>
6620
+ <p>
6621
+ Click the header button to slide between views
6622
+ </p>
6623
+ </div>
6624
+ </DemoMain>
6625
+ </Sidebar.Provider>
6626
+ </DemoContainer>
6627
+ ```
6628
+
6629
+ ```tsx
6630
+ <DemoContainer>
6631
+ <Sidebar.Provider contained defaultOpen peekable className="min-h-0! h-full">
6632
+ <Sidebar>
6633
+ <Sidebar.Header>
6634
+ <AccountSwitcher />
6635
+ </Sidebar.Header>
6636
+ <Sidebar.SlidingViews
6637
+ activeKey={surface}
6638
+ direction={surface === "domain" ? "left" : "right"}
6639
+ >
6640
+ <Sidebar.SlidingView value="account">
6641
+ <Sidebar.Content>
6642
+ <Sidebar.Group>
6643
+ <Sidebar.Menu>
6644
+ <Sidebar.MenuButton
6645
+ icon={MagnifyingGlassIcon}
6646
+ tooltip="Search"
6647
+ className="ring ring-kumo-line group-data-[state=collapsed]/sidebar:ring-transparent"
6648
+ >
6649
+ Quick search&hellip;
6650
+ </Sidebar.MenuButton>
6651
+ </Sidebar.Menu>
6652
+ </Sidebar.Group>
6653
+ <Sidebar.Group>
6654
+ <Sidebar.Menu>
6655
+ <Sidebar.MenuButton icon={HouseIcon} active>
6656
+ Home
6657
+ </Sidebar.MenuButton>
6658
+ <Sidebar.MenuButton icon={ChartBarIcon}>
6659
+ Analytics & Logs
6660
+ </Sidebar.MenuButton>
6661
+ <Sidebar.MenuButton
6662
+ icon={GlobeIcon}
6663
+ onClick={() => setSurface("domain")}
6664
+ >
6665
+ Domains
6666
+ </Sidebar.MenuButton>
6667
+ </Sidebar.Menu>
6668
+ </Sidebar.Group>
6669
+
6670
+ <Sidebar.Group>
6671
+ <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>
6672
+ <Sidebar.Menu>
6673
+ <Sidebar.MenuItem>
6674
+ <Sidebar.Collapsible defaultOpen>
6675
+ <Sidebar.CollapsibleTrigger
6676
+ render={
6677
+ <Sidebar.MenuButton icon={CodeIcon}>
6678
+ Compute
6679
+ <Sidebar.MenuChevron />
6680
+ </Sidebar.MenuButton>
6681
+ }
6682
+ />
6683
+ <Sidebar.CollapsibleContent>
6684
+ <Sidebar.MenuSub>
6685
+ <Sidebar.MenuSubItem>
6686
+ <Sidebar.Collapsible>
6687
+ <Sidebar.CollapsibleTrigger
6688
+ render={
6689
+ <Sidebar.MenuSubButton>
6690
+ Workers & Pages
6691
+ <Sidebar.MenuChevron />
6692
+ </Sidebar.MenuSubButton>
6693
+ }
6694
+ />
6695
+ <Sidebar.CollapsibleContent>
6696
+ <Sidebar.MenuSub>
6697
+ <Sidebar.MenuSubButton>
6698
+ Overview
6699
+ </Sidebar.MenuSubButton>
6700
+ <Sidebar.MenuSubButton>
6701
+ Workers
6702
+ </Sidebar.MenuSubButton>
6703
+ <Sidebar.MenuSubButton>
6704
+ Pages
6705
+ </Sidebar.MenuSubButton>
6706
+ </Sidebar.MenuSub>
6707
+ </Sidebar.CollapsibleContent>
6708
+ </Sidebar.Collapsible>
6709
+ </Sidebar.MenuSubItem>
6710
+ <Sidebar.MenuSubButton>
6711
+ Durable Objects
6712
+ </Sidebar.MenuSubButton>
6713
+ <Sidebar.MenuSubButton>
6714
+ Containers
6715
+ <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>
6716
+ </Sidebar.MenuSubButton>
6717
+ </Sidebar.MenuSub>
6718
+ </Sidebar.CollapsibleContent>
6719
+ </Sidebar.Collapsible>
6720
+ </Sidebar.MenuItem>
6721
+ <Sidebar.MenuButton icon={DatabaseIcon}>
6722
+ Storage
6723
+ </Sidebar.MenuButton>
6724
+ </Sidebar.Menu>
6725
+ </Sidebar.Group>
6726
+
6727
+ <Sidebar.Group>
6728
+ <Sidebar.GroupLabel>Protect & Connect</Sidebar.GroupLabel>
6729
+ <Sidebar.Menu>
6730
+ <Sidebar.MenuButton icon={ShieldCheckIcon}>
6731
+ Security
6732
+ </Sidebar.MenuButton>
6733
+ <Sidebar.MenuButton icon={LockIcon}>
6734
+ Zero Trust
6735
+ <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>
6736
+ </Sidebar.MenuButton>
6737
+ </Sidebar.Menu>
6738
+ </Sidebar.Group>
6739
+ </Sidebar.Content>
6740
+ </Sidebar.SlidingView>
6741
+
6742
+ <Sidebar.SlidingView value="domain">
6743
+ <Sidebar.Content>
6744
+ <Sidebar.Group>
6745
+ <Sidebar.Menu>
6746
+ <Sidebar.MenuButton
6747
+ icon={ArrowLeftIcon}
6748
+ onClick={() => setSurface("account")}
6749
+ >
6750
+ Back
6751
+ </Sidebar.MenuButton>
6752
+ </Sidebar.Menu>
6753
+ </Sidebar.Group>
6754
+ <Sidebar.Group>
6755
+ <Sidebar.GroupLabel>example.com</Sidebar.GroupLabel>
6756
+ <Sidebar.Menu>
6757
+ <Sidebar.MenuButton icon={GlobeIcon} active>
6758
+ Overview
6759
+ </Sidebar.MenuButton>
6760
+ <Sidebar.MenuButton icon={ShieldCheckIcon}>
6761
+ Security
6762
+ </Sidebar.MenuButton>
6763
+ <Sidebar.MenuButton icon={LockIcon}>
6764
+ SSL/TLS
6765
+ </Sidebar.MenuButton>
6766
+ <Sidebar.MenuButton icon={ChartBarIcon}>
6767
+ Analytics
6768
+ </Sidebar.MenuButton>
6769
+ <Sidebar.MenuButton icon={DatabaseIcon}>
6770
+ Caching
6771
+ </Sidebar.MenuButton>
6772
+ </Sidebar.Menu>
6773
+ </Sidebar.Group>
6774
+ </Sidebar.Content>
6775
+ </Sidebar.SlidingView>
6776
+ </Sidebar.SlidingViews>
6777
+
6778
+ <Sidebar.Footer>
6779
+ <Sidebar.Trigger />
6780
+ </Sidebar.Footer>
6781
+ </Sidebar>
6782
+ <DemoMain />
6783
+ </Sidebar.Provider>
6784
+ </DemoContainer>
6785
+ ```
6786
+
6653
6787
 
6654
6788
  ---
6655
6789
 
@@ -7825,7 +7959,7 @@ Toasty — toast notification provider and viewport. Renders a `Toast.Provider`
7825
7959
 
7826
7960
  **Colors (kumo tokens used):**
7827
7961
 
7828
- `bg-kumo-base`, `bg-kumo-contrast`, `bg-kumo-control`, `bg-kumo-danger`, `bg-kumo-fill-hover`, `bg-kumo-info`, `bg-kumo-success`, `bg-kumo-warning`, `border-kumo-fill`, `ring-kumo-danger`, `ring-kumo-hairline`, `ring-kumo-info`, `ring-kumo-line`, `ring-kumo-success`, `ring-kumo-warning`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-info`, `text-kumo-subtle`, `text-kumo-success`, `text-kumo-warning`
7962
+ `bg-kumo-base`, `bg-kumo-contrast`, `bg-kumo-control`, `bg-kumo-danger-tint`, `bg-kumo-fill-hover`, `bg-kumo-info-tint`, `bg-kumo-success-tint`, `bg-kumo-warning-tint`, `border-kumo-fill`, `ring-kumo-danger`, `ring-kumo-hairline`, `ring-kumo-info`, `ring-kumo-line`, `ring-kumo-success`, `ring-kumo-warning`, `text-kumo-danger`, `text-kumo-default`, `text-kumo-info`, `text-kumo-subtle`, `text-kumo-success`, `text-kumo-warning`
7829
7963
 
7830
7964
  **Styling:**
7831
7965