@cloudflare/kumo 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/CHANGELOG.md +510 -0
  2. package/LICENSE +21 -0
  3. package/README.md +521 -0
  4. package/ai/component-registry.json +3754 -0
  5. package/ai/component-registry.md +4022 -0
  6. package/ai/schemas.ts +594 -0
  7. package/dist/badge-Dc99vsfo.js +51 -0
  8. package/dist/badge-Dc99vsfo.js.map +1 -0
  9. package/dist/banner-4fkH6Sbt.js +51 -0
  10. package/dist/banner-4fkH6Sbt.js.map +1 -0
  11. package/dist/breadcrumbs-B5SY2CWj.js +132 -0
  12. package/dist/breadcrumbs-B5SY2CWj.js.map +1 -0
  13. package/dist/button-E2-hZMZE.js +191 -0
  14. package/dist/button-E2-hZMZE.js.map +1 -0
  15. package/dist/catalog.js +229 -0
  16. package/dist/catalog.js.map +1 -0
  17. package/dist/checkbox-BexIU_lZ.js +224 -0
  18. package/dist/checkbox-BexIU_lZ.js.map +1 -0
  19. package/dist/clipboard-text-BFHWMjmr.js +108 -0
  20. package/dist/clipboard-text-BFHWMjmr.js.map +1 -0
  21. package/dist/cn-Bhsu1vx2.js +26 -0
  22. package/dist/cn-Bhsu1vx2.js.map +1 -0
  23. package/dist/code-T2wPDiM0.js +60 -0
  24. package/dist/code-T2wPDiM0.js.map +1 -0
  25. package/dist/collapsible-OBNkTO48.js +56 -0
  26. package/dist/collapsible-OBNkTO48.js.map +1 -0
  27. package/dist/combobox-Dld0kS0U.js +228 -0
  28. package/dist/combobox-Dld0kS0U.js.map +1 -0
  29. package/dist/command-line/cli.js +764 -0
  30. package/dist/command-line/commands/add.js +220 -0
  31. package/dist/command-line/commands/blocks.js +61 -0
  32. package/dist/command-line/commands/doc.js +167 -0
  33. package/dist/command-line/commands/init.js +95 -0
  34. package/dist/command-line/commands/ls.js +53 -0
  35. package/dist/command-palette-BgQ680BG.js +393 -0
  36. package/dist/command-palette-BgQ680BG.js.map +1 -0
  37. package/dist/components/badge.js +7 -0
  38. package/dist/components/badge.js.map +1 -0
  39. package/dist/components/banner.js +7 -0
  40. package/dist/components/banner.js.map +1 -0
  41. package/dist/components/breadcrumbs.js +9 -0
  42. package/dist/components/breadcrumbs.js.map +1 -0
  43. package/dist/components/button.js +9 -0
  44. package/dist/components/button.js.map +1 -0
  45. package/dist/components/checkbox.js +8 -0
  46. package/dist/components/checkbox.js.map +1 -0
  47. package/dist/components/clipboard-text.js +6 -0
  48. package/dist/components/clipboard-text.js.map +1 -0
  49. package/dist/components/code.js +7 -0
  50. package/dist/components/code.js.map +1 -0
  51. package/dist/components/collapsible.js +6 -0
  52. package/dist/components/collapsible.js.map +1 -0
  53. package/dist/components/combobox.js +6 -0
  54. package/dist/components/combobox.js.map +1 -0
  55. package/dist/components/command-palette.js +8 -0
  56. package/dist/components/command-palette.js.map +1 -0
  57. package/dist/components/date-range-picker.js +6 -0
  58. package/dist/components/date-range-picker.js.map +1 -0
  59. package/dist/components/dialog.js +11 -0
  60. package/dist/components/dialog.js.map +1 -0
  61. package/dist/components/dropdown.js +6 -0
  62. package/dist/components/dropdown.js.map +1 -0
  63. package/dist/components/empty.js +9 -0
  64. package/dist/components/empty.js.map +1 -0
  65. package/dist/components/field.js +9 -0
  66. package/dist/components/field.js.map +1 -0
  67. package/dist/components/grid.js +11 -0
  68. package/dist/components/grid.js.map +1 -0
  69. package/dist/components/input.js +11 -0
  70. package/dist/components/input.js.map +1 -0
  71. package/dist/components/label.js +10 -0
  72. package/dist/components/label.js.map +1 -0
  73. package/dist/components/layer-card.js +6 -0
  74. package/dist/components/layer-card.js.map +1 -0
  75. package/dist/components/link.js +9 -0
  76. package/dist/components/link.js.map +1 -0
  77. package/dist/components/loader.js +8 -0
  78. package/dist/components/loader.js.map +1 -0
  79. package/dist/components/menubar.js +7 -0
  80. package/dist/components/menubar.js.map +1 -0
  81. package/dist/components/meter.js +6 -0
  82. package/dist/components/meter.js.map +1 -0
  83. package/dist/components/pagination.js +6 -0
  84. package/dist/components/pagination.js.map +1 -0
  85. package/dist/components/popover.js +14 -0
  86. package/dist/components/popover.js.map +1 -0
  87. package/dist/components/radio.js +10 -0
  88. package/dist/components/radio.js.map +1 -0
  89. package/dist/components/select.js +6 -0
  90. package/dist/components/select.js.map +1 -0
  91. package/dist/components/sensitive-input.js +8 -0
  92. package/dist/components/sensitive-input.js.map +1 -0
  93. package/dist/components/surface.js +6 -0
  94. package/dist/components/surface.js.map +1 -0
  95. package/dist/components/switch.js +8 -0
  96. package/dist/components/switch.js.map +1 -0
  97. package/dist/components/table.js +8 -0
  98. package/dist/components/table.js.map +1 -0
  99. package/dist/components/tabs.js +6 -0
  100. package/dist/components/tabs.js.map +1 -0
  101. package/dist/components/text.js +6 -0
  102. package/dist/components/text.js.map +1 -0
  103. package/dist/components/toast.js +8 -0
  104. package/dist/components/toast.js.map +1 -0
  105. package/dist/components/tooltip.js +7 -0
  106. package/dist/components/tooltip.js.map +1 -0
  107. package/dist/date-range-picker-CbKEQ9pi.js +408 -0
  108. package/dist/date-range-picker-CbKEQ9pi.js.map +1 -0
  109. package/dist/dialog-B1TaN0oR.js +77 -0
  110. package/dist/dialog-B1TaN0oR.js.map +1 -0
  111. package/dist/dropdown-D0rhYKeG.js +263 -0
  112. package/dist/dropdown-D0rhYKeG.js.map +1 -0
  113. package/dist/empty-DzCqjea-.js +93 -0
  114. package/dist/empty-DzCqjea-.js.map +1 -0
  115. package/dist/field-V3J0Ql_V.js +71 -0
  116. package/dist/field-V3J0Ql_V.js.map +1 -0
  117. package/dist/grid-DKajRHh8.js +127 -0
  118. package/dist/grid-DKajRHh8.js.map +1 -0
  119. package/dist/index.js +125 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/input-Dqvc2AB_.js +109 -0
  122. package/dist/input-Dqvc2AB_.js.map +1 -0
  123. package/dist/input-area-B9qajxvZ.js +57 -0
  124. package/dist/input-area-B9qajxvZ.js.map +1 -0
  125. package/dist/input-group-Bl6tgD5-.js +111 -0
  126. package/dist/input-group-Bl6tgD5-.js.map +1 -0
  127. package/dist/label-87HQArUG.js +50 -0
  128. package/dist/label-87HQArUG.js.map +1 -0
  129. package/dist/layer-card-C8j5Hkkj.js +44 -0
  130. package/dist/layer-card-C8j5Hkkj.js.map +1 -0
  131. package/dist/link-6TIZ4JIw.js +73 -0
  132. package/dist/link-6TIZ4JIw.js.map +1 -0
  133. package/dist/link-provider-DPBGo-0n.js +22 -0
  134. package/dist/link-provider-DPBGo-0n.js.map +1 -0
  135. package/dist/loader-DHGMYlC6.js +105 -0
  136. package/dist/loader-DHGMYlC6.js.map +1 -0
  137. package/dist/menubar-DLwLRFB1.js +92 -0
  138. package/dist/menubar-DLwLRFB1.js.map +1 -0
  139. package/dist/meter-DKUuvXxS.js +51 -0
  140. package/dist/meter-DKUuvXxS.js.map +1 -0
  141. package/dist/pagination-C4HQqodz.js +99 -0
  142. package/dist/pagination-C4HQqodz.js.map +1 -0
  143. package/dist/popover-DhdIqrP7.js +178 -0
  144. package/dist/popover-DhdIqrP7.js.map +1 -0
  145. package/dist/primitives/accordion.js +6 -0
  146. package/dist/primitives/accordion.js.map +1 -0
  147. package/dist/primitives/alert-dialog.js +6 -0
  148. package/dist/primitives/alert-dialog.js.map +1 -0
  149. package/dist/primitives/autocomplete.js +6 -0
  150. package/dist/primitives/autocomplete.js.map +1 -0
  151. package/dist/primitives/avatar.js +6 -0
  152. package/dist/primitives/avatar.js.map +1 -0
  153. package/dist/primitives/button.js +6 -0
  154. package/dist/primitives/button.js.map +1 -0
  155. package/dist/primitives/checkbox-group.js +6 -0
  156. package/dist/primitives/checkbox-group.js.map +1 -0
  157. package/dist/primitives/checkbox.js +6 -0
  158. package/dist/primitives/checkbox.js.map +1 -0
  159. package/dist/primitives/collapsible.js +6 -0
  160. package/dist/primitives/collapsible.js.map +1 -0
  161. package/dist/primitives/combobox.js +6 -0
  162. package/dist/primitives/combobox.js.map +1 -0
  163. package/dist/primitives/context-menu.js +6 -0
  164. package/dist/primitives/context-menu.js.map +1 -0
  165. package/dist/primitives/dialog.js +6 -0
  166. package/dist/primitives/dialog.js.map +1 -0
  167. package/dist/primitives/direction-provider.js +7 -0
  168. package/dist/primitives/direction-provider.js.map +1 -0
  169. package/dist/primitives/field.js +6 -0
  170. package/dist/primitives/field.js.map +1 -0
  171. package/dist/primitives/fieldset.js +6 -0
  172. package/dist/primitives/fieldset.js.map +1 -0
  173. package/dist/primitives/form.js +6 -0
  174. package/dist/primitives/form.js.map +1 -0
  175. package/dist/primitives/input.js +6 -0
  176. package/dist/primitives/input.js.map +1 -0
  177. package/dist/primitives/menu.js +6 -0
  178. package/dist/primitives/menu.js.map +1 -0
  179. package/dist/primitives/menubar.js +6 -0
  180. package/dist/primitives/menubar.js.map +1 -0
  181. package/dist/primitives/meter.js +6 -0
  182. package/dist/primitives/meter.js.map +1 -0
  183. package/dist/primitives/navigation-menu.js +6 -0
  184. package/dist/primitives/navigation-menu.js.map +1 -0
  185. package/dist/primitives/number-field.js +6 -0
  186. package/dist/primitives/number-field.js.map +1 -0
  187. package/dist/primitives/popover.js +6 -0
  188. package/dist/primitives/popover.js.map +1 -0
  189. package/dist/primitives/preview-card.js +6 -0
  190. package/dist/primitives/preview-card.js.map +1 -0
  191. package/dist/primitives/progress.js +6 -0
  192. package/dist/primitives/progress.js.map +1 -0
  193. package/dist/primitives/radio-group.js +6 -0
  194. package/dist/primitives/radio-group.js.map +1 -0
  195. package/dist/primitives/radio.js +6 -0
  196. package/dist/primitives/radio.js.map +1 -0
  197. package/dist/primitives/scroll-area.js +6 -0
  198. package/dist/primitives/scroll-area.js.map +1 -0
  199. package/dist/primitives/select.js +6 -0
  200. package/dist/primitives/select.js.map +1 -0
  201. package/dist/primitives/separator.js +6 -0
  202. package/dist/primitives/separator.js.map +1 -0
  203. package/dist/primitives/slider.js +6 -0
  204. package/dist/primitives/slider.js.map +1 -0
  205. package/dist/primitives/switch.js +6 -0
  206. package/dist/primitives/switch.js.map +1 -0
  207. package/dist/primitives/tabs.js +6 -0
  208. package/dist/primitives/tabs.js.map +1 -0
  209. package/dist/primitives/toast.js +6 -0
  210. package/dist/primitives/toast.js.map +1 -0
  211. package/dist/primitives/toggle-group.js +6 -0
  212. package/dist/primitives/toggle-group.js.map +1 -0
  213. package/dist/primitives/toggle.js +6 -0
  214. package/dist/primitives/toggle.js.map +1 -0
  215. package/dist/primitives/toolbar.js +6 -0
  216. package/dist/primitives/toolbar.js.map +1 -0
  217. package/dist/primitives/tooltip.js +6 -0
  218. package/dist/primitives/tooltip.js.map +1 -0
  219. package/dist/primitives.js +43 -0
  220. package/dist/primitives.js.map +1 -0
  221. package/dist/radio-BVAG7hNp.js +125 -0
  222. package/dist/radio-BVAG7hNp.js.map +1 -0
  223. package/dist/registry.js +2 -0
  224. package/dist/registry.js.map +1 -0
  225. package/dist/schemas-BSdA0fz-.js +3210 -0
  226. package/dist/schemas-BSdA0fz-.js.map +1 -0
  227. package/dist/select-B5Vb3zou.js +122 -0
  228. package/dist/select-B5Vb3zou.js.map +1 -0
  229. package/dist/sensitive-input-D5HCV04N.js +258 -0
  230. package/dist/sensitive-input-D5HCV04N.js.map +1 -0
  231. package/dist/skeleton-line-CtpS1u1J.js +28 -0
  232. package/dist/skeleton-line-CtpS1u1J.js.map +1 -0
  233. package/dist/src/blocks/page-header/index.d.ts +2 -0
  234. package/dist/src/blocks/page-header/index.d.ts.map +1 -0
  235. package/dist/src/blocks/page-header/page-header.d.ts +38 -0
  236. package/dist/src/blocks/page-header/page-header.d.ts.map +1 -0
  237. package/dist/src/blocks/resource-list/index.d.ts +2 -0
  238. package/dist/src/blocks/resource-list/index.d.ts.map +1 -0
  239. package/dist/src/blocks/resource-list/resource-list.d.ts +18 -0
  240. package/dist/src/blocks/resource-list/resource-list.d.ts.map +1 -0
  241. package/dist/src/catalog/catalog.d.ts +75 -0
  242. package/dist/src/catalog/catalog.d.ts.map +1 -0
  243. package/dist/src/catalog/data.d.ts +44 -0
  244. package/dist/src/catalog/data.d.ts.map +1 -0
  245. package/dist/src/catalog/index.d.ts +39 -0
  246. package/dist/src/catalog/index.d.ts.map +1 -0
  247. package/dist/src/catalog/types.d.ts +226 -0
  248. package/dist/src/catalog/types.d.ts.map +1 -0
  249. package/dist/src/catalog/visibility.d.ts +37 -0
  250. package/dist/src/catalog/visibility.d.ts.map +1 -0
  251. package/dist/src/command-line/build-cli.d.ts +7 -0
  252. package/dist/src/command-line/build-cli.d.ts.map +1 -0
  253. package/dist/src/command-line/cli.d.ts +13 -0
  254. package/dist/src/command-line/cli.d.ts.map +1 -0
  255. package/dist/src/command-line/commands/add.d.ts +10 -0
  256. package/dist/src/command-line/commands/add.d.ts.map +1 -0
  257. package/dist/src/command-line/commands/blocks.d.ts +10 -0
  258. package/dist/src/command-line/commands/blocks.d.ts.map +1 -0
  259. package/dist/src/command-line/commands/doc.d.ts +14 -0
  260. package/dist/src/command-line/commands/doc.d.ts.map +1 -0
  261. package/dist/src/command-line/commands/init.d.ts +18 -0
  262. package/dist/src/command-line/commands/init.d.ts.map +1 -0
  263. package/dist/src/command-line/commands/ls.d.ts +10 -0
  264. package/dist/src/command-line/commands/ls.d.ts.map +1 -0
  265. package/dist/src/command-line/commands/migrate.d.ts +10 -0
  266. package/dist/src/command-line/commands/migrate.d.ts.map +1 -0
  267. package/dist/src/command-line/utils/config.d.ts +42 -0
  268. package/dist/src/command-line/utils/config.d.ts.map +1 -0
  269. package/dist/src/command-line/utils/transformer.d.ts +17 -0
  270. package/dist/src/command-line/utils/transformer.d.ts.map +1 -0
  271. package/dist/src/components/badge/badge.d.ts +46 -0
  272. package/dist/src/components/badge/badge.d.ts.map +1 -0
  273. package/dist/src/components/badge/index.d.ts +2 -0
  274. package/dist/src/components/badge/index.d.ts.map +1 -0
  275. package/dist/src/components/banner/banner.d.ts +45 -0
  276. package/dist/src/components/banner/banner.d.ts.map +1 -0
  277. package/dist/src/components/banner/index.d.ts +2 -0
  278. package/dist/src/components/banner/index.d.ts.map +1 -0
  279. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts +43 -0
  280. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  281. package/dist/src/components/breadcrumbs/index.d.ts +2 -0
  282. package/dist/src/components/breadcrumbs/index.d.ts.map +1 -0
  283. package/dist/src/components/button/button.d.ts +118 -0
  284. package/dist/src/components/button/button.d.ts.map +1 -0
  285. package/dist/src/components/button/index.d.ts +2 -0
  286. package/dist/src/components/button/index.d.ts.map +1 -0
  287. package/dist/src/components/checkbox/checkbox.d.ts +167 -0
  288. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -0
  289. package/dist/src/components/checkbox/index.d.ts +2 -0
  290. package/dist/src/components/checkbox/index.d.ts.map +1 -0
  291. package/dist/src/components/clipboard-text/clipboard-text.d.ts +38 -0
  292. package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -0
  293. package/dist/src/components/clipboard-text/index.d.ts +2 -0
  294. package/dist/src/components/clipboard-text/index.d.ts.map +1 -0
  295. package/dist/src/components/code/code.d.ts +138 -0
  296. package/dist/src/components/code/code.d.ts.map +1 -0
  297. package/dist/src/components/code/index.d.ts +4 -0
  298. package/dist/src/components/code/index.d.ts.map +1 -0
  299. package/dist/src/components/collapsible/collapsible.d.ts +62 -0
  300. package/dist/src/components/collapsible/collapsible.d.ts.map +1 -0
  301. package/dist/src/components/collapsible/index.d.ts +2 -0
  302. package/dist/src/components/collapsible/index.d.ts.map +1 -0
  303. package/dist/src/components/combobox/combobox.d.ts +124 -0
  304. package/dist/src/components/combobox/combobox.d.ts.map +1 -0
  305. package/dist/src/components/combobox/index.d.ts +2 -0
  306. package/dist/src/components/combobox/index.d.ts.map +1 -0
  307. package/dist/src/components/command-palette/command-palette.d.ts +225 -0
  308. package/dist/src/components/command-palette/command-palette.d.ts.map +1 -0
  309. package/dist/src/components/command-palette/index.d.ts +3 -0
  310. package/dist/src/components/command-palette/index.d.ts.map +1 -0
  311. package/dist/src/components/command-palette/types.d.ts +149 -0
  312. package/dist/src/components/command-palette/types.d.ts.map +1 -0
  313. package/dist/src/components/date-range-picker/date-range-picker.d.ts +65 -0
  314. package/dist/src/components/date-range-picker/date-range-picker.d.ts.map +1 -0
  315. package/dist/src/components/date-range-picker/index.d.ts +2 -0
  316. package/dist/src/components/date-range-picker/index.d.ts.map +1 -0
  317. package/dist/src/components/dialog/dialog.d.ts +121 -0
  318. package/dist/src/components/dialog/dialog.d.ts.map +1 -0
  319. package/dist/src/components/dialog/index.d.ts +2 -0
  320. package/dist/src/components/dialog/index.d.ts.map +1 -0
  321. package/dist/src/components/dropdown/dropdown.d.ts +58 -0
  322. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -0
  323. package/dist/src/components/dropdown/index.d.ts +2 -0
  324. package/dist/src/components/dropdown/index.d.ts.map +1 -0
  325. package/dist/src/components/empty/empty.d.ts +34 -0
  326. package/dist/src/components/empty/empty.d.ts.map +1 -0
  327. package/dist/src/components/empty/index.d.ts +2 -0
  328. package/dist/src/components/empty/index.d.ts.map +1 -0
  329. package/dist/src/components/field/field.d.ts +38 -0
  330. package/dist/src/components/field/field.d.ts.map +1 -0
  331. package/dist/src/components/field/index.d.ts +2 -0
  332. package/dist/src/components/field/index.d.ts.map +1 -0
  333. package/dist/src/components/grid/grid.d.ts +107 -0
  334. package/dist/src/components/grid/grid.d.ts.map +1 -0
  335. package/dist/src/components/grid/index.d.ts +2 -0
  336. package/dist/src/components/grid/index.d.ts.map +1 -0
  337. package/dist/src/components/input/index.d.ts +4 -0
  338. package/dist/src/components/input/index.d.ts.map +1 -0
  339. package/dist/src/components/input/input-area.d.ts +46 -0
  340. package/dist/src/components/input/input-area.d.ts.map +1 -0
  341. package/dist/src/components/input/input-group.d.ts +39 -0
  342. package/dist/src/components/input/input-group.d.ts.map +1 -0
  343. package/dist/src/components/input/input.d.ts +157 -0
  344. package/dist/src/components/input/input.d.ts.map +1 -0
  345. package/dist/src/components/label/index.d.ts +2 -0
  346. package/dist/src/components/label/index.d.ts.map +1 -0
  347. package/dist/src/components/label/label.d.ts +54 -0
  348. package/dist/src/components/label/label.d.ts.map +1 -0
  349. package/dist/src/components/layer-card/index.d.ts +2 -0
  350. package/dist/src/components/layer-card/index.d.ts.map +1 -0
  351. package/dist/src/components/layer-card/layer-card.d.ts +16 -0
  352. package/dist/src/components/layer-card/layer-card.d.ts.map +1 -0
  353. package/dist/src/components/link/index.d.ts +2 -0
  354. package/dist/src/components/link/index.d.ts.map +1 -0
  355. package/dist/src/components/link/link.d.ts +35 -0
  356. package/dist/src/components/link/link.d.ts.map +1 -0
  357. package/dist/src/components/loader/index.d.ts +3 -0
  358. package/dist/src/components/loader/index.d.ts.map +1 -0
  359. package/dist/src/components/loader/loader.d.ts +30 -0
  360. package/dist/src/components/loader/loader.d.ts.map +1 -0
  361. package/dist/src/components/loader/skeleton-line.d.ts +10 -0
  362. package/dist/src/components/loader/skeleton-line.d.ts.map +1 -0
  363. package/dist/src/components/menubar/index.d.ts +3 -0
  364. package/dist/src/components/menubar/index.d.ts.map +1 -0
  365. package/dist/src/components/menubar/menubar.d.ts +22 -0
  366. package/dist/src/components/menubar/menubar.d.ts.map +1 -0
  367. package/dist/src/components/menubar/use-menu-navigation.d.ts +8 -0
  368. package/dist/src/components/menubar/use-menu-navigation.d.ts.map +1 -0
  369. package/dist/src/components/meter/index.d.ts +2 -0
  370. package/dist/src/components/meter/index.d.ts.map +1 -0
  371. package/dist/src/components/meter/meter.d.ts +18 -0
  372. package/dist/src/components/meter/meter.d.ts.map +1 -0
  373. package/dist/src/components/pagination/index.d.ts +2 -0
  374. package/dist/src/components/pagination/index.d.ts.map +1 -0
  375. package/dist/src/components/pagination/pagination.d.ts +28 -0
  376. package/dist/src/components/pagination/pagination.d.ts.map +1 -0
  377. package/dist/src/components/popover/index.d.ts +3 -0
  378. package/dist/src/components/popover/index.d.ts.map +1 -0
  379. package/dist/src/components/popover/popover.d.ts +110 -0
  380. package/dist/src/components/popover/popover.d.ts.map +1 -0
  381. package/dist/src/components/radio/index.d.ts +2 -0
  382. package/dist/src/components/radio/index.d.ts.map +1 -0
  383. package/dist/src/components/radio/radio.d.ts +141 -0
  384. package/dist/src/components/radio/radio.d.ts.map +1 -0
  385. package/dist/src/components/select/index.d.ts +2 -0
  386. package/dist/src/components/select/index.d.ts.map +1 -0
  387. package/dist/src/components/select/select.d.ts +128 -0
  388. package/dist/src/components/select/select.d.ts.map +1 -0
  389. package/dist/src/components/sensitive-input/index.d.ts +2 -0
  390. package/dist/src/components/sensitive-input/index.d.ts.map +1 -0
  391. package/dist/src/components/sensitive-input/sensitive-input.d.ts +70 -0
  392. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -0
  393. package/dist/src/components/surface/index.d.ts +2 -0
  394. package/dist/src/components/surface/index.d.ts.map +1 -0
  395. package/dist/src/components/surface/surface.d.ts +48 -0
  396. package/dist/src/components/surface/surface.d.ts.map +1 -0
  397. package/dist/src/components/switch/index.d.ts +2 -0
  398. package/dist/src/components/switch/index.d.ts.map +1 -0
  399. package/dist/src/components/switch/switch.d.ts +155 -0
  400. package/dist/src/components/switch/switch.d.ts.map +1 -0
  401. package/dist/src/components/table/index.d.ts +2 -0
  402. package/dist/src/components/table/index.d.ts.map +1 -0
  403. package/dist/src/components/table/table.d.ts +54 -0
  404. package/dist/src/components/table/table.d.ts.map +1 -0
  405. package/dist/src/components/tabs/index.d.ts +3 -0
  406. package/dist/src/components/tabs/index.d.ts.map +1 -0
  407. package/dist/src/components/tabs/tabs.d.ts +64 -0
  408. package/dist/src/components/tabs/tabs.d.ts.map +1 -0
  409. package/dist/src/components/text/index.d.ts +2 -0
  410. package/dist/src/components/text/index.d.ts.map +1 -0
  411. package/dist/src/components/text/text.d.ts +153 -0
  412. package/dist/src/components/text/text.d.ts.map +1 -0
  413. package/dist/src/components/toast/index.d.ts +3 -0
  414. package/dist/src/components/toast/index.d.ts.map +1 -0
  415. package/dist/src/components/toast/toast.d.ts +66 -0
  416. package/dist/src/components/toast/toast.d.ts.map +1 -0
  417. package/dist/src/components/tooltip/index.d.ts +2 -0
  418. package/dist/src/components/tooltip/index.d.ts.map +1 -0
  419. package/dist/src/components/tooltip/tooltip.d.ts +43 -0
  420. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -0
  421. package/dist/src/index.d.ts +39 -0
  422. package/dist/src/index.d.ts.map +1 -0
  423. package/dist/src/primitives/accordion.d.ts +13 -0
  424. package/dist/src/primitives/accordion.d.ts.map +1 -0
  425. package/dist/src/primitives/alert-dialog.d.ts +13 -0
  426. package/dist/src/primitives/alert-dialog.d.ts.map +1 -0
  427. package/dist/src/primitives/autocomplete.d.ts +13 -0
  428. package/dist/src/primitives/autocomplete.d.ts.map +1 -0
  429. package/dist/src/primitives/avatar.d.ts +13 -0
  430. package/dist/src/primitives/avatar.d.ts.map +1 -0
  431. package/dist/src/primitives/button.d.ts +13 -0
  432. package/dist/src/primitives/button.d.ts.map +1 -0
  433. package/dist/src/primitives/checkbox-group.d.ts +13 -0
  434. package/dist/src/primitives/checkbox-group.d.ts.map +1 -0
  435. package/dist/src/primitives/checkbox.d.ts +13 -0
  436. package/dist/src/primitives/checkbox.d.ts.map +1 -0
  437. package/dist/src/primitives/collapsible.d.ts +13 -0
  438. package/dist/src/primitives/collapsible.d.ts.map +1 -0
  439. package/dist/src/primitives/combobox.d.ts +13 -0
  440. package/dist/src/primitives/combobox.d.ts.map +1 -0
  441. package/dist/src/primitives/context-menu.d.ts +13 -0
  442. package/dist/src/primitives/context-menu.d.ts.map +1 -0
  443. package/dist/src/primitives/dialog.d.ts +13 -0
  444. package/dist/src/primitives/dialog.d.ts.map +1 -0
  445. package/dist/src/primitives/direction-provider.d.ts +13 -0
  446. package/dist/src/primitives/direction-provider.d.ts.map +1 -0
  447. package/dist/src/primitives/field.d.ts +13 -0
  448. package/dist/src/primitives/field.d.ts.map +1 -0
  449. package/dist/src/primitives/fieldset.d.ts +13 -0
  450. package/dist/src/primitives/fieldset.d.ts.map +1 -0
  451. package/dist/src/primitives/form.d.ts +13 -0
  452. package/dist/src/primitives/form.d.ts.map +1 -0
  453. package/dist/src/primitives/index.d.ts +52 -0
  454. package/dist/src/primitives/index.d.ts.map +1 -0
  455. package/dist/src/primitives/input.d.ts +13 -0
  456. package/dist/src/primitives/input.d.ts.map +1 -0
  457. package/dist/src/primitives/menu.d.ts +13 -0
  458. package/dist/src/primitives/menu.d.ts.map +1 -0
  459. package/dist/src/primitives/menubar.d.ts +13 -0
  460. package/dist/src/primitives/menubar.d.ts.map +1 -0
  461. package/dist/src/primitives/meter.d.ts +13 -0
  462. package/dist/src/primitives/meter.d.ts.map +1 -0
  463. package/dist/src/primitives/navigation-menu.d.ts +13 -0
  464. package/dist/src/primitives/navigation-menu.d.ts.map +1 -0
  465. package/dist/src/primitives/number-field.d.ts +13 -0
  466. package/dist/src/primitives/number-field.d.ts.map +1 -0
  467. package/dist/src/primitives/popover.d.ts +13 -0
  468. package/dist/src/primitives/popover.d.ts.map +1 -0
  469. package/dist/src/primitives/preview-card.d.ts +13 -0
  470. package/dist/src/primitives/preview-card.d.ts.map +1 -0
  471. package/dist/src/primitives/progress.d.ts +13 -0
  472. package/dist/src/primitives/progress.d.ts.map +1 -0
  473. package/dist/src/primitives/radio-group.d.ts +13 -0
  474. package/dist/src/primitives/radio-group.d.ts.map +1 -0
  475. package/dist/src/primitives/radio.d.ts +13 -0
  476. package/dist/src/primitives/radio.d.ts.map +1 -0
  477. package/dist/src/primitives/scroll-area.d.ts +13 -0
  478. package/dist/src/primitives/scroll-area.d.ts.map +1 -0
  479. package/dist/src/primitives/select.d.ts +13 -0
  480. package/dist/src/primitives/select.d.ts.map +1 -0
  481. package/dist/src/primitives/separator.d.ts +13 -0
  482. package/dist/src/primitives/separator.d.ts.map +1 -0
  483. package/dist/src/primitives/slider.d.ts +13 -0
  484. package/dist/src/primitives/slider.d.ts.map +1 -0
  485. package/dist/src/primitives/switch.d.ts +13 -0
  486. package/dist/src/primitives/switch.d.ts.map +1 -0
  487. package/dist/src/primitives/tabs.d.ts +13 -0
  488. package/dist/src/primitives/tabs.d.ts.map +1 -0
  489. package/dist/src/primitives/toast.d.ts +13 -0
  490. package/dist/src/primitives/toast.d.ts.map +1 -0
  491. package/dist/src/primitives/toggle-group.d.ts +13 -0
  492. package/dist/src/primitives/toggle-group.d.ts.map +1 -0
  493. package/dist/src/primitives/toggle.d.ts +13 -0
  494. package/dist/src/primitives/toggle.d.ts.map +1 -0
  495. package/dist/src/primitives/toolbar.d.ts +13 -0
  496. package/dist/src/primitives/toolbar.d.ts.map +1 -0
  497. package/dist/src/primitives/tooltip.d.ts +13 -0
  498. package/dist/src/primitives/tooltip.d.ts.map +1 -0
  499. package/dist/src/registry/index.d.ts +8 -0
  500. package/dist/src/registry/index.d.ts.map +1 -0
  501. package/dist/src/registry/types.d.ts +191 -0
  502. package/dist/src/registry/types.d.ts.map +1 -0
  503. package/dist/src/utils/cn.d.ts +4 -0
  504. package/dist/src/utils/cn.d.ts.map +1 -0
  505. package/dist/src/utils/index.d.ts +3 -0
  506. package/dist/src/utils/index.d.ts.map +1 -0
  507. package/dist/src/utils/link-provider.d.ts +12 -0
  508. package/dist/src/utils/link-provider.d.ts.map +1 -0
  509. package/dist/src/utils/prop-examples.d.ts +36 -0
  510. package/dist/src/utils/prop-examples.d.ts.map +1 -0
  511. package/dist/styles/kumo-binding.css +190 -0
  512. package/dist/styles/kumo-standalone.css +2 -0
  513. package/dist/styles/kumo.css +55 -0
  514. package/dist/styles/theme-fedramp.css +20 -0
  515. package/dist/styles/theme-kumo.css +186 -0
  516. package/dist/surface-BIC6CXiz.js +21 -0
  517. package/dist/surface-BIC6CXiz.js.map +1 -0
  518. package/dist/switch-D4duMhJ0.js +257 -0
  519. package/dist/switch-D4duMhJ0.js.map +1 -0
  520. package/dist/table-KuvHGpL8.js +153 -0
  521. package/dist/table-KuvHGpL8.js.map +1 -0
  522. package/dist/tabs-lQup-IbT.js +85 -0
  523. package/dist/tabs-lQup-IbT.js.map +1 -0
  524. package/dist/text-BEhqwMfe.js +97 -0
  525. package/dist/text-BEhqwMfe.js.map +1 -0
  526. package/dist/toast-8YyyQuqZ.js +69 -0
  527. package/dist/toast-8YyyQuqZ.js.map +1 -0
  528. package/dist/tooltip-DJWsDTWJ.js +85 -0
  529. package/dist/tooltip-DJWsDTWJ.js.map +1 -0
  530. package/dist/utils.js +10 -0
  531. package/dist/utils.js.map +1 -0
  532. package/dist/vendor-base-ui-DWIDNgE1.js +20446 -0
  533. package/dist/vendor-base-ui-DWIDNgE1.js.map +1 -0
  534. package/dist/vendor-floating-ui-BgbEw62H.js +1286 -0
  535. package/dist/vendor-floating-ui-BgbEw62H.js.map +1 -0
  536. package/dist/vendor-styling-BQbxAbdS.js +2775 -0
  537. package/dist/vendor-styling-BQbxAbdS.js.map +1 -0
  538. package/dist/vendor-utils-DD8jNJwD.js +741 -0
  539. package/dist/vendor-utils-DD8jNJwD.js.map +1 -0
  540. package/package.json +444 -0
  541. package/scripts/component-registry/cache.ts +123 -0
  542. package/scripts/component-registry/discovery.ts +469 -0
  543. package/scripts/component-registry/example-cleanup.ts +168 -0
  544. package/scripts/component-registry/index.test.ts +680 -0
  545. package/scripts/component-registry/index.ts +874 -0
  546. package/scripts/component-registry/markdown-generator.ts +222 -0
  547. package/scripts/component-registry/metadata.ts +643 -0
  548. package/scripts/component-registry/props-filter.ts +310 -0
  549. package/scripts/component-registry/schema-generator.ts +326 -0
  550. package/scripts/component-registry/sub-components.ts +349 -0
  551. package/scripts/component-registry/types.ts +156 -0
  552. package/scripts/component-registry/utils.ts +280 -0
  553. package/scripts/component-registry/variant-parser.ts +261 -0
  554. package/scripts/css-build.ts +55 -0
  555. package/scripts/generate-primitives.ts +178 -0
  556. package/scripts/theme-generator/config.ts +392 -0
  557. package/scripts/theme-generator/generate-css.ts +250 -0
  558. package/scripts/theme-generator/index.ts +159 -0
  559. package/scripts/theme-generator/migrate.ts +560 -0
  560. package/scripts/theme-generator/types.ts +86 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,510 @@
1
+ # @cloudflare/kumo
2
+
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 11e62a2: # Kumo 1.0.0 Release
8
+
9
+ The first stable release of Kumo, Cloudflare's component library.
10
+
11
+ ## Breaking Changes
12
+
13
+ ### Blocks Distribution via CLI
14
+
15
+ Blocks (`PageHeader`, `ResourceListPage`) are no longer exported from `@cloudflare/kumo`. They must now be installed via the CLI:
16
+
17
+ ```bash
18
+ npx @cloudflare/kumo init # Initialize kumo.json
19
+ npx @cloudflare/kumo add PageHeader
20
+ ```
21
+
22
+ Blocks are copied to your project for full customization with imports automatically transformed to `@cloudflare/kumo`.
23
+
24
+ ### Checkbox API Changes
25
+ - **Ref type changed**: `HTMLInputElement` → `HTMLButtonElement`
26
+ - **Props changed**: No longer extends `InputHTMLAttributes` (explicit props only)
27
+ - **Handler renamed**: `onChange`/`onValueChange` → `onCheckedChange` (deprecated handlers still work)
28
+
29
+ ### Banner API Deprecation
30
+
31
+ The `text` prop is deprecated in favor of `children`:
32
+
33
+ ```tsx
34
+ // Before (deprecated)
35
+ <Banner text="Your message" />
36
+
37
+ // After (preferred)
38
+ <Banner>Your message</Banner>
39
+ ```
40
+
41
+ ## New Features
42
+ - **Link component**: Inline text links with Base UI composition API and `render` prop for framework routing
43
+ - **DropdownMenu enhancements**: Nested submenus (`Sub`, `SubTrigger`, `SubContent`) and radio items (`RadioGroup`, `RadioItem`)
44
+ - **Grid component**: New layout primitive
45
+ - **Theme generator**: Config-driven token definitions with consolidated semantic color system
46
+ - **Component catalog**: Visibility controls for documentation
47
+ - **Deprecated props lint rule**: `kumo/no-deprecated-props` detects `@deprecated` JSDoc tags
48
+
49
+ ## Fixes
50
+ - Dropdown danger variant color contrast
51
+ - Tabs segmented indicator border radius
52
+ - Combobox dropdown scrolling
53
+ - Primary button hover/focus contrast
54
+
55
+ ## Migration Guide
56
+
57
+ ### Blocks
58
+
59
+ If you were using blocks (note: they were never officially exported):
60
+
61
+ ```bash
62
+ # 1. Initialize configuration
63
+ npx @cloudflare/kumo init
64
+
65
+ # 2. Install blocks
66
+ npx @cloudflare/kumo add PageHeader
67
+ npx @cloudflare/kumo add ResourceListPage
68
+
69
+ # 3. Update imports to the local path shown after installation
70
+ ```
71
+
72
+ ### Checkbox
73
+
74
+ ```tsx
75
+ // Before
76
+ <Checkbox onChange={(e) => setValue(e.target.checked)} />;
77
+ const ref = useRef<HTMLInputElement>(null);
78
+
79
+ // After
80
+ <Checkbox onCheckedChange={(checked) => setValue(checked)} />;
81
+ const ref = useRef<HTMLButtonElement>(null);
82
+ ```
83
+
84
+ ### Banner
85
+
86
+ ```tsx
87
+ // Before (still works, but deprecated)
88
+ <Banner text="Your message" />
89
+
90
+ // After
91
+ <Banner>Your message</Banner>
92
+ ```
93
+
94
+ ### Minor Changes
95
+
96
+ - 3a28186: feat(banner): add children prop, deprecate text prop
97
+
98
+ Banner now supports `children` for content, which is the preferred API. The `text` prop is deprecated but still works for backwards compatibility.
99
+
100
+ ```tsx
101
+ // Preferred (new)
102
+ <Banner>Your message</Banner>
103
+ <Banner icon={<Icon />}>Your message</Banner>
104
+
105
+ // Deprecated (still works)
106
+ <Banner text="Your message" />
107
+ ```
108
+
109
+ The `text` prop will be removed in a future major version.
110
+
111
+ - 2de0c7b: feat(cli): blocks are now distributed via CLI instead of npm exports
112
+
113
+ New CLI commands for block management:
114
+ - `kumo init` - Initialize kumo.json configuration file
115
+ - `kumo blocks` - List all available blocks for CLI installation
116
+ - `kumo add <block-name>` - Install a block to your project with transformed imports
117
+
118
+ Blocks are copied to your project for full customization, with relative imports automatically converted to `@cloudflare/kumo`.
119
+
120
+ - 08c4426: Add lint rule to detect usage of deprecated props on Kumo components.
121
+ - New `kumo/no-deprecated-props` lint rule automatically detects deprecated props from `@deprecated` JSDoc tags
122
+ - Component registry now includes `deprecated` field for props with `@deprecated` annotations
123
+ - Docs site shows strikethrough and `@deprecated` badge for deprecated props in API reference tables
124
+
125
+ To deprecate a prop, add a JSDoc comment:
126
+
127
+ ```tsx
128
+ interface MyComponentProps {
129
+ /** @deprecated Use `newProp` instead */
130
+ oldProp?: string;
131
+ }
132
+ ```
133
+
134
+ The lint rule will flag usage and show a helpful message:
135
+
136
+ ```
137
+ The `oldProp` prop on <MyComponent> is deprecated. Use `newProp` instead.
138
+ ```
139
+
140
+ - 604fa9a: Add nested menu (submenu) and RadioGroup/RadioItem support to DropdownMenu
141
+ - Add `DropdownMenu.Sub`, `DropdownMenu.SubTrigger`, and `DropdownMenu.SubContent` for nested submenus
142
+ - Add `DropdownMenu.RadioGroup`, `DropdownMenu.RadioItem`, and `DropdownMenu.RadioItemIndicator` for single-selection menus
143
+ - Fix `SubTrigger` styling to match `Item` component
144
+ - Fix focus ring on dropdown popup
145
+ - Add Storybook stories demonstrating nested menus and radio items
146
+ - Update Astro docs with examples and API reference
147
+
148
+ - 98116b2: fix(checkbox): make label clickable, add new `onCheckedChange` API
149
+ - Clicking the label now toggles the checkbox
150
+ - New `onCheckedChange` callback (preferred over deprecated `onChange`/`onValueChange`)
151
+ - Ref type is now `HTMLButtonElement` (aligns with Base UI implementation)
152
+
153
+ - 2c7f957: Add Link component with Base UI composition API
154
+ - New `Link` component for consistent inline text links
155
+ - Supports `render` prop for composition with framework-specific links (e.g., React Router)
156
+ - Uses Base UI's `useRender` hook for proper ref/event merging
157
+ - Three variants: `inline` (default), `current`, and `plain`
158
+ - `Link.ExternalIcon` subcomponent for external link indicators
159
+ - Integrates with `LinkProvider` for framework-agnostic routing
160
+
161
+ - 2de0c7b: feat: theme generator, color token consolidation, component catalog
162
+ - New theme generator system with config-driven token definitions
163
+ - Consolidated semantic color tokens with config.ts as single source of truth
164
+ - New component catalog system with visibility controls
165
+ - Added Grid component
166
+ - Updated Figma plugin generators for new semantic tokens
167
+ - Migrated documentation from Storybook to Astro
168
+
169
+ - 7d4a4e0: run component-registry when starting docs site
170
+
171
+ ### Patch Changes
172
+
173
+ - 2de0c7b: Fix color contrast issue in Dropdown danger variant by using subtle bg-kumo-danger/5 background instead of bg-kumo-danger-tint, improving readability while maintaining the visual "danger" cue
174
+ - 8cf48b7: Add render prop for Tabs component
175
+ - d071bc8: Fix Combobox dropdown not scrolling when it has many items. The `overflow-hidden` class was overriding `overflow-y-auto`, causing content to be clipped instead of scrollable.
176
+ - 80c6470: fix: improve primary button hover/focus contrast by using bg-hover-selected instead of bg-primary/70
177
+ - 3a2e265: Adds disabled prop for table cell checkboxes
178
+ - e9fe499: fix(tabs): adjust segmented indicator border radius for proper visual nesting
179
+
180
+ ## 0.7.0
181
+
182
+ ### Minor Changes
183
+
184
+ - d04c91f: Ship component registry with @cloudflare/kumo module
185
+ - 0e246bf: feat(popover): Add new Popover component
186
+
187
+ Adds a new Popover component based on Base UI's popover primitive. The Popover provides an accessible popup anchored to a trigger element, with support for:
188
+ - Compound component API: `Popover`, `Popover.Trigger`, `Popover.Content`, `Popover.Title`, `Popover.Description`, `Popover.Close`
189
+ - Positioning options: `side` (top, bottom, left, right), `align` (start, center, end), `sideOffset`
190
+ - Click-to-open by default, with optional `openOnHover` behavior
191
+ - Controlled mode via `open` and `onOpenChange` props
192
+ - Visual styling matching the updated Tooltip component (surface-aware background, proper light/dark mode support)
193
+
194
+ ### Patch Changes
195
+
196
+ - d04c91f: Migrate documentation site from React Router (`kumo-docs`) to Astro (`kumo-docs-astro`) as the primary docs platform, consolidate CI/CD pipelines, and add version display features.
197
+
198
+ Bump node to v24.12.0
199
+
200
+ ## 0.6.0
201
+
202
+ ### Minor Changes
203
+
204
+ - 46236bd: Add Figma plugin for UI kit generation
205
+ - New plugin at `packages/figma/` (`@cloudflare/figma-plugin`)
206
+ - Generates 29 component types: Badge, Banner, Button, Checkbox, Code, CodeBlock, Collapsible, Combobox, DateRangePicker, Dialog, Dropdown, Icon Library, Input, InputArea, LayerCard, LinkButton, Loader, MenuBar, Meter, Pagination, RefreshButton, Select, SensitiveInput, Surface, Switch, Switch.Group, Tabs, Text, Toast
207
+ - Each component generated with light and dark mode sections
208
+ - Icon Library generator creates all Phosphor and Cloudflare brand icons
209
+ - Parses component-registry.json and source files for variant specs
210
+ - Extracts opacity modifiers from Tailwind classes (bg-kumo-brand/70 → opacity-primary-70)
211
+ - Binds fills/strokes to kumo-colors variables
212
+ - Includes progress UI and validation output
213
+
214
+ - 4266f72: feat(kumo): add command-palette component
215
+ - 4ac5fbe: semantic color changes and more consolidation for non-text colors
216
+ - 009097d: feat(tooltip): Update tooltip to use bg-kumo-base with proper light/dark mode support
217
+
218
+ Changes the tooltip background from a fixed dark color to a surface-aware background that adapts to light and dark modes. Implements Base UI's 3-path arrow SVG approach for pixel-perfect border alignment across color modes.
219
+
220
+ ### Patch Changes
221
+
222
+ - 50dae6f: fix(kumo): updated version in package.json (unintentionally downgraded)
223
+
224
+ ## 0.5.0
225
+
226
+ ### Minor Changes
227
+
228
+ - ee744b3: feat(PageHeader): add optional title and description props
229
+ - Adds `title?: string` and `description?: string` props to PageHeader block
230
+ - Title renders as semantic h1 for Section 508 and WCAG 2.4.2 (Level A) compliance: "Web pages have titles that describe topic or purpose"
231
+ - Description uses max-w-prose (65ch) for optimal readability per industry standards
232
+ - Styling matches Stratus Workers & Pages implementation
233
+ - Includes comprehensive Storybook examples (WithTitle, WithTitleAndDescription, CompleteExample)
234
+
235
+ ## Why This Feature Matters
236
+
237
+ **Without this feature**, pages using only PageHeader would lack a semantic page title (h1), requiring developers to manually add titles elsewhere. This creates:
238
+ - ❌ Risk of Section 508 and WCAG 2.4.2 violations
239
+ - ❌ Compliance risk for FedRAMP High authorization (requires Section 508 conformance)
240
+ - ❌ Inconsistent title placement across pages
241
+ - ❌ Additional implementation burden on every page
242
+
243
+ **With this feature**, PageHeader provides a standardized way to include accessible page titles that:
244
+ - ✅ Render as semantic h1 elements (required by Section 508 and WCAG 2.4.2)
245
+ - ✅ Visually differentiate from breadcrumbs
246
+ - ✅ Work correctly with screen readers and assistive technology
247
+ - ✅ Maintain consistency across the dashboard
248
+ - ✅ Support FedRAMP High compliance requirements
249
+
250
+ ### Important: Breadcrumbs Are Not Page Titles
251
+
252
+ Breadcrumbs serve navigation purposes and cannot replace semantic page titles. Both should coexist:
253
+ - **Page title (h1)**: Primary orientation, required for accessibility
254
+ - **Breadcrumb trail**: Secondary navigation showing site hierarchy
255
+ - **Visual differentiation**: Size, weight, and placement distinguish the two
256
+
257
+ ### References
258
+ - [Section 508 Standards](https://www.access-board.gov/ict/) - Requires WCAG 2.0 Level A and AA conformance
259
+ - [WCAG 2.4.2: Page Titled](https://www.w3.org/WAI/WCAG21/Understanding/page-titled.html) - Level A requirement
260
+
261
+ - b4a817f: Add table component
262
+ - Introduce new Table component with row variants and styling options
263
+ - Add Table documentation and examples to `kumo-docs`
264
+
265
+ - 0e5cf84: lighter red in light mode
266
+ - 6c94137: Add Label component with standardized label features for form fields
267
+ - New Label component with support for ReactNode children, optional indicator, and tooltip
268
+ - Enhanced form components (Input, Select, Checkbox, Switch, SensitiveInput, Combobox) with:
269
+ - `label` prop now accepts ReactNode (not just strings)
270
+ - `required={false}` shows "(optional)" text
271
+ - `labelTooltip` prop for info icon with hover tooltip
272
+ - Updated Field component to use Label internally
273
+ - Added Label documentation page to kumo-docs
274
+
275
+ - 742dc89: Add Radio component for single-selection from a set of options
276
+ - New `Radio.Group` and `Radio.Item` compound components built on Base UI primitives
277
+ - Supports vertical and horizontal orientations
278
+ - Includes error, description, and disabled states
279
+ - `controlPosition` prop for label placement ("start" or "end")
280
+ - Full accessibility support with semantic HTML and keyboard navigation
281
+ - Documentation added to both kumo-docs and kumo-docs-astro sites
282
+
283
+ - 872ef11: Add Storybook preview deployments and MR reporter system
284
+ - Storybook previews deploy to Cloudflare Workers on MR commits
285
+ - Staging deployment to `storybook.staging.kumo-ui.com` on merge to main
286
+ - Consolidated MR comments with beta npm version and preview URL
287
+
288
+ - 9537114: Add variant prop to Tabs component with 'segmented' (default) and 'underline' options
289
+
290
+ ### Patch Changes
291
+
292
+ - 7c2e8dd: Fix label not appearing in Combobox unless a description or error given.
293
+ - 5bdfae9: fix bug where delete user external links were being treated as internal navigation and appending urls to domain
294
+ - d598621: Fix Base UI nativeButton warning in Switch component by adding nativeButton prop to BaseSwitch.Root
295
+ - e613876: Update deployment configs to enable preview urls
296
+ - d9add6b: added a next / previous form of pagination
297
+ - 356d1e6: Modernize Active Sessions page with updated Kumo design patterns
298
+ - 5b256bd: - Align border color with sidebar
299
+ - Center arrow icon in select component
300
+ - d998518: Add `bg-kumo-base` as default background for Surface component
301
+
302
+ ## 0.4.0
303
+
304
+ ### Minor Changes
305
+
306
+ - 010d1f0: Fix Combobox button styles
307
+ - 933fdf2: Migrate to @base-ui/react V1
308
+
309
+ **Breaking Change:** Updated from `@base-ui-components/react` to the new `@base-ui/react` V1 package.
310
+
311
+ ## What Changed
312
+ - **Package name:** `@base-ui-components/react` → `@base-ui/react`
313
+ - **Version:** `^1.0.0-rc.0` > `^1.0.0`
314
+ - All component imports updated to use the new package
315
+ - All primitive re-exports updated to use the new package
316
+ - Build configuration updated to bundle the new package
317
+
318
+ ## Migration Required
319
+
320
+ This is a **major version bump** because the underlying Base UI package has changed. While the Kumo API remains the same, you'll need to:
321
+ 1. **Update dependencies:**
322
+ ```bash
323
+ pnpm install
324
+ ```
325
+ 2. **No code changes needed** - All Kumo components and primitives work exactly the same way. The package name change is internal to Kumo.
326
+
327
+ ## For Kumo Maintainers
328
+
329
+ After merging this PR, run:
330
+
331
+ ```bash
332
+ # Install the new @base-ui/react package
333
+ pnpm install
334
+
335
+ # Regenerate primitive files with new package references
336
+ pnpm --filter @cloudflare/kumo build:primitives
337
+
338
+ # Rebuild the package
339
+ pnpm --filter @cloudflare/kumo build
340
+
341
+ # Run tests to verify everything works
342
+ pnpm --filter @cloudflare/kumo test:run
343
+ ```
344
+
345
+ ## Technical Details
346
+ - Updated all imports from `@base-ui-components/react/*` to `@base-ui/react/*`
347
+ - Updated `generate-primitives.ts` script to reference new package
348
+ - Updated test files to check for new package name
349
+ - Updated `vite.config.ts` manualChunks to match new package name
350
+ - All 37 primitives will be regenerated with new imports
351
+
352
+ - 731e636: Add built-in Field integration to form components with automatic layout
353
+
354
+ **New Features:**
355
+ - Input, InputArea, SensitiveInput, Select, Checkbox, Switch, and Combobox now accept `label`, `description`, and `error` props for built-in Field wrapper support
356
+ - Automatic CSS-driven layout: vertical for text inputs, horizontal for checkboxes/switches using `:has()` selectors
357
+ - Checkbox.Group and Switch.Group compound components for managing multiple related controls with shared legend/description/error
358
+ - Storybook Code Panel enabled for better component code examples
359
+
360
+ **Accessibility:**
361
+ - Runtime console warnings (dev-only) when Input/Checkbox lack accessible names (label, aria-label, or aria-labelledby)
362
+ - Comprehensive JSDoc documentation with accessibility guidance and examples
363
+
364
+ **Breaking Changes:**
365
+ - Field component removed from public API (now internal implementation detail - use component props instead)
366
+
367
+ **Migration:**
368
+
369
+ ```tsx
370
+ // Before: Explicit Field wrapper
371
+ <Field label="Email" description="...">
372
+ <Input placeholder="you@example.com" />
373
+ </Field>
374
+
375
+ // After: Built-in Field API (recommended)
376
+ <Input
377
+ label="Email"
378
+ description="..."
379
+ placeholder="you@example.com"
380
+ />
381
+ ```
382
+
383
+ - 1db802c: change error color for text component to match field input error colors
384
+ - 45ccaec: secondary-destructive button variant
385
+ - ccc03dc: fix: update changeset validation logic
386
+ - 2f91f1f: - Complete semantic color tokens migrated from Stratus app
387
+ - Document color and text-color tokens in Storybook
388
+ - Add accessibility tests via Storybook Vitest addon
389
+ - Add component-metadata generator for AI tooling
390
+ - Enable linting in CI/CD (passing)
391
+ - Apply Prettier Tailwind plugin for consistent class ordering
392
+ - Use pnpm catalog for shared package versions
393
+ - Semantic colors now scoped to `[data-theme]` and `[data-mode]` attributes
394
+ - Consumers must ensure root element has these attributes for proper theming
395
+
396
+ ### Migration Guide
397
+
398
+ Add `data-theme` and `data-mode` attributes to your root element:
399
+
400
+ ```tsx
401
+ // React example
402
+ <html data-theme="kumo" data-mode={isDark ? "dark" : "light"}>
403
+
404
+ // Static HTML
405
+ <html data-theme="kumo" data-mode="light">
406
+ ```
407
+
408
+ - **`data-theme`**: Set to `"kumo"` (default theme) or other theme variants like `"fedramp"`
409
+ - **`data-mode`**: Set to `"light"` or `"dark"` to control color scheme
410
+
411
+ If no `data-mode` is set, the system defaults to light mode.
412
+
413
+ - ad3c8fa: tab and text style fixes; storybook theme select always visible
414
+ - 731e636: inputs with built-in fields
415
+ - 933fdf2: Bundle Base UI primitives with granular exports and fix critical compatibility issues
416
+
417
+ ## Primitives: Granular Exports
418
+
419
+ Added granular exports for all 37 Base UI primitives alongside the existing barrel export. This enables better tree-shaking and smaller bundle sizes when using individual primitives.
420
+
421
+ ```tsx
422
+ // Barrel export (imports all primitives)
423
+ import { Slider, Popover, Tooltip } from "@cloudflare/kumo/primitives";
424
+
425
+ // Granular exports (tree-shakeable, recommended)
426
+ import { Slider } from "@cloudflare/kumo/primitives/slider";
427
+ import { Popover } from "@cloudflare/kumo/primitives/popover";
428
+ ```
429
+
430
+ **Available primitives:** accordion, alert-dialog, autocomplete, avatar, button, checkbox, checkbox-group, collapsible, combobox, context-menu, dialog, direction-provider, field, fieldset, form, input, menu, menubar, meter, navigation-menu, number-field, popover, preview-card, progress, radio, radio-group, scroll-area, select, separator, slider, switch, tabs, toast, toggle, toggle-group, toolbar, tooltip.
431
+
432
+ ## Build Output Improvements
433
+
434
+ Fixed critical compatibility issues with Jest and React Server Components by improving the build configuration.
435
+
436
+ ### Problems Fixed
437
+ 1. **Jest Parsing Errors** - The previous build used `preserveModules: true`, which preserved the pnpm directory structure (`node_modules/.pnpm/`) in dist. This caused Jest to fail parsing ESM imports because Jest's `transformIgnorePatterns` blocks nested `node_modules` by default.
438
+ 2. **Missing "use client" Directives** - The `rollup-plugin-preserve-directives` plugin only works with `preserveModules: true`. When bundling with `preserveModules: false`, all "use client" directives were stripped, breaking components in Next.js App Router (RSC).
439
+
440
+ ### Solutions Implemented
441
+ - **Flat bundle structure** - Changed to `preserveModules: false` to eliminate nested `node_modules/.pnpm/` paths
442
+ - **"use client" injection** - Added `output.banner` to inject the directive into all output chunks (since the plugin doesn't work without preserveModules)
443
+ - **Manual code splitting** - Implemented `manualChunks` to split large vendor dependencies for better caching:
444
+ - `vendor-base-ui` (598 KB, 152 KB gzipped) - Base UI components
445
+ - `vendor-styling` (74 KB, 13 KB gzipped) - clsx + tailwind-merge
446
+ - `vendor-floating-ui` (33 KB, 10 KB gzipped) - Floating UI positioning
447
+ - `vendor-utils` (24 KB, 7 KB gzipped) - tabbable, reselect, etc.
448
+
449
+ - abc1a1e: kumo cli
450
+ - e6a6f8c: semantic text colors - consolidation
451
+ - 167a92b: Removed label prop from input components. Prefer using Field to compose a label with an input.
452
+ - 8578662: consolidate blue text to match banner blue text across: badge, expandable, text components
453
+ - 37a703d: consolidate on the green text tokens
454
+
455
+ ### Patch Changes
456
+
457
+ - d23783f: Update kumo package to use literal depdency versions for better yarn linking/portal support.
458
+ - fe8fd1b: improve input group label to be semantic and use htmlFor
459
+ - 933fdf2: **Combobox Type Fixes**
460
+ - Removed `any` type and eslint-disable comments
461
+ - Used proper `ComboboxBase.Root.Props<Value, Multiple>` from base-ui's namespace
462
+ - Simplified generic parameters from 3 (ItemValue, SelectedValue, Multiple) to 2 (Value, Multiple) to match base-ui's actual API
463
+
464
+ - 949fe52: fix remaining lint errors and increase lint warn -> error
465
+ - 72f0695: Update reamde documentation
466
+ - e6326f1: Consolidate AGENTS.md and CLAUDE.md LLM instructions
467
+ - 9fbb791: fix resource-list href lint errors
468
+ - a4231cc: Improve expandable component semantics
469
+ - 344372e: Update Storybook imports from @storybook/react to @storybook/react-vite for Storybook 10 compatibility. Also removes generatedAt timestamp from component registry to prevent merge conflicts during rebases.
470
+ - d1b80c8: improve sensitive input component - semantics, button nesting, labelling, screen reader experience
471
+ - 38f4424: Fix: Resolve type check errors across components/blocks/layouts
472
+ Fix: Export Kumo Breadcrumb as Breadcrumbs + Documentation Improvements
473
+ Fix: MenuBar -Bypass the React 19 type checking issue with IconContext.Provider
474
+ - e82f3f7: improve semantics and labelling for date picker component
475
+
476
+ ## 0.3.0
477
+
478
+ ### Minor Changes
479
+
480
+ - 8113cf4: docs updates and semantic colors for banner
481
+ - 3bca64a: ship dark-mode color scheme styles from kumo lib instead of setting it at the app
482
+ - a5cd231: Adds Storybook 10 integration to the Kumo component library for interactive component development, testing, and documentation. Includes stories for 29 components, automated plop generator updates, and documentation.
483
+
484
+ ### Patch Changes
485
+
486
+ - 969750a: enforce button background transparency for tabs
487
+ - 2f516b0: Combobox - Adjust multiple select height with standard Kumo component height
488
+ - be563d1: Checkbox indeterminate state
489
+ - 7481c95: Improve development workflow with 10x faster rebuilds and comprehensive documentation
490
+
491
+ Add development mode with optimized builds, skip minification and enable incremental TypeScript compilation. Update all READMEs and contributing docs with clear guidance on Storybook (recommended) vs watch build workflows. Add story file documentation to scaffolding sections and two-terminal setup instructions for testing components in docs.
492
+
493
+ - c48b7b5: Enhance CICD to publish beta releases
494
+ - b68c768: Fix: Resolve type check erros across components/blocks/layouts
495
+ Fix: Export Kumo Breadcrumb as Breadcrumbs + Documentation Improvements
496
+ Fix: MenuBar -Bypass the React 19 type checking issue with IconContext.Provider
497
+
498
+ ## 0.2.0
499
+
500
+ ### Minor Changes
501
+
502
+ - 924e016: Semantic color improvements
503
+ - 924e016: Improve select components
504
+ - 924e016: Fix Input borders
505
+ - e73fb2e: Fix exports
506
+ - 1bb5cf7: Compile Tailwind and Standalone CSS, update installation documentation
507
+
508
+ ### Patch Changes
509
+
510
+ - 1bb5cf7: Adding changesets
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Cloudflare, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.