@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
@@ -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={countries}\n label=\"Country\"\n description=\"Start typing to filter countries\"\n filter={(item: Country, query: string) =>\n item.label.toLowerCase().includes(query.toLowerCase())\n }\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>",
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={(item: Country, query: string) =>\n item.label.toLowerCase().includes(query.toLowerCase())\n }\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>",
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>"
@@ -266,13 +266,12 @@
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=\"green\">Green</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=\"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",
276
275
  "bg-kumo-badge-inverted",
277
276
  "bg-kumo-badge-neutral",
278
277
  "bg-kumo-badge-orange",
@@ -283,6 +282,7 @@
283
282
  "bg-kumo-danger-tint",
284
283
  "bg-kumo-fill",
285
284
  "bg-kumo-info-tint",
285
+ "bg-kumo-success",
286
286
  "bg-kumo-success-tint",
287
287
  "bg-kumo-warning-tint",
288
288
  "border-kumo-brand",
@@ -307,6 +307,19 @@
307
307
  "importPath": "@cloudflare/kumo",
308
308
  "category": "Feedback",
309
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
+ },
310
323
  "icon": {
311
324
  "type": "ReactNode",
312
325
  "optional": true,
@@ -338,35 +351,34 @@
338
351
  "variant": {
339
352
  "type": "enum",
340
353
  "optional": true,
341
- "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",
342
355
  "values": [
343
356
  "default",
344
357
  "alert",
345
- "error"
358
+ "error",
359
+ "secondary"
346
360
  ],
347
361
  "descriptions": {
348
362
  "default": "Informational banner for general messages",
349
363
  "alert": "Warning banner for cautionary messages",
350
- "error": "Error banner for critical issues"
364
+ "error": "Error banner for critical issues",
365
+ "secondary": "Neutral banner for secondary messages"
351
366
  },
352
367
  "classes": {
353
- "default": "bg-kumo-info-tint/30 border-kumo-info/50 text-kumo-info",
354
- "alert": "bg-kumo-warning-tint/15 border-kumo-warning/50 text-kumo-warning",
355
- "error": "bg-kumo-danger-tint/15 border-kumo-danger/50 text-kumo-danger"
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"
356
372
  },
357
373
  "default": "default"
358
- },
359
- "className": {
360
- "type": "string",
361
- "optional": true,
362
- "description": "Additional CSS classes merged via `cn()`."
363
374
  }
364
375
  },
365
376
  "examples": [
366
- "<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>",
367
378
  "<Banner\n icon={<Info weight=\"fill\" />}\n title=\"Update available\"\n description=\"A new version is ready to install.\"\n />",
368
379
  "<Banner\n icon={<Warning weight=\"fill\" />}\n variant=\"alert\"\n title=\"Session expiring\"\n description=\"Your session will expire in 5 minutes.\"\n />",
369
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 />",
370
382
  "<Banner\n icon={<Info weight=\"fill\" />}\n title=\"Your changes have been saved.\"\n />",
371
383
  "<Banner\n icon={<Warning weight=\"fill\" />}\n variant=\"alert\"\n title=\"Review required\"\n description=\"Please review your billing information before proceeding.\"\n />",
372
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 />",
@@ -375,17 +387,16 @@
375
387
  "<Banner icon={<Info />}>This is a simple banner using children.</Banner>"
376
388
  ],
377
389
  "colors": [
390
+ "bg-kumo-banner-info",
391
+ "bg-kumo-banner-warning",
392
+ "bg-kumo-contrast",
378
393
  "bg-kumo-danger-tint",
379
- "bg-kumo-info-tint",
380
- "bg-kumo-warning-tint",
381
- "border-kumo-danger",
382
- "border-kumo-info",
383
- "border-kumo-warning",
384
394
  "text-kumo-danger",
385
395
  "text-kumo-info",
396
+ "text-kumo-subtle",
386
397
  "text-kumo-warning"
387
398
  ],
388
- "baseStyles": "flex w-full items-start gap-3 rounded-lg border px-4 py-3 text-base"
399
+ "baseStyles": "flex w-full items-start gap-3 rounded-lg px-4 py-3 text-base"
389
400
  },
390
401
  "Breadcrumbs": {
391
402
  "name": "Breadcrumbs",
@@ -4944,7 +4955,7 @@
4944
4955
  "Sidebar": {
4945
4956
  "name": "Sidebar",
4946
4957
  "type": "component",
4947
- "description": "Sidebar — responsive navigation panel with expand/collapse support. Compound component: `Sidebar` (root `<aside>`), `.Provider`, `.Header`, `.Content`, `.Footer`, `.Group`, `.GroupLabel`, `.GroupContent`, `.Menu`, `.MenuItem`, `.MenuButton`, `.MenuAction`, `.MenuBadge`, `.MenuSub`, `.MenuSubItem`, `.MenuSubButton`, `.Separator`, `.Input`, `.Trigger`, `.Rail`, `.MenuChevron`, `.Collapsible`, `.CollapsibleTrigger`, `.CollapsibleContent`. Built on `@base-ui/react/collapsible` + `@base-ui/react/dialog`.",
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`.",
4948
4959
  "importPath": "@cloudflare/kumo",
4949
4960
  "category": "Other",
4950
4961
  "props": {
@@ -5023,6 +5034,21 @@
5023
5034
  "optional": true,
5024
5035
  "description": "Maximum width in pixels when resizing."
5025
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
+ },
5026
5052
  "children": {
5027
5053
  "type": "ReactNode",
5028
5054
  "optional": true,
@@ -5035,24 +5061,25 @@
5035
5061
  }
5036
5062
  },
5037
5063
  "examples": [
5038
- "<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GlobeIcon}>\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuItem>\n <Sidebar.Collapsible defaultOpen>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuButton icon={CodeIcon}>\n Compute\n <Sidebar.MenuChevron />\n </Sidebar.MenuButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubButton>\n Workers & Pages\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Durable Objects\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuItem>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar>\n <DemoMain />\n </Sidebar.Provider>\n </DemoContainer>",
5039
- "<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Content>\n {/* GroupContent is required for collapsible groups (provides grid-rows animation) */}\n <Sidebar.Group collapsible defaultOpen>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GlobeIcon}>\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n\n <Sidebar.Group collapsible defaultOpen>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={CodeIcon}>\n Compute\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n\n <Sidebar.Group collapsible defaultOpen={false}>\n <Sidebar.GroupLabel>Protect & Connect</Sidebar.GroupLabel>\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n Zero Trust\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar>\n <DemoMain />\n </Sidebar.Provider>\n </DemoContainer>",
5040
- "<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <BrandLogo />\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} tooltip=\"Home\" active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon} tooltip=\"Analytics\">\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={CodeIcon} tooltip=\"Compute\">\n Compute\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon} tooltip=\"Storage\">\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain>\n <ToggleButton />\n <p className=\"text-sm\">\n Click the button or the sidebar trigger to toggle\n </p>\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
5041
- "<DemoContainer>\n <Sidebar.Provider defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <AccountSwitcher />\n </Sidebar.Header>\n\n <Sidebar.Content>\n <div className=\"px-1 pb-2\">\n <Sidebar.Input placeholder=\"Quick search...\" shortcut=\"⌘K\" />\n </div>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics & Logs\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GlobeIcon}>\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Separator />\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuItem>\n <Sidebar.Collapsible defaultOpen>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuButton icon={CodeIcon}>\n Compute\n <Sidebar.MenuChevron />\n </Sidebar.MenuButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubButton>\n Workers & Pages\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Durable Objects\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Containers\n <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuItem>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Protect & Connect</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n Zero Trust\n <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n\n <Sidebar.Footer>\n <Sidebar.MenuButton icon={GearIcon}>\n Manage account\n </Sidebar.MenuButton>\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain />\n </Sidebar.Provider>\n </DemoContainer>",
5042
- "<DemoContainer>\n <Sidebar.Provider\n defaultOpen\n resizable\n defaultWidth={240}\n minWidth={180}\n maxWidth={400}\n className=\"min-h-0! h-full\"\n >\n <Sidebar>\n <Sidebar.Header>\n <BrandLogo />\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n <Sidebar.ResizeHandle />\n </Sidebar>\n <DemoMain>\n <p className=\"text-sm\">Drag the sidebar edge to resize</p>\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
5043
- "<DemoContainer>\n <Sidebar.Provider defaultOpen side=\"right\" className=\"min-h-0! h-full\">\n <DemoMain />\n <Sidebar>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Details</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={GearIcon} active>\n Properties\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Metrics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={BellIcon}>Alerts</Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar>\n </Sidebar.Provider>\n </DemoContainer>"
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&hellip;\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>"
5044
5071
  ],
5045
5072
  "colors": [
5046
5073
  "bg-kumo-base",
5047
5074
  "bg-kumo-brand",
5048
5075
  "bg-kumo-hairline",
5049
- "bg-kumo-overlay",
5076
+ "bg-kumo-line",
5050
5077
  "bg-kumo-recessed",
5051
5078
  "bg-kumo-tint",
5052
- "border-kumo-hairline",
5079
+ "border-kumo-line",
5053
5080
  "ring-kumo-brand",
5054
- "ring-kumo-hairline",
5055
5081
  "text-kumo-default",
5082
+ "text-kumo-strong",
5056
5083
  "text-kumo-subtle"
5057
5084
  ],
5058
5085
  "subComponents": {
@@ -5096,6 +5123,18 @@
5096
5123
  "type": "number",
5097
5124
  "optional": true
5098
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
+ },
5099
5138
  "children": {
5100
5139
  "type": "ReactNode",
5101
5140
  "required": true
@@ -5110,16 +5149,8 @@
5110
5149
  "name": "Header",
5111
5150
  "description": "Header sub-component",
5112
5151
  "props": {
5113
- "collapsible": {
5114
- "type": "boolean",
5115
- "optional": true
5116
- },
5117
- "defaultOpen": {
5118
- "type": "boolean",
5119
- "optional": true
5120
- },
5121
- "open": {
5122
- "type": "boolean",
5152
+ "icon": {
5153
+ "type": "React.ComponentType<{ className?: string",
5123
5154
  "optional": true
5124
5155
  }
5125
5156
  }
@@ -5128,16 +5159,8 @@
5128
5159
  "name": "Content",
5129
5160
  "description": "Content sub-component",
5130
5161
  "props": {
5131
- "collapsible": {
5132
- "type": "boolean",
5133
- "optional": true
5134
- },
5135
- "defaultOpen": {
5136
- "type": "boolean",
5137
- "optional": true
5138
- },
5139
- "open": {
5140
- "type": "boolean",
5162
+ "icon": {
5163
+ "type": "React.ComponentType<{ className?: string",
5141
5164
  "optional": true
5142
5165
  }
5143
5166
  }
@@ -5146,16 +5169,8 @@
5146
5169
  "name": "Footer",
5147
5170
  "description": "Footer sub-component",
5148
5171
  "props": {
5149
- "collapsible": {
5150
- "type": "boolean",
5151
- "optional": true
5152
- },
5153
- "defaultOpen": {
5154
- "type": "boolean",
5155
- "optional": true
5156
- },
5157
- "open": {
5158
- "type": "boolean",
5172
+ "icon": {
5173
+ "type": "React.ComponentType<{ className?: string",
5159
5174
  "optional": true
5160
5175
  }
5161
5176
  }
@@ -5164,16 +5179,8 @@
5164
5179
  "name": "Group",
5165
5180
  "description": "Group sub-component",
5166
5181
  "props": {
5167
- "collapsible": {
5168
- "type": "boolean",
5169
- "optional": true
5170
- },
5171
- "defaultOpen": {
5172
- "type": "boolean",
5173
- "optional": true
5174
- },
5175
- "open": {
5176
- "type": "boolean",
5182
+ "icon": {
5183
+ "type": "React.ComponentType<{ className?: string",
5177
5184
  "optional": true
5178
5185
  }
5179
5186
  }
@@ -5188,16 +5195,6 @@
5188
5195
  }
5189
5196
  }
5190
5197
  },
5191
- "GroupContent": {
5192
- "name": "GroupContent",
5193
- "description": "GroupContent sub-component",
5194
- "props": {
5195
- "icon": {
5196
- "type": "React.ComponentType<{ className?: string",
5197
- "optional": true
5198
- }
5199
- }
5200
- },
5201
5198
  "Menu": {
5202
5199
  "name": "Menu",
5203
5200
  "description": "Menu sub-component",
@@ -5228,20 +5225,6 @@
5228
5225
  }
5229
5226
  }
5230
5227
  },
5231
- "MenuAction": {
5232
- "name": "MenuAction",
5233
- "description": "MenuAction sub-component",
5234
- "props": {
5235
- "active": {
5236
- "type": "boolean",
5237
- "optional": true
5238
- },
5239
- "href": {
5240
- "type": "string",
5241
- "optional": true
5242
- }
5243
- }
5244
- },
5245
5228
  "MenuBadge": {
5246
5229
  "name": "MenuBadge",
5247
5230
  "description": "MenuBadge sub-component",
@@ -5302,44 +5285,57 @@
5302
5285
  "name": "Separator",
5303
5286
  "description": "Separator sub-component",
5304
5287
  "props": {
5305
- "placeholder": {
5306
- "type": "string",
5288
+ "defaultOpen": {
5289
+ "type": "boolean",
5307
5290
  "optional": true
5308
5291
  },
5309
- "shortcut": {
5310
- "type": "string",
5292
+ "open": {
5293
+ "type": "boolean",
5311
5294
  "optional": true
5312
5295
  }
5313
5296
  }
5314
5297
  },
5315
- "Input": {
5316
- "name": "Input",
5317
- "description": "Input sub-component",
5298
+ "Trigger": {
5299
+ "name": "Trigger",
5300
+ "description": "Trigger sub-component",
5318
5301
  "props": {
5319
- "placeholder": {
5320
- "type": "string",
5302
+ "defaultOpen": {
5303
+ "type": "boolean",
5321
5304
  "optional": true
5322
5305
  },
5323
- "shortcut": {
5324
- "type": "string",
5306
+ "open": {
5307
+ "type": "boolean",
5325
5308
  "optional": true
5326
5309
  }
5327
5310
  }
5328
5311
  },
5329
- "Trigger": {
5330
- "name": "Trigger",
5331
- "description": "Trigger sub-component",
5332
- "props": {}
5333
- },
5334
5312
  "Rail": {
5335
5313
  "name": "Rail",
5336
5314
  "description": "Rail sub-component",
5337
- "props": {}
5315
+ "props": {
5316
+ "defaultOpen": {
5317
+ "type": "boolean",
5318
+ "optional": true
5319
+ },
5320
+ "open": {
5321
+ "type": "boolean",
5322
+ "optional": true
5323
+ }
5324
+ }
5338
5325
  },
5339
5326
  "ResizeHandle": {
5340
5327
  "name": "ResizeHandle",
5341
5328
  "description": "ResizeHandle sub-component",
5342
- "props": {}
5329
+ "props": {
5330
+ "defaultOpen": {
5331
+ "type": "boolean",
5332
+ "optional": true
5333
+ },
5334
+ "open": {
5335
+ "type": "boolean",
5336
+ "optional": true
5337
+ }
5338
+ }
5343
5339
  },
5344
5340
  "MenuChevron": {
5345
5341
  "name": "MenuChevron",
@@ -5354,23 +5350,70 @@
5354
5350
  "Collapsible": {
5355
5351
  "name": "Collapsible",
5356
5352
  "description": "Collapsible sub-component",
5357
- "props": {}
5353
+ "props": {
5354
+ "defaultOpen": {
5355
+ "type": "boolean",
5356
+ "optional": true
5357
+ },
5358
+ "open": {
5359
+ "type": "boolean",
5360
+ "optional": true
5361
+ }
5362
+ }
5358
5363
  },
5359
5364
  "CollapsibleTrigger": {
5360
5365
  "name": "CollapsibleTrigger",
5361
5366
  "description": "CollapsibleTrigger sub-component",
5362
- "props": {}
5367
+ "props": {
5368
+ "render": {
5369
+ "type": "React.ReactElement",
5370
+ "required": true
5371
+ }
5372
+ }
5363
5373
  },
5364
5374
  "CollapsibleContent": {
5365
5375
  "name": "CollapsibleContent",
5366
5376
  "description": "CollapsibleContent sub-component",
5367
- "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
+ }
5368
5411
  }
5369
5412
  },
5370
5413
  "styling": {
5371
5414
  "width": {
5372
- "expanded": "16rem",
5373
- "icon": "3rem"
5415
+ "expanded": "16.25rem",
5416
+ "icon": "57px"
5374
5417
  },
5375
5418
  "mobile": {
5376
5419
  "breakpoint": 768
@@ -6146,11 +6189,11 @@
6146
6189
  "bg-kumo-base",
6147
6190
  "bg-kumo-contrast",
6148
6191
  "bg-kumo-control",
6149
- "bg-kumo-danger",
6192
+ "bg-kumo-danger-tint",
6150
6193
  "bg-kumo-fill-hover",
6151
- "bg-kumo-info",
6152
- "bg-kumo-success",
6153
- "bg-kumo-warning",
6194
+ "bg-kumo-info-tint",
6195
+ "bg-kumo-success-tint",
6196
+ "bg-kumo-warning-tint",
6154
6197
  "border-kumo-fill",
6155
6198
  "ring-kumo-danger",
6156
6199
  "ring-kumo-hairline",