@cloudraker/reki 2.6.1 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +1 -1
  3. package/ai/component-registry.json +1155 -27
  4. package/ai/component-registry.md +1139 -21
  5. package/ai/schemas.ts +219 -2
  6. package/dist/.build-complete +1 -1
  7. package/dist/ai/schemas.d.ts +539 -5
  8. package/dist/ai/schemas.d.ts.map +1 -1
  9. package/dist/ai/schemas.js +1691 -1405
  10. package/dist/ai/schemas.js.map +1 -1
  11. package/dist/chunks/{SankeyChart-jwwpwps4npqzbrvn.js → SankeyChart-gogf860o4u387kjn.js} +2 -2
  12. package/dist/chunks/{SankeyChart-jwwpwps4npqzbrvn.js.map → SankeyChart-gogf860o4u387kjn.js.map} +1 -1
  13. package/dist/chunks/actor-display-izds1bhw0yswurqm.js +35 -0
  14. package/dist/chunks/actor-display-izds1bhw0yswurqm.js.map +1 -0
  15. package/dist/chunks/address-input-g1la0xqrpg8ic6ak.js +80 -0
  16. package/dist/chunks/address-input-g1la0xqrpg8ic6ak.js.map +1 -0
  17. package/dist/chunks/array-display-lu1259ap3qrl847e.js +12 -0
  18. package/dist/chunks/array-display-lu1259ap3qrl847e.js.map +1 -0
  19. package/dist/chunks/{autocomplete-f4vetako14h2aqsw.js → autocomplete-htuy5t9ag29qhuwa.js} +4 -4
  20. package/dist/chunks/{autocomplete-f4vetako14h2aqsw.js.map → autocomplete-htuy5t9ag29qhuwa.js.map} +1 -1
  21. package/dist/chunks/avatar-g40cun6cn17fcxd4.js +57 -0
  22. package/dist/chunks/avatar-g40cun6cn17fcxd4.js.map +1 -0
  23. package/dist/chunks/avatar-group-fpcaziey1yu7226v.js +23 -0
  24. package/dist/chunks/avatar-group-fpcaziey1yu7226v.js.map +1 -0
  25. package/dist/chunks/{breadcrumbs-d6149hyct4puz3x4.js → breadcrumbs-mq1utzm0q4u2r5v5.js} +2 -2
  26. package/dist/chunks/{breadcrumbs-d6149hyct4puz3x4.js.map → breadcrumbs-mq1utzm0q4u2r5v5.js.map} +1 -1
  27. package/dist/chunks/{button-nc5p1h28cwes0tjw.js → button-fvlz1rzc3s1hpyxs.js} +14 -14
  28. package/dist/chunks/button-fvlz1rzc3s1hpyxs.js.map +1 -0
  29. package/dist/chunks/{checkbox-g2661n3eodgoispq.js → checkbox-h3kfhlron3b6sfhv.js} +3 -3
  30. package/dist/chunks/{checkbox-g2661n3eodgoispq.js.map → checkbox-h3kfhlron3b6sfhv.js.map} +1 -1
  31. package/dist/chunks/chip-iu7movvthovdurgb.js +69 -0
  32. package/dist/chunks/chip-iu7movvthovdurgb.js.map +1 -0
  33. package/dist/chunks/circular-progress-bar-ofg0ps2axad1wsr6.js +60 -0
  34. package/dist/chunks/circular-progress-bar-ofg0ps2axad1wsr6.js.map +1 -0
  35. package/dist/chunks/{clipboard-text-g3659lejx2d7i93e.js → clipboard-text-ogue8iq06n1z7q7v.js} +4 -4
  36. package/dist/chunks/{clipboard-text-g3659lejx2d7i93e.js.map → clipboard-text-ogue8iq06n1z7q7v.js.map} +1 -1
  37. package/dist/chunks/{collapsible-ndvmgo29s5iqfcor.js → collapsible-ivqat099ene9z3bv.js} +2 -2
  38. package/dist/chunks/{collapsible-ndvmgo29s5iqfcor.js.map → collapsible-ivqat099ene9z3bv.js.map} +1 -1
  39. package/dist/chunks/color-sample-h7hspma3rb91go3z.js +32 -0
  40. package/dist/chunks/color-sample-h7hspma3rb91go3z.js.map +1 -0
  41. package/dist/chunks/{combobox-i38w67netm8ukw4f.js → combobox-iytvpzp5poljxgek.js} +4 -4
  42. package/dist/chunks/{combobox-i38w67netm8ukw4f.js.map → combobox-iytvpzp5poljxgek.js.map} +1 -1
  43. package/dist/chunks/{command-palette-fe5cjfdgsg3t17vq.js → command-palette-k6vrx8ely8rmf4a5.js} +4 -4
  44. package/dist/chunks/command-palette-k6vrx8ely8rmf4a5.js.map +1 -0
  45. package/dist/chunks/data-grid-i7kfgm7zr5tj0e0a.js +3110 -0
  46. package/dist/chunks/data-grid-i7kfgm7zr5tj0e0a.js.map +1 -0
  47. package/dist/chunks/{dialog-m4go8xof25fospqo.js → dialog-ggx34i6k4eulfvgk.js} +3 -3
  48. package/dist/chunks/{dialog-m4go8xof25fospqo.js.map → dialog-ggx34i6k4eulfvgk.js.map} +1 -1
  49. package/dist/chunks/double-text-input-k0i5xnfq6khv01wu.js +39 -0
  50. package/dist/chunks/double-text-input-k0i5xnfq6khv01wu.js.map +1 -0
  51. package/dist/chunks/{dropdown-j5uht8mn4z7xc9fc.js → dropdown-bt1lfs2jli0khnex.js} +2 -2
  52. package/dist/chunks/{dropdown-j5uht8mn4z7xc9fc.js.map → dropdown-bt1lfs2jli0khnex.js.map} +1 -1
  53. package/dist/chunks/emails-display-nsbqzscr0f9bqimg.js +12 -0
  54. package/dist/chunks/emails-display-nsbqzscr0f9bqimg.js.map +1 -0
  55. package/dist/chunks/{empty-kazxr0248zjemw6n.js → empty-dxy8jti5bsxxh905.js} +2 -2
  56. package/dist/chunks/{empty-kazxr0248zjemw6n.js.map → empty-dxy8jti5bsxxh905.js.map} +1 -1
  57. package/dist/chunks/expandable-list-bjceh467ocazog53.js +26 -0
  58. package/dist/chunks/expandable-list-bjceh467ocazog53.js.map +1 -0
  59. package/dist/chunks/{field-fe5m8z3vbpvtctbe.js → field-b0aywboxuss4rpu7.js} +3 -3
  60. package/dist/chunks/{field-fe5m8z3vbpvtctbe.js.map → field-b0aywboxuss4rpu7.js.map} +1 -1
  61. package/dist/chunks/{input-area-ciw85g3fno06t4tw.js → input-area-cuijpofpark5w5qq.js} +4 -4
  62. package/dist/chunks/{input-area-ciw85g3fno06t4tw.js.map → input-area-cuijpofpark5w5qq.js.map} +1 -1
  63. package/dist/chunks/{input-i5nefqk213n4z7pr.js → input-eno4q26x68rx3i8q.js} +3 -3
  64. package/dist/chunks/{input-i5nefqk213n4z7pr.js.map → input-eno4q26x68rx3i8q.js.map} +1 -1
  65. package/dist/chunks/{input-group-mo7tq7jr19hmgor5.js → input-group-dl9htnza7kq4om4c.js} +5 -5
  66. package/dist/chunks/{input-group-mo7tq7jr19hmgor5.js.map → input-group-dl9htnza7kq4om4c.js.map} +1 -1
  67. package/dist/chunks/json-display-fy0t2khc4itn130p.js +31 -0
  68. package/dist/chunks/json-display-fy0t2khc4itn130p.js.map +1 -0
  69. package/dist/chunks/{label-fcho4757rbdess0c.js → label-ld57mr4ocdxsf06p.js} +3 -3
  70. package/dist/chunks/{label-fcho4757rbdess0c.js.map → label-ld57mr4ocdxsf06p.js.map} +1 -1
  71. package/dist/chunks/{layer-card-kzu48dhzxm3e9p4u.js → layer-card-iuquuc1w3116umfw.js} +2 -2
  72. package/dist/chunks/{layer-card-kzu48dhzxm3e9p4u.js.map → layer-card-iuquuc1w3116umfw.js.map} +1 -1
  73. package/dist/chunks/{link-j2gu5dr3nr4i4yf0.js → link-8pn6y27h3m3ud8fl.js} +2 -2
  74. package/dist/chunks/{link-j2gu5dr3nr4i4yf0.js.map → link-8pn6y27h3m3ud8fl.js.map} +1 -1
  75. package/dist/chunks/link-chip-cz5v6lw9icmcndzl.js +58 -0
  76. package/dist/chunks/link-chip-cz5v6lw9icmcndzl.js.map +1 -0
  77. package/dist/chunks/links-display-dfaehepz86s2wxx1.js +20 -0
  78. package/dist/chunks/links-display-dfaehepz86s2wxx1.js.map +1 -0
  79. package/dist/chunks/menu-item-kyqq7o2krghxbpw5.js +178 -0
  80. package/dist/chunks/menu-item-kyqq7o2krghxbpw5.js.map +1 -0
  81. package/dist/chunks/{menubar-ir5gbjmsizsddz7g.js → menubar-56kqktsa5a28xyzj.js} +2 -2
  82. package/dist/chunks/{menubar-ir5gbjmsizsddz7g.js.map → menubar-56kqktsa5a28xyzj.js.map} +1 -1
  83. package/dist/chunks/{meter-o5yd7ctjf80vvyjx.js → meter-b5rnmibceu4z8i6a.js} +2 -2
  84. package/dist/chunks/{meter-o5yd7ctjf80vvyjx.js.map → meter-b5rnmibceu4z8i6a.js.map} +1 -1
  85. package/dist/chunks/notification-counter-hiq85elmcydnhzoo.js +30 -0
  86. package/dist/chunks/notification-counter-hiq85elmcydnhzoo.js.map +1 -0
  87. package/dist/chunks/overflowing-text-mm8bkx7voc6h8ra4.js +49 -0
  88. package/dist/chunks/overflowing-text-mm8bkx7voc6h8ra4.js.map +1 -0
  89. package/dist/chunks/{pagination-bryw6rohfr7mm3km.js → pagination-iczb9ooenevbxslx.js} +3 -3
  90. package/dist/chunks/{pagination-bryw6rohfr7mm3km.js.map → pagination-iczb9ooenevbxslx.js.map} +1 -1
  91. package/dist/chunks/phones-display-cdsrl07dv6obf4eg.js +19 -0
  92. package/dist/chunks/phones-display-cdsrl07dv6obf4eg.js.map +1 -0
  93. package/dist/chunks/pill-pfpvgbcnqhtyksz5.js +22 -0
  94. package/dist/chunks/pill-pfpvgbcnqhtyksz5.js.map +1 -0
  95. package/dist/chunks/{popover-elxcmvv7mu7m7uk4.js → popover-ldqdlpv6sqvkjume.js} +2 -2
  96. package/dist/chunks/{popover-elxcmvv7mu7m7uk4.js.map → popover-ldqdlpv6sqvkjume.js.map} +1 -1
  97. package/dist/chunks/{radio-newyq331uk4lltr6.js → radio-lyeniil3x20cyb8z.js} +2 -2
  98. package/dist/chunks/{radio-newyq331uk4lltr6.js.map → radio-lyeniil3x20cyb8z.js.map} +1 -1
  99. package/dist/chunks/rating-yyd4t8e62ast4obo.js +48 -0
  100. package/dist/chunks/rating-yyd4t8e62ast4obo.js.map +1 -0
  101. package/dist/chunks/record-board-iapx3cw5rusehrta.js +3395 -0
  102. package/dist/chunks/record-board-iapx3cw5rusehrta.js.map +1 -0
  103. package/dist/chunks/{select-h5480mbro0ypxu0b.js → select-hmoccee4zagd34tq.js} +6 -6
  104. package/dist/chunks/{select-h5480mbro0ypxu0b.js.map → select-hmoccee4zagd34tq.js.map} +1 -1
  105. package/dist/chunks/{sensitive-input-lqugq6uvx0lkpu0u.js → sensitive-input-nkfx72rduc7aijaf.js} +4 -4
  106. package/dist/chunks/{sensitive-input-lqugq6uvx0lkpu0u.js.map → sensitive-input-nkfx72rduc7aijaf.js.map} +1 -1
  107. package/dist/chunks/{sidebar-noz668nhdu2gso12.js → sidebar-gwfibai76tw069d4.js} +34 -33
  108. package/dist/chunks/sidebar-gwfibai76tw069d4.js.map +1 -0
  109. package/dist/chunks/status-ot0itdwxloqgahi0.js +29 -0
  110. package/dist/chunks/status-ot0itdwxloqgahi0.js.map +1 -0
  111. package/dist/chunks/{surface-cyxme7mlr49l33f8.js → surface-fqmma34ju0agh5pe.js} +2 -2
  112. package/dist/chunks/{surface-cyxme7mlr49l33f8.js.map → surface-fqmma34ju0agh5pe.js.map} +1 -1
  113. package/dist/chunks/{switch-bigo96fyjlh7ivbi.js → switch-nhtmn65n5s7gg6vb.js} +3 -3
  114. package/dist/chunks/{switch-bigo96fyjlh7ivbi.js.map → switch-nhtmn65n5s7gg6vb.js.map} +1 -1
  115. package/dist/chunks/{table-mwcmwp6a80zvyrxw.js → table-cjj894o3niouq4tg.js} +2 -2
  116. package/dist/chunks/{table-mwcmwp6a80zvyrxw.js.map → table-cjj894o3niouq4tg.js.map} +1 -1
  117. package/dist/chunks/{tabs-e4pcjkw94kpe35x0.js → tabs-klj6wapad6fpd9at.js} +14 -16
  118. package/dist/chunks/tabs-klj6wapad6fpd9at.js.map +1 -0
  119. package/dist/chunks/tag-h5kwf5eh7dyyvc2c.js +58 -0
  120. package/dist/chunks/tag-h5kwf5eh7dyyvc2c.js.map +1 -0
  121. package/dist/chunks/{toast-ivr4097bstjcjotf.js → toast-j47dl441zpxa1yw3.js} +3 -3
  122. package/dist/chunks/{toast-ivr4097bstjcjotf.js.map → toast-j47dl441zpxa1yw3.js.map} +1 -1
  123. package/dist/chunks/{tooltip-ncaia8n1lavkyw8n.js → tooltip-bkgxuz77xzg5fooc.js} +2 -2
  124. package/dist/chunks/{tooltip-ncaia8n1lavkyw8n.js.map → tooltip-bkgxuz77xzg5fooc.js.map} +1 -1
  125. package/dist/chunks/{vendor-base-ui-bgl9g5nkvqy3tn36.js → vendor-base-ui-djdjrfuoxlb1lubi.js} +2358 -2358
  126. package/dist/chunks/{vendor-base-ui-bgl9g5nkvqy3tn36.js.map → vendor-base-ui-djdjrfuoxlb1lubi.js.map} +1 -1
  127. package/dist/code.js +1 -1
  128. package/dist/components/actor-display.js +6 -0
  129. package/dist/components/actor-display.js.map +1 -0
  130. package/dist/components/address-input.js +6 -0
  131. package/dist/components/address-input.js.map +1 -0
  132. package/dist/components/array-display.js +6 -0
  133. package/dist/components/array-display.js.map +1 -0
  134. package/dist/components/autocomplete.js +1 -1
  135. package/dist/components/avatar-group.js +6 -0
  136. package/dist/components/avatar-group.js.map +1 -0
  137. package/dist/components/avatar.js +6 -0
  138. package/dist/components/avatar.js.map +1 -0
  139. package/dist/components/breadcrumbs.js +1 -1
  140. package/dist/components/button.js +1 -1
  141. package/dist/components/chart.js +1 -1
  142. package/dist/components/checkbox.js +1 -1
  143. package/dist/components/chip.js +8 -0
  144. package/dist/components/chip.js.map +1 -0
  145. package/dist/components/circular-progress-bar.js +6 -0
  146. package/dist/components/circular-progress-bar.js.map +1 -0
  147. package/dist/components/clipboard-text.js +1 -1
  148. package/dist/components/collapsible.js +1 -1
  149. package/dist/components/color-sample.js +6 -0
  150. package/dist/components/color-sample.js.map +1 -0
  151. package/dist/components/combobox.js +1 -1
  152. package/dist/components/command-palette.js +1 -1
  153. package/dist/components/data-grid.js +8 -0
  154. package/dist/components/data-grid.js.map +1 -0
  155. package/dist/components/dialog.js +1 -1
  156. package/dist/components/double-text-input.js +6 -0
  157. package/dist/components/double-text-input.js.map +1 -0
  158. package/dist/components/dropdown.js +1 -1
  159. package/dist/components/emails-display.js +6 -0
  160. package/dist/components/emails-display.js.map +1 -0
  161. package/dist/components/empty.js +1 -1
  162. package/dist/components/expandable-list.js +6 -0
  163. package/dist/components/expandable-list.js.map +1 -0
  164. package/dist/components/field.js +1 -1
  165. package/dist/components/input-group.js +1 -1
  166. package/dist/components/input.js +3 -3
  167. package/dist/components/json-display.js +6 -0
  168. package/dist/components/json-display.js.map +1 -0
  169. package/dist/components/label.js +1 -1
  170. package/dist/components/layer-card.js +1 -1
  171. package/dist/components/link-chip.js +6 -0
  172. package/dist/components/link-chip.js.map +1 -0
  173. package/dist/components/link.js +1 -1
  174. package/dist/components/links-display.js +6 -0
  175. package/dist/components/links-display.js.map +1 -0
  176. package/dist/components/menu-item.js +11 -0
  177. package/dist/components/menu-item.js.map +1 -0
  178. package/dist/components/menubar.js +1 -1
  179. package/dist/components/meter.js +1 -1
  180. package/dist/components/notification-counter.js +6 -0
  181. package/dist/components/notification-counter.js.map +1 -0
  182. package/dist/components/overflowing-text.js +6 -0
  183. package/dist/components/overflowing-text.js.map +1 -0
  184. package/dist/components/pagination.js +1 -1
  185. package/dist/components/phones-display.js +6 -0
  186. package/dist/components/phones-display.js.map +1 -0
  187. package/dist/components/pill.js +6 -0
  188. package/dist/components/pill.js.map +1 -0
  189. package/dist/components/popover.js +1 -1
  190. package/dist/components/radio.js +1 -1
  191. package/dist/components/rating.js +6 -0
  192. package/dist/components/rating.js.map +1 -0
  193. package/dist/components/record-board.js +8 -0
  194. package/dist/components/record-board.js.map +1 -0
  195. package/dist/components/select.js +1 -1
  196. package/dist/components/sensitive-input.js +1 -1
  197. package/dist/components/sidebar.js +1 -1
  198. package/dist/components/status.js +6 -0
  199. package/dist/components/status.js.map +1 -0
  200. package/dist/components/surface.js +1 -1
  201. package/dist/components/switch.js +1 -1
  202. package/dist/components/table.js +1 -1
  203. package/dist/components/tabs.js +1 -1
  204. package/dist/components/tag.js +10 -0
  205. package/dist/components/tag.js.map +1 -0
  206. package/dist/components/toast.js +2 -2
  207. package/dist/components/tooltip.js +1 -1
  208. package/dist/index.js +378 -253
  209. package/dist/index.js.map +1 -1
  210. package/dist/primitives/accordion.js +1 -1
  211. package/dist/primitives/alert-dialog.js +1 -1
  212. package/dist/primitives/autocomplete.js +1 -1
  213. package/dist/primitives/avatar.js +1 -1
  214. package/dist/primitives/button.js +1 -1
  215. package/dist/primitives/checkbox-group.js +1 -1
  216. package/dist/primitives/checkbox.js +1 -1
  217. package/dist/primitives/collapsible.js +1 -1
  218. package/dist/primitives/combobox.js +1 -1
  219. package/dist/primitives/context-menu.js +1 -1
  220. package/dist/primitives/csp-provider.js +1 -1
  221. package/dist/primitives/dialog.js +1 -1
  222. package/dist/primitives/direction-provider.js +1 -1
  223. package/dist/primitives/drawer.js +1 -1
  224. package/dist/primitives/field.js +1 -1
  225. package/dist/primitives/fieldset.js +1 -1
  226. package/dist/primitives/form.js +1 -1
  227. package/dist/primitives/input.js +1 -1
  228. package/dist/primitives/menu.js +1 -1
  229. package/dist/primitives/menubar.js +1 -1
  230. package/dist/primitives/meter.js +1 -1
  231. package/dist/primitives/navigation-menu.js +1 -1
  232. package/dist/primitives/number-field.js +1 -1
  233. package/dist/primitives/otp-field.js +1 -1
  234. package/dist/primitives/popover.js +1 -1
  235. package/dist/primitives/preview-card.js +1 -1
  236. package/dist/primitives/progress.js +1 -1
  237. package/dist/primitives/radio-group.js +1 -1
  238. package/dist/primitives/radio.js +1 -1
  239. package/dist/primitives/scroll-area.js +1 -1
  240. package/dist/primitives/select.js +1 -1
  241. package/dist/primitives/separator.js +1 -1
  242. package/dist/primitives/slider.js +1 -1
  243. package/dist/primitives/switch.js +1 -1
  244. package/dist/primitives/tabs.js +1 -1
  245. package/dist/primitives/toast.js +1 -1
  246. package/dist/primitives/toggle-group.js +1 -1
  247. package/dist/primitives/toggle.js +1 -1
  248. package/dist/primitives/toolbar.js +1 -1
  249. package/dist/primitives/tooltip.js +1 -1
  250. package/dist/primitives.js +1 -1
  251. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  252. package/dist/scripts/theme-generator/config.js +229 -5
  253. package/dist/scripts/theme-generator/config.js.map +1 -1
  254. package/dist/src/components/actor-display/actor-display.d.ts +33 -0
  255. package/dist/src/components/actor-display/actor-display.d.ts.map +1 -0
  256. package/dist/src/components/actor-display/index.d.ts +2 -0
  257. package/dist/src/components/actor-display/index.d.ts.map +1 -0
  258. package/dist/src/components/address-input/address-input.d.ts +42 -0
  259. package/dist/src/components/address-input/address-input.d.ts.map +1 -0
  260. package/dist/src/components/address-input/index.d.ts +2 -0
  261. package/dist/src/components/address-input/index.d.ts.map +1 -0
  262. package/dist/src/components/array-display/array-display.d.ts +30 -0
  263. package/dist/src/components/array-display/array-display.d.ts.map +1 -0
  264. package/dist/src/components/array-display/index.d.ts +2 -0
  265. package/dist/src/components/array-display/index.d.ts.map +1 -0
  266. package/dist/src/components/avatar/avatar.d.ts +80 -0
  267. package/dist/src/components/avatar/avatar.d.ts.map +1 -0
  268. package/dist/src/components/avatar/index.d.ts +2 -0
  269. package/dist/src/components/avatar/index.d.ts.map +1 -0
  270. package/dist/src/components/avatar-group/avatar-group.d.ts +35 -0
  271. package/dist/src/components/avatar-group/avatar-group.d.ts.map +1 -0
  272. package/dist/src/components/avatar-group/index.d.ts +2 -0
  273. package/dist/src/components/avatar-group/index.d.ts.map +1 -0
  274. package/dist/src/components/button/button.d.ts +4 -4
  275. package/dist/src/components/chip/chip.d.ts +78 -0
  276. package/dist/src/components/chip/chip.d.ts.map +1 -0
  277. package/dist/src/components/chip/index.d.ts +2 -0
  278. package/dist/src/components/chip/index.d.ts.map +1 -0
  279. package/dist/src/components/circular-progress-bar/circular-progress-bar.d.ts +35 -0
  280. package/dist/src/components/circular-progress-bar/circular-progress-bar.d.ts.map +1 -0
  281. package/dist/src/components/circular-progress-bar/index.d.ts +2 -0
  282. package/dist/src/components/circular-progress-bar/index.d.ts.map +1 -0
  283. package/dist/src/components/color-sample/color-sample.d.ts +56 -0
  284. package/dist/src/components/color-sample/color-sample.d.ts.map +1 -0
  285. package/dist/src/components/color-sample/index.d.ts +2 -0
  286. package/dist/src/components/color-sample/index.d.ts.map +1 -0
  287. package/dist/src/components/data-grid/data-grid.d.ts +25 -0
  288. package/dist/src/components/data-grid/data-grid.d.ts.map +1 -0
  289. package/dist/src/components/data-grid/index.d.ts +3 -0
  290. package/dist/src/components/data-grid/index.d.ts.map +1 -0
  291. package/dist/src/components/data-grid/types.d.ts +103 -0
  292. package/dist/src/components/data-grid/types.d.ts.map +1 -0
  293. package/dist/src/components/data-grid/use-data-grid-edit.d.ts +34 -0
  294. package/dist/src/components/data-grid/use-data-grid-edit.d.ts.map +1 -0
  295. package/dist/src/components/double-text-input/double-text-input.d.ts +47 -0
  296. package/dist/src/components/double-text-input/double-text-input.d.ts.map +1 -0
  297. package/dist/src/components/double-text-input/index.d.ts +2 -0
  298. package/dist/src/components/double-text-input/index.d.ts.map +1 -0
  299. package/dist/src/components/emails-display/emails-display.d.ts +30 -0
  300. package/dist/src/components/emails-display/emails-display.d.ts.map +1 -0
  301. package/dist/src/components/emails-display/index.d.ts +2 -0
  302. package/dist/src/components/emails-display/index.d.ts.map +1 -0
  303. package/dist/src/components/expandable-list/expandable-list.d.ts +41 -0
  304. package/dist/src/components/expandable-list/expandable-list.d.ts.map +1 -0
  305. package/dist/src/components/expandable-list/index.d.ts +2 -0
  306. package/dist/src/components/expandable-list/index.d.ts.map +1 -0
  307. package/dist/src/components/json-display/index.d.ts +2 -0
  308. package/dist/src/components/json-display/index.d.ts.map +1 -0
  309. package/dist/src/components/json-display/json-display.d.ts +29 -0
  310. package/dist/src/components/json-display/json-display.d.ts.map +1 -0
  311. package/dist/src/components/link-chip/index.d.ts +2 -0
  312. package/dist/src/components/link-chip/index.d.ts.map +1 -0
  313. package/dist/src/components/link-chip/link-chip.d.ts +50 -0
  314. package/dist/src/components/link-chip/link-chip.d.ts.map +1 -0
  315. package/dist/src/components/links-display/index.d.ts +2 -0
  316. package/dist/src/components/links-display/index.d.ts.map +1 -0
  317. package/dist/src/components/links-display/links-display.d.ts +37 -0
  318. package/dist/src/components/links-display/links-display.d.ts.map +1 -0
  319. package/dist/src/components/menu-item/index.d.ts +2 -0
  320. package/dist/src/components/menu-item/index.d.ts.map +1 -0
  321. package/dist/src/components/menu-item/menu-item.d.ts +104 -0
  322. package/dist/src/components/menu-item/menu-item.d.ts.map +1 -0
  323. package/dist/src/components/notification-counter/index.d.ts +2 -0
  324. package/dist/src/components/notification-counter/index.d.ts.map +1 -0
  325. package/dist/src/components/notification-counter/notification-counter.d.ts +51 -0
  326. package/dist/src/components/notification-counter/notification-counter.d.ts.map +1 -0
  327. package/dist/src/components/overflowing-text/index.d.ts +2 -0
  328. package/dist/src/components/overflowing-text/index.d.ts.map +1 -0
  329. package/dist/src/components/overflowing-text/overflowing-text.d.ts +48 -0
  330. package/dist/src/components/overflowing-text/overflowing-text.d.ts.map +1 -0
  331. package/dist/src/components/phones-display/index.d.ts +2 -0
  332. package/dist/src/components/phones-display/index.d.ts.map +1 -0
  333. package/dist/src/components/phones-display/phones-display.d.ts +31 -0
  334. package/dist/src/components/phones-display/phones-display.d.ts.map +1 -0
  335. package/dist/src/components/pill/index.d.ts +2 -0
  336. package/dist/src/components/pill/index.d.ts.map +1 -0
  337. package/dist/src/components/pill/pill.d.ts +31 -0
  338. package/dist/src/components/pill/pill.d.ts.map +1 -0
  339. package/dist/src/components/rating/index.d.ts +2 -0
  340. package/dist/src/components/rating/index.d.ts.map +1 -0
  341. package/dist/src/components/rating/rating.d.ts +37 -0
  342. package/dist/src/components/rating/rating.d.ts.map +1 -0
  343. package/dist/src/components/record-board/index.d.ts +2 -0
  344. package/dist/src/components/record-board/index.d.ts.map +1 -0
  345. package/dist/src/components/record-board/record-board.d.ts +75 -0
  346. package/dist/src/components/record-board/record-board.d.ts.map +1 -0
  347. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
  348. package/dist/src/components/status/index.d.ts +2 -0
  349. package/dist/src/components/status/index.d.ts.map +1 -0
  350. package/dist/src/components/status/status.d.ts +52 -0
  351. package/dist/src/components/status/status.d.ts.map +1 -0
  352. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  353. package/dist/src/components/tag/index.d.ts +2 -0
  354. package/dist/src/components/tag/index.d.ts.map +1 -0
  355. package/dist/src/components/tag/tag.d.ts +153 -0
  356. package/dist/src/components/tag/tag.d.ts.map +1 -0
  357. package/dist/src/index.d.ts +25 -0
  358. package/dist/src/index.d.ts.map +1 -1
  359. package/dist/src/utils/use-is-dark-mode.d.ts +18 -0
  360. package/dist/src/utils/use-is-dark-mode.d.ts.map +1 -0
  361. package/dist/styles/reki-standalone.css +1 -1
  362. package/dist/styles/reki.css +19 -0
  363. package/dist/styles/theme-fedramp.css +6 -0
  364. package/dist/styles/theme-reki.css +164 -10
  365. package/package.json +114 -4
  366. package/scripts/component-registry/index.ts +6 -11
  367. package/scripts/extract-demo-examples.ts +323 -0
  368. package/scripts/generate-stories.ts +205 -0
  369. package/scripts/theme-generator/config.ts +230 -5
  370. package/dist/chunks/button-nc5p1h28cwes0tjw.js.map +0 -1
  371. package/dist/chunks/command-palette-fe5cjfdgsg3t17vq.js.map +0 -1
  372. package/dist/chunks/sidebar-noz668nhdu2gso12.js.map +0 -1
  373. package/dist/chunks/tabs-e4pcjkw94kpe35x0.js.map +0 -1
@@ -1,6 +1,100 @@
1
1
  {
2
2
  "version": "1.0.0",
3
3
  "components": {
4
+ "ActorDisplay": {
5
+ "name": "ActorDisplay",
6
+ "type": "component",
7
+ "description": "Renders an `actor` / created-by / owned-by value as an avatar followed by a name. Use for record authorship and assignee cells.",
8
+ "importPath": "@cloudraker/reki",
9
+ "category": "Other",
10
+ "props": {
11
+ "name": {
12
+ "type": "string",
13
+ "required": true,
14
+ "description": "Display name of the actor (workspace member, system, or API)."
15
+ },
16
+ "avatarUrl": {
17
+ "type": "string | null",
18
+ "optional": true,
19
+ "description": "Avatar image URL. Falls back to the name's initial when absent."
20
+ },
21
+ "avatarSize": {
22
+ "type": "enum",
23
+ "optional": true,
24
+ "description": "Avatar size.",
25
+ "values": [
26
+ "xs",
27
+ "sm",
28
+ "base",
29
+ "lg",
30
+ "xl"
31
+ ]
32
+ },
33
+ "className": {
34
+ "type": "string",
35
+ "optional": true,
36
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
37
+ }
38
+ },
39
+ "examples": [
40
+ "<TooltipProvider>\n <ActorDisplay name=\"Jane Doe\" />\n </TooltipProvider>",
41
+ "<TooltipProvider>\n <ActorDisplay name=\"Jane Doe\" avatarUrl=\"https://i.pravatar.cc/40?img=5\" />\n </TooltipProvider>"
42
+ ],
43
+ "colors": [
44
+ "text-reki-default"
45
+ ]
46
+ },
47
+ "AddressInput": {
48
+ "name": "AddressInput",
49
+ "type": "component",
50
+ "description": "A structured address editor (street, city, state, postcode, country) for the `address` field type. Presentational only — geocoding / autocomplete, if needed, is layered on by the host app.",
51
+ "importPath": "@cloudraker/reki",
52
+ "category": "Other",
53
+ "props": {
54
+ "value": {
55
+ "type": "AddressValue",
56
+ "required": true,
57
+ "description": "Current address value."
58
+ },
59
+ "disabled": {
60
+ "type": "boolean",
61
+ "optional": true,
62
+ "description": "Disables all fields."
63
+ },
64
+ "className": {
65
+ "type": "string",
66
+ "optional": true,
67
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
68
+ }
69
+ },
70
+ "examples": [
71
+ "<AddressInput value={value} onChange={setValue} />"
72
+ ],
73
+ "colors": []
74
+ },
75
+ "ArrayDisplay": {
76
+ "name": "ArrayDisplay",
77
+ "type": "component",
78
+ "description": "Renders an array field's values as a collapsible list of chips. Pre-normalize the field value to a `string[]` in your field-cell layer.",
79
+ "importPath": "@cloudraker/reki",
80
+ "category": "Other",
81
+ "props": {
82
+ "values": {
83
+ "type": "string[]",
84
+ "required": true,
85
+ "description": "String values to render as chips."
86
+ },
87
+ "className": {
88
+ "type": "string",
89
+ "optional": true,
90
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
91
+ }
92
+ },
93
+ "examples": [
94
+ "<TooltipProvider>\n <div className=\"w-48\">\n <ArrayDisplay values={[\"alpha\", \"beta\", \"gamma\", \"delta\"]} max={2} />\n </div>\n </TooltipProvider>"
95
+ ],
96
+ "colors": []
97
+ },
4
98
  "Autocomplete": {
5
99
  "name": "Autocomplete",
6
100
  "type": "component",
@@ -166,6 +260,110 @@
166
260
  }
167
261
  }
168
262
  },
263
+ "Avatar": {
264
+ "name": "Avatar",
265
+ "type": "component",
266
+ "description": "Image-or-initials glyph for a user or entity. Falls back to initials on a neutral fill when no image is provided. Use for assignees, participants, and record owners.",
267
+ "importPath": "@cloudraker/reki",
268
+ "category": "Other",
269
+ "props": {
270
+ "initials": {
271
+ "type": "string",
272
+ "optional": true,
273
+ "description": "Up to ~2 characters shown when there is no image."
274
+ },
275
+ "alt": {
276
+ "type": "string",
277
+ "optional": true,
278
+ "description": "Accessible name / image alt text."
279
+ },
280
+ "size": {
281
+ "type": "enum",
282
+ "optional": true,
283
+ "description": "Glyph scale.",
284
+ "values": [
285
+ "xs",
286
+ "sm",
287
+ "base",
288
+ "lg",
289
+ "xl"
290
+ ],
291
+ "descriptions": {
292
+ "xs": "Extra small",
293
+ "sm": "Small",
294
+ "base": "Default",
295
+ "lg": "Large",
296
+ "xl": "Extra large"
297
+ },
298
+ "classes": {
299
+ "xs": "size-5",
300
+ "sm": "size-6",
301
+ "base": "size-8",
302
+ "lg": "size-10",
303
+ "xl": "size-12"
304
+ },
305
+ "default": "base"
306
+ },
307
+ "shape": {
308
+ "type": "enum",
309
+ "optional": true,
310
+ "description": "Round (default) or rounded-square.",
311
+ "values": [
312
+ "circle",
313
+ "square"
314
+ ],
315
+ "descriptions": {
316
+ "circle": "Round avatar",
317
+ "square": "Rounded square avatar"
318
+ },
319
+ "classes": {
320
+ "circle": "rounded-full",
321
+ "square": "rounded-md"
322
+ },
323
+ "default": "circle"
324
+ },
325
+ "className": {
326
+ "type": "string",
327
+ "optional": true,
328
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
329
+ }
330
+ },
331
+ "examples": [
332
+ "<div className=\"flex items-center gap-2\">\n <Avatar initials=\"XS\" size=\"xs\" />\n <Avatar initials=\"SM\" size=\"sm\" />\n <Avatar initials=\"MD\" size=\"base\" />\n <Avatar initials=\"LG\" size=\"lg\" />\n <Avatar initials=\"XL\" size=\"xl\" />\n </div>",
333
+ "<div className=\"flex items-center gap-2\">\n <Avatar initials=\"JD\" shape=\"circle\" />\n <Avatar initials=\"JD\" shape=\"square\" />\n </div>",
334
+ "<Avatar\n src=\"https://i.pravatar.cc/80?img=12\"\n alt=\"Jane Doe\"\n size=\"lg\"\n />"
335
+ ],
336
+ "colors": [
337
+ "bg-reki-fill"
338
+ ]
339
+ },
340
+ "AvatarGroup": {
341
+ "name": "AvatarGroup",
342
+ "type": "component",
343
+ "description": "Overlapping stack of avatars for assignees / participants. Shows up to `max` avatars and a `+N` counter for the remainder.",
344
+ "importPath": "@cloudraker/reki",
345
+ "category": "Other",
346
+ "props": {
347
+ "avatars": {
348
+ "type": "ReactNode[]",
349
+ "required": true,
350
+ "description": "Avatar nodes to stack (typically reki `Avatar` elements)."
351
+ },
352
+ "className": {
353
+ "type": "string",
354
+ "optional": true,
355
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
356
+ }
357
+ },
358
+ "examples": [
359
+ "<AvatarGroup\n max={4}\n avatars={members.map((initials) => (\n <Avatar key={initials} initials={initials} size=\"sm\" />\n ))}\n />"
360
+ ],
361
+ "colors": [
362
+ "bg-reki-fill",
363
+ "ring-reki-base",
364
+ "text-reki-subtle"
365
+ ]
366
+ },
169
367
  "Badge": {
170
368
  "name": "Badge",
171
369
  "type": "component",
@@ -534,10 +732,10 @@
534
732
  "lg": "Large button for primary CTAs"
535
733
  },
536
734
  "classes": {
537
- "xs": "h-5 gap-1 rounded-sm px-1.5 text-xs",
538
- "sm": "h-6.5 gap-1 rounded-md px-2 text-xs",
539
- "base": "h-9 gap-1.5 rounded-lg px-3 text-base",
540
- "lg": "h-10 gap-2 rounded-lg px-4 text-base"
735
+ "xs": "h-5 gap-1 rounded-full px-1.5 text-xs",
736
+ "sm": "h-6.5 gap-1 rounded-full px-2 text-xs",
737
+ "base": "h-9 gap-1.5 rounded-full px-3 text-base",
738
+ "lg": "h-10 gap-2 rounded-full px-4 text-base"
541
739
  },
542
740
  "default": "base"
543
741
  },
@@ -886,6 +1084,135 @@
886
1084
  ]
887
1085
  }
888
1086
  },
1087
+ "Chip": {
1088
+ "name": "Chip",
1089
+ "type": "component",
1090
+ "description": "Compact reference token for a record or entity (a relation value, a tag with an avatar, a removable selection). Presentational only — wire `onClick` / `rightComponent` to your data layer. For a navigable chip, use {@link LinkChip}.",
1091
+ "importPath": "@cloudraker/reki",
1092
+ "category": "Other",
1093
+ "props": {
1094
+ "label": {
1095
+ "type": "string",
1096
+ "required": true,
1097
+ "description": "Text label (truncated with a tooltip on overflow)."
1098
+ },
1099
+ "tooltipLabel": {
1100
+ "type": "string",
1101
+ "optional": true,
1102
+ "description": "Tooltip content shown when the label overflows. Defaults to `label`."
1103
+ },
1104
+ "variant": {
1105
+ "type": "enum",
1106
+ "optional": true,
1107
+ "description": "Visual variant.",
1108
+ "values": [
1109
+ "regular",
1110
+ "highlighted",
1111
+ "transparent",
1112
+ "static"
1113
+ ],
1114
+ "default": "regular"
1115
+ },
1116
+ "size": {
1117
+ "type": "enum",
1118
+ "optional": true,
1119
+ "description": "Size of the chip.",
1120
+ "values": [
1121
+ "small",
1122
+ "large"
1123
+ ],
1124
+ "default": "small"
1125
+ },
1126
+ "accent": {
1127
+ "type": "enum",
1128
+ "optional": true,
1129
+ "description": "Text emphasis. `\"secondary\"` renders muted, medium-weight text.",
1130
+ "values": [
1131
+ "primary",
1132
+ "secondary"
1133
+ ],
1134
+ "default": "primary"
1135
+ },
1136
+ "isBold": {
1137
+ "type": "boolean",
1138
+ "optional": true,
1139
+ "description": "Renders the label in a medium font weight."
1140
+ },
1141
+ "leftComponent": {
1142
+ "type": "ReactNode",
1143
+ "optional": true,
1144
+ "description": "Node rendered before the label (e.g. an avatar or icon)."
1145
+ },
1146
+ "rightComponent": {
1147
+ "type": "ReactNode",
1148
+ "optional": true,
1149
+ "description": "Node rendered after the label (e.g. a remove button or count)."
1150
+ },
1151
+ "disabled": {
1152
+ "type": "boolean",
1153
+ "optional": true,
1154
+ "description": "Disables the chip and dims it."
1155
+ },
1156
+ "className": {
1157
+ "type": "string",
1158
+ "optional": true,
1159
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
1160
+ }
1161
+ },
1162
+ "examples": [
1163
+ "<div className=\"flex flex-wrap items-center gap-2\">\n <Chip label=\"Regular\" variant=\"regular\" />\n <Chip label=\"Highlighted\" variant=\"highlighted\" />\n <Chip label=\"Transparent\" variant=\"transparent\" />\n <Chip label=\"Static\" variant=\"static\" />\n </div>",
1164
+ "<div className=\"flex items-center gap-2\">\n <Chip label=\"Small\" size=\"small\" />\n <Chip label=\"Large\" size=\"large\" />\n </div>",
1165
+ "<div className=\"flex flex-wrap items-center gap-2\">\n <Chip\n label=\"Acme Inc.\"\n leftComponent={<BuildingsIcon className=\"size-3.5\" />}\n />\n <Chip\n label=\"Removable\"\n rightComponent={<XIcon className=\"size-3\" />}\n onClick={() => {}}\n />\n </div>",
1166
+ "<Chip label=\"Disabled\" onClick={() => {}} disabled />",
1167
+ "<TooltipProvider>\n <div className=\"w-32\">\n <Chip label=\"A very long related record name that truncates\" />\n </div>\n </TooltipProvider>"
1168
+ ],
1169
+ "colors": [
1170
+ "bg-reki-base",
1171
+ "bg-reki-fill",
1172
+ "ring-reki-hairline",
1173
+ "text-reki-default",
1174
+ "text-reki-subtle"
1175
+ ],
1176
+ "baseStyles": "inline-flex w-fit min-w-0 max-w-full items-center gap-1 rounded-sm align-middle text-reki-default"
1177
+ },
1178
+ "CircularProgressBar": {
1179
+ "name": "CircularProgressBar",
1180
+ "type": "component",
1181
+ "description": "A determinate circular progress ring — for record completeness, quota usage, and similar single-value metrics. For a linear bar use `Meter`; for an indeterminate spinner use `Loader`.",
1182
+ "importPath": "@cloudraker/reki",
1183
+ "category": "Other",
1184
+ "props": {
1185
+ "value": {
1186
+ "type": "number",
1187
+ "required": true,
1188
+ "description": "Progress as a percentage (0–100)."
1189
+ },
1190
+ "size": {
1191
+ "type": "number",
1192
+ "optional": true,
1193
+ "description": "Diameter in pixels."
1194
+ },
1195
+ "barWidth": {
1196
+ "type": "number",
1197
+ "optional": true,
1198
+ "description": "Stroke width in pixels."
1199
+ },
1200
+ "label": {
1201
+ "type": "string",
1202
+ "optional": true,
1203
+ "description": "Accessible label."
1204
+ },
1205
+ "className": {
1206
+ "type": "string",
1207
+ "optional": true,
1208
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
1209
+ }
1210
+ },
1211
+ "examples": [
1212
+ "<div className=\"flex items-center gap-4\">\n <CircularProgressBar value={25} />\n <CircularProgressBar value={60} />\n <CircularProgressBar value={100} />\n </div>"
1213
+ ],
1214
+ "colors": []
1215
+ },
889
1216
  "ClipboardText": {
890
1217
  "name": "ClipboardText",
891
1218
  "type": "component",
@@ -2339,38 +2666,99 @@
2339
2666
  }
2340
2667
  }
2341
2668
  },
2342
- "Combobox": {
2343
- "name": "Combobox",
2669
+ "ColorSample": {
2670
+ "name": "ColorSample",
2344
2671
  "type": "component",
2345
- "description": "Combobox autocomplete input with filterable dropdown list.",
2672
+ "description": "A color swatch for color pickers and tag-color selection. Uses the same `reki-tag-*` palette as {@link Tag} so the swatch always matches the tag it represents, in both light and dark mode.",
2346
2673
  "importPath": "@cloudraker/reki",
2347
- "category": "Input",
2674
+ "category": "Other",
2348
2675
  "props": {
2349
- "size": {
2676
+ "colorName": {
2350
2677
  "type": "enum",
2351
- "optional": true,
2352
- "description": "Size of the combobox trigger. Matches Input component sizes.\n- `\"xs\"` — Extra small for compact UIs (h-5 / 20px)\n- `\"sm\"` — Small for secondary fields (h-6.5 / 26px)\n- `\"base\"` — Default size (h-9 / 36px)\n- `\"lg\"` — Large for prominent fields (h-10 / 40px)",
2678
+ "required": true,
2679
+ "description": "Named CRM tag color to display.",
2353
2680
  "values": [
2354
- "xs",
2355
- "sm",
2356
- "base",
2357
- "lg"
2358
- ],
2359
- "default": "base"
2681
+ "gray",
2682
+ "red",
2683
+ "orange",
2684
+ "yellow",
2685
+ "green",
2686
+ "turquoise",
2687
+ "sky",
2688
+ "blue",
2689
+ "purple",
2690
+ "pink",
2691
+ "transparent"
2692
+ ]
2360
2693
  },
2361
- "inputSide": {
2694
+ "variant": {
2362
2695
  "type": "enum",
2363
2696
  "optional": true,
2364
- "description": "Position of the text input relative to chips in multi-select mode.\n- `\"right\"` — Input inline to the right of chips\n- `\"top\"` — Input above chips",
2697
+ "description": "Swatch shape.\n- `\"default\"` small rounded square (default)\n- `\"circle\"` — full circle\n- `\"pipeline\"` — wider rounded bar (for pipeline/stage pickers)",
2365
2698
  "values": [
2366
- "right",
2367
- "top"
2699
+ "default",
2700
+ "circle",
2701
+ "pipeline"
2368
2702
  ],
2369
2703
  "descriptions": {
2370
- "right": "Input positioned inline to the right of chips",
2371
- "top": "Input positioned above chips"
2704
+ "default": "Rounded square (default)",
2705
+ "circle": "Circle",
2706
+ "pipeline": "Wide pipeline bar"
2372
2707
  },
2373
- "default": "right"
2708
+ "classes": {
2709
+ "default": "size-3.5 rounded-sm",
2710
+ "circle": "size-3.5 rounded-full",
2711
+ "pipeline": "h-3.5 w-6 rounded-sm"
2712
+ },
2713
+ "default": "default"
2714
+ },
2715
+ "className": {
2716
+ "type": "string",
2717
+ "optional": true,
2718
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
2719
+ }
2720
+ },
2721
+ "examples": [
2722
+ "<div className=\"flex flex-wrap items-center gap-2\">\n {TAG_COLOR_NAMES.map((color) => (\n <ColorSample key={color} colorName={color} />\n ))}\n </div>",
2723
+ "<div className=\"flex items-center gap-3\">\n <ColorSample colorName=\"blue\" variant=\"default\" />\n <ColorSample colorName=\"blue\" variant=\"circle\" />\n <ColorSample colorName=\"blue\" variant=\"pipeline\" />\n </div>",
2724
+ "<div className=\"flex w-48 flex-col gap-1\">\n {([\"green\", \"orange\", \"red\"] as const).map((color) => (\n <div key={color} className=\"flex items-center gap-2\">\n <ColorSample colorName={color} variant=\"circle\" />\n <span className=\"text-sm capitalize text-reki-default\">{color}</span>\n </div>\n ))}\n </div>"
2725
+ ],
2726
+ "colors": [
2727
+ "ring-reki-hairline"
2728
+ ]
2729
+ },
2730
+ "Combobox": {
2731
+ "name": "Combobox",
2732
+ "type": "component",
2733
+ "description": "Combobox — autocomplete input with filterable dropdown list.",
2734
+ "importPath": "@cloudraker/reki",
2735
+ "category": "Input",
2736
+ "props": {
2737
+ "size": {
2738
+ "type": "enum",
2739
+ "optional": true,
2740
+ "description": "Size of the combobox trigger. Matches Input component sizes.\n- `\"xs\"` — Extra small for compact UIs (h-5 / 20px)\n- `\"sm\"` — Small for secondary fields (h-6.5 / 26px)\n- `\"base\"` — Default size (h-9 / 36px)\n- `\"lg\"` — Large for prominent fields (h-10 / 40px)",
2741
+ "values": [
2742
+ "xs",
2743
+ "sm",
2744
+ "base",
2745
+ "lg"
2746
+ ],
2747
+ "default": "base"
2748
+ },
2749
+ "inputSide": {
2750
+ "type": "enum",
2751
+ "optional": true,
2752
+ "description": "Position of the text input relative to chips in multi-select mode.\n- `\"right\"` — Input inline to the right of chips\n- `\"top\"` — Input above chips",
2753
+ "values": [
2754
+ "right",
2755
+ "top"
2756
+ ],
2757
+ "descriptions": {
2758
+ "right": "Input positioned inline to the right of chips",
2759
+ "top": "Input positioned above chips"
2760
+ },
2761
+ "default": "right"
2374
2762
  },
2375
2763
  "items": {
2376
2764
  "type": "T[]",
@@ -2617,6 +3005,53 @@
2617
3005
  "text-reki-subtle"
2618
3006
  ]
2619
3007
  },
3008
+ "DataGrid": {
3009
+ "name": "DataGrid",
3010
+ "type": "component",
3011
+ "description": "DataGrid component",
3012
+ "importPath": "@cloudraker/reki",
3013
+ "category": "Other",
3014
+ "props": {
3015
+ "kind": {
3016
+ "type": "enum",
3017
+ "required": true,
3018
+ "values": [
3019
+ "text",
3020
+ "number"
3021
+ ]
3022
+ },
3023
+ "initialValue": {
3024
+ "type": "unknown",
3025
+ "required": true
3026
+ },
3027
+ "initialKey": {
3028
+ "type": "string",
3029
+ "optional": true
3030
+ },
3031
+ "align": {
3032
+ "type": "enum",
3033
+ "required": true,
3034
+ "values": [
3035
+ "left",
3036
+ "right",
3037
+ "center"
3038
+ ]
3039
+ }
3040
+ },
3041
+ "examples": [
3042
+ "<TooltipProvider>\n <div className=\"w-[720px]\">\n <DataGrid\n data={rows}\n columns={columns}\n getRowId={(r) => r.id}\n height={360}\n enableRowSelection\n selectedRowIds={selected}\n onSelectedRowIdsChange={setSelected}\n onCommitCell={({ rowId, columnId, value }) =>\n setRows((rs) =>\n rs.map((r) => (r.id === rowId ? { ...r, [columnId]: value } : r)),\n )\n }\n />\n <p className=\"mt-2 text-xs text-reki-subtle\">\n 500 rows (virtualized) · {selected.length} selected · double-click\n Amount/Owner to edit\n </p>\n </div>\n </TooltipProvider>"
3043
+ ],
3044
+ "colors": [
3045
+ "bg-reki-base",
3046
+ "bg-reki-canvas",
3047
+ "bg-reki-fill",
3048
+ "border-reki-hairline",
3049
+ "outline-reki-brand",
3050
+ "outline-reki-hairline",
3051
+ "text-reki-default",
3052
+ "text-reki-subtle"
3053
+ ]
3054
+ },
2620
3055
  "DatePicker": {
2621
3056
  "name": "DatePicker",
2622
3057
  "type": "component",
@@ -2930,6 +3365,44 @@
2930
3365
  }
2931
3366
  }
2932
3367
  },
3368
+ "DoubleTextInput": {
3369
+ "name": "DoubleTextInput",
3370
+ "type": "component",
3371
+ "description": "Two side-by-side text inputs that edit a single composite value — full names (first / last) and other paired fields.",
3372
+ "importPath": "@cloudraker/reki",
3373
+ "category": "Other",
3374
+ "props": {
3375
+ "value": {
3376
+ "type": "DoubleTextValue",
3377
+ "required": true,
3378
+ "description": "Current paired value."
3379
+ },
3380
+ "firstPlaceholder": {
3381
+ "type": "string",
3382
+ "optional": true,
3383
+ "description": "Placeholder for the first input."
3384
+ },
3385
+ "secondPlaceholder": {
3386
+ "type": "string",
3387
+ "optional": true,
3388
+ "description": "Placeholder for the second input."
3389
+ },
3390
+ "disabled": {
3391
+ "type": "boolean",
3392
+ "optional": true,
3393
+ "description": "Disables both inputs."
3394
+ },
3395
+ "className": {
3396
+ "type": "string",
3397
+ "optional": true,
3398
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
3399
+ }
3400
+ },
3401
+ "examples": [
3402
+ "<div className=\"w-72\">\n <DoubleTextInput\n value={value}\n onChange={setValue}\n firstPlaceholder=\"First name\"\n secondPlaceholder=\"Last name\"\n />\n </div>"
3403
+ ],
3404
+ "colors": []
3405
+ },
2933
3406
  "DropdownMenu": {
2934
3407
  "name": "DropdownMenu",
2935
3408
  "type": "component",
@@ -3211,6 +3684,29 @@
3211
3684
  }
3212
3685
  }
3213
3686
  },
3687
+ "EmailsDisplay": {
3688
+ "name": "EmailsDisplay",
3689
+ "type": "component",
3690
+ "description": "Renders an `emails` field as a collapsible list of `mailto:` link chips. Pre-normalize the field value to a `string[]` in your field-cell layer.",
3691
+ "importPath": "@cloudraker/reki",
3692
+ "category": "Other",
3693
+ "props": {
3694
+ "emails": {
3695
+ "type": "string[]",
3696
+ "required": true,
3697
+ "description": "Email addresses, primary first."
3698
+ },
3699
+ "className": {
3700
+ "type": "string",
3701
+ "optional": true,
3702
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
3703
+ }
3704
+ },
3705
+ "examples": [
3706
+ "<TooltipProvider>\n <div className=\"w-56\">\n <EmailsDisplay\n emails={[\"jane@acme.com\", \"j.doe@personal.com\", \"jane@old.com\"]}\n max={1}\n />\n </div>\n </TooltipProvider>"
3707
+ ],
3708
+ "colors": []
3709
+ },
3214
3710
  "Empty": {
3215
3711
  "name": "Empty",
3216
3712
  "type": "component",
@@ -3290,6 +3786,32 @@
3290
3786
  "text-reki-success"
3291
3787
  ]
3292
3788
  },
3789
+ "ExpandableList": {
3790
+ "name": "ExpandableList",
3791
+ "type": "component",
3792
+ "description": "Renders the first `max` items inline and collapses the remainder into a `+N` chip whose count reveals the hidden items on hover. Use for dense multi-value cells (tags, emails, links) where space is constrained.",
3793
+ "importPath": "@cloudraker/reki",
3794
+ "category": "Other",
3795
+ "props": {
3796
+ "children": {
3797
+ "type": "ReactNode",
3798
+ "optional": true,
3799
+ "description": "Items to render. The first `max` are shown inline; the rest collapse into a `+N` chip."
3800
+ },
3801
+ "className": {
3802
+ "type": "string",
3803
+ "optional": true,
3804
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
3805
+ }
3806
+ },
3807
+ "examples": [
3808
+ "<TooltipProvider>\n <div className=\"w-48\">\n <ExpandableList max={2}>\n <Tag color=\"blue\" text=\"Engineering\" />\n <Tag color=\"green\" text=\"Sales\" />\n <Tag color=\"orange\" text=\"Support\" />\n <Tag color=\"purple\" text=\"Finance\" />\n </ExpandableList>\n </div>\n </TooltipProvider>"
3809
+ ],
3810
+ "colors": [
3811
+ "bg-reki-fill",
3812
+ "text-reki-subtle"
3813
+ ]
3814
+ },
3293
3815
  "Field": {
3294
3816
  "name": "Field",
3295
3817
  "type": "component",
@@ -3778,6 +4300,31 @@
3778
4300
  }
3779
4301
  }
3780
4302
  },
4303
+ "JsonDisplay": {
4304
+ "name": "JsonDisplay",
4305
+ "type": "component",
4306
+ "description": "Single-line, truncated display for a `json` / `raw-json` field value. Shows the full value in a tooltip on overflow via {@link OverflowingText}. Wrap in a `TooltipProvider` for the tooltip.",
4307
+ "importPath": "@cloudraker/reki",
4308
+ "category": "Other",
4309
+ "props": {
4310
+ "value": {
4311
+ "type": "unknown",
4312
+ "required": true,
4313
+ "description": "Value to render. Objects/arrays are stringified; strings are shown as-is."
4314
+ },
4315
+ "className": {
4316
+ "type": "string",
4317
+ "optional": true,
4318
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
4319
+ }
4320
+ },
4321
+ "examples": [
4322
+ "<TooltipProvider>\n <div className=\"w-56 rounded-md border border-reki-fill p-2\">\n <JsonDisplay value={{ status: \"ok\", count: 3, nested: { a: 1 } }} />\n </div>\n </TooltipProvider>"
4323
+ ],
4324
+ "colors": [
4325
+ "text-reki-subtle"
4326
+ ]
4327
+ },
3781
4328
  "Label": {
3782
4329
  "name": "Label",
3783
4330
  "type": "component",
@@ -4029,6 +4576,105 @@
4029
4576
  }
4030
4577
  }
4031
4578
  },
4579
+ "LinkChip": {
4580
+ "name": "LinkChip",
4581
+ "type": "component",
4582
+ "description": "A {@link Chip} that navigates to a record. Renders through reki's `LinkProvider`, so it honours the host app's router (TanStack Router, React Router, Next.js) and supports middle-click / cmd-click to open in a new tab. Use for clickable relation values in tables, boards, and detail panels.",
4583
+ "importPath": "@cloudraker/reki",
4584
+ "category": "Other",
4585
+ "props": {
4586
+ "label": {
4587
+ "type": "string",
4588
+ "required": true,
4589
+ "description": "Text label (truncated with a tooltip on overflow)."
4590
+ },
4591
+ "href": {
4592
+ "type": "string",
4593
+ "required": true,
4594
+ "description": "Destination href. Resolved through the configured `LinkProvider`."
4595
+ },
4596
+ "tooltipLabel": {
4597
+ "type": "string",
4598
+ "optional": true,
4599
+ "description": "Tooltip content shown when the label overflows. Defaults to `label`."
4600
+ },
4601
+ "size": {
4602
+ "type": "enum",
4603
+ "optional": true,
4604
+ "description": "Size of the chip.",
4605
+ "values": [
4606
+ "small",
4607
+ "large"
4608
+ ]
4609
+ },
4610
+ "accent": {
4611
+ "type": "enum",
4612
+ "optional": true,
4613
+ "description": "Text emphasis.",
4614
+ "values": [
4615
+ "primary",
4616
+ "secondary"
4617
+ ]
4618
+ },
4619
+ "isBold": {
4620
+ "type": "boolean",
4621
+ "optional": true,
4622
+ "description": "Renders the label in a medium font weight."
4623
+ },
4624
+ "leftComponent": {
4625
+ "type": "ReactNode",
4626
+ "optional": true,
4627
+ "description": "Node rendered before the label (e.g. an avatar or icon)."
4628
+ },
4629
+ "rightComponent": {
4630
+ "type": "ReactNode",
4631
+ "optional": true,
4632
+ "description": "Node rendered after the label."
4633
+ },
4634
+ "target": {
4635
+ "type": "string",
4636
+ "optional": true,
4637
+ "description": "Opens the link in a new tab."
4638
+ },
4639
+ "className": {
4640
+ "type": "string",
4641
+ "optional": true,
4642
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
4643
+ }
4644
+ },
4645
+ "examples": [
4646
+ "<LinkChip label=\"Acme Inc.\" href=\"/companies/acme\" />",
4647
+ "<LinkChip\n label=\"Acme Inc.\"\n href=\"/companies/acme\"\n leftComponent={<BuildingsIcon className=\"size-3.5\" />}\n />",
4648
+ "<div className=\"flex items-center gap-2\">\n <LinkChip label=\"Small\" href=\"#\" size=\"small\" />\n <LinkChip label=\"Large\" href=\"#\" size=\"large\" />\n </div>"
4649
+ ],
4650
+ "colors": [
4651
+ "bg-reki-fill",
4652
+ "text-reki-subtle"
4653
+ ]
4654
+ },
4655
+ "LinksDisplay": {
4656
+ "name": "LinksDisplay",
4657
+ "type": "component",
4658
+ "description": "Renders a `links` field as a collapsible list of external link chips (open in a new tab). Resolve absolute URLs and labels in your field-cell layer.",
4659
+ "importPath": "@cloudraker/reki",
4660
+ "category": "Other",
4661
+ "props": {
4662
+ "links": {
4663
+ "type": "LinkValue[]",
4664
+ "required": true,
4665
+ "description": "Links to render, primary first."
4666
+ },
4667
+ "className": {
4668
+ "type": "string",
4669
+ "optional": true,
4670
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
4671
+ }
4672
+ },
4673
+ "examples": [
4674
+ "<TooltipProvider>\n <div className=\"w-56\">\n <LinksDisplay\n links={[\n { url: \"https://acme.com\", label: \"acme.com\" },\n { url: \"https://docs.acme.com\", label: \"docs.acme.com\" },\n ]}\n max={1}\n />\n </div>\n </TooltipProvider>"
4675
+ ],
4676
+ "colors": []
4677
+ },
4032
4678
  "Loader": {
4033
4679
  "name": "Loader",
4034
4680
  "type": "component",
@@ -4121,6 +4767,72 @@
4121
4767
  }
4122
4768
  }
4123
4769
  },
4770
+ "MenuItem": {
4771
+ "name": "MenuItem",
4772
+ "type": "component",
4773
+ "description": "A single dropdown / list row: leading icon or component, label, and an optional trailing check or element. The building block for option pickers, filter builders, and action menus. See also {@link MenuItemSelect}, {@link MenuItemMultiSelect}, {@link MenuItemSelectColor}, {@link MenuItemSelectTag}, and {@link MenuItemAvatar}.",
4774
+ "importPath": "@cloudraker/reki",
4775
+ "category": "Other",
4776
+ "props": {
4777
+ "text": {
4778
+ "type": "string",
4779
+ "required": true,
4780
+ "description": "Row label."
4781
+ },
4782
+ "LeftIcon": {
4783
+ "type": "IconType",
4784
+ "optional": true,
4785
+ "description": "Optional leading icon."
4786
+ },
4787
+ "leftComponent": {
4788
+ "type": "ReactNode",
4789
+ "optional": true,
4790
+ "description": "Optional leading element (avatar, color sample, …) shown before the text."
4791
+ },
4792
+ "rightComponent": {
4793
+ "type": "ReactNode",
4794
+ "optional": true,
4795
+ "description": "Optional trailing element shown after the text."
4796
+ },
4797
+ "selected": {
4798
+ "type": "boolean",
4799
+ "optional": true,
4800
+ "description": "Shows a trailing check mark when true."
4801
+ },
4802
+ "focused": {
4803
+ "type": "boolean",
4804
+ "optional": true,
4805
+ "description": "Keyboard-focused / active styling."
4806
+ },
4807
+ "disabled": {
4808
+ "type": "boolean",
4809
+ "optional": true,
4810
+ "description": "Disables the row."
4811
+ },
4812
+ "className": {
4813
+ "type": "string",
4814
+ "optional": true,
4815
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
4816
+ }
4817
+ },
4818
+ "examples": [
4819
+ "<LayerCard className=\"w-56 p-1\">\n <MenuItem text=\"Rename\" LeftIcon={PencilIcon} />\n <MenuItem text=\"Delete\" LeftIcon={TrashIcon} />\n </LayerCard>",
4820
+ "<LayerCard className=\"w-56 p-1\">\n {[\"low\", \"medium\", \"high\"].map((option) => (\n <MenuItemSelect\n key={option}\n text={option}\n selected={value === option}\n onClick={() => setValue(option)}\n />\n ))}\n </LayerCard>",
4821
+ "<LayerCard className=\"w-56 p-1\">\n {[\"sales\", \"marketing\", \"support\"].map((option) => (\n <MenuItemMultiSelect\n key={option}\n text={option}\n selected={selected.includes(option)}\n onSelectChange={() => toggle(option)}\n />\n ))}\n </LayerCard>",
4822
+ "<LayerCard className=\"w-56 p-1\">\n <MenuItemSelectColor text=\"Green\" color=\"green\" selected />\n <MenuItemSelectColor text=\"Blue\" color=\"blue\" />\n <MenuItemSelectColor text=\"Purple\" color=\"purple\" />\n </LayerCard>",
4823
+ "<LayerCard className=\"w-56 p-1\">\n <MenuItemSelectTag text=\"Active\" color=\"green\" selected />\n <MenuItemSelectTag text=\"Pending\" color=\"orange\" />\n <MenuItemSelectTag text=\"Closed\" color=\"gray\" />\n </LayerCard>",
4824
+ "<LayerCard className=\"w-56 p-1\">\n <MenuItemAvatar text=\"Jane Doe\" avatarInitials=\"JD\" selected />\n <MenuItemAvatar text=\"John Smith\" avatarInitials=\"JS\" />\n </LayerCard>"
4825
+ ],
4826
+ "colors": [
4827
+ "bg-reki-brand",
4828
+ "bg-reki-fill",
4829
+ "ring-reki-brand",
4830
+ "ring-reki-hairline",
4831
+ "text-reki-default",
4832
+ "text-reki-inverse",
4833
+ "text-reki-subtle"
4834
+ ]
4835
+ },
4124
4836
  "Meter": {
4125
4837
  "name": "Meter",
4126
4838
  "type": "component",
@@ -4180,6 +4892,92 @@
4180
4892
  "text-reki-subtle"
4181
4893
  ]
4182
4894
  },
4895
+ "NotificationCounter": {
4896
+ "name": "NotificationCounter",
4897
+ "type": "component",
4898
+ "description": "A small numeric badge for unread/pending counts on icons and nav items.",
4899
+ "importPath": "@cloudraker/reki",
4900
+ "category": "Other",
4901
+ "props": {
4902
+ "count": {
4903
+ "type": "number",
4904
+ "required": true,
4905
+ "description": "Number to display. Values above `max` render as `{max}+`."
4906
+ },
4907
+ "variant": {
4908
+ "type": "enum",
4909
+ "optional": true,
4910
+ "description": "Visual variant.\n- `\"primary\"` — brand background (default)\n- `\"secondary\"` — neutral fill",
4911
+ "values": [
4912
+ "primary",
4913
+ "secondary"
4914
+ ],
4915
+ "descriptions": {
4916
+ "primary": "Brand background (default)",
4917
+ "secondary": "Neutral fill"
4918
+ },
4919
+ "classes": {
4920
+ "primary": "bg-reki-brand text-reki-inverse",
4921
+ "secondary": "bg-reki-fill text-reki-default"
4922
+ },
4923
+ "default": "primary"
4924
+ },
4925
+ "className": {
4926
+ "type": "string",
4927
+ "optional": true,
4928
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
4929
+ }
4930
+ },
4931
+ "examples": [
4932
+ "<div className=\"flex items-center gap-3\">\n <NotificationCounter count={3} />\n <NotificationCounter count={12} variant=\"secondary\" />\n <NotificationCounter count={150} max={99} />\n </div>"
4933
+ ],
4934
+ "colors": [
4935
+ "bg-reki-brand",
4936
+ "bg-reki-fill",
4937
+ "text-reki-default",
4938
+ "text-reki-inverse"
4939
+ ]
4940
+ },
4941
+ "OverflowingText": {
4942
+ "name": "OverflowingText",
4943
+ "type": "component",
4944
+ "description": "Truncates text to its container and reveals the full value in a tooltip **only when it actually overflows**. Measures with a `ResizeObserver`, so it stays correct as the container resizes. Ideal for dense table/board cells and chips where labels are unpredictable in length.",
4945
+ "importPath": "@cloudraker/reki",
4946
+ "category": "Other",
4947
+ "props": {
4948
+ "text": {
4949
+ "type": "string",
4950
+ "required": true,
4951
+ "description": "Text to render, truncated when it overflows its container."
4952
+ },
4953
+ "tooltipContent": {
4954
+ "type": "ReactNode",
4955
+ "optional": true,
4956
+ "description": "Tooltip content shown when the text overflows. Defaults to `text`. Provide a custom node to show richer content than the raw string."
4957
+ },
4958
+ "lines": {
4959
+ "type": "number",
4960
+ "optional": true,
4961
+ "description": "Maximum number of lines before clamping. `1` (default) truncates to a single line with an ellipsis; higher values clamp to that many lines."
4962
+ },
4963
+ "alwaysShowTooltip": {
4964
+ "type": "boolean",
4965
+ "optional": true,
4966
+ "description": "Always show the tooltip on hover, even when the text is not overflowing."
4967
+ },
4968
+ "className": {
4969
+ "type": "string",
4970
+ "optional": true,
4971
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
4972
+ }
4973
+ },
4974
+ "examples": [
4975
+ "<TooltipProvider>\n <div className=\"w-40 rounded-md border border-reki-fill p-2\">\n <OverflowingText text=\"This label is far too long to fit in its container — hover to see the full value in a tooltip.\" />\n </div>\n </TooltipProvider>",
4976
+ "<TooltipProvider>\n <div className=\"w-40 rounded-md border border-reki-fill p-2\">\n <OverflowingText text=\"Short value\" />\n </div>\n </TooltipProvider>",
4977
+ "<TooltipProvider>\n <div className=\"w-40 rounded-md border border-reki-fill p-2\">\n <OverflowingText\n lines={2}\n text=\"A longer description that wraps onto two lines before it clamps with an ellipsis and reveals the rest on hover.\"\n />\n </div>\n </TooltipProvider>"
4978
+ ],
4979
+ "colors": []
4980
+ },
4183
4981
  "Pagination": {
4184
4982
  "name": "Pagination",
4185
4983
  "type": "component",
@@ -4352,6 +5150,60 @@
4352
5150
  }
4353
5151
  }
4354
5152
  },
5153
+ "PhonesDisplay": {
5154
+ "name": "PhonesDisplay",
5155
+ "type": "component",
5156
+ "description": "Renders a `phones` field as a collapsible list of `tel:` link chips. Format the numbers in your field-cell layer (e.g. via `libphonenumber-js`) and pass display strings.",
5157
+ "importPath": "@cloudraker/reki",
5158
+ "category": "Other",
5159
+ "props": {
5160
+ "phones": {
5161
+ "type": "string[]",
5162
+ "required": true,
5163
+ "description": "Pre-formatted phone numbers, primary first."
5164
+ },
5165
+ "className": {
5166
+ "type": "string",
5167
+ "optional": true,
5168
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
5169
+ }
5170
+ },
5171
+ "examples": [
5172
+ "<TooltipProvider>\n <div className=\"w-56\">\n <PhonesDisplay\n phones={[\"+1 415 555 0100\", \"+44 20 7946 0000\"]}\n max={1}\n />\n </div>\n </TooltipProvider>"
5173
+ ],
5174
+ "colors": []
5175
+ },
5176
+ "Pill": {
5177
+ "name": "Pill",
5178
+ "type": "component",
5179
+ "description": "A tiny static label for inline annotations (counts, flags, hints). Smaller and quieter than {@link Tag} or {@link Badge}; not interactive.",
5180
+ "importPath": "@cloudraker/reki",
5181
+ "category": "Other",
5182
+ "props": {
5183
+ "label": {
5184
+ "type": "string",
5185
+ "required": true,
5186
+ "description": "Text label."
5187
+ },
5188
+ "icon": {
5189
+ "type": "React.ComponentType<React.SVGProps<SVGSVGElement>>",
5190
+ "optional": true,
5191
+ "description": "Optional leading icon (phosphor or any SVG component)."
5192
+ },
5193
+ "className": {
5194
+ "type": "string",
5195
+ "optional": true,
5196
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
5197
+ }
5198
+ },
5199
+ "examples": [
5200
+ "<div className=\"flex items-center gap-2\">\n <Pill label=\"3 records\" />\n <Pill label=\"Beta\" icon={SparkleIcon} />\n </div>"
5201
+ ],
5202
+ "colors": [
5203
+ "bg-reki-fill",
5204
+ "text-reki-subtle"
5205
+ ]
5206
+ },
4355
5207
  "Popover": {
4356
5208
  "name": "Popover",
4357
5209
  "type": "component",
@@ -4560,6 +5412,65 @@
4560
5412
  }
4561
5413
  }
4562
5414
  },
5415
+ "Rating": {
5416
+ "name": "Rating",
5417
+ "type": "component",
5418
+ "description": "Star rating for the `rating` field type. Read-only by default for cell display; pass `onChange` for an editable control (clicking the current value clears it).",
5419
+ "importPath": "@cloudraker/reki",
5420
+ "category": "Other",
5421
+ "props": {
5422
+ "value": {
5423
+ "type": "number | null",
5424
+ "required": true,
5425
+ "description": "Current rating (1..max), or `null` for unrated."
5426
+ },
5427
+ "readonly": {
5428
+ "type": "boolean",
5429
+ "optional": true,
5430
+ "description": "Renders as read-only (no hover/click)."
5431
+ },
5432
+ "className": {
5433
+ "type": "string",
5434
+ "optional": true,
5435
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
5436
+ }
5437
+ },
5438
+ "examples": [
5439
+ "<div className=\"flex flex-col gap-1\">\n <Rating value={1} readonly />\n <Rating value={3} readonly />\n <Rating value={5} readonly />\n </div>",
5440
+ "<Rating value={value} onChange={setValue} />"
5441
+ ],
5442
+ "colors": [
5443
+ "text-reki-default",
5444
+ "text-reki-inactive"
5445
+ ]
5446
+ },
5447
+ "RecordBoard": {
5448
+ "name": "RecordBoard",
5449
+ "type": "component",
5450
+ "description": "RecordBoard component",
5451
+ "importPath": "@cloudraker/reki",
5452
+ "category": "Other",
5453
+ "props": {
5454
+ "className": {
5455
+ "type": "string",
5456
+ "description": "Additional CSS classes"
5457
+ },
5458
+ "children": {
5459
+ "type": "ReactNode",
5460
+ "description": "Child elements"
5461
+ }
5462
+ },
5463
+ "examples": [
5464
+ "<div className=\"h-[420px] w-[760px]\">\n <RecordBoard\n columns={STAGES}\n records={opps}\n getRecordId={(o) => o.id}\n getColumnId={(o) => o.stage}\n onMove={({ recordId, toColumnId }) =>\n setOpps((rs) =>\n rs.map((o) => (o.id === recordId ? { ...o, stage: toColumnId } : o)),\n )\n }\n renderCard={(o) => (\n <div className=\"flex flex-col gap-1.5\">\n <span className=\"text-sm font-medium text-reki-default\">{o.name}</span>\n <div className=\"flex items-center justify-between\">\n <Tag color=\"gray\" text={`$${o.amount.toLocaleString()}`} />\n <Avatar initials={o.owner} size=\"xs\" />\n </div>\n </div>\n )}\n />\n </div>"
5465
+ ],
5466
+ "colors": [
5467
+ "bg-reki-base",
5468
+ "bg-reki-recessed",
5469
+ "ring-reki-hairline",
5470
+ "text-reki-default",
5471
+ "text-reki-subtle"
5472
+ ]
5473
+ },
4563
5474
  "Select": {
4564
5475
  "name": "Select",
4565
5476
  "type": "component",
@@ -5393,6 +6304,55 @@
5393
6304
  }
5394
6305
  }
5395
6306
  },
6307
+ "Status": {
6308
+ "name": "Status",
6309
+ "type": "component",
6310
+ "description": "A compact colored status indicator for record states (pipeline stages, task status, health). Uses the `reki-tag-*` palette so it stays consistent with {@link Tag} and adapts to light/dark automatically.",
6311
+ "importPath": "@cloudraker/reki",
6312
+ "category": "Other",
6313
+ "props": {
6314
+ "text": {
6315
+ "type": "string",
6316
+ "required": true,
6317
+ "description": "Status label text."
6318
+ },
6319
+ "isLoaderVisible": {
6320
+ "type": "boolean",
6321
+ "optional": true,
6322
+ "description": "Shows an inline loader after the text (e.g. while a transition runs)."
6323
+ },
6324
+ "weight": {
6325
+ "type": "enum",
6326
+ "optional": true,
6327
+ "description": "Font weight of the label.",
6328
+ "values": [
6329
+ "regular",
6330
+ "medium"
6331
+ ],
6332
+ "descriptions": {
6333
+ "regular": "Regular weight",
6334
+ "medium": "Medium weight"
6335
+ },
6336
+ "classes": {
6337
+ "medium": "font-medium"
6338
+ },
6339
+ "default": "regular"
6340
+ },
6341
+ "className": {
6342
+ "type": "string",
6343
+ "optional": true,
6344
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
6345
+ }
6346
+ },
6347
+ "examples": [
6348
+ "<div className=\"flex flex-wrap items-center gap-2\">\n <Status color=\"green\" text=\"Active\" />\n <Status color=\"gray\" text=\"Inactive\" />\n <Status color=\"red\" text=\"Blocked\" />\n <Status color=\"blue\" text=\"In progress\" />\n <Status color=\"purple\" text=\"Review\" />\n </div>",
6349
+ "<Status color=\"orange\" text=\"Syncing\" isLoaderVisible />",
6350
+ "<Status color=\"green\" text=\"Active\" weight=\"medium\" />"
6351
+ ],
6352
+ "colors": [
6353
+ "text-reki-subtle"
6354
+ ]
6355
+ },
5396
6356
  "Surface": {
5397
6357
  "name": "Surface",
5398
6358
  "type": "component",
@@ -5913,17 +6873,15 @@
5913
6873
  "<div className=\"space-y-4\">\n <Tabs\n tabs={[\n { value: \"tab1\", label: \"Tab 1\" },\n { value: \"tab2\", label: \"Tab 2\" },\n { value: \"tab3\", label: \"Tab 3\" },\n ]}\n value={activeTab}\n onValueChange={setActiveTab}\n />\n <p className=\"text-sm text-reki-subtle\">\n Active tab: <code className=\"text-sm\">{activeTab}</code>\n </p>\n </div>",
5914
6874
  "<div className=\"w-full max-w-md\">\n <Tabs\n tabs={[\n { value: \"overview\", label: \"Overview\" },\n { value: \"analytics\", label: \"Analytics\" },\n { value: \"reports\", label: \"Reports\" },\n { value: \"notifications\", label: \"Notifications\" },\n { value: \"settings\", label: \"Settings\" },\n { value: \"billing\", label: \"Billing\" },\n { value: \"security\", label: \"Security\" },\n { value: \"integrations\", label: \"Integrations\" },\n ]}\n selectedValue=\"overview\"\n />\n </div>",
5915
6875
  "<div className=\"flex flex-col gap-6\">\n <div>\n <p className=\"mb-2 text-sm text-reki-subtle\">Segmented sm</p>\n <Tabs\n variant=\"segmented\"\n size=\"sm\"\n tabs={[\n { value: \"tab1\", label: \"Tab 1\" },\n { value: \"tab2\", label: \"Tab 2\" },\n { value: \"tab3\", label: \"Tab 3\" },\n ]}\n selectedValue=\"tab1\"\n />\n </div>\n <div>\n <p className=\"mb-2 text-sm text-reki-subtle\">Underline sm</p>\n <Tabs\n variant=\"underline\"\n size=\"sm\"\n tabs={[\n { value: \"tab1\", label: \"Tab 1\" },\n { value: \"tab2\", label: \"Tab 2\" },\n { value: \"tab3\", label: \"Tab 3\" },\n ]}\n selectedValue=\"tab1\"\n />\n </div>\n </div>",
5916
- "<Tabs\n tabs={[\n {\n value: \"tab1\",\n label: \"Regular Tab\",\n },\n {\n value: \"tab2\",\n label: \"Link Tab\",\n render: (props) => <a {...props} href=\"#tab2\" />,\n },\n {\n value: \"tab3\",\n label: \"Cloudflare\",\n render: (props) => (\n <a {...props} href=\"https://cloudflare.com\" target=\"_blank\" />\n ),\n },\n ]}\n selectedValue=\"tab1\"\n />"
6876
+ "<Tabs\n tabs={[\n {\n value: \"tab1\",\n label: \"Regular Tab\",\n },\n {\n value: \"tab2\",\n label: \"Link Tab\",\n // Anchor content is supplied by Tabs via the spread props at runtime.\n // oxlint-disable-next-line anchor-has-content\n render: (props) => <a {...props} href=\"#tab2\" />,\n },\n {\n value: \"tab3\",\n label: \"Cloudflare\",\n render: (props) => (\n // oxlint-disable-next-line anchor-has-content\n <a {...props} href=\"https://cloudflare.com\" target=\"_blank\" />\n ),\n },\n ]}\n selectedValue=\"tab1\"\n />"
5917
6877
  ],
5918
6878
  "colors": [
5919
6879
  "bg-reki-base",
5920
6880
  "bg-reki-brand",
5921
- "bg-reki-recessed",
5922
6881
  "bg-reki-tint",
5923
6882
  "border-reki-hairline",
5924
6883
  "ring-reki-brand",
5925
6884
  "ring-reki-focus",
5926
- "ring-reki-hairline",
5927
6885
  "ring-reki-line",
5928
6886
  "text-reki-default",
5929
6887
  "text-reki-subtle"
@@ -5952,6 +6910,104 @@
5952
6910
  }
5953
6911
  }
5954
6912
  },
6913
+ "Tag": {
6914
+ "name": "Tag",
6915
+ "type": "component",
6916
+ "description": "Colored label for enum / select / multi-select values and entity categories. Built on the `reki-tag-*` token palette so colors adapt to light/dark automatically, and on {@link OverflowingText} so long labels truncate with a tooltip.",
6917
+ "importPath": "@cloudraker/reki",
6918
+ "category": "Other",
6919
+ "props": {
6920
+ "text": {
6921
+ "type": "string",
6922
+ "required": true,
6923
+ "description": "Text label rendered inside the tag (truncated with a tooltip on overflow)."
6924
+ },
6925
+ "icon": {
6926
+ "type": "React.ComponentType<React.SVGProps<SVGSVGElement>>",
6927
+ "optional": true,
6928
+ "description": "Optional leading icon (phosphor or any SVG component)."
6929
+ },
6930
+ "variant": {
6931
+ "type": "enum",
6932
+ "optional": true,
6933
+ "description": "Visual style.\n- `\"solid\"` — subtle colored background (default)\n- `\"outline\"` — transparent background with a colored ring\n- `\"border\"` — subtle background with a matching colored ring",
6934
+ "values": [
6935
+ "solid",
6936
+ "outline",
6937
+ "border"
6938
+ ],
6939
+ "descriptions": {
6940
+ "solid": "Subtle colored background (default)",
6941
+ "outline": "Transparent background with a colored ring",
6942
+ "border": "Subtle background with a matching ring"
6943
+ },
6944
+ "classes": {
6945
+ "outline": "ring ring-inset ring-current/30",
6946
+ "border": "ring ring-inset ring-current/30"
6947
+ },
6948
+ "default": "solid"
6949
+ },
6950
+ "weight": {
6951
+ "type": "enum",
6952
+ "optional": true,
6953
+ "description": "Font weight of the label.\n- `\"regular\"` (default)\n- `\"medium\"`",
6954
+ "values": [
6955
+ "regular",
6956
+ "medium"
6957
+ ],
6958
+ "descriptions": {
6959
+ "regular": "Regular weight",
6960
+ "medium": "Medium weight"
6961
+ },
6962
+ "classes": {
6963
+ "medium": "font-medium"
6964
+ },
6965
+ "default": "regular"
6966
+ },
6967
+ "preventShrink": {
6968
+ "type": "boolean",
6969
+ "optional": true,
6970
+ "description": "Prevents the tag from shrinking inside flex containers."
6971
+ },
6972
+ "className": {
6973
+ "type": "string",
6974
+ "optional": true,
6975
+ "description": "Additional CSS classes merged via `cn()`. Use reki semantic tokens only."
6976
+ }
6977
+ },
6978
+ "examples": [
6979
+ "<div className=\"flex flex-wrap items-center gap-2\">\n {TAG_COLOR_NAMES.map((color) => (\n <Tag key={color} color={color} text={color} />\n ))}\n </div>",
6980
+ "<div className=\"flex flex-wrap items-center gap-2\">\n <Tag color=\"blue\" text=\"Solid\" variant=\"solid\" />\n <Tag color=\"blue\" text=\"Outline\" variant=\"outline\" />\n <Tag color=\"blue\" text=\"Border\" variant=\"border\" />\n </div>",
6981
+ "<div className=\"flex flex-wrap items-center gap-2\">\n <Tag color=\"green\" text=\"Active\" icon={CircleIcon} />\n <Tag color=\"purple\" text=\"Assigned\" icon={UserIcon} />\n </div>",
6982
+ "<Tag color=\"transparent\" text=\"No color\" />",
6983
+ "<div className=\"w-32\">\n <Tag color=\"orange\" text=\"A very long tag label that will truncate\" />\n </div>",
6984
+ "<div className=\"flex flex-wrap items-center gap-2\">\n {labels.map((label) => (\n <Tag key={label} color={stringToTagColor(label)} text={label} />\n ))}\n </div>"
6985
+ ],
6986
+ "colors": [
6987
+ "bg-reki-tag-blue",
6988
+ "bg-reki-tag-gray",
6989
+ "bg-reki-tag-green",
6990
+ "bg-reki-tag-orange",
6991
+ "bg-reki-tag-pink",
6992
+ "bg-reki-tag-purple",
6993
+ "bg-reki-tag-red",
6994
+ "bg-reki-tag-sky",
6995
+ "bg-reki-tag-turquoise",
6996
+ "bg-reki-tag-yellow",
6997
+ "text-reki-subtle",
6998
+ "text-reki-tag-blue",
6999
+ "text-reki-tag-gray",
7000
+ "text-reki-tag-green",
7001
+ "text-reki-tag-orange",
7002
+ "text-reki-tag-pink",
7003
+ "text-reki-tag-purple",
7004
+ "text-reki-tag-red",
7005
+ "text-reki-tag-sky",
7006
+ "text-reki-tag-turquoise",
7007
+ "text-reki-tag-yellow"
7008
+ ],
7009
+ "baseStyles": "inline-flex h-5 w-fit min-w-0 max-w-full items-center gap-1 rounded-sm px-1.5 text-xs whitespace-nowrap"
7010
+ },
5955
7011
  "Text": {
5956
7012
  "name": "Text",
5957
7013
  "type": "component",
@@ -6547,15 +7603,39 @@
6547
7603
  "search": {
6548
7604
  "byCategory": {
6549
7605
  "Other": [
7606
+ "ActorDisplay",
7607
+ "AddressInput",
7608
+ "ArrayDisplay",
6550
7609
  "Autocomplete",
7610
+ "Avatar",
7611
+ "AvatarGroup",
7612
+ "Chip",
7613
+ "CircularProgressBar",
6551
7614
  "CloudflareLogo",
7615
+ "ColorSample",
7616
+ "DataGrid",
6552
7617
  "DatePicker",
7618
+ "DoubleTextInput",
7619
+ "EmailsDisplay",
7620
+ "ExpandableList",
7621
+ "JsonDisplay",
6553
7622
  "Label",
6554
7623
  "Link",
7624
+ "LinkChip",
7625
+ "LinksDisplay",
7626
+ "MenuItem",
7627
+ "NotificationCounter",
7628
+ "OverflowingText",
7629
+ "PhonesDisplay",
7630
+ "Pill",
7631
+ "Rating",
7632
+ "RecordBoard",
6555
7633
  "SensitiveInput",
6556
7634
  "Sidebar",
7635
+ "Status",
6557
7636
  "Table",
6558
7637
  "TableOfContents",
7638
+ "Tag",
6559
7639
  "DeleteResource"
6560
7640
  ],
6561
7641
  "Display": [
@@ -6608,91 +7688,139 @@
6608
7688
  ]
6609
7689
  },
6610
7690
  "byName": [
7691
+ "ActorDisplay",
7692
+ "AddressInput",
7693
+ "ArrayDisplay",
6611
7694
  "Autocomplete",
7695
+ "Avatar",
7696
+ "AvatarGroup",
6612
7697
  "Badge",
6613
7698
  "Banner",
6614
7699
  "Breadcrumbs",
6615
7700
  "Button",
6616
7701
  "Checkbox",
7702
+ "Chip",
7703
+ "CircularProgressBar",
6617
7704
  "ClipboardText",
6618
7705
  "CloudflareLogo",
6619
7706
  "Code",
6620
7707
  "Collapsible",
7708
+ "ColorSample",
6621
7709
  "Combobox",
6622
7710
  "CommandPalette",
7711
+ "DataGrid",
6623
7712
  "DatePicker",
6624
7713
  "DateRangePicker",
6625
7714
  "DeleteResource",
6626
7715
  "Dialog",
7716
+ "DoubleTextInput",
6627
7717
  "DropdownMenu",
7718
+ "EmailsDisplay",
6628
7719
  "Empty",
7720
+ "ExpandableList",
6629
7721
  "Field",
6630
7722
  "Grid",
6631
7723
  "Input",
6632
7724
  "InputGroup",
7725
+ "JsonDisplay",
6633
7726
  "Label",
6634
7727
  "LayerCard",
6635
7728
  "Link",
7729
+ "LinkChip",
7730
+ "LinksDisplay",
6636
7731
  "Loader",
6637
7732
  "MenuBar",
7733
+ "MenuItem",
6638
7734
  "Meter",
7735
+ "NotificationCounter",
7736
+ "OverflowingText",
6639
7737
  "PageHeader",
6640
7738
  "Pagination",
7739
+ "PhonesDisplay",
7740
+ "Pill",
6641
7741
  "Popover",
6642
7742
  "Radio",
7743
+ "Rating",
7744
+ "RecordBoard",
6643
7745
  "ResourceListPage",
6644
7746
  "Select",
6645
7747
  "SensitiveInput",
6646
7748
  "Sidebar",
7749
+ "Status",
6647
7750
  "Surface",
6648
7751
  "Switch",
6649
7752
  "Table",
6650
7753
  "TableOfContents",
6651
7754
  "Tabs",
7755
+ "Tag",
6652
7756
  "Text",
6653
7757
  "Toasty",
6654
7758
  "Tooltip"
6655
7759
  ],
6656
7760
  "byType": {
6657
7761
  "component": [
7762
+ "ActorDisplay",
7763
+ "AddressInput",
7764
+ "ArrayDisplay",
6658
7765
  "Autocomplete",
7766
+ "Avatar",
7767
+ "AvatarGroup",
6659
7768
  "Badge",
6660
7769
  "Banner",
6661
7770
  "Breadcrumbs",
6662
7771
  "Button",
6663
7772
  "Checkbox",
7773
+ "Chip",
7774
+ "CircularProgressBar",
6664
7775
  "ClipboardText",
6665
7776
  "CloudflareLogo",
6666
7777
  "Code",
6667
7778
  "Collapsible",
7779
+ "ColorSample",
6668
7780
  "Combobox",
6669
7781
  "CommandPalette",
7782
+ "DataGrid",
6670
7783
  "DatePicker",
6671
7784
  "DateRangePicker",
6672
7785
  "Dialog",
7786
+ "DoubleTextInput",
6673
7787
  "DropdownMenu",
7788
+ "EmailsDisplay",
6674
7789
  "Empty",
7790
+ "ExpandableList",
6675
7791
  "Field",
6676
7792
  "Grid",
6677
7793
  "Input",
6678
7794
  "InputGroup",
7795
+ "JsonDisplay",
6679
7796
  "Label",
6680
7797
  "LayerCard",
6681
7798
  "Link",
7799
+ "LinkChip",
7800
+ "LinksDisplay",
6682
7801
  "Loader",
6683
7802
  "MenuBar",
7803
+ "MenuItem",
6684
7804
  "Meter",
7805
+ "NotificationCounter",
7806
+ "OverflowingText",
6685
7807
  "Pagination",
7808
+ "PhonesDisplay",
7809
+ "Pill",
6686
7810
  "Popover",
6687
7811
  "Radio",
7812
+ "Rating",
7813
+ "RecordBoard",
6688
7814
  "Select",
6689
7815
  "SensitiveInput",
6690
7816
  "Sidebar",
7817
+ "Status",
6691
7818
  "Surface",
6692
7819
  "Switch",
6693
7820
  "Table",
6694
7821
  "TableOfContents",
6695
7822
  "Tabs",
7823
+ "Tag",
6696
7824
  "Text",
6697
7825
  "Toasty",
6698
7826
  "Tooltip"