@cloudraker/reki 2.6.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 (762) hide show
  1. package/CHANGELOG.md +1892 -0
  2. package/README.md +525 -0
  3. package/ai/USAGE.md +201 -0
  4. package/ai/component-registry.json +6707 -0
  5. package/ai/component-registry.md +8346 -0
  6. package/ai/schemas.ts +955 -0
  7. package/bin/reki.js +36 -0
  8. package/dist/.build-complete +1 -0
  9. package/dist/ai/schemas.d.ts +2514 -0
  10. package/dist/ai/schemas.d.ts.map +1 -0
  11. package/dist/ai/schemas.js +3985 -0
  12. package/dist/ai/schemas.js.map +1 -0
  13. package/dist/blocks-source/delete-resource/delete-resource.tsx +213 -0
  14. package/dist/blocks-source/page-header/page-header.tsx +99 -0
  15. package/dist/blocks-source/resource-list/resource-list.test.tsx +28 -0
  16. package/dist/blocks-source/resource-list/resource-list.tsx +69 -0
  17. package/dist/catalog.js +229 -0
  18. package/dist/catalog.js.map +1 -0
  19. package/dist/chunks/SankeyChart-jwwpwps4npqzbrvn.js +890 -0
  20. package/dist/chunks/SankeyChart-jwwpwps4npqzbrvn.js.map +1 -0
  21. package/dist/chunks/autocomplete-f4vetako14h2aqsw.js +193 -0
  22. package/dist/chunks/autocomplete-f4vetako14h2aqsw.js.map +1 -0
  23. package/dist/chunks/badge-pc33c5ir7muabgfh.js +163 -0
  24. package/dist/chunks/badge-pc33c5ir7muabgfh.js.map +1 -0
  25. package/dist/chunks/banner-kis9h1yq636liunc.js +120 -0
  26. package/dist/chunks/banner-kis9h1yq636liunc.js.map +1 -0
  27. package/dist/chunks/bash-g5z23u7me5rx7bzt.js +15 -0
  28. package/dist/chunks/bash-g5z23u7me5rx7bzt.js.map +1 -0
  29. package/dist/chunks/breadcrumbs-d6149hyct4puz3x4.js +169 -0
  30. package/dist/chunks/breadcrumbs-d6149hyct4puz3x4.js.map +1 -0
  31. package/dist/chunks/button-nc5p1h28cwes0tjw.js +237 -0
  32. package/dist/chunks/button-nc5p1h28cwes0tjw.js.map +1 -0
  33. package/dist/chunks/checkbox-g2661n3eodgoispq.js +216 -0
  34. package/dist/chunks/checkbox-g2661n3eodgoispq.js.map +1 -0
  35. package/dist/chunks/clipboard-text-g3659lejx2d7i93e.js +191 -0
  36. package/dist/chunks/clipboard-text-g3659lejx2d7i93e.js.map +1 -0
  37. package/dist/chunks/cloudflare-logo-k0f07zztsda8m4ca.js +175 -0
  38. package/dist/chunks/cloudflare-logo-k0f07zztsda8m4ca.js.map +1 -0
  39. package/dist/chunks/cn-ct4n7r74mh8y0f48.js +26 -0
  40. package/dist/chunks/cn-ct4n7r74mh8y0f48.js.map +1 -0
  41. package/dist/chunks/code-fm5rpi47v6cj9o8o.js +61 -0
  42. package/dist/chunks/code-fm5rpi47v6cj9o8o.js.map +1 -0
  43. package/dist/chunks/collapsible-ndvmgo29s5iqfcor.js +76 -0
  44. package/dist/chunks/collapsible-ndvmgo29s5iqfcor.js.map +1 -0
  45. package/dist/chunks/combobox-i38w67netm8ukw4f.js +408 -0
  46. package/dist/chunks/combobox-i38w67netm8ukw4f.js.map +1 -0
  47. package/dist/chunks/command-palette-fe5cjfdgsg3t17vq.js +403 -0
  48. package/dist/chunks/command-palette-fe5cjfdgsg3t17vq.js.map +1 -0
  49. package/dist/chunks/core-oowp00biqxe3hvjc.js +5806 -0
  50. package/dist/chunks/core-oowp00biqxe3hvjc.js.map +1 -0
  51. package/dist/chunks/css-d1mi3wy1sl3fzekh.js +8 -0
  52. package/dist/chunks/css-d1mi3wy1sl3fzekh.js.map +1 -0
  53. package/dist/chunks/date-picker-81mc3zrsmobm3ydm.js +2921 -0
  54. package/dist/chunks/date-picker-81mc3zrsmobm3ydm.js.map +1 -0
  55. package/dist/chunks/date-range-picker-c8ttrfaos9mb1w5n.js +408 -0
  56. package/dist/chunks/date-range-picker-c8ttrfaos9mb1w5n.js.map +1 -0
  57. package/dist/chunks/dialog-m4go8xof25fospqo.js +134 -0
  58. package/dist/chunks/dialog-m4go8xof25fospqo.js.map +1 -0
  59. package/dist/chunks/diff-cpj1h9lg0bw716mj.js +8 -0
  60. package/dist/chunks/diff-cpj1h9lg0bw716mj.js.map +1 -0
  61. package/dist/chunks/dropdown-j5uht8mn4z7xc9fc.js +313 -0
  62. package/dist/chunks/dropdown-j5uht8mn4z7xc9fc.js.map +1 -0
  63. package/dist/chunks/empty-kazxr0248zjemw6n.js +94 -0
  64. package/dist/chunks/empty-kazxr0248zjemw6n.js.map +1 -0
  65. package/dist/chunks/engine-javascript-iqcmg6wi2pjun29k.js +2637 -0
  66. package/dist/chunks/engine-javascript-iqcmg6wi2pjun29k.js.map +1 -0
  67. package/dist/chunks/engine-oniguruma-g75h8oxao68cjmhg.js +295 -0
  68. package/dist/chunks/engine-oniguruma-g75h8oxao68cjmhg.js.map +1 -0
  69. package/dist/chunks/field-fe5m8z3vbpvtctbe.js +77 -0
  70. package/dist/chunks/field-fe5m8z3vbpvtctbe.js.map +1 -0
  71. package/dist/chunks/github-light-ulev8flhimfg79ob.js +6 -0
  72. package/dist/chunks/github-light-ulev8flhimfg79ob.js.map +1 -0
  73. package/dist/chunks/graphql-ft2h47erta7isqn4.js +16 -0
  74. package/dist/chunks/graphql-ft2h47erta7isqn4.js.map +1 -0
  75. package/dist/chunks/grid-enlbb88vucgeq1np.js +128 -0
  76. package/dist/chunks/grid-enlbb88vucgeq1np.js.map +1 -0
  77. package/dist/chunks/hcl-hcu7d6ja6t540ijn.js +8 -0
  78. package/dist/chunks/hcl-hcu7d6ja6t540ijn.js.map +1 -0
  79. package/dist/chunks/html-kl304jmqj4jxj777.js +12 -0
  80. package/dist/chunks/html-kl304jmqj4jxj777.js.map +1 -0
  81. package/dist/chunks/input-area-ciw85g3fno06t4tw.js +78 -0
  82. package/dist/chunks/input-area-ciw85g3fno06t4tw.js.map +1 -0
  83. package/dist/chunks/input-group-mo7tq7jr19hmgor5.js +505 -0
  84. package/dist/chunks/input-group-mo7tq7jr19hmgor5.js.map +1 -0
  85. package/dist/chunks/input-i5nefqk213n4z7pr.js +130 -0
  86. package/dist/chunks/input-i5nefqk213n4z7pr.js.map +1 -0
  87. package/dist/chunks/javascript-hhx3avh9uv2o27ay.js +8 -0
  88. package/dist/chunks/javascript-hhx3avh9uv2o27ay.js.map +1 -0
  89. package/dist/chunks/json-jovp9qemdkp5cziz.js +8 -0
  90. package/dist/chunks/json-jovp9qemdkp5cziz.js.map +1 -0
  91. package/dist/chunks/jsonc-jbkkgjer6ispw2u3.js +8 -0
  92. package/dist/chunks/jsonc-jbkkgjer6ispw2u3.js.map +1 -0
  93. package/dist/chunks/jsx-ij885l2li2lzfoss.js +8 -0
  94. package/dist/chunks/jsx-ij885l2li2lzfoss.js.map +1 -0
  95. package/dist/chunks/label-fcho4757rbdess0c.js +68 -0
  96. package/dist/chunks/label-fcho4757rbdess0c.js.map +1 -0
  97. package/dist/chunks/layer-card-kzu48dhzxm3e9p4u.js +47 -0
  98. package/dist/chunks/layer-card-kzu48dhzxm3e9p4u.js.map +1 -0
  99. package/dist/chunks/link-j2gu5dr3nr4i4yf0.js +95 -0
  100. package/dist/chunks/link-j2gu5dr3nr4i4yf0.js.map +1 -0
  101. package/dist/chunks/link-provider-bgljdgs4hs438h0u.js +22 -0
  102. package/dist/chunks/link-provider-bgljdgs4hs438h0u.js.map +1 -0
  103. package/dist/chunks/loader-cxzp72mn53lzbv9c.js +109 -0
  104. package/dist/chunks/loader-cxzp72mn53lzbv9c.js.map +1 -0
  105. package/dist/chunks/markdown-n2vyyq7l68fy32wc.js +8 -0
  106. package/dist/chunks/markdown-n2vyyq7l68fy32wc.js.map +1 -0
  107. package/dist/chunks/menubar-ir5gbjmsizsddz7g.js +98 -0
  108. package/dist/chunks/menubar-ir5gbjmsizsddz7g.js.map +1 -0
  109. package/dist/chunks/meter-o5yd7ctjf80vvyjx.js +51 -0
  110. package/dist/chunks/meter-o5yd7ctjf80vvyjx.js.map +1 -0
  111. package/dist/chunks/pagination-bryw6rohfr7mm3km.js +266 -0
  112. package/dist/chunks/pagination-bryw6rohfr7mm3km.js.map +1 -0
  113. package/dist/chunks/popover-elxcmvv7mu7m7uk4.js +181 -0
  114. package/dist/chunks/popover-elxcmvv7mu7m7uk4.js.map +1 -0
  115. package/dist/chunks/portal-provider-off76og7tjyz96ys.js +18 -0
  116. package/dist/chunks/portal-provider-off76og7tjyz96ys.js.map +1 -0
  117. package/dist/chunks/python-gg755pb8oe9ra1d1.js +8 -0
  118. package/dist/chunks/python-gg755pb8oe9ra1d1.js.map +1 -0
  119. package/dist/chunks/radio-newyq331uk4lltr6.js +226 -0
  120. package/dist/chunks/radio-newyq331uk4lltr6.js.map +1 -0
  121. package/dist/chunks/resolve-variant-t8jcltsizeg29ege.js +11 -0
  122. package/dist/chunks/resolve-variant-t8jcltsizeg29ege.js.map +1 -0
  123. package/dist/chunks/select-h5480mbro0ypxu0b.js +237 -0
  124. package/dist/chunks/select-h5480mbro0ypxu0b.js.map +1 -0
  125. package/dist/chunks/sensitive-input-lqugq6uvx0lkpu0u.js +273 -0
  126. package/dist/chunks/sensitive-input-lqugq6uvx0lkpu0u.js.map +1 -0
  127. package/dist/chunks/sidebar-noz668nhdu2gso12.js +1144 -0
  128. package/dist/chunks/sidebar-noz668nhdu2gso12.js.map +1 -0
  129. package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js +33 -0
  130. package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js.map +1 -0
  131. package/dist/chunks/sql-ovukp5mrfunfk5tv.js +8 -0
  132. package/dist/chunks/sql-ovukp5mrfunfk5tv.js.map +1 -0
  133. package/dist/chunks/surface-cyxme7mlr49l33f8.js +29 -0
  134. package/dist/chunks/surface-cyxme7mlr49l33f8.js.map +1 -0
  135. package/dist/chunks/switch-bigo96fyjlh7ivbi.js +256 -0
  136. package/dist/chunks/switch-bigo96fyjlh7ivbi.js.map +1 -0
  137. package/dist/chunks/table-mwcmwp6a80zvyrxw.js +208 -0
  138. package/dist/chunks/table-mwcmwp6a80zvyrxw.js.map +1 -0
  139. package/dist/chunks/table-of-contents-gkuvkr2w6lbhi7wt.js +106 -0
  140. package/dist/chunks/table-of-contents-gkuvkr2w6lbhi7wt.js.map +1 -0
  141. package/dist/chunks/tabs-e4pcjkw94kpe35x0.js +177 -0
  142. package/dist/chunks/tabs-e4pcjkw94kpe35x0.js.map +1 -0
  143. package/dist/chunks/text-oxsrbmjmfq99ue85.js +103 -0
  144. package/dist/chunks/text-oxsrbmjmfq99ue85.js.map +1 -0
  145. package/dist/chunks/toast-ivr4097bstjcjotf.js +370 -0
  146. package/dist/chunks/toast-ivr4097bstjcjotf.js.map +1 -0
  147. package/dist/chunks/toml-nczb2z9n0o23o3ci.js +8 -0
  148. package/dist/chunks/toml-nczb2z9n0o23o3ci.js.map +1 -0
  149. package/dist/chunks/tooltip-ncaia8n1lavkyw8n.js +103 -0
  150. package/dist/chunks/tooltip-ncaia8n1lavkyw8n.js.map +1 -0
  151. package/dist/chunks/tsx-ehy8lrzet6v54zur.js +8 -0
  152. package/dist/chunks/tsx-ehy8lrzet6v54zur.js.map +1 -0
  153. package/dist/chunks/typescript-k4ggjrxhrhcdni6u.js +8 -0
  154. package/dist/chunks/typescript-k4ggjrxhrhcdni6u.js.map +1 -0
  155. package/dist/chunks/vendor-base-ui-bgl9g5nkvqy3tn36.js +24690 -0
  156. package/dist/chunks/vendor-base-ui-bgl9g5nkvqy3tn36.js.map +1 -0
  157. package/dist/chunks/vendor-floating-ui-dn8xswn8036udsqq.js +1311 -0
  158. package/dist/chunks/vendor-floating-ui-dn8xswn8036udsqq.js.map +1 -0
  159. package/dist/chunks/vendor-styling-gobnkhsy0rva4qd3.js +2775 -0
  160. package/dist/chunks/vendor-styling-gobnkhsy0rva4qd3.js.map +1 -0
  161. package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js +217 -0
  162. package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js.map +1 -0
  163. package/dist/chunks/vesper-ebfu9ns65f2v830s.js +6 -0
  164. package/dist/chunks/vesper-ebfu9ns65f2v830s.js.map +1 -0
  165. package/dist/chunks/wasm-oj22f8usru9h7dzg.js +9 -0
  166. package/dist/chunks/wasm-oj22f8usru9h7dzg.js.map +1 -0
  167. package/dist/chunks/yaml-e2v22lr79tss2brj.js +8 -0
  168. package/dist/chunks/yaml-e2v22lr79tss2brj.js.map +1 -0
  169. package/dist/code/server.js +88 -0
  170. package/dist/code/server.js.map +1 -0
  171. package/dist/code.js +256 -0
  172. package/dist/code.js.map +1 -0
  173. package/dist/command-line/cli.js +850 -0
  174. package/dist/command-line/commands/add.js +282 -0
  175. package/dist/command-line/commands/ai.js +22 -0
  176. package/dist/command-line/commands/blocks.js +61 -0
  177. package/dist/command-line/commands/doc.js +167 -0
  178. package/dist/command-line/commands/init.js +95 -0
  179. package/dist/command-line/commands/ls.js +53 -0
  180. package/dist/components/autocomplete.js +9 -0
  181. package/dist/components/autocomplete.js.map +1 -0
  182. package/dist/components/badge.js +7 -0
  183. package/dist/components/badge.js.map +1 -0
  184. package/dist/components/banner.js +7 -0
  185. package/dist/components/banner.js.map +1 -0
  186. package/dist/components/breadcrumbs.js +9 -0
  187. package/dist/components/breadcrumbs.js.map +1 -0
  188. package/dist/components/button.js +9 -0
  189. package/dist/components/button.js.map +1 -0
  190. package/dist/components/chart.js +10 -0
  191. package/dist/components/chart.js.map +1 -0
  192. package/dist/components/checkbox.js +8 -0
  193. package/dist/components/checkbox.js.map +1 -0
  194. package/dist/components/clipboard-text.js +6 -0
  195. package/dist/components/clipboard-text.js.map +1 -0
  196. package/dist/components/cloudflare-logo.js +10 -0
  197. package/dist/components/cloudflare-logo.js.map +1 -0
  198. package/dist/components/code.js +7 -0
  199. package/dist/components/code.js.map +1 -0
  200. package/dist/components/collapsible.js +6 -0
  201. package/dist/components/collapsible.js.map +1 -0
  202. package/dist/components/combobox.js +6 -0
  203. package/dist/components/combobox.js.map +1 -0
  204. package/dist/components/command-palette.js +8 -0
  205. package/dist/components/command-palette.js.map +1 -0
  206. package/dist/components/date-picker.js +6 -0
  207. package/dist/components/date-picker.js.map +1 -0
  208. package/dist/components/date-range-picker.js +6 -0
  209. package/dist/components/date-range-picker.js.map +1 -0
  210. package/dist/components/dialog.js +11 -0
  211. package/dist/components/dialog.js.map +1 -0
  212. package/dist/components/dropdown.js +6 -0
  213. package/dist/components/dropdown.js.map +1 -0
  214. package/dist/components/empty.js +9 -0
  215. package/dist/components/empty.js.map +1 -0
  216. package/dist/components/field.js +10 -0
  217. package/dist/components/field.js.map +1 -0
  218. package/dist/components/flow.js +5831 -0
  219. package/dist/components/flow.js.map +1 -0
  220. package/dist/components/grid.js +11 -0
  221. package/dist/components/grid.js.map +1 -0
  222. package/dist/components/input-group.js +8 -0
  223. package/dist/components/input-group.js.map +1 -0
  224. package/dist/components/input.js +14 -0
  225. package/dist/components/input.js.map +1 -0
  226. package/dist/components/label.js +10 -0
  227. package/dist/components/label.js.map +1 -0
  228. package/dist/components/layer-card.js +6 -0
  229. package/dist/components/layer-card.js.map +1 -0
  230. package/dist/components/link.js +9 -0
  231. package/dist/components/link.js.map +1 -0
  232. package/dist/components/loader.js +8 -0
  233. package/dist/components/loader.js.map +1 -0
  234. package/dist/components/menubar.js +7 -0
  235. package/dist/components/menubar.js.map +1 -0
  236. package/dist/components/meter.js +6 -0
  237. package/dist/components/meter.js.map +1 -0
  238. package/dist/components/pagination.js +6 -0
  239. package/dist/components/pagination.js.map +1 -0
  240. package/dist/components/popover.js +14 -0
  241. package/dist/components/popover.js.map +1 -0
  242. package/dist/components/radio.js +10 -0
  243. package/dist/components/radio.js.map +1 -0
  244. package/dist/components/select.js +6 -0
  245. package/dist/components/select.js.map +1 -0
  246. package/dist/components/sensitive-input.js +8 -0
  247. package/dist/components/sensitive-input.js.map +1 -0
  248. package/dist/components/sidebar.js +34 -0
  249. package/dist/components/sidebar.js.map +1 -0
  250. package/dist/components/surface.js +6 -0
  251. package/dist/components/surface.js.map +1 -0
  252. package/dist/components/switch.js +8 -0
  253. package/dist/components/switch.js.map +1 -0
  254. package/dist/components/table-of-contents.js +8 -0
  255. package/dist/components/table-of-contents.js.map +1 -0
  256. package/dist/components/table.js +8 -0
  257. package/dist/components/table.js.map +1 -0
  258. package/dist/components/tabs.js +6 -0
  259. package/dist/components/tabs.js.map +1 -0
  260. package/dist/components/text.js +6 -0
  261. package/dist/components/text.js.map +1 -0
  262. package/dist/components/toast.js +11 -0
  263. package/dist/components/toast.js.map +1 -0
  264. package/dist/components/tooltip.js +7 -0
  265. package/dist/components/tooltip.js.map +1 -0
  266. package/dist/index.js +344 -0
  267. package/dist/index.js.map +1 -0
  268. package/dist/primitives/accordion.js +6 -0
  269. package/dist/primitives/accordion.js.map +1 -0
  270. package/dist/primitives/alert-dialog.js +6 -0
  271. package/dist/primitives/alert-dialog.js.map +1 -0
  272. package/dist/primitives/autocomplete.js +6 -0
  273. package/dist/primitives/autocomplete.js.map +1 -0
  274. package/dist/primitives/avatar.js +6 -0
  275. package/dist/primitives/avatar.js.map +1 -0
  276. package/dist/primitives/button.js +6 -0
  277. package/dist/primitives/button.js.map +1 -0
  278. package/dist/primitives/checkbox-group.js +6 -0
  279. package/dist/primitives/checkbox-group.js.map +1 -0
  280. package/dist/primitives/checkbox.js +6 -0
  281. package/dist/primitives/checkbox.js.map +1 -0
  282. package/dist/primitives/collapsible.js +6 -0
  283. package/dist/primitives/collapsible.js.map +1 -0
  284. package/dist/primitives/combobox.js +6 -0
  285. package/dist/primitives/combobox.js.map +1 -0
  286. package/dist/primitives/context-menu.js +6 -0
  287. package/dist/primitives/context-menu.js.map +1 -0
  288. package/dist/primitives/csp-provider.js +6 -0
  289. package/dist/primitives/csp-provider.js.map +1 -0
  290. package/dist/primitives/dialog.js +6 -0
  291. package/dist/primitives/dialog.js.map +1 -0
  292. package/dist/primitives/direction-provider.js +7 -0
  293. package/dist/primitives/direction-provider.js.map +1 -0
  294. package/dist/primitives/drawer.js +6 -0
  295. package/dist/primitives/drawer.js.map +1 -0
  296. package/dist/primitives/field.js +6 -0
  297. package/dist/primitives/field.js.map +1 -0
  298. package/dist/primitives/fieldset.js +6 -0
  299. package/dist/primitives/fieldset.js.map +1 -0
  300. package/dist/primitives/form.js +6 -0
  301. package/dist/primitives/form.js.map +1 -0
  302. package/dist/primitives/input.js +6 -0
  303. package/dist/primitives/input.js.map +1 -0
  304. package/dist/primitives/menu.js +6 -0
  305. package/dist/primitives/menu.js.map +1 -0
  306. package/dist/primitives/menubar.js +6 -0
  307. package/dist/primitives/menubar.js.map +1 -0
  308. package/dist/primitives/meter.js +6 -0
  309. package/dist/primitives/meter.js.map +1 -0
  310. package/dist/primitives/navigation-menu.js +6 -0
  311. package/dist/primitives/navigation-menu.js.map +1 -0
  312. package/dist/primitives/number-field.js +6 -0
  313. package/dist/primitives/number-field.js.map +1 -0
  314. package/dist/primitives/otp-field.js +6 -0
  315. package/dist/primitives/otp-field.js.map +1 -0
  316. package/dist/primitives/popover.js +6 -0
  317. package/dist/primitives/popover.js.map +1 -0
  318. package/dist/primitives/preview-card.js +6 -0
  319. package/dist/primitives/preview-card.js.map +1 -0
  320. package/dist/primitives/progress.js +6 -0
  321. package/dist/primitives/progress.js.map +1 -0
  322. package/dist/primitives/radio-group.js +6 -0
  323. package/dist/primitives/radio-group.js.map +1 -0
  324. package/dist/primitives/radio.js +6 -0
  325. package/dist/primitives/radio.js.map +1 -0
  326. package/dist/primitives/scroll-area.js +6 -0
  327. package/dist/primitives/scroll-area.js.map +1 -0
  328. package/dist/primitives/select.js +6 -0
  329. package/dist/primitives/select.js.map +1 -0
  330. package/dist/primitives/separator.js +6 -0
  331. package/dist/primitives/separator.js.map +1 -0
  332. package/dist/primitives/slider.js +6 -0
  333. package/dist/primitives/slider.js.map +1 -0
  334. package/dist/primitives/switch.js +6 -0
  335. package/dist/primitives/switch.js.map +1 -0
  336. package/dist/primitives/tabs.js +6 -0
  337. package/dist/primitives/tabs.js.map +1 -0
  338. package/dist/primitives/toast.js +6 -0
  339. package/dist/primitives/toast.js.map +1 -0
  340. package/dist/primitives/toggle-group.js +6 -0
  341. package/dist/primitives/toggle-group.js.map +1 -0
  342. package/dist/primitives/toggle.js +6 -0
  343. package/dist/primitives/toggle.js.map +1 -0
  344. package/dist/primitives/toolbar.js +6 -0
  345. package/dist/primitives/toolbar.js.map +1 -0
  346. package/dist/primitives/tooltip.js +6 -0
  347. package/dist/primitives/tooltip.js.map +1 -0
  348. package/dist/primitives.js +46 -0
  349. package/dist/primitives.js.map +1 -0
  350. package/dist/registry.js +2 -0
  351. package/dist/registry.js.map +1 -0
  352. package/dist/scripts/theme-generator/config.d.ts +6 -0
  353. package/dist/scripts/theme-generator/config.d.ts.map +1 -0
  354. package/dist/scripts/theme-generator/config.js +629 -0
  355. package/dist/scripts/theme-generator/config.js.map +1 -0
  356. package/dist/scripts/theme-generator/generate-css.d.ts +31 -0
  357. package/dist/scripts/theme-generator/generate-css.d.ts.map +1 -0
  358. package/dist/scripts/theme-generator/index.d.ts +13 -0
  359. package/dist/scripts/theme-generator/index.d.ts.map +1 -0
  360. package/dist/scripts/theme-generator/migrate.d.ts +56 -0
  361. package/dist/scripts/theme-generator/migrate.d.ts.map +1 -0
  362. package/dist/scripts/theme-generator/types.d.ts +82 -0
  363. package/dist/scripts/theme-generator/types.d.ts.map +1 -0
  364. package/dist/scripts/theme-generator/types.js +2 -0
  365. package/dist/scripts/theme-generator/types.js.map +1 -0
  366. package/dist/src/blocks/delete-resource/delete-resource.d.ts +46 -0
  367. package/dist/src/blocks/delete-resource/delete-resource.d.ts.map +1 -0
  368. package/dist/src/blocks/delete-resource/index.d.ts +2 -0
  369. package/dist/src/blocks/delete-resource/index.d.ts.map +1 -0
  370. package/dist/src/blocks/page-header/index.d.ts +2 -0
  371. package/dist/src/blocks/page-header/index.d.ts.map +1 -0
  372. package/dist/src/blocks/page-header/page-header.d.ts +38 -0
  373. package/dist/src/blocks/page-header/page-header.d.ts.map +1 -0
  374. package/dist/src/blocks/resource-list/index.d.ts +2 -0
  375. package/dist/src/blocks/resource-list/index.d.ts.map +1 -0
  376. package/dist/src/blocks/resource-list/resource-list.d.ts +18 -0
  377. package/dist/src/blocks/resource-list/resource-list.d.ts.map +1 -0
  378. package/dist/src/catalog/catalog.d.ts +75 -0
  379. package/dist/src/catalog/catalog.d.ts.map +1 -0
  380. package/dist/src/catalog/data.d.ts +44 -0
  381. package/dist/src/catalog/data.d.ts.map +1 -0
  382. package/dist/src/catalog/index.d.ts +39 -0
  383. package/dist/src/catalog/index.d.ts.map +1 -0
  384. package/dist/src/catalog/types.d.ts +226 -0
  385. package/dist/src/catalog/types.d.ts.map +1 -0
  386. package/dist/src/catalog/visibility.d.ts +37 -0
  387. package/dist/src/catalog/visibility.d.ts.map +1 -0
  388. package/dist/src/code/code-highlighted.d.ts +32 -0
  389. package/dist/src/code/code-highlighted.d.ts.map +1 -0
  390. package/dist/src/code/context.d.ts +16 -0
  391. package/dist/src/code/context.d.ts.map +1 -0
  392. package/dist/src/code/index.d.ts +32 -0
  393. package/dist/src/code/index.d.ts.map +1 -0
  394. package/dist/src/code/provider.d.ts +13 -0
  395. package/dist/src/code/provider.d.ts.map +1 -0
  396. package/dist/src/code/server.d.ts +95 -0
  397. package/dist/src/code/server.d.ts.map +1 -0
  398. package/dist/src/code/types.d.ts +130 -0
  399. package/dist/src/code/types.d.ts.map +1 -0
  400. package/dist/src/code/use-shiki-highlighter.d.ts +36 -0
  401. package/dist/src/code/use-shiki-highlighter.d.ts.map +1 -0
  402. package/dist/src/command-line/build-cli.d.ts +7 -0
  403. package/dist/src/command-line/build-cli.d.ts.map +1 -0
  404. package/dist/src/command-line/cli.d.ts +13 -0
  405. package/dist/src/command-line/cli.d.ts.map +1 -0
  406. package/dist/src/command-line/commands/add.d.ts +10 -0
  407. package/dist/src/command-line/commands/add.d.ts.map +1 -0
  408. package/dist/src/command-line/commands/ai.d.ts +10 -0
  409. package/dist/src/command-line/commands/ai.d.ts.map +1 -0
  410. package/dist/src/command-line/commands/blocks.d.ts +10 -0
  411. package/dist/src/command-line/commands/blocks.d.ts.map +1 -0
  412. package/dist/src/command-line/commands/doc.d.ts +14 -0
  413. package/dist/src/command-line/commands/doc.d.ts.map +1 -0
  414. package/dist/src/command-line/commands/init.d.ts +18 -0
  415. package/dist/src/command-line/commands/init.d.ts.map +1 -0
  416. package/dist/src/command-line/commands/ls.d.ts +10 -0
  417. package/dist/src/command-line/commands/ls.d.ts.map +1 -0
  418. package/dist/src/command-line/commands/migrate.d.ts +10 -0
  419. package/dist/src/command-line/commands/migrate.d.ts.map +1 -0
  420. package/dist/src/command-line/utils/config.d.ts +42 -0
  421. package/dist/src/command-line/utils/config.d.ts.map +1 -0
  422. package/dist/src/command-line/utils/transformer.d.ts +21 -0
  423. package/dist/src/command-line/utils/transformer.d.ts.map +1 -0
  424. package/dist/src/components/autocomplete/autocomplete.d.ts +181 -0
  425. package/dist/src/components/autocomplete/autocomplete.d.ts.map +1 -0
  426. package/dist/src/components/autocomplete/index.d.ts +3 -0
  427. package/dist/src/components/autocomplete/index.d.ts.map +1 -0
  428. package/dist/src/components/badge/badge.d.ts +180 -0
  429. package/dist/src/components/badge/badge.d.ts.map +1 -0
  430. package/dist/src/components/badge/index.d.ts +2 -0
  431. package/dist/src/components/badge/index.d.ts.map +1 -0
  432. package/dist/src/components/banner/banner.d.ts +106 -0
  433. package/dist/src/components/banner/banner.d.ts.map +1 -0
  434. package/dist/src/components/banner/index.d.ts +2 -0
  435. package/dist/src/components/banner/index.d.ts.map +1 -0
  436. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts +78 -0
  437. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  438. package/dist/src/components/breadcrumbs/index.d.ts +2 -0
  439. package/dist/src/components/breadcrumbs/index.d.ts.map +1 -0
  440. package/dist/src/components/button/button.d.ts +214 -0
  441. package/dist/src/components/button/button.d.ts.map +1 -0
  442. package/dist/src/components/button/index.d.ts +2 -0
  443. package/dist/src/components/button/index.d.ts.map +1 -0
  444. package/dist/src/components/chart/Color.d.ts +91 -0
  445. package/dist/src/components/chart/Color.d.ts.map +1 -0
  446. package/dist/src/components/chart/EChart.d.ts +159 -0
  447. package/dist/src/components/chart/EChart.d.ts.map +1 -0
  448. package/dist/src/components/chart/Legend.d.ts +51 -0
  449. package/dist/src/components/chart/Legend.d.ts.map +1 -0
  450. package/dist/src/components/chart/SankeyChart.d.ts +98 -0
  451. package/dist/src/components/chart/SankeyChart.d.ts.map +1 -0
  452. package/dist/src/components/chart/TimeseriesChart.d.ts +181 -0
  453. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -0
  454. package/dist/src/components/chart/index.d.ts +6 -0
  455. package/dist/src/components/chart/index.d.ts.map +1 -0
  456. package/dist/src/components/checkbox/checkbox.d.ts +197 -0
  457. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -0
  458. package/dist/src/components/checkbox/index.d.ts +2 -0
  459. package/dist/src/components/checkbox/index.d.ts.map +1 -0
  460. package/dist/src/components/clipboard-text/clipboard-text.d.ts +88 -0
  461. package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -0
  462. package/dist/src/components/clipboard-text/index.d.ts +2 -0
  463. package/dist/src/components/clipboard-text/index.d.ts.map +1 -0
  464. package/dist/src/components/cloudflare-logo/cloudflare-logo.d.ts +133 -0
  465. package/dist/src/components/cloudflare-logo/cloudflare-logo.d.ts.map +1 -0
  466. package/dist/src/components/cloudflare-logo/index.d.ts +2 -0
  467. package/dist/src/components/cloudflare-logo/index.d.ts.map +1 -0
  468. package/dist/src/components/code/code.d.ts +189 -0
  469. package/dist/src/components/code/code.d.ts.map +1 -0
  470. package/dist/src/components/code/index.d.ts +4 -0
  471. package/dist/src/components/code/index.d.ts.map +1 -0
  472. package/dist/src/components/collapsible/collapsible.d.ts +109 -0
  473. package/dist/src/components/collapsible/collapsible.d.ts.map +1 -0
  474. package/dist/src/components/collapsible/index.d.ts +2 -0
  475. package/dist/src/components/collapsible/index.d.ts.map +1 -0
  476. package/dist/src/components/combobox/combobox.d.ts +246 -0
  477. package/dist/src/components/combobox/combobox.d.ts.map +1 -0
  478. package/dist/src/components/combobox/index.d.ts +3 -0
  479. package/dist/src/components/combobox/index.d.ts.map +1 -0
  480. package/dist/src/components/command-palette/command-palette.d.ts +258 -0
  481. package/dist/src/components/command-palette/command-palette.d.ts.map +1 -0
  482. package/dist/src/components/command-palette/index.d.ts +3 -0
  483. package/dist/src/components/command-palette/index.d.ts.map +1 -0
  484. package/dist/src/components/command-palette/types.d.ts +168 -0
  485. package/dist/src/components/command-palette/types.d.ts.map +1 -0
  486. package/dist/src/components/date-picker/date-picker.d.ts +65 -0
  487. package/dist/src/components/date-picker/date-picker.d.ts.map +1 -0
  488. package/dist/src/components/date-picker/index.d.ts +4 -0
  489. package/dist/src/components/date-picker/index.d.ts.map +1 -0
  490. package/dist/src/components/date-range-picker/date-range-picker.d.ts +125 -0
  491. package/dist/src/components/date-range-picker/date-range-picker.d.ts.map +1 -0
  492. package/dist/src/components/date-range-picker/index.d.ts +5 -0
  493. package/dist/src/components/date-range-picker/index.d.ts.map +1 -0
  494. package/dist/src/components/dialog/dialog.d.ts +242 -0
  495. package/dist/src/components/dialog/dialog.d.ts.map +1 -0
  496. package/dist/src/components/dialog/index.d.ts +2 -0
  497. package/dist/src/components/dialog/index.d.ts.map +1 -0
  498. package/dist/src/components/dropdown/dropdown.d.ts +116 -0
  499. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -0
  500. package/dist/src/components/dropdown/index.d.ts +2 -0
  501. package/dist/src/components/dropdown/index.d.ts.map +1 -0
  502. package/dist/src/components/empty/empty.d.ts +69 -0
  503. package/dist/src/components/empty/empty.d.ts.map +1 -0
  504. package/dist/src/components/empty/index.d.ts +2 -0
  505. package/dist/src/components/empty/index.d.ts.map +1 -0
  506. package/dist/src/components/field/field.d.ts +89 -0
  507. package/dist/src/components/field/field.d.ts.map +1 -0
  508. package/dist/src/components/field/index.d.ts +2 -0
  509. package/dist/src/components/field/index.d.ts.map +1 -0
  510. package/dist/src/components/flow/connectors.d.ts +41 -0
  511. package/dist/src/components/flow/connectors.d.ts.map +1 -0
  512. package/dist/src/components/flow/diagram.d.ts +96 -0
  513. package/dist/src/components/flow/diagram.d.ts.map +1 -0
  514. package/dist/src/components/flow/index.d.ts +26 -0
  515. package/dist/src/components/flow/index.d.ts.map +1 -0
  516. package/dist/src/components/flow/node.d.ts +61 -0
  517. package/dist/src/components/flow/node.d.ts.map +1 -0
  518. package/dist/src/components/flow/parallel.d.ts +13 -0
  519. package/dist/src/components/flow/parallel.d.ts.map +1 -0
  520. package/dist/src/components/flow/use-children.d.ts +87 -0
  521. package/dist/src/components/flow/use-children.d.ts.map +1 -0
  522. package/dist/src/components/grid/grid.d.ts +135 -0
  523. package/dist/src/components/grid/grid.d.ts.map +1 -0
  524. package/dist/src/components/grid/index.d.ts +2 -0
  525. package/dist/src/components/grid/index.d.ts.map +1 -0
  526. package/dist/src/components/input/index.d.ts +19 -0
  527. package/dist/src/components/input/index.d.ts.map +1 -0
  528. package/dist/src/components/input/input-area.d.ts +65 -0
  529. package/dist/src/components/input/input-area.d.ts.map +1 -0
  530. package/dist/src/components/input/input.d.ts +175 -0
  531. package/dist/src/components/input/input.d.ts.map +1 -0
  532. package/dist/src/components/input-group/context.d.ts +96 -0
  533. package/dist/src/components/input-group/context.d.ts.map +1 -0
  534. package/dist/src/components/input-group/index.d.ts +2 -0
  535. package/dist/src/components/input-group/index.d.ts.map +1 -0
  536. package/dist/src/components/input-group/input-group-addon.d.ts +15 -0
  537. package/dist/src/components/input-group/input-group-addon.d.ts.map +1 -0
  538. package/dist/src/components/input-group/input-group-button.d.ts +36 -0
  539. package/dist/src/components/input-group/input-group-button.d.ts.map +1 -0
  540. package/dist/src/components/input-group/input-group-input.d.ts +9 -0
  541. package/dist/src/components/input-group/input-group-input.d.ts.map +1 -0
  542. package/dist/src/components/input-group/input-group-suffix.d.ts +13 -0
  543. package/dist/src/components/input-group/input-group-suffix.d.ts.map +1 -0
  544. package/dist/src/components/input-group/input-group.d.ts +43 -0
  545. package/dist/src/components/input-group/input-group.d.ts.map +1 -0
  546. package/dist/src/components/label/index.d.ts +2 -0
  547. package/dist/src/components/label/index.d.ts.map +1 -0
  548. package/dist/src/components/label/label.d.ts +67 -0
  549. package/dist/src/components/label/label.d.ts.map +1 -0
  550. package/dist/src/components/layer-card/index.d.ts +2 -0
  551. package/dist/src/components/layer-card/index.d.ts.map +1 -0
  552. package/dist/src/components/layer-card/layer-card.d.ts +60 -0
  553. package/dist/src/components/layer-card/layer-card.d.ts.map +1 -0
  554. package/dist/src/components/link/index.d.ts +2 -0
  555. package/dist/src/components/link/index.d.ts.map +1 -0
  556. package/dist/src/components/link/link.d.ts +66 -0
  557. package/dist/src/components/link/link.d.ts.map +1 -0
  558. package/dist/src/components/loader/index.d.ts +3 -0
  559. package/dist/src/components/loader/index.d.ts.map +1 -0
  560. package/dist/src/components/loader/loader.d.ts +70 -0
  561. package/dist/src/components/loader/loader.d.ts.map +1 -0
  562. package/dist/src/components/loader/skeleton-line.d.ts +11 -0
  563. package/dist/src/components/loader/skeleton-line.d.ts.map +1 -0
  564. package/dist/src/components/menubar/index.d.ts +3 -0
  565. package/dist/src/components/menubar/index.d.ts.map +1 -0
  566. package/dist/src/components/menubar/menubar.d.ts +66 -0
  567. package/dist/src/components/menubar/menubar.d.ts.map +1 -0
  568. package/dist/src/components/menubar/use-menu-navigation.d.ts +8 -0
  569. package/dist/src/components/menubar/use-menu-navigation.d.ts.map +1 -0
  570. package/dist/src/components/meter/index.d.ts +2 -0
  571. package/dist/src/components/meter/index.d.ts.map +1 -0
  572. package/dist/src/components/meter/meter.d.ts +44 -0
  573. package/dist/src/components/meter/meter.d.ts.map +1 -0
  574. package/dist/src/components/pagination/index.d.ts +2 -0
  575. package/dist/src/components/pagination/index.d.ts.map +1 -0
  576. package/dist/src/components/pagination/pagination.d.ts +241 -0
  577. package/dist/src/components/pagination/pagination.d.ts.map +1 -0
  578. package/dist/src/components/popover/index.d.ts +3 -0
  579. package/dist/src/components/popover/index.d.ts.map +1 -0
  580. package/dist/src/components/popover/popover.d.ts +178 -0
  581. package/dist/src/components/popover/popover.d.ts.map +1 -0
  582. package/dist/src/components/radio/index.d.ts +2 -0
  583. package/dist/src/components/radio/index.d.ts.map +1 -0
  584. package/dist/src/components/radio/radio.d.ts +277 -0
  585. package/dist/src/components/radio/radio.d.ts.map +1 -0
  586. package/dist/src/components/radio/radio.type-spec.d.ts +12 -0
  587. package/dist/src/components/radio/radio.type-spec.d.ts.map +1 -0
  588. package/dist/src/components/select/index.d.ts +2 -0
  589. package/dist/src/components/select/index.d.ts.map +1 -0
  590. package/dist/src/components/select/select.d.ts +288 -0
  591. package/dist/src/components/select/select.d.ts.map +1 -0
  592. package/dist/src/components/sensitive-input/index.d.ts +2 -0
  593. package/dist/src/components/sensitive-input/index.d.ts.map +1 -0
  594. package/dist/src/components/sensitive-input/sensitive-input.d.ts +94 -0
  595. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -0
  596. package/dist/src/components/sidebar/index.d.ts +2 -0
  597. package/dist/src/components/sidebar/index.d.ts.map +1 -0
  598. package/dist/src/components/sidebar/sidebar.d.ts +581 -0
  599. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -0
  600. package/dist/src/components/surface/index.d.ts +5 -0
  601. package/dist/src/components/surface/index.d.ts.map +1 -0
  602. package/dist/src/components/surface/surface.d.ts +64 -0
  603. package/dist/src/components/surface/surface.d.ts.map +1 -0
  604. package/dist/src/components/switch/index.d.ts +2 -0
  605. package/dist/src/components/switch/index.d.ts.map +1 -0
  606. package/dist/src/components/switch/switch.d.ts +197 -0
  607. package/dist/src/components/switch/switch.d.ts.map +1 -0
  608. package/dist/src/components/table/index.d.ts +2 -0
  609. package/dist/src/components/table/index.d.ts.map +1 -0
  610. package/dist/src/components/table/table.d.ts +138 -0
  611. package/dist/src/components/table/table.d.ts.map +1 -0
  612. package/dist/src/components/table-of-contents/index.d.ts +2 -0
  613. package/dist/src/components/table-of-contents/index.d.ts.map +1 -0
  614. package/dist/src/components/table-of-contents/table-of-contents.d.ts +72 -0
  615. package/dist/src/components/table-of-contents/table-of-contents.d.ts.map +1 -0
  616. package/dist/src/components/tabs/index.d.ts +3 -0
  617. package/dist/src/components/tabs/index.d.ts.map +1 -0
  618. package/dist/src/components/tabs/tabs.d.ts +116 -0
  619. package/dist/src/components/tabs/tabs.d.ts.map +1 -0
  620. package/dist/src/components/text/index.d.ts +2 -0
  621. package/dist/src/components/text/index.d.ts.map +1 -0
  622. package/dist/src/components/text/text.d.ts +214 -0
  623. package/dist/src/components/text/text.d.ts.map +1 -0
  624. package/dist/src/components/text/text.type-spec.d.ts +44 -0
  625. package/dist/src/components/text/text.type-spec.d.ts.map +1 -0
  626. package/dist/src/components/toast/index.d.ts +5 -0
  627. package/dist/src/components/toast/index.d.ts.map +1 -0
  628. package/dist/src/components/toast/toast.d.ts +197 -0
  629. package/dist/src/components/toast/toast.d.ts.map +1 -0
  630. package/dist/src/components/tooltip/index.d.ts +2 -0
  631. package/dist/src/components/tooltip/index.d.ts.map +1 -0
  632. package/dist/src/components/tooltip/tooltip.d.ts +108 -0
  633. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -0
  634. package/dist/src/index.d.ts +84 -0
  635. package/dist/src/index.d.ts.map +1 -0
  636. package/dist/src/primitives/accordion.d.ts +13 -0
  637. package/dist/src/primitives/accordion.d.ts.map +1 -0
  638. package/dist/src/primitives/alert-dialog.d.ts +13 -0
  639. package/dist/src/primitives/alert-dialog.d.ts.map +1 -0
  640. package/dist/src/primitives/autocomplete.d.ts +13 -0
  641. package/dist/src/primitives/autocomplete.d.ts.map +1 -0
  642. package/dist/src/primitives/avatar.d.ts +13 -0
  643. package/dist/src/primitives/avatar.d.ts.map +1 -0
  644. package/dist/src/primitives/button.d.ts +13 -0
  645. package/dist/src/primitives/button.d.ts.map +1 -0
  646. package/dist/src/primitives/checkbox-group.d.ts +13 -0
  647. package/dist/src/primitives/checkbox-group.d.ts.map +1 -0
  648. package/dist/src/primitives/checkbox.d.ts +13 -0
  649. package/dist/src/primitives/checkbox.d.ts.map +1 -0
  650. package/dist/src/primitives/collapsible.d.ts +13 -0
  651. package/dist/src/primitives/collapsible.d.ts.map +1 -0
  652. package/dist/src/primitives/combobox.d.ts +13 -0
  653. package/dist/src/primitives/combobox.d.ts.map +1 -0
  654. package/dist/src/primitives/context-menu.d.ts +13 -0
  655. package/dist/src/primitives/context-menu.d.ts.map +1 -0
  656. package/dist/src/primitives/csp-provider.d.ts +13 -0
  657. package/dist/src/primitives/csp-provider.d.ts.map +1 -0
  658. package/dist/src/primitives/dialog.d.ts +13 -0
  659. package/dist/src/primitives/dialog.d.ts.map +1 -0
  660. package/dist/src/primitives/direction-provider.d.ts +13 -0
  661. package/dist/src/primitives/direction-provider.d.ts.map +1 -0
  662. package/dist/src/primitives/drawer.d.ts +13 -0
  663. package/dist/src/primitives/drawer.d.ts.map +1 -0
  664. package/dist/src/primitives/field.d.ts +13 -0
  665. package/dist/src/primitives/field.d.ts.map +1 -0
  666. package/dist/src/primitives/fieldset.d.ts +13 -0
  667. package/dist/src/primitives/fieldset.d.ts.map +1 -0
  668. package/dist/src/primitives/form.d.ts +13 -0
  669. package/dist/src/primitives/form.d.ts.map +1 -0
  670. package/dist/src/primitives/index.d.ts +55 -0
  671. package/dist/src/primitives/index.d.ts.map +1 -0
  672. package/dist/src/primitives/input.d.ts +13 -0
  673. package/dist/src/primitives/input.d.ts.map +1 -0
  674. package/dist/src/primitives/menu.d.ts +13 -0
  675. package/dist/src/primitives/menu.d.ts.map +1 -0
  676. package/dist/src/primitives/menubar.d.ts +13 -0
  677. package/dist/src/primitives/menubar.d.ts.map +1 -0
  678. package/dist/src/primitives/meter.d.ts +13 -0
  679. package/dist/src/primitives/meter.d.ts.map +1 -0
  680. package/dist/src/primitives/navigation-menu.d.ts +13 -0
  681. package/dist/src/primitives/navigation-menu.d.ts.map +1 -0
  682. package/dist/src/primitives/number-field.d.ts +13 -0
  683. package/dist/src/primitives/number-field.d.ts.map +1 -0
  684. package/dist/src/primitives/otp-field.d.ts +13 -0
  685. package/dist/src/primitives/otp-field.d.ts.map +1 -0
  686. package/dist/src/primitives/popover.d.ts +13 -0
  687. package/dist/src/primitives/popover.d.ts.map +1 -0
  688. package/dist/src/primitives/preview-card.d.ts +13 -0
  689. package/dist/src/primitives/preview-card.d.ts.map +1 -0
  690. package/dist/src/primitives/progress.d.ts +13 -0
  691. package/dist/src/primitives/progress.d.ts.map +1 -0
  692. package/dist/src/primitives/radio-group.d.ts +13 -0
  693. package/dist/src/primitives/radio-group.d.ts.map +1 -0
  694. package/dist/src/primitives/radio.d.ts +13 -0
  695. package/dist/src/primitives/radio.d.ts.map +1 -0
  696. package/dist/src/primitives/scroll-area.d.ts +13 -0
  697. package/dist/src/primitives/scroll-area.d.ts.map +1 -0
  698. package/dist/src/primitives/select.d.ts +13 -0
  699. package/dist/src/primitives/select.d.ts.map +1 -0
  700. package/dist/src/primitives/separator.d.ts +13 -0
  701. package/dist/src/primitives/separator.d.ts.map +1 -0
  702. package/dist/src/primitives/slider.d.ts +13 -0
  703. package/dist/src/primitives/slider.d.ts.map +1 -0
  704. package/dist/src/primitives/switch.d.ts +13 -0
  705. package/dist/src/primitives/switch.d.ts.map +1 -0
  706. package/dist/src/primitives/tabs.d.ts +13 -0
  707. package/dist/src/primitives/tabs.d.ts.map +1 -0
  708. package/dist/src/primitives/toast.d.ts +13 -0
  709. package/dist/src/primitives/toast.d.ts.map +1 -0
  710. package/dist/src/primitives/toggle-group.d.ts +13 -0
  711. package/dist/src/primitives/toggle-group.d.ts.map +1 -0
  712. package/dist/src/primitives/toggle.d.ts +13 -0
  713. package/dist/src/primitives/toggle.d.ts.map +1 -0
  714. package/dist/src/primitives/toolbar.d.ts +13 -0
  715. package/dist/src/primitives/toolbar.d.ts.map +1 -0
  716. package/dist/src/primitives/tooltip.d.ts +13 -0
  717. package/dist/src/primitives/tooltip.d.ts.map +1 -0
  718. package/dist/src/registry/index.d.ts +8 -0
  719. package/dist/src/registry/index.d.ts.map +1 -0
  720. package/dist/src/registry/types.d.ts +191 -0
  721. package/dist/src/registry/types.d.ts.map +1 -0
  722. package/dist/src/utils/cn.d.ts +4 -0
  723. package/dist/src/utils/cn.d.ts.map +1 -0
  724. package/dist/src/utils/index.d.ts +4 -0
  725. package/dist/src/utils/index.d.ts.map +1 -0
  726. package/dist/src/utils/link-provider.d.ts +66 -0
  727. package/dist/src/utils/link-provider.d.ts.map +1 -0
  728. package/dist/src/utils/portal-provider.d.ts +56 -0
  729. package/dist/src/utils/portal-provider.d.ts.map +1 -0
  730. package/dist/src/utils/prop-examples.d.ts +36 -0
  731. package/dist/src/utils/prop-examples.d.ts.map +1 -0
  732. package/dist/src/utils/resolve-variant.d.ts +27 -0
  733. package/dist/src/utils/resolve-variant.d.ts.map +1 -0
  734. package/dist/styles/reki-binding.css +303 -0
  735. package/dist/styles/reki-standalone.css +2 -0
  736. package/dist/styles/reki.css +700 -0
  737. package/dist/styles/theme-fedramp.css +39 -0
  738. package/dist/styles/theme-reki.css +412 -0
  739. package/dist/utils.js +12 -0
  740. package/dist/utils.js.map +1 -0
  741. package/package.json +511 -0
  742. package/scripts/component-registry/cache.ts +123 -0
  743. package/scripts/component-registry/discovery.ts +469 -0
  744. package/scripts/component-registry/example-cleanup.ts +168 -0
  745. package/scripts/component-registry/index.test.ts +987 -0
  746. package/scripts/component-registry/index.ts +970 -0
  747. package/scripts/component-registry/markdown-generator.ts +222 -0
  748. package/scripts/component-registry/metadata.ts +956 -0
  749. package/scripts/component-registry/props-filter.ts +310 -0
  750. package/scripts/component-registry/schema-generator.ts +331 -0
  751. package/scripts/component-registry/sub-components.ts +380 -0
  752. package/scripts/component-registry/types.ts +158 -0
  753. package/scripts/component-registry/utils.ts +280 -0
  754. package/scripts/component-registry/variant-parser.ts +261 -0
  755. package/scripts/css-build.ts +105 -0
  756. package/scripts/generate-primitives.ts +183 -0
  757. package/scripts/theme-generator/config.ts +653 -0
  758. package/scripts/theme-generator/generate-css.test.ts +30 -0
  759. package/scripts/theme-generator/generate-css.ts +351 -0
  760. package/scripts/theme-generator/index.ts +159 -0
  761. package/scripts/theme-generator/migrate.ts +560 -0
  762. package/scripts/theme-generator/types.ts +92 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,1892 @@
1
+ # @cloudraker/reki
2
+
3
+ ## 2.6.1
4
+
5
+ ### Patch Changes
6
+
7
+ - b14e5b0: Update the brand color (`reki-brand`).
8
+
9
+ ## 2.6.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 116e0de: feat(chart): add `enableLegendSelection` prop to `TimeseriesChart`
14
+
15
+ Opt-in (default `false`) hidden ECharts legend that lets consumers drive series
16
+ visibility imperatively via the `legendSelect` / `legendUnSelect` /
17
+ `legendToggleSelect` actions — useful for building a custom interactive legend
18
+ with `ChartLegend`. Series toggled off via the legend are also excluded from the
19
+ tooltip. Requires registering ECharts' `LegendComponent`
20
+ (`echarts.use([LegendComponent])`). When disabled, behaviour is unchanged.
21
+
22
+ - 815628f: Extend LegendItems to take pointer events & timeseries merges forwardref to support those events
23
+
24
+ ### Patch Changes
25
+
26
+ - 430689b: Update the Button primary and destructive variants with token-derived gradient treatments.
27
+ - 539e5bf: Fix horizontal scroll in `Sidebar.Content`: always apply `overflow-x: hidden` on the scroll viewport, not just when collapsed. Base UI's `ScrollArea.Viewport` sets `overflow: scroll` as an inline style, which allowed ~14px of horizontal overflow when consumer content (e.g. search buttons with keyboard shortcuts) exceeded the sidebar width.
28
+ - 4378067: feat(radio): add generic value type support to Radio.Group and Radio.Item
29
+ - fb5fed1: Fix the green Badge variant missing its background color token.
30
+ - bdd890c: Keep generated component registry descriptions to JSDoc summaries before markdown sections or code examples.
31
+
32
+ ## 2.5.2
33
+
34
+ ### Patch Changes
35
+
36
+ - 9a13576: fix(button): use ring-reki-line for default secondary button ring
37
+ - b18837c: Refine outline and secondary destructive button hover states.
38
+ - 595d10e: fix(sidebar): correct GroupLabel top margin from mt-6 to mt-4
39
+
40
+ ## 2.5.1
41
+
42
+ ### Patch Changes
43
+
44
+ - b06e35b: Allow unprefixed Dialog max-width classes to override the default viewport cap at desktop breakpoints.
45
+
46
+ ## 2.5.0
47
+
48
+ ### Minor Changes
49
+
50
+ - 7401701: Sidebar: mobile rewrite, smooth collapse transitions, and new props
51
+
52
+ **New features:**
53
+ - `mobileBreakpoint` prop on Provider — configurable viewport width for mobile detection
54
+ - `contentClassName` prop on Sidebar root — pass-through class for the inner content container
55
+ - Controlled mobile state — `open` prop now controls the mobile sidebar too, not just desktop
56
+
57
+ **Fixes:**
58
+ - Replaced Base UI Dialog mobile sidebar with a plain `<nav>` + backdrop for simpler, more predictable transitions
59
+ - Collapsible sections now animate closed smoothly when the sidebar collapses instead of snapping shut
60
+ - Removed `hidden` class from `Sidebar.MenuSub` so sub-menus participate in collapse animations
61
+ - Removed `inertValue` React-version helper — `SidebarSlidingView` now sets `inert` imperatively for React 18 compatibility
62
+ - Restored `inert` on closed `SidebarCollapsibleContent` while removing its `data-open` attribute
63
+
64
+ **Styling:**
65
+ - `bg-reki-tint` → `bg-(--sidebar-active-bg)` CSS variable for active/hover/focus backgrounds
66
+ - Icon opacity `0.5` → `0.4`; chevron gains hover opacity transition
67
+ - Header gains `shrink-0` and animated padding on collapse
68
+ - Content scroll area gains animated `gap` transition and `tabIndex={-1}` on viewport
69
+ - Sliding views container gains `max-w-(--sidebar-width)` to prevent overflow
70
+ - Mobile sidebar uses `--sidebar-animation-duration` CSS variable for slide transition
71
+
72
+ ### Patch Changes
73
+
74
+ - f957dbc: Add React 18 and React 19 compatibility checks for Reki tests.
75
+ - ac46184: Fix `Chart` (and `SankeyChart`) rendering in dark mode. The chart canvas
76
+ now stays transparent so the surrounding `bg-reki-*` surface shows through
77
+ symmetrically in both modes, and ECharts' built-in `"dark"` theme is
78
+ applied when `isDarkMode` is true so the tooltip card, axes, splitLines,
79
+ and legend text are themed correctly.
80
+ - e25a3d6: fix(sidebar): add text truncation with ellipsis to Sidebar.MenuButton content
81
+
82
+ Previously, `Sidebar.MenuButton` used `overflow-hidden` which clipped long text without showing an ellipsis. Now uses `truncate` to match `Sidebar.MenuSubButton`'s behavior.
83
+
84
+ - d3feec0: Fix segmented `Tabs` scroll fade, scroll-into-view, and ring styling:
85
+ - Rewrite CSS scroll-fade masking to use `@property`-animated custom properties, fixing proportional fade rendering across browsers.
86
+ - Scroll the selected tab into view on click so it stays visible in overflowing tab lists.
87
+ - Move `ring ring-reki-hairline/70` from the inner list to the root container so the segmented variant ring wraps the entire component correctly.
88
+
89
+ - f831482: Fix Flow connector rendering in Firefox by emitting valid SVG path data without array commas and setting visible overflow on the SVG element attribute.
90
+ - 4a8b992: Restore React 18-compatible Sidebar inert attribute handling while keeping the full React compatibility CI suite.
91
+
92
+ ## 2.4.1
93
+
94
+ ### Patch Changes
95
+
96
+ - 2daa237: Fix Combobox and Autocomplete rendering in React 18 by using the explicit context provider API.
97
+
98
+ ## 2.4.0
99
+
100
+ ### Minor Changes
101
+
102
+ - b93d881: Update Banner to use borderless tinted styling by default and add a secondary variant.
103
+ - a9a1526: Re-export `useFilter` from `Combobox` and `Autocomplete` namespaces. Use it to write custom `filter` props that preserve Base UI's default case- and accent-insensitive matching via `Intl.Collator`.
104
+ - 3db8294: Sidebar: comprehensive modernization
105
+
106
+ **Breaking changes:**
107
+ - Removed `Sidebar.Input` — build custom search triggers inline
108
+ - Removed `Sidebar.MenuAction` — unused in practice
109
+ - Removed `Sidebar.GroupContent` and group-level collapsible props (`collapsible`, `defaultOpen`, `open`, `onOpenChange`) from `Sidebar.Group` — use `Sidebar.Collapsible` at the item level instead
110
+ - Replaced Base UI Collapsible dependency with custom CSS grid-rows implementation
111
+ - `SidebarState` type is now `"expanded" | "collapsed" | "peeking"` (was `"expanded" | "collapsed"`)
112
+
113
+ **New features:**
114
+ - `contained` prop on Provider — absolute positioning for embedded/demo sidebars
115
+ - `peekable` prop on Provider — hover/focus collapsed sidebar to temporarily expand
116
+ - `animationDuration` prop on Provider — configurable animation timing
117
+ - `Sidebar.SlidingViews` + `Sidebar.SlidingView` — animated horizontal transitions between navigation surfaces
118
+ - Animated `SidebarPanelIcon` replacing Phosphor `SidebarSimpleIcon`
119
+ - Enhanced `Sidebar.Trigger` with `aria-expanded` and dynamic `aria-label`
120
+ - Keyboard-accessible resize handle (arrow keys, Home, End)
121
+ - Custom `Sidebar.Collapsible` with keyboard auto-expand on focus
122
+
123
+ **Token/styling fixes:**
124
+ - `border-reki-hairline` → `border-reki-line` throughout
125
+ - Hardcoded `duration-250` → `--sidebar-animation-duration` CSS custom property
126
+ - `bg-reki-base` → `bg-(--sidebar-bg)` for theme overridability
127
+ - Focus styles: `ring-2/ring-reki-brand` → `outline-none/text-reki-strong/bg-reki-tint`
128
+ - Icon opacity-50, updated spacing (header h-58px, footer h-12, menu gap-y-px)
129
+ - `isolate` on sidebar root with low z-index (z-1, z-2) instead of z-20/z-50
130
+ - Mobile sidebar now has correct `data-state`/`data-side`/`data-variant`/`data-collapsible` attributes
131
+
132
+ - 18f5e42: **TimeseriesChart: React tooltip with Base UI positioning**
133
+
134
+ Replaces ECharts' HTML-string tooltip with a React component positioned by Base UI's Tooltip primitive:
135
+ - Tooltip rendered as a React component with correct theme tokens — no more inline styles or `getComputedStyle` hacks
136
+ - Positioning handled by Base UI Tooltip (Floating UI), with automatic collision avoidance and viewport flipping
137
+ - New `tooltipFollowCursor` prop: `"both"` (default, free-following) or `"x"` (axis-locked, Recharts-style)
138
+ - New `tooltipMode` prop: `"all"` (default) or `"single"` (nearest series to cursor)
139
+ - New `tooltipMaxItems` prop: caps rows in `"all"` mode with `+N more` footer (default `10`)
140
+ - Date formatted with `Intl.DateTimeFormat` (locale-aware) instead of ISO string
141
+ - Values sorted descending; fallback formatter avoids scientific notation
142
+
143
+ ### Patch Changes
144
+
145
+ - ab273fe: Banner: replace `dark:` Tailwind variants with new `reki-banner-info` and `reki-banner-warning` semantic tokens so dark-mode opacity is baked into the design system. No visual change.
146
+ - 351fac9: fix(styles): show pointer cursor on clickable Reki elements by default
147
+
148
+ Adds a global `cursor: pointer` rule scoped to elements rendered by Reki
149
+ components, identified by the new `data-reki-component` and `data-reki-part`
150
+ attributes. Interactive component roots and parts now opt into the rule by
151
+ setting these attributes, which gives the library a stable scoping primitive
152
+ that doesn't couple to Tailwind class names.
153
+
154
+ Components updated to set `data-reki-component` / `data-reki-part`:
155
+ Button, LinkButton, Link, Checkbox, Radio, Switch, Select (trigger, option),
156
+ DropdownMenu (item, link-item, checkbox-item, radio-item, submenu-trigger),
157
+ Combobox (trigger, item, clear, chip-remove), Autocomplete (item),
158
+ Dialog (trigger, close), Popover (trigger), Tabs (tab),
159
+ Collapsible (trigger, default-trigger), Breadcrumbs (link),
160
+ TableOfContents (item, group-link), Sidebar (menu-button, menu-sub-button,
161
+ trigger, rail), MenuBar (option), Toast (close), SensitiveInput
162
+ (toggle-visibility, copy, masked-container).
163
+
164
+ - 3db8294: fix(sidebar): collapsed state styling, transitions, and sliding views
165
+ - 6d5d9f0: Add `flex items-center` to `ComboboxBase.Icon` in `TriggerInput` for consistency with `TriggerValue` and `Select`
166
+ - 5081d35: Fix `Select` placeholder not showing when `renderValue` is provided and the value is empty.
167
+ - 9d4a2ff: Update semantic color tokens to better represent status icons and indicators:
168
+ - Adjust status token values in the theme generator and refresh generated theme output
169
+ - Update toast and badge status background treatments
170
+ - Update docs to reflect new tint token usage
171
+ - 1585bfe: Adjust toast visual styling for improved readability and emphasis: increase background tint intensity for success/warning/info variants, refine description text contrast, and update close-button icon contrast.
172
+ - 6e9b524: Fixed vertical alignment of checkbox and radio indicators with multi-line labels.
173
+
174
+ When label text wrapped to multiple lines, the indicators were vertically centered against the entire text block. They now align to the top, sitting next to the first line of text.
175
+
176
+ - 729caa3: echarts is now an optional peer dependency. If you don't use Chart components (Chart, TimeseriesChart, SankeyChart), it will no longer be installed automatically. If you do use them, run npm install echarts (as documented).
177
+
178
+ ## 2.3.0
179
+
180
+ ### Minor Changes
181
+
182
+ - b68caba: Added `Badge` dot styling as a new variant for indicators that need a subtle visual cue.
183
+ Updated badge docs and demo examples to reflect the new badge variant and dot-style behavior.
184
+
185
+ ### Patch Changes
186
+
187
+ - a210c9c: Update Base UI to 1.5.0.
188
+ - 64a4bda: Fix InputGroup focus ring thickness and color: container mode uses 1.5px ring (wraps entire group including buttons), hybrid container zone and individual mode use 1px ring (thin to avoid colliding with adjacent buttons), and all modes use `ring-reki-focus/50` (50% opacity) to match the standalone Input component.
189
+ - 0003bf5: Fix error state red border on Combobox, Select, Autocomplete, and SensitiveInput to match Input behavior
190
+ - 4f2b47c: Add inline label layout and fix auto-assigned node colors in tooltips
191
+ - 0e79214: Fix Tooltip popup overflowing viewport when content is wider than available space. The popup now constrains its width to `var(--available-width)`, a CSS variable provided by Base UI's Positioner that reflects the space between the trigger and the viewport edge.
192
+
193
+ ## 2.2.2
194
+
195
+ ### Patch Changes
196
+
197
+ - 94d0c22: Fix language alias normalization in ShikiProvider
198
+ - Add `normalizeLanguage()` function that maps common language aliases (js, ts, sh, yml, py, md, gql) to their canonical SupportedLanguage names
199
+ - Normalize language aliases in `ShikiProvider` when preloading grammars, so passing `['js', 'ts']` works the same as `['javascript', 'typescript']`
200
+ - Normalize language aliases in `highlight()` hook at runtime, so code fences using `js` or `ts` highlight correctly without warnings
201
+ - Export `normalizeLanguage` from `@cloudraker/reki/code` for consumers who need to normalize aliases themselves
202
+ - Intentionally omit `mdx` alias since MDX has a distinct grammar that would lose JSX highlighting if mapped to `markdown`
203
+
204
+ ## 2.2.1
205
+
206
+ ### Patch Changes
207
+
208
+ - 57bbe62: fix(banner): remove variant selection background for legibility
209
+
210
+ Selected text inside `Banner` now uses the browser default selection color
211
+ instead of a same-hue variant-tinted background. The previous
212
+ `selection:bg-reki-{info,warning,danger}` utilities produced low contrast
213
+ between the selection background and the variant text color (most notably
214
+ in light mode for the `error` and `alert` variants), making selected text
215
+ hard to read.
216
+
217
+ - 3d80fe7: Add `left` and `right` props to SankeyChart for controlling series layout padding
218
+ - 194aea8: Fix tooltip popup exit transitions by animating the Tailwind `scale` property alongside opacity.
219
+
220
+ ## 2.2.0
221
+
222
+ ### Minor Changes
223
+
224
+ - 228a9c4: Add `passwordManagerIgnore` to Input for suppressing password manager overlays on non-credential fields.
225
+ - da502ce: Add scroll fade to segmented tabs. When tabs overflow, gradient masks appear on the edges based on scroll position via scroll-driven animations (Chrome 115+, degrades gracefully). Scrollbar is hidden; the fade is the scroll affordance.
226
+ - 59b6590: Add `size="sm"` variant to Tabs component (h-6.5 / 26px, matching Input sm)
227
+ - 798c2da: Forward `toastManager` prop on `<Toasty>` so code outside the React tree (timers, query-cache listeners, module-load callbacks) can dispatch toasts via a manager created by `createRekiToastManager()`. Also surface `createRekiToastManager` on the top-level package export (previously only available via the deep `@cloudraker/reki/components/toast` path).
228
+
229
+ ### Patch Changes
230
+
231
+ - bccc684: Add transparent background to SankeyChart component
232
+ - 974277f: Expose `optionUpdateBehavior` prop on `TimeseriesChart` to control how ECharts applies option updates
233
+ - 8d43b8b: Add `hideLabel` prop to Field so components can skip the native `<label>` while keeping description/error wiring. Use it in Select with Base UI's `Select.Label` to fix hover/focus coupling between the label text and trigger.
234
+ - 93d04bd: fix(input): render error and description props without requiring a label
235
+ - 862389a: fix(radio): prevent radio button distortion with long labels by adding `shrink-0` to the default appearance radio indicator
236
+ - 1bfbc0e: Fix overflowing segmented Tabs drag-to-scroll interactions so mouse and touch drags reliably scroll while normal tab clicks still activate tabs.
237
+
238
+ ## 2.1.0
239
+
240
+ ### Minor Changes
241
+
242
+ - 8a33813: Create Sankey Chart component
243
+
244
+ ### Patch Changes
245
+
246
+ - a21cc3a: Fix CommandPalette List bottom ring being clipped by Footer background. Add scroll padding to prevent items from clipping behind rounded corners.
247
+ - 0414c54: Deprecate `to` prop on Link in favor of `href`. The `to` prop is a routing-framework concept that doesn't belong on a presentational component. Use `href` for all link destinations and configure a `LinkProvider` wrapper to bridge to your router. `to` continues to work but emits a dev-mode deprecation warning.
248
+ - 8b12a4c: Allow `LayerCard.Primary` and `LayerCard.Secondary` to accept all standard HTML div attributes, including `data-testid` for testing.
249
+ - 7d8ec27: Set `cursor-default` on Tooltip triggers so disclosure buttons don't appear clickable. Overridable via `className`.
250
+
251
+ ## 2.0.5
252
+
253
+ ### Patch Changes
254
+
255
+ - 8f8a55d: Export `Combobox.Trigger`, `Combobox.Value`, and `Combobox.Icon` — the raw Base UI primitives for building custom combobox triggers. Use these when you need full control over the trigger's visual treatment (e.g. a sidebar account switcher that renders as a plain button instead of an input-like control).
256
+
257
+ ## 2.0.4
258
+
259
+ ### Patch Changes
260
+
261
+ - 8926ee7: fix(CloudflareLogo): remove registered trademark symbol from full logo variant
262
+ - 75d4f4d: Fix Google Translate DOM mutation crash in Button
263
+ - f2d356d: Remove z-50 from mobile Sidebar Dialog backdrop and panel. The z-50 caused portaled floating elements (Popover, DropdownMenu, Select, Combobox) opened from inside the Sidebar to render behind the Dialog backdrop. Matches the pattern used by Reki's own Dialog component, which relies on DOM order for stacking with no explicit z-index. Also adds `data-sidebar-backdrop` and `data-sidebar-popup` attributes as stable CSS hooks.
264
+
265
+ ## 2.0.3
266
+
267
+ ### Patch Changes
268
+
269
+ - 3b36e21: fix(combobox): forward all props from TriggerValue to ComboboxBase.Value, enabling placeholder support and styled placeholder text via data-[placeholder]:text-reki-placeholder
270
+ - 5d5d810: fix(registry): correct Select component metadata for AI-generated code
271
+
272
+ The component registry metadata was incorrectly typing Select's `value`, `defaultValue`, and `onValueChange` props as `string`, causing AI agents to produce broken code when implementing Select with object values (e.g., rendering `object.value` in the trigger instead of the label).
273
+
274
+ Changes:
275
+ - `value` type: `string` → `T` (generic, matches actual component interface)
276
+ - `defaultValue` type: `string` → `T`
277
+ - `onValueChange` type: `(value: string) => void` → `(value: T) => void`
278
+ - Added missing `renderValue` prop: `(value: T) => ReactNode` — required for object values
279
+ - Added missing `items` prop: supports both `Record<string, string>` and `Array<{ label, value }>` forms
280
+ - Added missing `isItemEqualToValue` prop: required for object equality comparison
281
+
282
+ - 62e093c: Gracefully fall back to default variant instead of crashing when an invalid variant prop is passed at runtime. Previously 22 of 25 components would throw `TypeError` on unknown variant values; all 25 now use a shared `resolveVariant()` utility that returns the default config and logs a dev warning.
283
+
284
+ ## 2.0.2
285
+
286
+ ### Patch Changes
287
+
288
+ - fbf3eef: Forward all Base UI Panel props (including `keepMounted` and `hiddenUntilFound`) through `Collapsible.DefaultPanel`. Previously these were silently dropped because `DefaultPanel` used a standalone props interface instead of extending `BasePanelProps`.
289
+ - 40491c2: Fix registry codegen to match demo examples when component export name differs from directory name (e.g. DropdownMenu vs dropdown). This restores missing examples for DropdownMenu and other affected components.
290
+ - 3427221: TooltipProvider props (`delay`, `closeDelay`, `timeout`) are now shown in the Tooltip component's API Reference on the docs site.
291
+
292
+ ## 2.0.1
293
+
294
+ ### Patch Changes
295
+
296
+ - e53bd68: Rebalanced semantic text token usage to improve hierarchy and consistency across components, docs, and generated Figma output.
297
+ - Updated theme token definitions so `text-reki-strong` represents high-emphasis text and `text-reki-inactive` is lighter/inactive in both light and dark modes.
298
+ - Migrated affected UI surfaces from `text-reki-strong` to `text-reki-subtle` where content is supportive metadata, labels, or secondary text.
299
+ - Synced token usage in docs and Figma code generators with the updated semantic text mapping.
300
+
301
+ ## 2.0.0
302
+
303
+ ### Major Changes
304
+
305
+ - bf68ac0: **BREAKING:** Checkbox `onCheckedChange` now receives event details as second argument
306
+
307
+ The `onCheckedChange` callback signature now matches Base UI, providing access to the underlying event:
308
+
309
+ ```tsx
310
+ // Before
311
+ onCheckedChange={(checked) => console.log(checked)}
312
+
313
+ // After (event details available as optional second arg)
314
+ onCheckedChange={(checked, eventDetails) => {
315
+ console.log(checked);
316
+ console.log(eventDetails.event); // native event
317
+ }}
318
+ ```
319
+
320
+ **Removed deprecated props:**
321
+ - `onChange` - use `onCheckedChange` instead
322
+ - `onValueChange` on individual checkboxes - use `onCheckedChange` instead
323
+ - `onClick` - was redundant, use standard React event handling via spread props
324
+
325
+ **Migration:**
326
+
327
+ ```tsx
328
+ // Before (deprecated)
329
+ <Checkbox onChange={(e) => console.log(e.target.checked)} />
330
+ <Checkbox onValueChange={(checked) => setChecked(checked)} />
331
+
332
+ // After
333
+ <Checkbox onCheckedChange={(checked) => setChecked(checked)} />
334
+ ```
335
+
336
+ Note: `Checkbox.Group`'s `onValueChange` prop is unchanged - it still accepts `(values: string[]) => void`.
337
+
338
+ - f9ba3f9: feat(Collapsible)!: refactor to compound component API
339
+
340
+ **Breaking change:** Collapsible now uses a compound component pattern matching other Reki components like Popover and Dialog.
341
+
342
+ ### Before
343
+
344
+ ```tsx
345
+ <Collapsible label="Show details" open={open} onOpenChange={setOpen}>
346
+ Content here
347
+ </Collapsible>
348
+ ```
349
+
350
+ ### After
351
+
352
+ ```tsx
353
+ <Collapsible.Root open={open} onOpenChange={setOpen}>
354
+ <Collapsible.Trigger>Show details</Collapsible.Trigger>
355
+ <Collapsible.Panel>Content here</Collapsible.Panel>
356
+ </Collapsible.Root>
357
+ ```
358
+
359
+ ### Migration
360
+
361
+ For the quickest migration, use the new `DefaultTrigger` and `DefaultPanel` components which preserve the previous styling:
362
+
363
+ ```tsx
364
+ <Collapsible.Root open={open} onOpenChange={setOpen}>
365
+ <Collapsible.DefaultTrigger>Show details</Collapsible.DefaultTrigger>
366
+ <Collapsible.DefaultPanel>Content here</Collapsible.DefaultPanel>
367
+ </Collapsible.Root>
368
+ ```
369
+
370
+ ### New Sub-components
371
+
372
+ | Component | Description |
373
+ | ---------------------------- | ----------------------------------------------------------- |
374
+ | `Collapsible.Root` | Manages open state |
375
+ | `Collapsible.Trigger` | Composable trigger with `render` prop support |
376
+ | `Collapsible.Panel` | Content container |
377
+ | `Collapsible.DefaultTrigger` | Pre-styled trigger with caret icon (migration helper) |
378
+ | `Collapsible.DefaultPanel` | Pre-styled panel with border-left accent (migration helper) |
379
+
380
+ - 3256a7b: feat(Text): decouple visual heading variants from semantic HTML elements
381
+
382
+ **Breaking change:** `heading1`, `heading2`, `heading3` variants no longer auto-render `<h1>`, `<h2>`, `<h3>` tags. They now render as `<span>` by default. Use the `as` prop to set the appropriate semantic heading level for your document outline.
383
+
384
+ Before:
385
+
386
+ ```tsx
387
+ <Text variant="heading1">Title</Text> // rendered <h1>
388
+ ```
389
+
390
+ After:
391
+
392
+ ```tsx
393
+ <Text variant="heading1" as="h1">
394
+ Title
395
+ </Text> // explicit semantic element
396
+ ```
397
+
398
+ The `as` prop is now restricted to valid text elements: `"h1"` through `"h6"`, `"p"`, and `"span"`.
399
+
400
+ - 267ba7a: **BREAKING (v2):** `Text` requires an explicit `as` prop when `variant` is a heading (`"heading1"`, `"heading2"`, `"heading3"`).
401
+
402
+ The previous major bump ([#393](https://github.com/CloudRaker/reki/pull/393)) decoupled heading variants from semantic HTML — heading variants render as `<span>` unless an `as` prop is provided. That made the library more flexible but introduced a silent accessibility footgun: forgetting `as` on a real section heading produced a `<span>`, excluding it from the document outline without any type-level feedback.
403
+
404
+ This change makes `as` **required** for heading variants via a discriminated union. Body and monospace variants are unchanged (`as` remains optional; defaults to `<p>` and `<span>` respectively).
405
+
406
+ ### Migration
407
+
408
+ Every `<Text variant="heading1">`, `<Text variant="heading2">`, `<Text variant="heading3">` must now pass `as`. TypeScript will flag each call site:
409
+
410
+ ```tsx
411
+ // Before (compiled, silently produced a <span>)
412
+ <Text variant="heading1">Page Title</Text>
413
+
414
+ // After (required)
415
+ <Text variant="heading1" as="h1">Page Title</Text>
416
+
417
+ // Still allowed — decorative heading-styled text that is NOT a section heading:
418
+ <Text variant="heading1" as="span">Big bold card label</Text>
419
+ ```
420
+
421
+ For each heading call site, decide whether it's a real section heading (use `as="h1"`/`"h2"`/etc.) or decorative (use `as="span"`). Codemod cannot make this choice mechanically — it is a semantic judgment per usage.
422
+
423
+ Body and monospace variants: no changes required.
424
+
425
+ ### Minor Changes
426
+
427
+ - 1954aa8: feat(radio, checkbox, switch): add composable Legend sub-component for group components
428
+ - Add `Radio.Legend`, `Checkbox.Legend`, and `Switch.Legend` sub-components
429
+ - Accepts `className` for full styling control (e.g. `className="sr-only"` to visually hide)
430
+ - Make `legend` string prop optional when using the sub-component instead
431
+ - Useful when a parent Field already provides a visible label and the legend would be redundant
432
+ - **Breaking:** `Switch.Group` no longer renders a visible border/padding/rounded container — now consistent with `Radio.Group` and `Checkbox.Group`. Use `className` to add a border if needed.
433
+
434
+ - 1eee41a: Add `InputGroup` compound component for composing decorated inputs
435
+
436
+ Compound structure: `InputGroup`, `InputGroup.Input`, `InputGroup.Addon`, `InputGroup.Suffix`, `InputGroup.Button`.
437
+ - Field integration — pass `label`, `description`, `error`, `required`, and `labelTooltip` directly to `InputGroup`
438
+ - Size variants (`xs`, `sm`, `base`, `lg`) propagate to all sub-components via context, including icon sizing in addons
439
+ - `InputGroup.Addon` — positions icons, text, or buttons at `align="start"` (default) or `align="end"` of the input
440
+ - `InputGroup.Suffix` — inline text suffix (e.g. `.workers.dev`)
441
+ - `InputGroup.Button` — ghost button for secondary actions with tooltip support
442
+ - Deprecated `InputGroup.Label` — use `InputGroup.Addon` instead
443
+ - Deprecated `InputGroup.Description` — use `InputGroup.Suffix` instead
444
+
445
+ ```tsx
446
+ {
447
+ /* Reveal / hide password */
448
+ }
449
+ <InputGroup>
450
+ <InputGroup.Input
451
+ type={show ? "text" : "password"}
452
+ defaultValue="password"
453
+ aria-label="Password"
454
+ />
455
+ <InputGroup.Addon align="end" className="pr-1">
456
+ <InputGroup.Button
457
+ size="sm"
458
+ aria-label={show ? "Hide password" : "Show password"}
459
+ onClick={() => setShow(!show)}
460
+ >
461
+ {show ? <EyeSlashIcon size={16} /> : <EyeIcon size={16} />}
462
+ </InputGroup.Button>
463
+ </InputGroup.Addon>
464
+ </InputGroup>;
465
+ ```
466
+
467
+ ```tsx
468
+ {
469
+ /* Search input */
470
+ }
471
+ <InputGroup>
472
+ <InputGroup.Addon>
473
+ <MagnifyingGlassIcon className="text-reki-subtle" />
474
+ </InputGroup.Addon>
475
+ <InputGroup.Input placeholder="Search..." />
476
+ </InputGroup>;
477
+ ```
478
+
479
+ - 353faea: Adds Autocomplete component. A free-form text input with an optional filtered suggestion list. Unlike Combobox, the value is not constrained to the items list.
480
+ - 431de04: feat(radio): accept ReactNode for `Radio.Item` label and honor `controlPosition` on card appearance
481
+ - `Radio.Item`'s `label` prop now accepts `ReactNode`, allowing icons, badges, or other markup alongside text.
482
+ - `Radio.Group`'s `controlPosition` prop now takes effect on `appearance="card"`. Card appearance continues to default to `"end"` (radio on the right); pass `controlPosition="start"` to render the radio on the left of the label and description.
483
+
484
+ - f9d8b76: Polish TableOfContents indicator and semantic HTML
485
+ - Replace pill/background-tint hover with left-border indicator pattern
486
+ - Switch to semantic `ul`/`li` HTML structure
487
+ - Add `href` and `active` props to `TableOfContents.Group` for clickable labels
488
+
489
+ - 07426f6: feat(table): add `onCheckedChange` prop to `Table.CheckCell` and `Table.CheckHead`, aligning with the `Checkbox` component's signature.
490
+
491
+ The new prop exposes an optional second argument with event details, matching Base UI's idiom:
492
+
493
+ ```tsx
494
+ <Table.CheckCell
495
+ checked={selected.has(row.id)}
496
+ onCheckedChange={(checked, eventDetails) => {
497
+ toggle(row.id);
498
+ eventDetails?.event.stopPropagation();
499
+ }}
500
+ />
501
+ ```
502
+
503
+ The existing `onValueChange` prop still works but is now deprecated and flagged by the `no-deprecated-props` lint rule. It will be removed in a future major version. Migrate by renaming the prop — the single-argument callback shape is preserved.
504
+
505
+ This change is additive and does not require consumer code changes at this time.
506
+
507
+ - c1c60c8: Expand `Text` component's `as` prop to accept additional HTML text elements: `label`, `dt`, `dd`, `li`, `figcaption`, `legend`, `pre`, `code`, `em`, `strong`, `small`, `abbr`, and `time`. This unblocks downstream usage in Stratus where `Text` needs to render as definition list terms, labels, and code elements.
508
+
509
+ ### Patch Changes
510
+
511
+ - ac6df5f: Remove invalid hover border utility from secondary button variants to keep hover styling consistent and avoid unintended class output.
512
+ - ec73bc5: Update chart color docs and demos, including sequential heatmap/CVD coverage and improved chart demo behavior.
513
+ - 7d12918: `Combobox.Item` now renders a visible disabled state when the `disabled` prop is set. Previously the prop was forwarded to Base UI (so click/keyboard selection were correctly blocked) but the row looked identical to an enabled one. Adds `data-[disabled]:*` Tailwind classes for muted text, `cursor-not-allowed`, reduced opacity, and suppresses the highlight background on disabled rows during keyboard navigation. Also fixes `className` passthrough — user-supplied classes are now merged via `cn()` instead of being overridden.
514
+ - 69bfc53: Improve focus ring consistency and clipping behavior across inputs and related controls.
515
+ - Move the command palette focus ring to the input header container with `focus-within` and remove duplicate input-level ring styles.
516
+ - Update `Select` trigger and option focus styles to use inset focus rings to prevent clipping in rounded/overflow contexts.
517
+ - Fix clipboard copy button focus ring clipping by using inset focus-visible ring, matching border-radius inheritance, and isolated stacking.
518
+ - Align `InputGroup` and `InputGroup.Button` focus ring color to `ring-reki-focus`, including hybrid container-zone focus ring classes.
519
+ - Update InputGroup tests to match inline focus ring class changes.
520
+ - Set DatePicker (`react-day-picker`) focus ring token to `var(--color-reki-brand)`.
521
+ - Update InputGroup container and hybrid keyboard outlines in `reki-binding.css` to use `var(--color-reki-focus)` at 1px weight.
522
+
523
+ - 30bfd82: Allow `CommandPalette.Input` to accept standard HTML input attributes (`autoComplete`, `autoCorrect`, `autoCapitalize`, `spellCheck`, `data-*`, etc.) by extending its props type with `InputHTMLAttributes<HTMLInputElement>`. Export new `CommandPaletteInputProps` type.
524
+ - b923281: Fix `InputGroup` hover state incorrectly propagating to the first child button (e.g. in `Pagination.Controls`). Root now renders as `<div>` instead of `<label>` when it contains multiple labelable controls.
525
+ - 06b8852: Fix Table body cells rendering at 16px. The Table root now sets text-base (14px) so <td> cells match Reki's default body font-size instead of inheriting the browser default. Also replaces an arbitrary text-[14px] in Empty with text-base.
526
+ - c019b41: Improved focus and keyboard accessibility styles across Reki components and docs navigation.
527
+ - Added the `reki-focus` semantic token to the theme generator config and generated `theme-reki.css` output.
528
+ - Updated focus ring behavior across interactive components (including `Button`, `Input`, `InputGroup`, `Select`, `Checkbox`, `Radio`, `Switch`, `Sidebar`, `Tabs`, `Menubar`, and related controls) for more consistent and visible keyboard focus visibility.
529
+ - Text-entry controls use a lighter opacity `reki-focus` ring to keep pointer and keyboard focus visually consistent where browsers apply `:focus-visible` heuristics to typed-input controls.
530
+ - Refined `Select` and `Input` styling/state combinations to align focus visuals with current semantic token usage.
531
+ - Updated docs `SidebarNav` keyboard-focus affordances (links, section toggles, search trigger) and adjusted collapsible list overflow so focus rings remain visible.
532
+ - Replace raw colors in `Select` with reki semantic tokens.
533
+
534
+ - 21ed1a1: Fix `InputGroup` container className to enforce `mb-0`, ensuring all container variants (not just the standalone `<label>` mode) reset inherited bottom margin.
535
+ - fa991d9: Fix `InputGroup` label wrappers to enforce `mb-0`, preventing inherited label margins from shifting layout and click-target overlays.
536
+ - 6765526: chore: update @base-ui/react to v1.4.0
537
+
538
+ Bugfix release with improvements to Popover hover state, Checkbox/Switch readOnly mode, Select touch handling, Tabs activation direction, Toast timers, and various other fixes. No breaking changes.
539
+
540
+ ## 1.19.0
541
+
542
+ ### Minor Changes
543
+
544
+ - da6eee1: feat(chart): rename `formatter` to `dangerousHtmlFormatter` for XSS awareness
545
+
546
+ BREAKING CHANGE: The `formatter` property in `RekiChartOption['tooltip']` has been renamed to `dangerousHtmlFormatter`. This change makes the security implications of using HTML formatters more explicit to developers. The API remains identical—only the name has changed.
547
+
548
+ Migration: Replace `formatter` with `dangerousHtmlFormatter` in your chart tooltip configurations.
549
+
550
+ - 4785c43: feat(tooltip, popover): deprecate `asChild` in favor of `render` prop
551
+
552
+ Unifies composition patterns across the library by adopting Base UI's `render` prop pattern. The `asChild` prop is now deprecated on:
553
+ - `Tooltip`
554
+ - `Popover.Trigger`
555
+ - `Popover.Close`
556
+
557
+ **Migration:**
558
+
559
+ ```diff
560
+ - <Tooltip content="Save" asChild>
561
+ - <Button>Save</Button>
562
+ - </Tooltip>
563
+ + <Tooltip content="Save" render={<Button>Save</Button>} />
564
+
565
+ - <Popover.Trigger asChild>
566
+ - <Button>Open</Button>
567
+ - </Popover.Trigger>
568
+ + <Popover.Trigger render={<Button>Open</Button>} />
569
+
570
+ - <Popover.Close asChild>
571
+ - <Button>Close</Button>
572
+ - </Popover.Close>
573
+ + <Popover.Close render={<Button>Close</Button>} />
574
+ ```
575
+
576
+ The `asChild` prop remains functional for backward compatibility but will be removed in a future major version.
577
+
578
+ - a0f2b18: feat(popover): expose `anchor` prop on `Popover.Content` for virtual positioning
579
+
580
+ Forwards Base UI's `anchor` prop through `Popover.Content` to the underlying `Positioner`, enabling popover positioning against custom elements, refs, or virtual points (e.g., a `DOMRect` from `getBoundingClientRect()`). This is useful when the popover trigger and the desired anchor are in different component trees, or when anchoring to a coordinate rather than a DOM element.
581
+
582
+ - 58b5777: Convert Table of Contents to exported Reki component
583
+ - 0cae077: feat(Select): add size prop (xs/sm/base/lg) matching Input and Combobox heights
584
+
585
+ ### Patch Changes
586
+
587
+ - 1e7ba10: feat(layer-card): support simple card usage and deprecate Surface
588
+ - allow `LayerCard` to be used directly without `LayerCard.Primary` for simple single-layer card layouts
589
+ - keep `LayerCard.Secondary` and `LayerCard.Primary` supported for the existing layered card pattern
590
+ - deprecate `Surface` in favor of `LayerCard` while keeping the old API working as a compatibility wrapper
591
+ - update docs and examples to prefer `LayerCard`, including table examples that no longer need a nested `LayerCard.Primary`
592
+
593
+ - 2682319: fix(pagination): add ARIA attributes for screen reader accessibility
594
+ - Wrap pagination controls in `<nav>` for proper landmark navigation
595
+ - Add `aria-live="polite"` and `aria-atomic="true"` to status text for page change announcements
596
+ - Add `navigation` to `PaginationLabels` for i18n customization of the nav aria-label
597
+
598
+ - 9eb1306: fix(chart): escape HTML in tooltip series name and values
599
+
600
+ Escapes HTML entities in TimeseriesChart tooltip series names and values before rendering.
601
+
602
+ - 4565baa: fix(combobox): make TriggerInput caret button clickable for Playwright tests
603
+ - 4dfdc3f: fix(dropdown): pass children through when render prop is provided on DropdownMenu.Trigger
604
+ - 98e3170: fix(Select): TypeScript inference with `strictNullChecks` and `renderValue`/`placeholder` interaction
605
+
606
+ **TypeScript fix:** Under `strictNullChecks`, using `value={objectOrNull}` would cause `T` to be inferred as `never`, making callbacks like `onValueChange` and `renderValue` unusable. This is now fixed.
607
+
608
+ **Runtime fix:** `renderValue` is now only called with non-null values. When value is null, the `placeholder` is shown instead. Previously, `renderValue` would receive `null` at runtime despite being typed as `(value: T) => ReactNode`.
609
+
610
+ ```tsx
611
+ // Recommended pattern
612
+ <Select
613
+ placeholder="Select..."
614
+ value={value}
615
+ onValueChange={setValue} // value is T | null (works with strictNullChecks)
616
+ renderValue={(v) => v.name} // v is T (non-null), no defensive coding needed
617
+ />
618
+ ```
619
+
620
+ - 9c3cdbf: Fix sidebar collapsible content snapping shut instead of animating smoothly when closing.
621
+ - 27bcd59: fix(table): align sticky column colors with compact header variant
622
+ - a8adf02: fix(tokens): correct text-reki-subtle dark mode value to provide visible contrast
623
+ - 547c7fa: Updated the token value for `reki-line` and `reki-hairline` in dark mode so they are more visible.
624
+ - replace `reki-line` usages with `reki-hairline` across Reki components and docs UI/content styles
625
+ - use `ring-reki-line` for shadowed surfaces (for example combobox, dialog, select, dropdown, toast, and related surface wrappers)
626
+ - adjust theme token configuration and generated styles to support updated neutral/hairline appearance
627
+
628
+ - 460a603: fix(a11y): add accessible labels to icon-only controls
629
+
630
+ ## 1.18.0
631
+
632
+ ### Minor Changes
633
+
634
+ - b1e51a8: Add Enter key navigation to Pagination page number input and new `pageSelector` prop for dropdown mode
635
+ - The page number input in `Pagination.Controls` now navigates on Enter key press (previously only on blur)
636
+ - New `pageSelector` prop on `Pagination.Controls`: set to `"dropdown"` to render a Select dropdown instead of a text input for page selection
637
+
638
+ - e676f0b: Add disabled option support, groups, group labels, and separators to Select
639
+ - `Select.Option` now accepts `disabled` and `className` props
640
+ - New `Select.Group` and `Select.GroupLabel` sub-components for organizing options under labeled headers
641
+ - New `Select.Separator` sub-component for visual dividers between groups
642
+ - The `items` object-map prop now accepts `SelectItemDescriptor` values with `disabled` metadata
643
+
644
+ - a685953: Expose `delay` and `closeDelay` props on Tooltip component to control open and close timing. These props are forwarded to the underlying Base UI Trigger component.
645
+
646
+ ### Patch Changes
647
+
648
+ - dacf445: Input and InputArea now automatically apply error styling when the `error` prop is truthy. You no longer need to set `variant="error"` separately - just pass an error message and the styling is applied automatically. The `variant="error"` prop is now deprecated but still works for backwards compatibility.
649
+ - 44c26f5: Adjust semantic tint usage for status/error ring styles across core form and feedback components.
650
+ - Update background styles in `Badge` and `Banner` components to use `*-tint` tokens.
651
+ - Update `reki-danger` to a darker token to improve a11y contrast.
652
+ - Update error ring styling in form components to use semantic tokens (now darker with token swap).
653
+ - Removed `text-color-badge-red-subtle` token in replacement of the `danger` token.
654
+ - Update theme generator color mappings used by these tints to improve visual consistency.
655
+
656
+ - 2bb8628: Fix CodeBlock crash when an unsupported `lang` value is passed at runtime. The `codeVariants()` function now uses optional chaining with a nullish coalescing fallback to the default language, matching the defensive pattern already used by `switchVariants()` and `badgeVariants()`.
657
+ - e8bcf6f: fix(select): use ring-reki-hairline token in Select popup (missed in PR #355)
658
+ - c3beded: Fix Select popup scrolling and height behavior; align popup/list structure with Base UI. Split popup into frame (Popup) and scroll container (List) to match Combobox pattern and fix touch scroll on long lists.
659
+ - 4a2fb02: fix(loader): add ARIA attributes for screen reader accessibility
660
+
661
+ Added `role="status"` and `aria-label="Loading"` to the Loader SVG component to make it accessible to screen readers. This resolves a WCAG 2.1 SC 4.1.3 (Status Messages) violation where assistive technology users received no indication that content was loading.
662
+
663
+ - 5e4c7b1: Refine badge semantics/fill styling and banner tone updates
664
+ - Rework `Badge` variant model to prioritize semantic variants (`primary`, `secondary`, `error`, `warning`, `success`, `info`) with updated descriptions and `primary` as default.
665
+ - Keep token color variants for product-specific use cases while updating class mappings so semantic and token variants are distinct.
666
+ - Slight updates to token color variants to meet a11y contrast requirements.
667
+ - Update token color variants by replacing `yellow` with `purple` since `yellow` doesn't meet a11y contrast requirements, and keeping docs/demo examples in sync.
668
+ - Update badge docs demos/content to focus on primary semantic badges and a consolidated "other variants" section.
669
+ - Adjust banner variant surfaces (`default`, `alert`, `error`) to stronger tinted backgrounds and borders.
670
+ - Update theme generator badge/semantic token mappings and regenerate `theme-reki.css` to match the new badge color system.
671
+
672
+ - 6458fae: Fix Switch label click not toggling when a custom `id` prop is provided
673
+
674
+ The `id` was not being forwarded to Base UI's `Switch.Root`, causing a mismatch between the label's `htmlFor` and the button's actual `id`.
675
+
676
+ - cf6b917: Align semantic token documentation and docs presentation updates.
677
+ - Update `colors.mdx` token documentation structure.
678
+ - Replaced `reki-ring` with `reki-hairline` for border/ring colors and all its instances in reki components and docs.
679
+ - Sync `packages/reki/ai/USAGE.md` token reference categories and descriptions with the docs token guide.
680
+ - Adjust the typo in the recessed dark token value in theme generator config and regenerate `theme-reki.css`.
681
+ - Updated `reki-fill-hover` token value from `neutral-700` to `neutral-800`
682
+
683
+ ## 1.17.0
684
+
685
+ ### Minor Changes
686
+
687
+ - 355a1b5: Badge: add color-based variants and deprecate semantic variants
688
+ - Add color variants: `red`, `orange`, `yellow`, `green`, `teal`, `blue`, `neutral`, `inverted`
689
+ - Add subtle variants for each color (`red-subtle`, `orange-subtle`, etc.) with lighter backgrounds and darker text
690
+ - Retain `outline` and `beta` variants unchanged
691
+ - Deprecate `primary` (use `inverted`), `secondary` (use `neutral`), `destructive` (use `red`), `success` (use `green`)
692
+ - Dark mode support: subtle variants flip to dark backgrounds with light text, regular color variants darken slightly, inverted flips to white bg with black text
693
+ - Default variant changed from `primary` to `neutral`
694
+
695
+ - 250a6dd: Add `action` prop to Banner for rendering CTA buttons alongside structured title/description content without resorting to the `children` prop.
696
+ - 8c244d2: Refresh semantic surface color tokens and component surface usage.
697
+ - Add and adopt `reki-canvas` as the page-level surface token in theme output and docs usage.
698
+ - Rebalance neutral token values in `reki-binding.css` and generated theme variables for improved light/dark surface hierarchy.
699
+ - Update surface-related component styling (`LayerCard`, `MenuBar`, `Tabs`) to align with the refreshed `canvas`/`elevated`/`recessed` layering model.
700
+ - Update token usage guidance in `ai/USAGE.md` to reflect page vs component background roles.
701
+
702
+ - ef15662: Make timeseries' highlighted on hovering a data point
703
+ - cd0c22f: Add Shadow DOM support via `RekiPortalProvider` and `container` prop on all portal-based components
704
+
705
+ All overlay components (Dialog, DropdownMenu, Combobox, Select, Tooltip, Popover, CommandPalette, Toast) now support rendering inside Shadow DOM or custom containers.
706
+
707
+ **New exports:**
708
+ - `RekiPortalProvider` - Context provider to set default portal container for all overlays
709
+ - `PortalContainer` - Type for portal container (HTMLElement, ShadowRoot, or ref)
710
+
711
+ **Component updates:**
712
+ All portal-based components now accept an optional `container` prop:
713
+ - `Dialog` - `container` prop on Dialog component
714
+ - `DropdownMenu.Content` - `container` prop
715
+ - `Combobox.Content` - `container` prop
716
+ - `Select` - `container` prop
717
+ - `Tooltip` - `container` prop
718
+ - `Popover.Content` - `container` prop
719
+ - `CommandPalette.Root` and `CommandPalette.Dialog` - `container` prop
720
+ - `Toasty` (Toast provider) - `container` prop
721
+
722
+ **Usage:**
723
+
724
+ Set once at the app level:
725
+
726
+ ```tsx
727
+ <RekiPortalProvider container={shadowRoot}>
728
+ <App />
729
+ </RekiPortalProvider>
730
+ ```
731
+
732
+ Or override per component:
733
+
734
+ ```tsx
735
+ <Dialog container={customContainer}>
736
+ <Dialog.Title>Modal inside shadow DOM</Dialog.Title>
737
+ </Dialog>
738
+ ```
739
+
740
+ When no provider or prop is set, components default to `document.body` (existing behavior).
741
+
742
+ - 17f21f3: SkeletonLine: add `blockHeight` prop to set a container height and vertically center the skeleton line within it
743
+ - d1f697b: Table: add `sticky` prop to `Table.Head` and `Table.Cell` for pinning columns to left/right edges, and `sticky` prop to `Table.Header` for sticky header rows. Uses `isolate` stacking context with `z-0`/`z-1`/`z-2` layering.
744
+ - 56e3640: Add `toml` as a supported language for syntax highlighting in the Code component
745
+ - f0c8952: Add `title` prop to `Button` — wraps the button in a `Tooltip` when provided.
746
+
747
+ ### Patch Changes
748
+
749
+ - 7721bc5: Checkbox.Group & Radio.Group: remove fieldset border box and simplify styling
750
+ - Remove `rounded-lg border border-reki-line p-4` wrapper from both group fieldsets
751
+ - Downsize legend from `text-lg` to `text-base` with inline-flex layout
752
+ - Drop `font-medium` from Checkbox.Item and Radio.Item labels
753
+
754
+ - 6c21970: Fix missing disabled styling on Combobox triggers. `TriggerValue` and `TriggerMultipleWithInput` now apply `opacity-50` and `cursor-not-allowed` when disabled, matching the behaviour of the `Select` component.
755
+ - 0e4247a: Update dialog backdrop overlay to use `bg-reki-recessed` token
756
+ - 0060bb9: Remove `ai/schemas.ts` from version control (now fully generated at build time)
757
+ - 04a1f07: Fix LayerCard.Primary stacking order when sandwiched between LayerCard.Secondary elements
758
+ - 94d50e2: Fix SensitiveInput focus ring and global CSS pollution
759
+ - Fix focus ring not showing on container when inner input is focused (focus-within:outline)
760
+ - Add defensive styles to eye toggle and copy buttons to prevent global CSS pollution
761
+ - Fix inputVariants parentFocusIndicator using wrong selector ([&:has(:focus-within)] → focus-within:)
762
+
763
+ - db75c51: SkeletonLine: move `.skeleton-line` styles into `@layer base` so Tailwind utility classes (e.g. `className="h-6"`) can override the default height
764
+ - eb68b35: Tabs indicator now uses `translate-x` for its transition animation, replacing the CSS `left` transition with a GPU-accelerated transform.
765
+ - e21a6df: fix flow component not reflecting padding prop
766
+ - 29c56fd: `Surface`: replace `as` prop with Base UI `render` prop for polymorphism
767
+
768
+ The `as` prop used a hand-rolled generic `forwardRef` pattern (with `as any` casts) that conflicted with how the rest of the library handles polymorphism via Base UI's `useRender` hook.
769
+
770
+ `Surface` now accepts a `render` prop, consistent with `Link` and other components. The old `as` prop is kept as a deprecated alias and continues to work unchanged — no migration required.
771
+
772
+ ```tsx
773
+ // Still works (deprecated)
774
+ <Surface as="section">...</Surface>
775
+
776
+ // Preferred going forward
777
+ <Surface render={<section />}>...</Surface>
778
+ ```
779
+
780
+ - 9272b4a: Switch: polish squircle styling
781
+ - Use `ring-inset` on thumb to prevent border protruding beyond the track
782
+ - Make thumb ring transparent to remove visible border outline
783
+ - Switch focus indicator from `ring` to `outline` with `outline-offset-2` to avoid clashing with the track's own ring border
784
+
785
+ - 6b15bac: fix(Tabs): update segmented tab spacing and track styling
786
+ - Adjust segmented `Tabs` list styling colour to `bg-reki-recessed` and added `ring` to make the Tabs background more visible
787
+ - Remove extra edge spacing and keep the segmented track/indicator alignment consistent
788
+
789
+ - cfe814d: update toast styling to use a subtle ring and background that reflect each state.
790
+ - 7ac73d2: update status text token values for info and danger to improve a11y contrast ratio on banners.
791
+ - dcbf185: Add `truncate` prop to `Text` component. When `true`, applies `truncate min-w-0` classes to clip overflowing text with an ellipsis.
792
+
793
+ ## 1.16.0
794
+
795
+ ### Minor Changes
796
+
797
+ - c5f69b9: Make Chart components keyboard focusable with tabindex. Timeseries adds `ariaDescription` prop
798
+
799
+ ### Patch Changes
800
+
801
+ - b3c44f1: Generate component-registry files at build time, remove from git
802
+
803
+ Eliminates contributor friction by generating component-registry.json,
804
+ component-registry.md, and schemas.ts during the build process instead of
805
+ tracking them in git. Contributors will no longer see stale diffs or need to
806
+ manually regenerate these files.
807
+ - Add ai/component-registry.json and ai/component-registry.md to .gitignore
808
+ - Convert ai/schemas.ts to a stub file for TypeScript compilation
809
+ - Add codegen:registry to build script for deterministic generation
810
+
811
+ - 759f4e8: feat(code): add HCL (HashiCorp Configuration Language) as a supported syntax highlighting language
812
+ - a67fac7: fix(flow): connector lines no longer misalign when the page scrolls or a sidebar shifts the layout
813
+
814
+ `getBoundingClientRect` values were stored in React state per node and later subtracted against a freshly-read container rect at connector-draw time. Any layout shift (sidebar open/close, page scroll, inner container scroll) between those two reads produced stale coordinates, causing connector lines to jump out of place or disappear entirely.
815
+
816
+ Fix: add `scroll` and `resize` listeners (capture phase) at the `FlowNode`, `FlowParallelNode`, and `FlowNodeList` levels so all rects are remeasured after any layout shift. Connector computation in `FlowNodeList` and `FlowParallelNode` is also moved from the render phase into `useLayoutEffect` so the container rect and node rects are always read in the same synchronous pass.
817
+
818
+ - 15a344e: Add missing HCL language import to server-side Shiki bundle
819
+
820
+ The HCL language was added to SupportedLanguage type and the client-side
821
+ provider in a previous commit, but the server.tsx BUNDLED_LANGS object
822
+ was missed. This caused typecheck failures when building.
823
+
824
+ - 5d8d3a9: Sidebar: polish animations, fix separator reflow bug, improve header spacing
825
+ - 7e82920: Fix connector alignment and spacing between adjacent parallel nodes in Flow diagrams
826
+
827
+ ## 1.15.0
828
+
829
+ ### Minor Changes
830
+
831
+ - 73f554a: Add success and info toast variants with semantic token styling. Migrate error/warning variants from raw CSS to semantic tokens for consistent theming.
832
+
833
+ ### Patch Changes
834
+
835
+ - 9fbf3a8: Fix Radio compound component to use Object.assign pattern, enabling sub-component detection (Radio.Group, Radio.Item) in the component registry.
836
+ - 3430785: Revert outline button variant ring width from `ring-2` (2px) back to `ring` (1px) to restore visual consistency with existing dashboard usage.
837
+
838
+ ## 1.14.1
839
+
840
+ ### Patch Changes
841
+
842
+ - 839b0cb: fix: update styling for mostly-used components with new greyscale tokens (combobox, dialog, input, layerCard, select & tabs) as well as homegrid and component preview backgrounds.
843
+ - 7083a17: Remove es2022 build target that caused Jest/babel-jest test failures in stratus
844
+
845
+ ## 1.14.0
846
+
847
+ ### Minor Changes
848
+
849
+ - 8b2d6a0: Add radio card appearance via `appearance="card"` prop on Radio.Group and Radio.Item. Cards display a bordered, selectable container with title and description. Also adds `description` prop to Radio.Item for helper text. Supports vertical and horizontal orientations, error state, and disabled state.
850
+ - abbf586: Expose Chart `optionUpdateBehavior` to control how ECharts applies option updates; `notMerge` now defaults to `false`.
851
+ - c6aa554: Add neutral variant to Switch component and improve accessibility
852
+ - New `variant="neutral"` option: monochrome switch with squircle shape, matching the design from stratus
853
+ - Improved off-state visibility for default variant with darker background/ring colors
854
+ - Removed `error` variant (not useful for toggle switches)
855
+ - Added defensive fallback so invalid variant values don't cause runtime crashes
856
+
857
+ ### Patch Changes
858
+
859
+ - f2e17d7: removed `outline-none` to bring back focus states on all buttons
860
+ - eba693e: Fix flaky vitest "Closing rpc while fetch was pending" error in deep-imports test
861
+ - db91f50: Fix InputArea label click not focusing textarea. Use FieldBase.Control with render callback to properly associate the label with the textarea element.
862
+ - 80afd4d: Fix TypeScript return types for ShikiProvider and CodeHighlighted components.
863
+
864
+ Changed return type from `ReactNode` to `React.JSX.Element` to resolve JSX compatibility errors. This fixes issues when consuming these components in projects with stricter TypeScript configurations (e.g., `skipLibCheck: false`), where `ReactNode` was incorrectly inferred as a valid JSX element return type.
865
+
866
+ - dc9742d: Fix table header font size to ensure consistent rendering across dashboards with different default font sizes
867
+ - f94fee7: Add dedicated `reki-placeholder` text color token and use it for Input, InputArea, SensitiveInput, and CommandPalette placeholder text. The new token provides better visual distinction between placeholder and active text in both light and dark modes.
868
+ - 66012b7: Replace the package-level ESLint pass with Oxlint JS plugin coverage for the remaining jsx-a11y rules, and pin the library build to `es2022` with a post-build browser-compat test that blocks newer runtime APIs from shipping in `dist`.
869
+ - e8acdd8: fix(Select): prevent chevron overflow with long multi-select values
870
+
871
+ Added `min-w-0 truncate` to the value element and `shrink-0` to the chevron icon so that long option names truncate gracefully instead of pushing the chevron outside the select bounds.
872
+
873
+ ## 1.13.1
874
+
875
+ ### Patch Changes
876
+
877
+ - c272f6a: Fix combobox caret icon to use text-reki-subtle with fill-current instead of invalid fill-reki-subtle token
878
+ - 5e12c15: fix TimeseriesChart brush cursor not activating when loading prop transitions from true to false
879
+
880
+ ## 1.13.0
881
+
882
+ ### Minor Changes
883
+
884
+ - 56a8b35: add xAxisTickFormat, yAxisTickFormat, and tooltipValueFormat props to TimeseriesChart; deprecate yAxisTickLabelFormat
885
+
886
+ ## Deprecation: yAxisTickLabelFormat is deprecated
887
+
888
+ If you were using `yAxisTickLabelFormat` to customize tooltip output, switch to `tooltipValueFormat`.
889
+
890
+ **Before:**
891
+
892
+ ```tsx
893
+ <TimeseriesChart yAxisTickLabelFormat={(v) => `${v} req/s`} />
894
+ ```
895
+
896
+ **After:**
897
+
898
+ ```tsx
899
+ <TimeseriesChart tooltipValueFormat={(v) => `${v} req/s`} />
900
+ ```
901
+
902
+ ## 1.12.1
903
+
904
+ ### Patch Changes
905
+
906
+ - eda8362: Fix combobox caret icon visibility by using fill-reki-subtle instead of fill-reki-ring
907
+
908
+ ## 1.12.0
909
+
910
+ ### Minor Changes
911
+
912
+ - 4d6de27: reorganize greyscale tokens and update color preferences
913
+
914
+ ### Patch Changes
915
+
916
+ - 2ff49b7: updated button styles for outline and secondary
917
+ - 59f7935: Fix Jest module resolution failures and reduce Shiki bundle size
918
+
919
+ **Jest Fix:**
920
+ - Add `chunkFileNames` config to prevent double-dash filenames (e.g., `combobox--ec3iibR.js`) that Jest cannot resolve
921
+ - Move chunks to `dist/chunks/` subdirectory for cleaner structure
922
+
923
+ **Bundle Size Reduction:**
924
+ - Switch from full Shiki bundle to fine-grained imports via `shiki/core`
925
+ - Reduce from ~300 language/theme chunks to ~16 bundled languages
926
+ - Total JS files reduced from 358 to ~163 (54% reduction)
927
+
928
+ **Supported Languages:**
929
+ `javascript`, `typescript`, `jsx`, `tsx`, `json`, `jsonc`, `html`, `css`, `python`, `yaml`, `markdown`, `graphql`, `sql`, `bash`, `shell`, `diff`
930
+
931
+ **Breaking Change:**
932
+ - `BundledLanguage` type is now deprecated, use `SupportedLanguage` instead
933
+ - Only the languages listed above are bundled; other Shiki languages are no longer available out of the box
934
+
935
+ - 9eaf584: Fix npm publish failure by removing cross-package dependency from prepublish hook
936
+
937
+ ## 1.11.0
938
+
939
+ ### Minor Changes
940
+
941
+ - 140f4ab: **Select: Improved label API to match Input component pattern**
942
+ - `hideLabel` is now deprecated. When `label` is provided, the label is **visible by default** (previously hidden by default).
943
+ - For visible labels: `<Select label="Country" />` (no changes needed if you were using `hideLabel={false}`)
944
+ - For hidden labels: Use `<Select aria-label="Select a country" />` instead of `<Select label="Country" hideLabel={true} />`
945
+ - **Bug fix**: Placeholder text now displays correctly when using object map `items` format (e.g., `items={{ a: "Option A" }}`). Previously, placeholders only worked with array format items.
946
+
947
+ **Backward compatibility**: `hideLabel={true}` still works but shows a deprecation warning in development. Existing code using `hideLabel={false}` requires no changes.
948
+
949
+ **Migration guide:**
950
+
951
+ ```tsx
952
+ // Before (label hidden by default)
953
+ <Select label="Country" /> // label was sr-only
954
+ <Select label="Country" hideLabel={false} /> // label was visible
955
+
956
+ // After (label visible by default, matching Input)
957
+ <Select label="Country" /> // label is now visible
958
+ <Select aria-label="Country" /> // use aria-label for hidden labels
959
+ ```
960
+
961
+ - f1c6392: Add optional `id` prop to `Flow.Node` for stable node identification and connector test IDs
962
+ - da03394: Avoid adding multiple toasts with the same ID. Use a subtle bump animation when a toast with an existing ID is added.
963
+
964
+ ### Patch Changes
965
+
966
+ - a53ec1b: Fix theme token flicker by generating stable light/dark fallback variables with safer scope and layer precedence.
967
+ - cb121bc: fix: add defensive styles to prevent global CSS pollution
968
+
969
+ ## Problem
970
+
971
+ When Reki components are used in applications with aggressive global styles (e.g., Stratus's `cfBaseStyles` layer), certain elements get polluted:
972
+ - `label { margin-bottom: 1rem }` adds unwanted margins to all labels
973
+ - `button { background: gray }` affects unstyled button wrappers (e.g., tooltip triggers)
974
+ - `a { color: var(--text-color-primary) }` can override link colors if the consuming app defines `--text-color-primary` differently
975
+
976
+ ## Solution
977
+
978
+ Add defensive Tailwind utility classes directly to components. These:
979
+ 1. Reset commonly-polluted properties to safe defaults
980
+ 2. Use `cn()` (tailwind-merge) so consumer styles via `className` still override them
981
+ 3. Are no-ops in clean CSS environments (no visual change in Reki docs)
982
+
983
+ ## Changes
984
+
985
+ ### Label margins (`m-0`)
986
+ - **Label**: `labelVariants()` now includes `m-0`
987
+ - **Field**: `FieldBase.Label` gets `m-0`
988
+ - **Checkbox**: label wrapper gets `m-0`
989
+ - **Radio**: label wrapper gets `m-0`
990
+ - **Switch**: label wrapper gets `m-0`
991
+
992
+ ### Button trigger resets
993
+ - **Tooltip trigger** (when `!asChild`): `bg-transparent border-none shadow-none p-0 m-0 h-auto min-h-0 leading-[0] inline-flex items-center`
994
+ - **Collapsible trigger**: `bg-transparent border-none shadow-none p-0 m-0`
995
+
996
+ ### Link color namespace fix
997
+ - **Link**: Changed from `text-primary` to `text-reki-link` to avoid collision with consuming apps that define `--text-color-primary` differently
998
+
999
+ ### Label tooltip composition
1000
+ - **Label**: Tooltip trigger now uses `<Button variant="ghost" size="xs" shape="square">` with `asChild`, leveraging composition instead of relying on defensive resets
1001
+
1002
+ ## Docs
1003
+
1004
+ Added "Custom Trigger" section to Tooltip docs demonstrating that `className` can fully override defensive styles when not using `asChild`.
1005
+
1006
+ - c6a3fb3: fix(dropdown): use Base UI CheckboxItemIndicator for proper accessibility
1007
+
1008
+ Replace custom Checkbox component with Base UI's CheckboxItemIndicator in DropdownMenuCheckboxItem. The previous implementation nested an interactive Checkbox inside the menuitemcheckbox role, causing duplicate accessibility labels. CheckboxItemIndicator is automatically aria-hidden and only renders when checked, following the standard Base UI pattern.
1009
+
1010
+ - 1bfffaa: Fix Field error message line height by adding `leading-snug` for consistent text spacing
1011
+ - 5d16fdb: Improve info banner dark mode contrast for WCAG AA compliance. Changes `reki-info` from `blue-700` (L=48.8%) to `blue-400` (L=70.7%), achieving 7.97:1 contrast ratio against the banner background.
1012
+ - 8b964f5: Fix Combobox.TriggerValue icon misalignment caused by inherited line-height
1013
+
1014
+ The caret icon span was inheriting `line-height` from the parent button's `text-base` class, causing the span's height to exceed the icon's height (e.g., 21.5px vs 16px). The icon sits at the top of the span by default, so when the span is centered via `top-1/2 -translate-y-1/2`, the icon appears offset.
1015
+
1016
+ Added `flex items-center` to the icon wrapper to ensure proper vertical centering regardless of inherited styles. This matches the pattern used in TriggerInput.
1017
+
1018
+ - 529274d: fix(Pagination): use aria-label instead of label for PageSize select
1019
+
1020
+ The Select component now shows visible labels by default. Since Pagination.PageSize
1021
+ already displays "Per page:" text next to the select, the internal Select should use
1022
+ `aria-label` for accessibility without showing a duplicate visible label.
1023
+
1024
+ - 2f0e572: chore(toast): replace inline XIcon with Phosphor icon
1025
+ - ee1099d: Prevent password managers autofilling Pagination input field
1026
+ - 6dc952f: fix(tabs): improve focus ring and hover styling
1027
+ - Fixed focus ring to use proper `ring-reki-ring` token instead of browser default blue
1028
+ - Segmented variant: inset focus ring to avoid overlap with adjacent tabs, hidden on active tab
1029
+ - Underline variant: added padding for better focus ring spacing around text
1030
+ - Added subtle hover states for both variants
1031
+
1032
+ - 2352344: fix(Tabs): pass TabItem render prop through to Base UI for custom tab rendering (e.g., link-based tabs)
1033
+
1034
+ ## 1.10.0
1035
+
1036
+ ### Minor Changes
1037
+
1038
+ - 5505610: Add Shiki-powered `CodeHighlighted` component for syntax highlighting
1039
+ - **New entry point**: `@cloudraker/reki/code` - keeps Shiki out of main bundle
1040
+ - **ShikiProvider**: Lazy-loads Shiki on first render, shares instance across all children
1041
+ - **CodeHighlighted**: Syntax highlighting with line numbers, line highlighting, copy button
1042
+ - **Server utilities**: `@cloudraker/reki/code/server` for SSR/static highlighting
1043
+ - **Themes**: Ships with `github-light` and `vesper` defaults, supports any Shiki theme
1044
+ - **i18n**: Customizable labels via provider or per-component
1045
+ - **CSS customization**: `--reki-code-highlight-bg` variable for highlight color
1046
+ - **Deprecates**: Legacy `Code` and `CodeBlock` components (will be removed in v2)
1047
+
1048
+ - 003128b: feat(combobox): add size prop with xs, sm, base, lg variants matching Input component
1049
+ - 1cad157: feat(flow): make nested lists work inside parallel nodes
1050
+ - 9d89256: Add `role` prop to Dialog component supporting both `"dialog"` (default) and `"alertdialog"` ARIA roles
1051
+
1052
+ **New Feature:**
1053
+ - `Dialog.Root` now accepts a `role` prop to specify the dialog's ARIA semantics
1054
+ - When `role="alertdialog"` is used, the dialog uses Base UI's AlertDialog primitives for proper accessibility
1055
+ - This provides correct screen reader announcements for confirmation and destructive action dialogs
1056
+
1057
+ **When to use `role="alertdialog"`:**
1058
+ - Destructive actions (delete, discard, remove)
1059
+ - Confirmation flows requiring explicit user acknowledgment
1060
+ - Actions that cannot be undone
1061
+ - Critical warnings or errors
1062
+
1063
+ **Example:**
1064
+
1065
+ ```tsx
1066
+ // Standard dialog (default)
1067
+ <Dialog.Root>
1068
+ <Dialog.Trigger render={(p) => <Button {...p}>Edit</Button>} />
1069
+ <Dialog>...</Dialog>
1070
+ </Dialog.Root>
1071
+
1072
+ // Alert dialog for destructive actions
1073
+ <Dialog.Root role="alertdialog">
1074
+ <Dialog.Trigger render={(p) => <Button variant="destructive" {...p}>Delete</Button>} />
1075
+ <Dialog>...</Dialog>
1076
+ </Dialog.Root>
1077
+ ```
1078
+
1079
+ - e6218d2: Add TimeseriesChart component with ECharts integration, supporting legends, gradient fills, custom axis formatting, loading skeleton state, and configurable color palettes.
1080
+ - a7eb061: feat(select): auto-render options from items prop when children omitted
1081
+
1082
+ The Select component now automatically renders Select.Option elements from the items prop when children are not explicitly provided.
1083
+
1084
+ ### Patch Changes
1085
+
1086
+ - 5943e77: Add missing `success` background and tint semantic color tokens (`bg-reki-success`, `bg-reki-success-tint`) for parity with `info`, `warning`, and `danger`. Fix `text-reki-success` dark mode contrast by using `green-400` instead of `green-500`. Add new `success` Badge variant for positive state indicators.
1087
+ - 35d5c42: fix(breadcrumbs): improve mobile breadcrumb readability
1088
+
1089
+ breadcrumbs now render a compact mobile trail for deeper hierarchies by collapsing early levels to `...` and keeping the trailing path visible. labels in breadcrumb links and the current page now truncate correctly to prevent stacking or overlap on narrow viewports.
1090
+
1091
+ - 02d0d65: fix(badge): prevent crash when unknown variant is passed
1092
+
1093
+ Add defensive fallback to primary variant when an unrecognized variant string is provided to Badge component. This prevents "Cannot read properties of undefined (reading 'classes')" errors when consumers use a variant that doesn't exist in their installed version.
1094
+
1095
+ - 3170d65: fix(code): Fix CodeHighlighted dark mode, layout, and SSR issues
1096
+ - Fix dark mode: Make `<pre>` background transparent so container's `bg-reki-base` handles theming and border-radius is respected
1097
+ - Fix layout: Wrap Shiki output in overflow container to prevent line highlight negative margins from being clipped
1098
+ - Fix width: Add `w-full` to container for proper full-width display
1099
+ - Fix SSR: Remove `"use client"` directive from `@cloudraker/reki/code/server` entry point so server utilities work in RSC/SSR contexts
1100
+
1101
+ - 31ce577: fix(CommandPalette): add explicit text-base class to Item component for consistent 14px font size
1102
+ - ee5a632: Fix Select to render description and error when hideLabel is true
1103
+
1104
+ Previously, the `description` and `error` props were silently ignored when
1105
+ `hideLabel` was `true` (the default). Now, helper text and error messages
1106
+ display correctly even when the label is visually hidden.
1107
+
1108
+ - 409d32b: Fix TypeScript errors when consumers type-check their projects with reki installed.
1109
+
1110
+ Previously, TypeScript would attempt to type-check raw `.tsx` and `.ts` source files
1111
+ shipped in the package (block sources in `dist/src/blocks/`, `ai/schemas.ts`, and
1112
+ `scripts/theme-generator/*.ts`), causing build failures in downstream projects.
1113
+
1114
+ This change:
1115
+ - Moves block source files to a separate `dist/blocks-source/` directory
1116
+ - Compiles `ai/schemas.ts` and `scripts/theme-generator/*.ts` to JavaScript
1117
+ - Updates package exports to point to compiled `.js` files with proper `.d.ts` types
1118
+
1119
+ - 7816318: fix(inputs): expand small control hit areas
1120
+ - e7f0c80: Fix pagination component to properly wrap numbers in `tabular-nums` class for consistent number alignment. Both the page range and total count now use tabular numerals.
1121
+ - c0341b4: Simplify Select placeholder implementation by using Base UI's native placeholder prop on SelectBase.Value instead of manually injecting placeholder items into the items array. This provides a cleaner, more intuitive API that aligns with standard HTML select behavior while maintaining backward compatibility with the null-value placeholder pattern.
1122
+ - 35d5c42: fix(breadcrumbs): enhance mobile breadcrumb display for better readability
1123
+ - abb7f8c: Add `variant="compact"` prop to Table.Header for a more condensed header style
1124
+ - 8972cc4: Fix Combobox group label styling to use semantic token and correct padding
1125
+ - bb49d4b: Standardize z-index usage with isolation containment
1126
+ - Add `isolation: isolate` to components with internal stacking (Tabs, MenuBar, InputGroup, Flow/Parallel)
1127
+ - Simplify internal z-index values to `z-0`/`z-1`/`z-2` instead of arbitrary values like `z-10`/`z-20`
1128
+ - Remove superfluous `z-10` from CommandPalette List
1129
+ - Update Toast viewport to `z-1` (matching Base UI's documented pattern)
1130
+ - Update ClipboardText viewport to use `isolate` instead of `z-50`
1131
+
1132
+ This prevents z-index values from leaking outside component boundaries.
1133
+
1134
+ ## 1.9.0
1135
+
1136
+ ### Minor Changes
1137
+
1138
+ - 23865db: feat(dropdown): add LinkItem for navigation links and fix icon rendering
1139
+
1140
+ **New Features:**
1141
+ - Add `DropdownMenu.LinkItem` for navigation links (semantic `<a>` element with proper menu item behavior)
1142
+ - Upgrade `@base-ui/react` from 1.0.0 to 1.2.0
1143
+ - Add new primitives: `csp-provider` and `drawer` from Base UI 1.2.0
1144
+
1145
+ **Bug Fixes:**
1146
+ - Fix `icon` prop not rendering on `DropdownMenu.Item` when no `href` is provided
1147
+
1148
+ **Deprecations:**
1149
+ - `href` prop on `DropdownMenu.Item` is deprecated. Use `DropdownMenu.LinkItem` instead.
1150
+
1151
+ **Migration:**
1152
+
1153
+ ```tsx
1154
+ // Before (deprecated)
1155
+ <DropdownMenu.Item href="https://example.com">Link</DropdownMenu.Item>
1156
+
1157
+ // After (recommended)
1158
+ <DropdownMenu.LinkItem href="https://example.com" target="_blank">
1159
+ Link
1160
+ </DropdownMenu.LinkItem>
1161
+ ```
1162
+
1163
+ `DropdownMenu.LinkItem` gives you full control over link attributes (`target`, `rel`, etc.) without the component making assumptions about your intent.
1164
+
1165
+ - 68c2f0d: Add `positionMethod` prop to `Popover.Content` to control CSS positioning strategy. Use `"fixed"` when the popover needs to escape stacking contexts (e.g., inside sticky headers). Defaults to `"absolute"`.
1166
+
1167
+ ### Patch Changes
1168
+
1169
+ - 89cb5ec: Improve Flow diagram components with disabled node support and better connector rendering:
1170
+ - Add `disabled` prop to FlowNode for greying out connectors
1171
+ - Add `align` prop to FlowParallelNode for start/end alignment
1172
+ - Improve connector path rendering with smarter junction detection
1173
+ - Fix panning behavior to not interfere with node interactions
1174
+
1175
+ ## 1.8.0
1176
+
1177
+ ### Minor Changes
1178
+
1179
+ - cf4ff38: Refactor Banner component with softer styling and i18n-friendly props
1180
+ - Added `title` and `description` props for structured content with i18n support
1181
+ - Softened visual appearance: reduced background opacity (20% -> 10%), muted border colors
1182
+ - Text now uses `text-reki-default` for readability, with colored icons for variant indication
1183
+ - Added `iconClasses` to variant config for per-variant icon coloring
1184
+ - Component now uses `forwardRef` and sets `displayName` per conventions
1185
+ - Deprecated `children` and `text` props in favor of `title`/`description`
1186
+ - Legacy `children` prop still works for backwards compatibility
1187
+
1188
+ ### Patch Changes
1189
+
1190
+ - 0ca3b05: Fix Checkbox ring color to use `ring-reki-contrast` when checked or indeterminate
1191
+ - f69df6d: Fix Combobox dropdown scrolling regression and improve scroll behavior.
1192
+
1193
+ **Bug fix:** The `overflow-hidden` class was accidentally re-introduced during a semantic color token migration, which overrode `overflow-y-auto` and caused dropdown content to be clipped instead of scrollable.
1194
+
1195
+ **Improvement:** Restructured Combobox.Content to use flexbox layout so that when using `Combobox.Input` inside the dropdown (searchable popup pattern), the input stays fixed at the top while only the list scrolls. Previously, the entire popup content would scroll together.
1196
+
1197
+ **Scrollbar fix:** Moved horizontal padding from the popup container to individual child components, so the scrollbar renders flush with the popup edge instead of being inset (which was clipping the checkmark indicators).
1198
+
1199
+ ## 1.7.0
1200
+
1201
+ ### Minor Changes
1202
+
1203
+ - d9b6498: feat(flow): add FlowDiagram components for building directed flow diagrams
1204
+
1205
+ New components for visualizing workflows and data flows:
1206
+ - `FlowDiagram` - Root container with pan/scroll support for large diagrams
1207
+ - `FlowNode` - Individual node with automatic connector points
1208
+ - `FlowNode.Anchor` - Custom attachment points for connectors within nodes
1209
+ - `FlowParallelNode` - Container for parallel branches with junction connectors
1210
+
1211
+ Adds `motion` as a new dependency for smooth panning interactions.
1212
+
1213
+ ### Patch Changes
1214
+
1215
+ - 835a7c0: Deprecate DateRangePicker in favor of DatePicker with `mode="range"`
1216
+ - Added `@deprecated` JSDoc comments to DateRangePicker component and its exports
1217
+ - IDEs will now show deprecation warnings guiding users to use DatePicker instead
1218
+
1219
+ - 391f13a: Prevented ClipboardText from overflowing with long text values.
1220
+ - d0e1d29: chore(reki): add test scripts to root package.json
1221
+
1222
+ ## 1.6.0
1223
+
1224
+ ### Minor Changes
1225
+
1226
+ - 50d4251: Add DatePicker component built on react-day-picker v9
1227
+
1228
+ **New Component: DatePicker**
1229
+ - Three selection modes: `single`, `multiple`, and `range`
1230
+ - Forwards all react-day-picker props for maximum flexibility
1231
+ - Styled with Reki tokens (no external CSS import needed)
1232
+ - Supports localization via date-fns locales
1233
+ - Supports timezone via `timeZone` prop
1234
+ - Custom modifiers for highlighting specific dates
1235
+ - Footer prop for messages/usage limits
1236
+ - Accessible keyboard navigation with Reki-styled focus rings
1237
+
1238
+ **Usage:**
1239
+
1240
+ ```tsx
1241
+ // Single date
1242
+ <DatePicker mode="single" selected={date} onSelect={setDate} />
1243
+
1244
+ // Multiple dates
1245
+ <DatePicker mode="multiple" selected={dates} onSelect={setDates} max={5} />
1246
+
1247
+ // Date range
1248
+ <DatePicker mode="range" selected={range} onSelect={setRange} numberOfMonths={2} />
1249
+ ```
1250
+
1251
+ **Composing with Popover:**
1252
+
1253
+ ```tsx
1254
+ <Popover>
1255
+ <Popover.Trigger asChild>
1256
+ <Button variant="outline" icon={CalendarDotsIcon}>
1257
+ Pick a date
1258
+ </Button>
1259
+ </Popover.Trigger>
1260
+ <Popover.Content className="p-3">
1261
+ <DatePicker mode="single" selected={date} onSelect={setDate} />
1262
+ </Popover.Content>
1263
+ </Popover>
1264
+ ```
1265
+
1266
+ **Note:** Consider using `DatePicker` with `mode="range"` instead of `DateRangePicker` for new projects - it offers more flexibility and a smaller bundle size.
1267
+
1268
+ **Internal changes:**
1269
+ - Added `react-day-picker` v9 as a dependency
1270
+ - Updated lint rule to allow components without REKI\_\*\_VARIANTS exports
1271
+ - Updated component registry codegen to handle variant-less components
1272
+ - Disabled `jsx-a11y/no-autofocus` rule (intentional prop forwarding)
1273
+
1274
+ - 93361ed: feat(clipboard-text): add slide animation with tooltip on copy
1275
+
1276
+ ### Patch Changes
1277
+
1278
+ - c71bd9b: Updated the MenuBar so its child buttons align with the container’s outer corners.
1279
+ - 46ecf42: Fix `reki add` to consolidate imports from `@cloudraker/reki` into a single statement using inline `type` syntax.
1280
+
1281
+ Previously, running `reki add DeleteResource` would produce non-conformant code with duplicate imports:
1282
+
1283
+ ```typescript
1284
+ import { Dialog, DialogRoot } from "@cloudraker/reki";
1285
+ import { Input } from "@cloudraker/reki";
1286
+ import { Button } from "@cloudraker/reki";
1287
+ ```
1288
+
1289
+ Now it produces a single consolidated import:
1290
+
1291
+ ```typescript
1292
+ import {
1293
+ Dialog,
1294
+ DialogRoot,
1295
+ Input,
1296
+ Button,
1297
+ type DialogProps,
1298
+ } from "@cloudraker/reki";
1299
+ ```
1300
+
1301
+ This satisfies ESLint's `import/no-duplicates` rule with `prefer-inline: true`.
1302
+
1303
+ - a9167fa: Fix z-index stacking issues with nested portaled components (e.g., Select inside Dialog)
1304
+ - Remove unnecessary z-index values from Dialog, Select, Combobox, and Dropdown
1305
+ - Delete `.z-modal { z-index: 9999 }` - DOM order now handles stacking naturally
1306
+ - Components opened later correctly appear on top without z-index wars
1307
+
1308
+ - f02494d: fix(dropdown): improve external link detection to handle http:// and protocol-relative urls
1309
+
1310
+ updated the external link check to use a regex that matches `https://`, `http://`, and protocol-relative URLs (`//`). previously only `https://` links opened in a new tab.
1311
+
1312
+ ## 1.5.1
1313
+
1314
+ ### Patch Changes
1315
+
1316
+ - 2c8a5ad: Changed ClipboardIcon to CopyIcon in ClipboardText component
1317
+ - 31cc2e1: Fix AI command USAGE.md path resolution to work correctly from bundled dist output
1318
+ - 1ae7dfd: fix(cli): include block source files in build for `reki add` command
1319
+
1320
+ The `reki add` command was failing because block source files (`.tsx`) were not being copied to `dist/` during the build process. This adds copying of block source files from `src/blocks/` to `dist/src/blocks/` so the CLI can install them into user projects.
1321
+
1322
+ - fa3eba3: fix(Table): Add indeterminate prop and fix checkbox click handling
1323
+ - Added `indeterminate` prop to `Table.CheckHead` and `Table.CheckCell` components to support indeterminate checkbox state (shows minus icon when some but not all rows are selected)
1324
+ - Fixed checkbox click handling - clicking directly on the checkbox now works correctly (previously only clicking the cell area next to the checkbox worked)
1325
+ - Updated Table demos (`TableSelectedRowDemo` and `TableFullDemo`) with proper React state management for interactive row selection
1326
+
1327
+ - 3bc976e: fix: delete-resource shouldn't nest buttons within each other
1328
+ - 752fdf1: support overwriting text in pagination component
1329
+
1330
+ ## 1.5.0
1331
+
1332
+ ### Minor Changes
1333
+
1334
+ - d7a6da3: fix(cli): resolve broken doc/docs/ls commands by fixing registry path from catalog/ to ai/
1335
+ fix(dialog): wrap sub-components to isolate @base-ui/react type references from downstream consumers
1336
+ fix(label): render as `<label>` element with htmlFor support instead of `<span>`
1337
+ feat(input): add Textarea alias for InputArea
1338
+ feat(toast): add ToastProvider alias for Toasty
1339
+ feat(button): require aria-label on icon-only buttons (shape="square" | "circle") via discriminated union
1340
+ fix(docs): add Tailwind 4 @source directive to usage example, add confirmation dialog recipe, update Select basic example, document icon-only button aria-label pattern
1341
+
1342
+ ## 1.4.1
1343
+
1344
+ ### Patch Changes
1345
+
1346
+ - b64847d: fix: CLI commands now find component registry and run codegen:registry before publish
1347
+ - ea583d8: fix(cli): resolve registry path for docs and ls commands
1348
+
1349
+ ## 1.4.0
1350
+
1351
+ ### Minor Changes
1352
+
1353
+ - 71d667b: Add CloudflareLogo component with glyph and full logo variants, color schemes (brand/black/white), and exported SVG path data for custom implementations
1354
+
1355
+ ### Patch Changes
1356
+
1357
+ - 262e0e6: Replace `.toSorted()` with `.sort()` on spread copies to fix TypeError on Chrome <110
1358
+
1359
+ ## 1.3.0
1360
+
1361
+ ### Minor Changes
1362
+
1363
+ - 6a40edf: add 'Delete Resource' block
1364
+
1365
+ ## 1.2.0
1366
+
1367
+ ### Minor Changes
1368
+
1369
+ - 833ce8b: Add variant support, custom content, and action buttons to Toast component.
1370
+
1371
+ ### Patch Changes
1372
+
1373
+ - d10c711: "fix: adjusted bullet size for sensitive input"
1374
+
1375
+ ## 1.1.0
1376
+
1377
+ ### Minor Changes
1378
+
1379
+ - 001f9e7: fixes to figma plugin init + zod v4 in reki
1380
+
1381
+ ### Patch Changes
1382
+
1383
+ - 6dc9a73: Fix `reki` CLI bin resolution in repo checkouts so `pnpm install` doesn't warn when `dist/` hasn't been built yet.
1384
+
1385
+ ## 1.0.0
1386
+
1387
+ ### Major Changes
1388
+
1389
+ - 11e62a2: # Reki 1.0.0 Release
1390
+
1391
+ The first stable release of Reki, Cloudflare's component library.
1392
+
1393
+ ## Breaking Changes
1394
+
1395
+ ### Blocks Distribution via CLI
1396
+
1397
+ Blocks (`PageHeader`, `ResourceListPage`) are no longer exported from `@cloudraker/reki`. They must now be installed via the CLI:
1398
+
1399
+ ```bash
1400
+ npx @cloudraker/reki init # Initialize reki.json
1401
+ npx @cloudraker/reki add PageHeader
1402
+ ```
1403
+
1404
+ Blocks are copied to your project for full customization with imports automatically transformed to `@cloudraker/reki`.
1405
+
1406
+ ### Checkbox API Changes
1407
+ - **Ref type changed**: `HTMLInputElement` → `HTMLButtonElement`
1408
+ - **Props changed**: No longer extends `InputHTMLAttributes` (explicit props only)
1409
+ - **Handler renamed**: `onChange`/`onValueChange` → `onCheckedChange` (deprecated handlers still work)
1410
+
1411
+ ### Banner API Deprecation
1412
+
1413
+ The `text` prop is deprecated in favor of `children`:
1414
+
1415
+ ```tsx
1416
+ // Before (deprecated)
1417
+ <Banner text="Your message" />
1418
+
1419
+ // After (preferred)
1420
+ <Banner>Your message</Banner>
1421
+ ```
1422
+
1423
+ ## New Features
1424
+ - **Link component**: Inline text links with Base UI composition API and `render` prop for framework routing
1425
+ - **DropdownMenu enhancements**: Nested submenus (`Sub`, `SubTrigger`, `SubContent`) and radio items (`RadioGroup`, `RadioItem`)
1426
+ - **Grid component**: New layout primitive
1427
+ - **Theme generator**: Config-driven token definitions with consolidated semantic color system
1428
+ - **Component catalog**: Visibility controls for documentation
1429
+ - **Deprecated props lint rule**: `reki/no-deprecated-props` detects `@deprecated` JSDoc tags
1430
+
1431
+ ## Fixes
1432
+ - Dropdown danger variant color contrast
1433
+ - Tabs segmented indicator border radius
1434
+ - Combobox dropdown scrolling
1435
+ - Primary button hover/focus contrast
1436
+
1437
+ ## Migration Guide
1438
+
1439
+ ### Blocks
1440
+
1441
+ If you were using blocks (note: they were never officially exported):
1442
+
1443
+ ```bash
1444
+ # 1. Initialize configuration
1445
+ npx @cloudraker/reki init
1446
+
1447
+ # 2. Install blocks
1448
+ npx @cloudraker/reki add PageHeader
1449
+ npx @cloudraker/reki add ResourceListPage
1450
+
1451
+ # 3. Update imports to the local path shown after installation
1452
+ ```
1453
+
1454
+ ### Checkbox
1455
+
1456
+ ```tsx
1457
+ // Before
1458
+ <Checkbox onChange={(e) => setValue(e.target.checked)} />;
1459
+ const ref = useRef<HTMLInputElement>(null);
1460
+
1461
+ // After
1462
+ <Checkbox onCheckedChange={(checked) => setValue(checked)} />;
1463
+ const ref = useRef<HTMLButtonElement>(null);
1464
+ ```
1465
+
1466
+ ### Banner
1467
+
1468
+ ```tsx
1469
+ // Before (still works, but deprecated)
1470
+ <Banner text="Your message" />
1471
+
1472
+ // After
1473
+ <Banner>Your message</Banner>
1474
+ ```
1475
+
1476
+ ### Minor Changes
1477
+
1478
+ - 3a28186: feat(banner): add children prop, deprecate text prop
1479
+
1480
+ Banner now supports `children` for content, which is the preferred API. The `text` prop is deprecated but still works for backwards compatibility.
1481
+
1482
+ ```tsx
1483
+ // Preferred (new)
1484
+ <Banner>Your message</Banner>
1485
+ <Banner icon={<Icon />}>Your message</Banner>
1486
+
1487
+ // Deprecated (still works)
1488
+ <Banner text="Your message" />
1489
+ ```
1490
+
1491
+ The `text` prop will be removed in a future major version.
1492
+
1493
+ - 2de0c7b: feat(cli): blocks are now distributed via CLI instead of npm exports
1494
+
1495
+ New CLI commands for block management:
1496
+ - `reki init` - Initialize reki.json configuration file
1497
+ - `reki blocks` - List all available blocks for CLI installation
1498
+ - `reki add <block-name>` - Install a block to your project with transformed imports
1499
+
1500
+ Blocks are copied to your project for full customization, with relative imports automatically converted to `@cloudraker/reki`.
1501
+
1502
+ - 08c4426: Add lint rule to detect usage of deprecated props on Reki components.
1503
+ - New `reki/no-deprecated-props` lint rule automatically detects deprecated props from `@deprecated` JSDoc tags
1504
+ - Component registry now includes `deprecated` field for props with `@deprecated` annotations
1505
+ - Docs site shows strikethrough and `@deprecated` badge for deprecated props in API reference tables
1506
+
1507
+ To deprecate a prop, add a JSDoc comment:
1508
+
1509
+ ```tsx
1510
+ interface MyComponentProps {
1511
+ /** @deprecated Use `newProp` instead */
1512
+ oldProp?: string;
1513
+ }
1514
+ ```
1515
+
1516
+ The lint rule will flag usage and show a helpful message:
1517
+
1518
+ ```
1519
+ The `oldProp` prop on <MyComponent> is deprecated. Use `newProp` instead.
1520
+ ```
1521
+
1522
+ - 604fa9a: Add nested menu (submenu) and RadioGroup/RadioItem support to DropdownMenu
1523
+ - Add `DropdownMenu.Sub`, `DropdownMenu.SubTrigger`, and `DropdownMenu.SubContent` for nested submenus
1524
+ - Add `DropdownMenu.RadioGroup`, `DropdownMenu.RadioItem`, and `DropdownMenu.RadioItemIndicator` for single-selection menus
1525
+ - Fix `SubTrigger` styling to match `Item` component
1526
+ - Fix focus ring on dropdown popup
1527
+ - Add Storybook stories demonstrating nested menus and radio items
1528
+ - Update Astro docs with examples and API reference
1529
+
1530
+ - 98116b2: fix(checkbox): make label clickable, add new `onCheckedChange` API
1531
+ - Clicking the label now toggles the checkbox
1532
+ - New `onCheckedChange` callback (preferred over deprecated `onChange`/`onValueChange`)
1533
+ - Ref type is now `HTMLButtonElement` (aligns with Base UI implementation)
1534
+
1535
+ - 2c7f957: Add Link component with Base UI composition API
1536
+ - New `Link` component for consistent inline text links
1537
+ - Supports `render` prop for composition with framework-specific links (e.g., React Router)
1538
+ - Uses Base UI's `useRender` hook for proper ref/event merging
1539
+ - Three variants: `inline` (default), `current`, and `plain`
1540
+ - `Link.ExternalIcon` subcomponent for external link indicators
1541
+ - Integrates with `LinkProvider` for framework-agnostic routing
1542
+
1543
+ - 2de0c7b: feat: theme generator, color token consolidation, component catalog
1544
+ - New theme generator system with config-driven token definitions
1545
+ - Consolidated semantic color tokens with config.ts as single source of truth
1546
+ - New component catalog system with visibility controls
1547
+ - Added Grid component
1548
+ - Updated Figma plugin generators for new semantic tokens
1549
+ - Migrated documentation from Storybook to Astro
1550
+
1551
+ - 7d4a4e0: run component-registry when starting docs site
1552
+
1553
+ ### Patch Changes
1554
+
1555
+ - 2de0c7b: Fix color contrast issue in Dropdown danger variant by using subtle bg-reki-danger/5 background instead of bg-reki-danger-tint, improving readability while maintaining the visual "danger" cue
1556
+ - 8cf48b7: Add render prop for Tabs component
1557
+ - 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.
1558
+ - 80c6470: fix: improve primary button hover/focus contrast by using bg-hover-selected instead of bg-primary/70
1559
+ - 3a2e265: Adds disabled prop for table cell checkboxes
1560
+ - e9fe499: fix(tabs): adjust segmented indicator border radius for proper visual nesting
1561
+
1562
+ ## 0.7.0
1563
+
1564
+ ### Minor Changes
1565
+
1566
+ - d04c91f: Ship component registry with @cloudraker/reki module
1567
+ - 0e246bf: feat(popover): Add new Popover component
1568
+
1569
+ 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:
1570
+ - Compound component API: `Popover`, `Popover.Trigger`, `Popover.Content`, `Popover.Title`, `Popover.Description`, `Popover.Close`
1571
+ - Positioning options: `side` (top, bottom, left, right), `align` (start, center, end), `sideOffset`
1572
+ - Click-to-open by default, with optional `openOnHover` behavior
1573
+ - Controlled mode via `open` and `onOpenChange` props
1574
+ - Visual styling matching the updated Tooltip component (surface-aware background, proper light/dark mode support)
1575
+
1576
+ ### Patch Changes
1577
+
1578
+ - d04c91f: Migrate documentation site from React Router (`reki-docs`) to Astro (`reki-docs-astro`) as the primary docs platform, consolidate CI/CD pipelines, and add version display features.
1579
+
1580
+ Bump node to v24.12.0
1581
+
1582
+ ## 0.6.0
1583
+
1584
+ ### Minor Changes
1585
+
1586
+ - 46236bd: Add Figma plugin for UI kit generation
1587
+ - New plugin at `packages/figma/` (`@cloudflare/figma-plugin`)
1588
+ - 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
1589
+ - Each component generated with light and dark mode sections
1590
+ - Icon Library generator creates all Phosphor and Cloudflare brand icons
1591
+ - Parses component-registry.json and source files for variant specs
1592
+ - Extracts opacity modifiers from Tailwind classes (bg-reki-brand/70 → opacity-primary-70)
1593
+ - Binds fills/strokes to reki-colors variables
1594
+ - Includes progress UI and validation output
1595
+
1596
+ - 4266f72: feat(reki): add command-palette component
1597
+ - 4ac5fbe: semantic color changes and more consolidation for non-text colors
1598
+ - 009097d: feat(tooltip): Update tooltip to use bg-reki-base with proper light/dark mode support
1599
+
1600
+ 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.
1601
+
1602
+ ### Patch Changes
1603
+
1604
+ - 50dae6f: fix(reki): updated version in package.json (unintentionally downgraded)
1605
+
1606
+ ## 0.5.0
1607
+
1608
+ ### Minor Changes
1609
+
1610
+ - ee744b3: feat(PageHeader): add optional title and description props
1611
+ - Adds `title?: string` and `description?: string` props to PageHeader block
1612
+ - 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"
1613
+ - Description uses max-w-prose (65ch) for optimal readability per industry standards
1614
+ - Styling matches Stratus Workers & Pages implementation
1615
+ - Includes comprehensive Storybook examples (WithTitle, WithTitleAndDescription, CompleteExample)
1616
+
1617
+ ## Why This Feature Matters
1618
+
1619
+ **Without this feature**, pages using only PageHeader would lack a semantic page title (h1), requiring developers to manually add titles elsewhere. This creates:
1620
+ - ❌ Risk of Section 508 and WCAG 2.4.2 violations
1621
+ - ❌ Compliance risk for FedRAMP High authorization (requires Section 508 conformance)
1622
+ - ❌ Inconsistent title placement across pages
1623
+ - ❌ Additional implementation burden on every page
1624
+
1625
+ **With this feature**, PageHeader provides a standardized way to include accessible page titles that:
1626
+ - ✅ Render as semantic h1 elements (required by Section 508 and WCAG 2.4.2)
1627
+ - ✅ Visually differentiate from breadcrumbs
1628
+ - ✅ Work correctly with screen readers and assistive technology
1629
+ - ✅ Maintain consistency across the dashboard
1630
+ - ✅ Support FedRAMP High compliance requirements
1631
+
1632
+ ### Important: Breadcrumbs Are Not Page Titles
1633
+
1634
+ Breadcrumbs serve navigation purposes and cannot replace semantic page titles. Both should coexist:
1635
+ - **Page title (h1)**: Primary orientation, required for accessibility
1636
+ - **Breadcrumb trail**: Secondary navigation showing site hierarchy
1637
+ - **Visual differentiation**: Size, weight, and placement distinguish the two
1638
+
1639
+ ### References
1640
+ - [Section 508 Standards](https://www.access-board.gov/ict/) - Requires WCAG 2.0 Level A and AA conformance
1641
+ - [WCAG 2.4.2: Page Titled](https://www.w3.org/WAI/WCAG21/Understanding/page-titled.html) - Level A requirement
1642
+
1643
+ - b4a817f: Add table component
1644
+ - Introduce new Table component with row variants and styling options
1645
+ - Add Table documentation and examples to `reki-docs`
1646
+
1647
+ - 0e5cf84: lighter red in light mode
1648
+ - 6c94137: Add Label component with standardized label features for form fields
1649
+ - New Label component with support for ReactNode children, optional indicator, and tooltip
1650
+ - Enhanced form components (Input, Select, Checkbox, Switch, SensitiveInput, Combobox) with:
1651
+ - `label` prop now accepts ReactNode (not just strings)
1652
+ - `required={false}` shows "(optional)" text
1653
+ - `labelTooltip` prop for info icon with hover tooltip
1654
+ - Updated Field component to use Label internally
1655
+ - Added Label documentation page to reki-docs
1656
+
1657
+ - 742dc89: Add Radio component for single-selection from a set of options
1658
+ - New `Radio.Group` and `Radio.Item` compound components built on Base UI primitives
1659
+ - Supports vertical and horizontal orientations
1660
+ - Includes error, description, and disabled states
1661
+ - `controlPosition` prop for label placement ("start" or "end")
1662
+ - Full accessibility support with semantic HTML and keyboard navigation
1663
+ - Documentation added to both reki-docs and reki-docs-astro sites
1664
+
1665
+ - 872ef11: Add Storybook preview deployments and MR reporter system
1666
+ - Storybook previews deploy to Cloudflare Workers on MR commits
1667
+ - Staging deployment to `storybook.staging.reki.rakerinternal.com` on merge to main
1668
+ - Consolidated MR comments with beta npm version and preview URL
1669
+
1670
+ - 9537114: Add variant prop to Tabs component with 'segmented' (default) and 'underline' options
1671
+
1672
+ ### Patch Changes
1673
+
1674
+ - 7c2e8dd: Fix label not appearing in Combobox unless a description or error given.
1675
+ - 5bdfae9: fix bug where delete user external links were being treated as internal navigation and appending urls to domain
1676
+ - d598621: Fix Base UI nativeButton warning in Switch component by adding nativeButton prop to BaseSwitch.Root
1677
+ - e613876: Update deployment configs to enable preview urls
1678
+ - d9add6b: added a next / previous form of pagination
1679
+ - 356d1e6: Modernize Active Sessions page with updated Reki design patterns
1680
+ - 5b256bd: - Align border color with sidebar
1681
+ - Center arrow icon in select component
1682
+ - d998518: Add `bg-reki-base` as default background for Surface component
1683
+
1684
+ ## 0.4.0
1685
+
1686
+ ### Minor Changes
1687
+
1688
+ - 010d1f0: Fix Combobox button styles
1689
+ - 933fdf2: Migrate to @base-ui/react V1
1690
+
1691
+ **Breaking Change:** Updated from `@base-ui-components/react` to the new `@base-ui/react` V1 package.
1692
+
1693
+ ## What Changed
1694
+ - **Package name:** `@base-ui-components/react` → `@base-ui/react`
1695
+ - **Version:** `^1.0.0-rc.0` > `^1.0.0`
1696
+ - All component imports updated to use the new package
1697
+ - All primitive re-exports updated to use the new package
1698
+ - Build configuration updated to bundle the new package
1699
+
1700
+ ## Migration Required
1701
+
1702
+ This is a **major version bump** because the underlying Base UI package has changed. While the Reki API remains the same, you'll need to:
1703
+ 1. **Update dependencies:**
1704
+ ```bash
1705
+ pnpm install
1706
+ ```
1707
+ 2. **No code changes needed** - All Reki components and primitives work exactly the same way. The package name change is internal to Reki.
1708
+
1709
+ ## For Reki Maintainers
1710
+
1711
+ After merging this PR, run:
1712
+
1713
+ ```bash
1714
+ # Install the new @base-ui/react package
1715
+ pnpm install
1716
+
1717
+ # Regenerate primitive files with new package references
1718
+ pnpm --filter @cloudraker/reki build:primitives
1719
+
1720
+ # Rebuild the package
1721
+ pnpm --filter @cloudraker/reki build
1722
+
1723
+ # Run tests to verify everything works
1724
+ pnpm --filter @cloudraker/reki test:run
1725
+ ```
1726
+
1727
+ ## Technical Details
1728
+ - Updated all imports from `@base-ui-components/react/*` to `@base-ui/react/*`
1729
+ - Updated `generate-primitives.ts` script to reference new package
1730
+ - Updated test files to check for new package name
1731
+ - Updated `vite.config.ts` manualChunks to match new package name
1732
+ - All 37 primitives will be regenerated with new imports
1733
+
1734
+ - 731e636: Add built-in Field integration to form components with automatic layout
1735
+
1736
+ **New Features:**
1737
+ - Input, InputArea, SensitiveInput, Select, Checkbox, Switch, and Combobox now accept `label`, `description`, and `error` props for built-in Field wrapper support
1738
+ - Automatic CSS-driven layout: vertical for text inputs, horizontal for checkboxes/switches using `:has()` selectors
1739
+ - Checkbox.Group and Switch.Group compound components for managing multiple related controls with shared legend/description/error
1740
+ - Storybook Code Panel enabled for better component code examples
1741
+
1742
+ **Accessibility:**
1743
+ - Runtime console warnings (dev-only) when Input/Checkbox lack accessible names (label, aria-label, or aria-labelledby)
1744
+ - Comprehensive JSDoc documentation with accessibility guidance and examples
1745
+
1746
+ **Breaking Changes:**
1747
+ - Field component removed from public API (now internal implementation detail - use component props instead)
1748
+
1749
+ **Migration:**
1750
+
1751
+ ```tsx
1752
+ // Before: Explicit Field wrapper
1753
+ <Field label="Email" description="...">
1754
+ <Input placeholder="you@example.com" />
1755
+ </Field>
1756
+
1757
+ // After: Built-in Field API (recommended)
1758
+ <Input
1759
+ label="Email"
1760
+ description="..."
1761
+ placeholder="you@example.com"
1762
+ />
1763
+ ```
1764
+
1765
+ - 1db802c: change error color for text component to match field input error colors
1766
+ - 45ccaec: secondary-destructive button variant
1767
+ - ccc03dc: fix: update changeset validation logic
1768
+ - 2f91f1f: - Complete semantic color tokens migrated from Stratus app
1769
+ - Document color and text-color tokens in Storybook
1770
+ - Add accessibility tests via Storybook Vitest addon
1771
+ - Add component-metadata generator for AI tooling
1772
+ - Enable linting in CI/CD (passing)
1773
+ - Apply Prettier Tailwind plugin for consistent class ordering
1774
+ - Use pnpm catalog for shared package versions
1775
+ - Semantic colors now scoped to `[data-theme]` and `[data-mode]` attributes
1776
+ - Consumers must ensure root element has these attributes for proper theming
1777
+
1778
+ ### Migration Guide
1779
+
1780
+ Add `data-theme` and `data-mode` attributes to your root element:
1781
+
1782
+ ```tsx
1783
+ // React example
1784
+ <html data-theme="reki" data-mode={isDark ? "dark" : "light"}>
1785
+
1786
+ // Static HTML
1787
+ <html data-theme="reki" data-mode="light">
1788
+ ```
1789
+
1790
+ - **`data-theme`**: Set to `"reki"` (default theme) or other theme variants like `"fedramp"`
1791
+ - **`data-mode`**: Set to `"light"` or `"dark"` to control color scheme
1792
+
1793
+ If no `data-mode` is set, the system defaults to light mode.
1794
+
1795
+ - ad3c8fa: tab and text style fixes; storybook theme select always visible
1796
+ - 731e636: inputs with built-in fields
1797
+ - 933fdf2: Bundle Base UI primitives with granular exports and fix critical compatibility issues
1798
+
1799
+ ## Primitives: Granular Exports
1800
+
1801
+ 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.
1802
+
1803
+ ```tsx
1804
+ // Barrel export (imports all primitives)
1805
+ import { Slider, Popover, Tooltip } from "@cloudraker/reki/primitives";
1806
+
1807
+ // Granular exports (tree-shakeable, recommended)
1808
+ import { Slider } from "@cloudraker/reki/primitives/slider";
1809
+ import { Popover } from "@cloudraker/reki/primitives/popover";
1810
+ ```
1811
+
1812
+ **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.
1813
+
1814
+ ## Build Output Improvements
1815
+
1816
+ Fixed critical compatibility issues with Jest and React Server Components by improving the build configuration.
1817
+
1818
+ ### Problems Fixed
1819
+ 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.
1820
+ 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).
1821
+
1822
+ ### Solutions Implemented
1823
+ - **Flat bundle structure** - Changed to `preserveModules: false` to eliminate nested `node_modules/.pnpm/` paths
1824
+ - **"use client" injection** - Added `output.banner` to inject the directive into all output chunks (since the plugin doesn't work without preserveModules)
1825
+ - **Manual code splitting** - Implemented `manualChunks` to split large vendor dependencies for better caching:
1826
+ - `vendor-base-ui` (598 KB, 152 KB gzipped) - Base UI components
1827
+ - `vendor-styling` (74 KB, 13 KB gzipped) - clsx + tailwind-merge
1828
+ - `vendor-floating-ui` (33 KB, 10 KB gzipped) - Floating UI positioning
1829
+ - `vendor-utils` (24 KB, 7 KB gzipped) - tabbable, reselect, etc.
1830
+
1831
+ - abc1a1e: reki cli
1832
+ - e6a6f8c: semantic text colors - consolidation
1833
+ - 167a92b: Removed label prop from input components. Prefer using Field to compose a label with an input.
1834
+ - 8578662: consolidate blue text to match banner blue text across: badge, expandable, text components
1835
+ - 37a703d: consolidate on the green text tokens
1836
+
1837
+ ### Patch Changes
1838
+
1839
+ - d23783f: Update reki package to use literal depdency versions for better yarn linking/portal support.
1840
+ - fe8fd1b: improve input group label to be semantic and use htmlFor
1841
+ - 933fdf2: **Combobox Type Fixes**
1842
+ - Removed `any` type and eslint-disable comments
1843
+ - Used proper `ComboboxBase.Root.Props<Value, Multiple>` from base-ui's namespace
1844
+ - Simplified generic parameters from 3 (ItemValue, SelectedValue, Multiple) to 2 (Value, Multiple) to match base-ui's actual API
1845
+
1846
+ - 949fe52: fix remaining lint errors and increase lint warn -> error
1847
+ - 72f0695: Update reamde documentation
1848
+ - e6326f1: Consolidate AGENTS.md and CLAUDE.md LLM instructions
1849
+ - 9fbb791: fix resource-list href lint errors
1850
+ - a4231cc: Improve expandable component semantics
1851
+ - 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.
1852
+ - d1b80c8: improve sensitive input component - semantics, button nesting, labelling, screen reader experience
1853
+ - 38f4424: Fix: Resolve type check errors across components/blocks/layouts
1854
+ Fix: Export Reki Breadcrumb as Breadcrumbs + Documentation Improvements
1855
+ Fix: MenuBar -Bypass the React 19 type checking issue with IconContext.Provider
1856
+ - e82f3f7: improve semantics and labelling for date picker component
1857
+
1858
+ ## 0.3.0
1859
+
1860
+ ### Minor Changes
1861
+
1862
+ - 8113cf4: docs updates and semantic colors for banner
1863
+ - 3bca64a: ship dark-mode color scheme styles from reki lib instead of setting it at the app
1864
+ - a5cd231: Adds Storybook 10 integration to the Reki component library for interactive component development, testing, and documentation. Includes stories for 29 components, automated plop generator updates, and documentation.
1865
+
1866
+ ### Patch Changes
1867
+
1868
+ - 969750a: enforce button background transparency for tabs
1869
+ - 2f516b0: Combobox - Adjust multiple select height with standard Reki component height
1870
+ - be563d1: Checkbox indeterminate state
1871
+ - 7481c95: Improve development workflow with 10x faster rebuilds and comprehensive documentation
1872
+
1873
+ 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.
1874
+
1875
+ - c48b7b5: Enhance CICD to publish beta releases
1876
+ - b68c768: Fix: Resolve type check erros across components/blocks/layouts
1877
+ Fix: Export Reki Breadcrumb as Breadcrumbs + Documentation Improvements
1878
+ Fix: MenuBar -Bypass the React 19 type checking issue with IconContext.Provider
1879
+
1880
+ ## 0.2.0
1881
+
1882
+ ### Minor Changes
1883
+
1884
+ - 924e016: Semantic color improvements
1885
+ - 924e016: Improve select components
1886
+ - 924e016: Fix Input borders
1887
+ - e73fb2e: Fix exports
1888
+ - 1bb5cf7: Compile Tailwind and Standalone CSS, update installation documentation
1889
+
1890
+ ### Patch Changes
1891
+
1892
+ - 1bb5cf7: Adding changesets