@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
@@ -2,6 +2,106 @@
2
2
 
3
3
  > Auto-generated component metadata for AI/agent consumption.
4
4
 
5
+ ---
6
+
7
+ ### ActorDisplay
8
+
9
+ Renders an `actor` / created-by / owned-by value as an avatar followed by a name. Use for record authorship and assignee cells.
10
+
11
+ **Type:** component
12
+
13
+ **Import:** `import { ActorDisplay } from "@cloudraker/reki";`
14
+
15
+ **Category:** Other
16
+
17
+ **Props:**
18
+
19
+ - `name`: string (required)
20
+ Display name of the actor (workspace member, system, or API).
21
+ - `avatarUrl`: string | null
22
+ Avatar image URL. Falls back to the name's initial when absent.
23
+ - `avatarSize`: enum
24
+ Avatar size.
25
+ - `className`: string
26
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
27
+
28
+ **Colors (reki tokens used):**
29
+
30
+ `text-reki-default`
31
+
32
+ **Examples:**
33
+
34
+ ```tsx
35
+ <TooltipProvider>
36
+ <ActorDisplay name="Jane Doe" />
37
+ </TooltipProvider>
38
+ ```
39
+
40
+ ```tsx
41
+ <TooltipProvider>
42
+ <ActorDisplay name="Jane Doe" avatarUrl="https://i.pravatar.cc/40?img=5" />
43
+ </TooltipProvider>
44
+ ```
45
+
46
+
47
+ ---
48
+
49
+ ### AddressInput
50
+
51
+ 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.
52
+
53
+ **Type:** component
54
+
55
+ **Import:** `import { AddressInput } from "@cloudraker/reki";`
56
+
57
+ **Category:** Other
58
+
59
+ **Props:**
60
+
61
+ - `value`: AddressValue (required)
62
+ Current address value.
63
+ - `disabled`: boolean
64
+ Disables all fields.
65
+ - `className`: string
66
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
67
+
68
+ **Examples:**
69
+
70
+ ```tsx
71
+ <AddressInput value={value} onChange={setValue} />
72
+ ```
73
+
74
+
75
+ ---
76
+
77
+ ### ArrayDisplay
78
+
79
+ 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.
80
+
81
+ **Type:** component
82
+
83
+ **Import:** `import { ArrayDisplay } from "@cloudraker/reki";`
84
+
85
+ **Category:** Other
86
+
87
+ **Props:**
88
+
89
+ - `values`: string[] (required)
90
+ String values to render as chips.
91
+ - `className`: string
92
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
93
+
94
+ **Examples:**
95
+
96
+ ```tsx
97
+ <TooltipProvider>
98
+ <div className="w-48">
99
+ <ArrayDisplay values={["alpha", "beta", "gamma", "delta"]} max={2} />
100
+ </div>
101
+ </TooltipProvider>
102
+ ```
103
+
104
+
5
105
  ---
6
106
 
7
107
  ### Autocomplete
@@ -258,6 +358,103 @@ Collection sub-component (wraps AutocompleteBase)
258
358
  ```
259
359
 
260
360
 
361
+ ---
362
+
363
+ ### Avatar
364
+
365
+ 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.
366
+
367
+ **Type:** component
368
+
369
+ **Import:** `import { Avatar } from "@cloudraker/reki";`
370
+
371
+ **Category:** Other
372
+
373
+ **Props:**
374
+
375
+ - `initials`: string
376
+ Up to ~2 characters shown when there is no image.
377
+ - `alt`: string
378
+ Accessible name / image alt text.
379
+ - `size`: enum [default: base]
380
+ - `"xs"`: Extra small
381
+ - `"sm"`: Small
382
+ - `"base"`: Default
383
+ - `"lg"`: Large
384
+ - `"xl"`: Extra large
385
+ - `shape`: enum [default: circle]
386
+ - `"circle"`: Round avatar
387
+ - `"square"`: Rounded square avatar
388
+ - `className`: string
389
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
390
+
391
+ **Colors (reki tokens used):**
392
+
393
+ `bg-reki-fill`
394
+
395
+ **Examples:**
396
+
397
+ ```tsx
398
+ <div className="flex items-center gap-2">
399
+ <Avatar initials="XS" size="xs" />
400
+ <Avatar initials="SM" size="sm" />
401
+ <Avatar initials="MD" size="base" />
402
+ <Avatar initials="LG" size="lg" />
403
+ <Avatar initials="XL" size="xl" />
404
+ </div>
405
+ ```
406
+
407
+ ```tsx
408
+ <div className="flex items-center gap-2">
409
+ <Avatar initials="JD" shape="circle" />
410
+ <Avatar initials="JD" shape="square" />
411
+ </div>
412
+ ```
413
+
414
+ ```tsx
415
+ <Avatar
416
+ src="https://i.pravatar.cc/80?img=12"
417
+ alt="Jane Doe"
418
+ size="lg"
419
+ />
420
+ ```
421
+
422
+
423
+ ---
424
+
425
+ ### AvatarGroup
426
+
427
+ Overlapping stack of avatars for assignees / participants. Shows up to `max` avatars and a `+N` counter for the remainder.
428
+
429
+ **Type:** component
430
+
431
+ **Import:** `import { AvatarGroup } from "@cloudraker/reki";`
432
+
433
+ **Category:** Other
434
+
435
+ **Props:**
436
+
437
+ - `avatars`: ReactNode[] (required)
438
+ Avatar nodes to stack (typically reki `Avatar` elements).
439
+ - `className`: string
440
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
441
+
442
+ **Colors (reki tokens used):**
443
+
444
+ `bg-reki-fill`, `ring-reki-base`, `text-reki-subtle`
445
+
446
+ **Examples:**
447
+
448
+ ```tsx
449
+ <AvatarGroup
450
+ max={4}
451
+ avatars={members.map((initials) => (
452
+ <Avatar key={initials} initials={initials} size="sm" />
453
+ ))}
454
+ />
455
+ ```
456
+
457
+
261
458
  ---
262
459
 
263
460
  ### Badge
@@ -901,6 +1098,126 @@ Props:
901
1098
  ```
902
1099
 
903
1100
 
1101
+ ---
1102
+
1103
+ ### Chip
1104
+
1105
+ 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}.
1106
+
1107
+ **Type:** component
1108
+
1109
+ **Import:** `import { Chip } from "@cloudraker/reki";`
1110
+
1111
+ **Category:** Other
1112
+
1113
+ **Props:**
1114
+
1115
+ - `label`: string (required)
1116
+ Text label (truncated with a tooltip on overflow).
1117
+ - `tooltipLabel`: string
1118
+ Tooltip content shown when the label overflows. Defaults to `label`.
1119
+ - `variant`: enum [default: regular]
1120
+ Visual variant.
1121
+ - `size`: enum [default: small]
1122
+ Size of the chip.
1123
+ - `accent`: enum [default: primary]
1124
+ Text emphasis. `"secondary"` renders muted, medium-weight text.
1125
+ - `isBold`: boolean
1126
+ Renders the label in a medium font weight.
1127
+ - `leftComponent`: ReactNode
1128
+ Node rendered before the label (e.g. an avatar or icon).
1129
+ - `rightComponent`: ReactNode
1130
+ Node rendered after the label (e.g. a remove button or count).
1131
+ - `disabled`: boolean
1132
+ Disables the chip and dims it.
1133
+ - `className`: string
1134
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
1135
+
1136
+ **Colors (reki tokens used):**
1137
+
1138
+ `bg-reki-base`, `bg-reki-fill`, `ring-reki-hairline`, `text-reki-default`, `text-reki-subtle`
1139
+
1140
+ **Examples:**
1141
+
1142
+ ```tsx
1143
+ <div className="flex flex-wrap items-center gap-2">
1144
+ <Chip label="Regular" variant="regular" />
1145
+ <Chip label="Highlighted" variant="highlighted" />
1146
+ <Chip label="Transparent" variant="transparent" />
1147
+ <Chip label="Static" variant="static" />
1148
+ </div>
1149
+ ```
1150
+
1151
+ ```tsx
1152
+ <div className="flex items-center gap-2">
1153
+ <Chip label="Small" size="small" />
1154
+ <Chip label="Large" size="large" />
1155
+ </div>
1156
+ ```
1157
+
1158
+ ```tsx
1159
+ <div className="flex flex-wrap items-center gap-2">
1160
+ <Chip
1161
+ label="Acme Inc."
1162
+ leftComponent={<BuildingsIcon className="size-3.5" />}
1163
+ />
1164
+ <Chip
1165
+ label="Removable"
1166
+ rightComponent={<XIcon className="size-3" />}
1167
+ onClick={() => {}}
1168
+ />
1169
+ </div>
1170
+ ```
1171
+
1172
+ ```tsx
1173
+ <Chip label="Disabled" onClick={() => {}} disabled />
1174
+ ```
1175
+
1176
+ ```tsx
1177
+ <TooltipProvider>
1178
+ <div className="w-32">
1179
+ <Chip label="A very long related record name that truncates" />
1180
+ </div>
1181
+ </TooltipProvider>
1182
+ ```
1183
+
1184
+
1185
+ ---
1186
+
1187
+ ### CircularProgressBar
1188
+
1189
+ 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`.
1190
+
1191
+ **Type:** component
1192
+
1193
+ **Import:** `import { CircularProgressBar } from "@cloudraker/reki";`
1194
+
1195
+ **Category:** Other
1196
+
1197
+ **Props:**
1198
+
1199
+ - `value`: number (required)
1200
+ Progress as a percentage (0–100).
1201
+ - `size`: number
1202
+ Diameter in pixels.
1203
+ - `barWidth`: number
1204
+ Stroke width in pixels.
1205
+ - `label`: string
1206
+ Accessible label.
1207
+ - `className`: string
1208
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
1209
+
1210
+ **Examples:**
1211
+
1212
+ ```tsx
1213
+ <div className="flex items-center gap-4">
1214
+ <CircularProgressBar value={25} />
1215
+ <CircularProgressBar value={60} />
1216
+ <CircularProgressBar value={100} />
1217
+ </div>
1218
+ ```
1219
+
1220
+
904
1221
  ---
905
1222
 
906
1223
  ### ClipboardText
@@ -1611,6 +1928,63 @@ Props:
1611
1928
  ```
1612
1929
 
1613
1930
 
1931
+ ---
1932
+
1933
+ ### ColorSample
1934
+
1935
+ 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.
1936
+
1937
+ **Type:** component
1938
+
1939
+ **Import:** `import { ColorSample } from "@cloudraker/reki";`
1940
+
1941
+ **Category:** Other
1942
+
1943
+ **Props:**
1944
+
1945
+ - `colorName`: enum (required)
1946
+ Named CRM tag color to display.
1947
+ - `variant`: enum [default: default]
1948
+ - `"default"`: Rounded square (default)
1949
+ - `"circle"`: Circle
1950
+ - `"pipeline"`: Wide pipeline bar
1951
+ - `className`: string
1952
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
1953
+
1954
+ **Colors (reki tokens used):**
1955
+
1956
+ `ring-reki-hairline`
1957
+
1958
+ **Examples:**
1959
+
1960
+ ```tsx
1961
+ <div className="flex flex-wrap items-center gap-2">
1962
+ {TAG_COLOR_NAMES.map((color) => (
1963
+ <ColorSample key={color} colorName={color} />
1964
+ ))}
1965
+ </div>
1966
+ ```
1967
+
1968
+ ```tsx
1969
+ <div className="flex items-center gap-3">
1970
+ <ColorSample colorName="blue" variant="default" />
1971
+ <ColorSample colorName="blue" variant="circle" />
1972
+ <ColorSample colorName="blue" variant="pipeline" />
1973
+ </div>
1974
+ ```
1975
+
1976
+ ```tsx
1977
+ <div className="flex w-48 flex-col gap-1">
1978
+ {(["green", "orange", "red"] as const).map((color) => (
1979
+ <div key={color} className="flex items-center gap-2">
1980
+ <ColorSample colorName={color} variant="circle" />
1981
+ <span className="text-sm capitalize text-reki-default">{color}</span>
1982
+ </div>
1983
+ ))}
1984
+ </div>
1985
+ ```
1986
+
1987
+
1614
1988
  ---
1615
1989
 
1616
1990
  ### Combobox
@@ -2420,6 +2794,57 @@ CommandPalette — accessible command palette / spotlight search overlay.
2420
2794
  ```
2421
2795
 
2422
2796
 
2797
+ ---
2798
+
2799
+ ### DataGrid
2800
+
2801
+ DataGrid component
2802
+
2803
+ **Type:** component
2804
+
2805
+ **Import:** `import { DataGrid } from "@cloudraker/reki";`
2806
+
2807
+ **Category:** Other
2808
+
2809
+ **Props:**
2810
+
2811
+ - `kind`: enum (required)
2812
+ - `initialValue`: unknown (required)
2813
+ - `initialKey`: string
2814
+ - `align`: enum (required)
2815
+
2816
+ **Colors (reki tokens used):**
2817
+
2818
+ `bg-reki-base`, `bg-reki-canvas`, `bg-reki-fill`, `border-reki-hairline`, `outline-reki-brand`, `outline-reki-hairline`, `text-reki-default`, `text-reki-subtle`
2819
+
2820
+ **Examples:**
2821
+
2822
+ ```tsx
2823
+ <TooltipProvider>
2824
+ <div className="w-[720px]">
2825
+ <DataGrid
2826
+ data={rows}
2827
+ columns={columns}
2828
+ getRowId={(r) => r.id}
2829
+ height={360}
2830
+ enableRowSelection
2831
+ selectedRowIds={selected}
2832
+ onSelectedRowIdsChange={setSelected}
2833
+ onCommitCell={({ rowId, columnId, value }) =>
2834
+ setRows((rs) =>
2835
+ rs.map((r) => (r.id === rowId ? { ...r, [columnId]: value } : r)),
2836
+ )
2837
+ }
2838
+ />
2839
+ <p className="mt-2 text-xs text-reki-subtle">
2840
+ 500 rows (virtualized) · {selected.length} selected · double-click
2841
+ Amount/Owner to edit
2842
+ </p>
2843
+ </div>
2844
+ </TooltipProvider>
2845
+ ```
2846
+
2847
+
2423
2848
  ---
2424
2849
 
2425
2850
  ### DatePicker
@@ -3024,6 +3449,45 @@ Close sub-component
3024
3449
  ```
3025
3450
 
3026
3451
 
3452
+ ---
3453
+
3454
+ ### DoubleTextInput
3455
+
3456
+ Two side-by-side text inputs that edit a single composite value — full names (first / last) and other paired fields.
3457
+
3458
+ **Type:** component
3459
+
3460
+ **Import:** `import { DoubleTextInput } from "@cloudraker/reki";`
3461
+
3462
+ **Category:** Other
3463
+
3464
+ **Props:**
3465
+
3466
+ - `value`: DoubleTextValue (required)
3467
+ Current paired value.
3468
+ - `firstPlaceholder`: string
3469
+ Placeholder for the first input.
3470
+ - `secondPlaceholder`: string
3471
+ Placeholder for the second input.
3472
+ - `disabled`: boolean
3473
+ Disables both inputs.
3474
+ - `className`: string
3475
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
3476
+
3477
+ **Examples:**
3478
+
3479
+ ```tsx
3480
+ <div className="w-72">
3481
+ <DoubleTextInput
3482
+ value={value}
3483
+ onChange={setValue}
3484
+ firstPlaceholder="First name"
3485
+ secondPlaceholder="Last name"
3486
+ />
3487
+ </div>
3488
+ ```
3489
+
3490
+
3027
3491
  ---
3028
3492
 
3029
3493
  ### DropdownMenu
@@ -3356,6 +3820,39 @@ Group sub-component (wraps DropdownMenuPrimitive)
3356
3820
  ```
3357
3821
 
3358
3822
 
3823
+ ---
3824
+
3825
+ ### EmailsDisplay
3826
+
3827
+ 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.
3828
+
3829
+ **Type:** component
3830
+
3831
+ **Import:** `import { EmailsDisplay } from "@cloudraker/reki";`
3832
+
3833
+ **Category:** Other
3834
+
3835
+ **Props:**
3836
+
3837
+ - `emails`: string[] (required)
3838
+ Email addresses, primary first.
3839
+ - `className`: string
3840
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
3841
+
3842
+ **Examples:**
3843
+
3844
+ ```tsx
3845
+ <TooltipProvider>
3846
+ <div className="w-56">
3847
+ <EmailsDisplay
3848
+ emails={["jane@acme.com", "j.doe@personal.com", "jane@old.com"]}
3849
+ max={1}
3850
+ />
3851
+ </div>
3852
+ </TooltipProvider>
3853
+ ```
3854
+
3855
+
3359
3856
  ---
3360
3857
 
3361
3858
  ### Empty
@@ -3477,6 +3974,45 @@ Placeholder shown when a list, table, or page has no content to display.
3477
3974
  ```
3478
3975
 
3479
3976
 
3977
+ ---
3978
+
3979
+ ### ExpandableList
3980
+
3981
+ 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.
3982
+
3983
+ **Type:** component
3984
+
3985
+ **Import:** `import { ExpandableList } from "@cloudraker/reki";`
3986
+
3987
+ **Category:** Other
3988
+
3989
+ **Props:**
3990
+
3991
+ - `children`: ReactNode
3992
+ Items to render. The first `max` are shown inline; the rest collapse into a `+N` chip.
3993
+ - `className`: string
3994
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
3995
+
3996
+ **Colors (reki tokens used):**
3997
+
3998
+ `bg-reki-fill`, `text-reki-subtle`
3999
+
4000
+ **Examples:**
4001
+
4002
+ ```tsx
4003
+ <TooltipProvider>
4004
+ <div className="w-48">
4005
+ <ExpandableList max={2}>
4006
+ <Tag color="blue" text="Engineering" />
4007
+ <Tag color="green" text="Sales" />
4008
+ <Tag color="orange" text="Support" />
4009
+ <Tag color="purple" text="Finance" />
4010
+ </ExpandableList>
4011
+ </div>
4012
+ </TooltipProvider>
4013
+ ```
4014
+
4015
+
3480
4016
  ---
3481
4017
 
3482
4018
  ### Field
@@ -4349,6 +4885,40 @@ Description sub-component
4349
4885
  ```
4350
4886
 
4351
4887
 
4888
+ ---
4889
+
4890
+ ### JsonDisplay
4891
+
4892
+ 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.
4893
+
4894
+ **Type:** component
4895
+
4896
+ **Import:** `import { JsonDisplay } from "@cloudraker/reki";`
4897
+
4898
+ **Category:** Other
4899
+
4900
+ **Props:**
4901
+
4902
+ - `value`: unknown (required)
4903
+ Value to render. Objects/arrays are stringified; strings are shown as-is.
4904
+ - `className`: string
4905
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
4906
+
4907
+ **Colors (reki tokens used):**
4908
+
4909
+ `text-reki-subtle`
4910
+
4911
+ **Examples:**
4912
+
4913
+ ```tsx
4914
+ <TooltipProvider>
4915
+ <div className="w-56 rounded-md border border-reki-fill p-2">
4916
+ <JsonDisplay value={{ status: "ok", count: 3, nested: { a: 1 } }} />
4917
+ </div>
4918
+ </TooltipProvider>
4919
+ ```
4920
+
4921
+
4352
4922
  ---
4353
4923
 
4354
4924
  ### Label
@@ -4653,6 +5223,103 @@ ExternalIcon sub-component
4653
5223
  ```
4654
5224
 
4655
5225
 
5226
+ ---
5227
+
5228
+ ### LinkChip
5229
+
5230
+ 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.
5231
+
5232
+ **Type:** component
5233
+
5234
+ **Import:** `import { LinkChip } from "@cloudraker/reki";`
5235
+
5236
+ **Category:** Other
5237
+
5238
+ **Props:**
5239
+
5240
+ - `label`: string (required)
5241
+ Text label (truncated with a tooltip on overflow).
5242
+ - `href`: string (required)
5243
+ Destination href. Resolved through the configured `LinkProvider`.
5244
+ - `tooltipLabel`: string
5245
+ Tooltip content shown when the label overflows. Defaults to `label`.
5246
+ - `size`: enum
5247
+ Size of the chip.
5248
+ - `accent`: enum
5249
+ Text emphasis.
5250
+ - `isBold`: boolean
5251
+ Renders the label in a medium font weight.
5252
+ - `leftComponent`: ReactNode
5253
+ Node rendered before the label (e.g. an avatar or icon).
5254
+ - `rightComponent`: ReactNode
5255
+ Node rendered after the label.
5256
+ - `target`: string
5257
+ Opens the link in a new tab.
5258
+ - `className`: string
5259
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
5260
+
5261
+ **Colors (reki tokens used):**
5262
+
5263
+ `bg-reki-fill`, `text-reki-subtle`
5264
+
5265
+ **Examples:**
5266
+
5267
+ ```tsx
5268
+ <LinkChip label="Acme Inc." href="/companies/acme" />
5269
+ ```
5270
+
5271
+ ```tsx
5272
+ <LinkChip
5273
+ label="Acme Inc."
5274
+ href="/companies/acme"
5275
+ leftComponent={<BuildingsIcon className="size-3.5" />}
5276
+ />
5277
+ ```
5278
+
5279
+ ```tsx
5280
+ <div className="flex items-center gap-2">
5281
+ <LinkChip label="Small" href="#" size="small" />
5282
+ <LinkChip label="Large" href="#" size="large" />
5283
+ </div>
5284
+ ```
5285
+
5286
+
5287
+ ---
5288
+
5289
+ ### LinksDisplay
5290
+
5291
+ 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.
5292
+
5293
+ **Type:** component
5294
+
5295
+ **Import:** `import { LinksDisplay } from "@cloudraker/reki";`
5296
+
5297
+ **Category:** Other
5298
+
5299
+ **Props:**
5300
+
5301
+ - `links`: LinkValue[] (required)
5302
+ Links to render, primary first.
5303
+ - `className`: string
5304
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
5305
+
5306
+ **Examples:**
5307
+
5308
+ ```tsx
5309
+ <TooltipProvider>
5310
+ <div className="w-56">
5311
+ <LinksDisplay
5312
+ links={[
5313
+ { url: "https://acme.com", label: "acme.com" },
5314
+ { url: "https://docs.acme.com", label: "docs.acme.com" },
5315
+ ]}
5316
+ max={1}
5317
+ />
5318
+ </div>
5319
+ </TooltipProvider>
5320
+ ```
5321
+
5322
+
4656
5323
  ---
4657
5324
 
4658
5325
  ### Loader
@@ -4723,27 +5390,113 @@ MenuBar — horizontal icon-button toolbar with keyboard arrow-key navigation.
4723
5390
  **Styling:**
4724
5391
 
4725
5392
 
4726
- **Examples:**
5393
+ **Examples:**
5394
+
5395
+ ```tsx
5396
+ <MenuBar
5397
+ isActive={active}
5398
+ optionIds
5399
+ options={[
5400
+ {
5401
+ icon: <TextBolderIcon />,
5402
+ id: "bold",
5403
+ tooltip: "Bold",
5404
+ onClick: () => setActive(active === "bold" ? undefined : "bold"),
5405
+ },
5406
+ {
5407
+ icon: <TextItalicIcon />,
5408
+ id: "italic",
5409
+ tooltip: "Italic",
5410
+ onClick: () => setActive(active === "italic" ? undefined : "italic"),
5411
+ },
5412
+ ]}
5413
+ />
5414
+ ```
5415
+
5416
+
5417
+ ---
5418
+
5419
+ ### MenuItem
5420
+
5421
+ 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}.
5422
+
5423
+ **Type:** component
5424
+
5425
+ **Import:** `import { MenuItem } from "@cloudraker/reki";`
5426
+
5427
+ **Category:** Other
5428
+
5429
+ **Props:**
5430
+
5431
+ - `text`: string (required)
5432
+ Row label.
5433
+ - `LeftIcon`: IconType
5434
+ Optional leading icon.
5435
+ - `leftComponent`: ReactNode
5436
+ Optional leading element (avatar, color sample, …) shown before the text.
5437
+ - `rightComponent`: ReactNode
5438
+ Optional trailing element shown after the text.
5439
+ - `selected`: boolean
5440
+ Shows a trailing check mark when true.
5441
+ - `focused`: boolean
5442
+ Keyboard-focused / active styling.
5443
+ - `disabled`: boolean
5444
+ Disables the row.
5445
+ - `className`: string
5446
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
5447
+
5448
+ **Colors (reki tokens used):**
5449
+
5450
+ `bg-reki-brand`, `bg-reki-fill`, `ring-reki-brand`, `ring-reki-hairline`, `text-reki-default`, `text-reki-inverse`, `text-reki-subtle`
5451
+
5452
+ **Examples:**
5453
+
5454
+ ```tsx
5455
+ <LayerCard className="w-56 p-1">
5456
+ <MenuItem text="Rename" LeftIcon={PencilIcon} />
5457
+ <MenuItem text="Delete" LeftIcon={TrashIcon} />
5458
+ </LayerCard>
5459
+ ```
5460
+
5461
+ ```tsx
5462
+ <LayerCard className="w-56 p-1">
5463
+ {["low", "medium", "high"].map((option) => (
5464
+ <MenuItemSelect
5465
+ key={option}
5466
+ text={option}
5467
+ selected={value === option}
5468
+ onClick={() => setValue(option)}
5469
+ />
5470
+ ))}
5471
+ </LayerCard>
5472
+ ```
5473
+
5474
+ ```tsx
5475
+ <LayerCard className="w-56 p-1">
5476
+ {["sales", "marketing", "support"].map((option) => (
5477
+ <MenuItemMultiSelect
5478
+ key={option}
5479
+ text={option}
5480
+ selected={selected.includes(option)}
5481
+ onSelectChange={() => toggle(option)}
5482
+ />
5483
+ ))}
5484
+ </LayerCard>
5485
+ ```
5486
+
5487
+ ```tsx
5488
+ <LayerCard className="w-56 p-1">
5489
+ <MenuItemSelectColor text="Green" color="green" selected />
5490
+ <MenuItemSelectColor text="Blue" color="blue" />
5491
+ <MenuItemSelectColor text="Purple" color="purple" />
5492
+ </LayerCard>
5493
+ ```
4727
5494
 
4728
5495
  ```tsx
4729
- <MenuBar
4730
- isActive={active}
4731
- optionIds
4732
- options={[
4733
- {
4734
- icon: <TextBolderIcon />,
4735
- id: "bold",
4736
- tooltip: "Bold",
4737
- onClick: () => setActive(active === "bold" ? undefined : "bold"),
4738
- },
4739
- {
4740
- icon: <TextItalicIcon />,
4741
- id: "italic",
4742
- tooltip: "Italic",
4743
- onClick: () => setActive(active === "italic" ? undefined : "italic"),
4744
- },
4745
- ]}
4746
- />
5496
+ <LayerCard className="w-56 p-1">
5497
+ <MenuItemAvatar text="Jane Doe" avatarInitials="JD" selected />
5498
+ <MenuItemAvatar text="John Smith" avatarInitials="JS" />
5499
+ </LayerCard>
4747
5500
  ```
4748
5501
 
4749
5502
 
@@ -4805,6 +5558,90 @@ Progress bar showing a measured value within a known range (e.g. quota usage).
4805
5558
  ```
4806
5559
 
4807
5560
 
5561
+ ---
5562
+
5563
+ ### NotificationCounter
5564
+
5565
+ A small numeric badge for unread/pending counts on icons and nav items.
5566
+
5567
+ **Type:** component
5568
+
5569
+ **Import:** `import { NotificationCounter } from "@cloudraker/reki";`
5570
+
5571
+ **Category:** Other
5572
+
5573
+ **Props:**
5574
+
5575
+ - `count`: number (required)
5576
+ Number to display. Values above `max` render as `{max}+`.
5577
+ - `variant`: enum [default: primary]
5578
+ - `"primary"`: Brand background (default)
5579
+ - `"secondary"`: Neutral fill
5580
+ - `className`: string
5581
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
5582
+
5583
+ **Colors (reki tokens used):**
5584
+
5585
+ `bg-reki-brand`, `bg-reki-fill`, `text-reki-default`, `text-reki-inverse`
5586
+
5587
+ **Examples:**
5588
+
5589
+ ```tsx
5590
+ <div className="flex items-center gap-3">
5591
+ <NotificationCounter count={3} />
5592
+ <NotificationCounter count={12} variant="secondary" />
5593
+ <NotificationCounter count={150} max={99} />
5594
+ </div>
5595
+ ```
5596
+
5597
+
5598
+ ---
5599
+
5600
+ ### OverflowingText
5601
+
5602
+ 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.
5603
+
5604
+ **Type:** component
5605
+
5606
+ **Import:** `import { OverflowingText } from "@cloudraker/reki";`
5607
+
5608
+ **Category:** Other
5609
+
5610
+ **Props:**
5611
+
5612
+ - `text`: string (required)
5613
+ Text to render, truncated when it overflows its container.
5614
+ - `tooltipContent`: ReactNode
5615
+ Tooltip content shown when the text overflows. Defaults to `text`. Provide a custom node to show richer content than the raw string.
5616
+ - `lines`: number
5617
+ Maximum number of lines before clamping. `1` (default) truncates to a single line with an ellipsis; higher values clamp to that many lines.
5618
+ - `alwaysShowTooltip`: boolean
5619
+ Always show the tooltip on hover, even when the text is not overflowing.
5620
+ - `className`: string
5621
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
5622
+
5623
+ **Examples:**
5624
+
5625
+ ```tsx
5626
+ <TooltipProvider>
5627
+ <div className="w-40 rounded-md border border-reki-fill p-2">
5628
+ <OverflowingText text="This label is far too long to fit in its container — hover to see the full value in a tooltip." />
5629
+ </div>
5630
+ </TooltipProvider>
5631
+ ```
5632
+
5633
+ ```tsx
5634
+ <TooltipProvider>
5635
+ <div className="w-40 rounded-md border border-reki-fill p-2">
5636
+ <OverflowingText
5637
+ lines={2}
5638
+ text="A longer description that wraps onto two lines before it clamps with an ellipsis and reveals the rest on hover."
5639
+ />
5640
+ </div>
5641
+ </TooltipProvider>
5642
+ ```
5643
+
5644
+
4808
5645
  ---
4809
5646
 
4810
5647
  ### Pagination
@@ -5032,6 +5869,74 @@ Props:
5032
5869
  ```
5033
5870
 
5034
5871
 
5872
+ ---
5873
+
5874
+ ### PhonesDisplay
5875
+
5876
+ 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.
5877
+
5878
+ **Type:** component
5879
+
5880
+ **Import:** `import { PhonesDisplay } from "@cloudraker/reki";`
5881
+
5882
+ **Category:** Other
5883
+
5884
+ **Props:**
5885
+
5886
+ - `phones`: string[] (required)
5887
+ Pre-formatted phone numbers, primary first.
5888
+ - `className`: string
5889
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
5890
+
5891
+ **Examples:**
5892
+
5893
+ ```tsx
5894
+ <TooltipProvider>
5895
+ <div className="w-56">
5896
+ <PhonesDisplay
5897
+ phones={["+1 415 555 0100", "+44 20 7946 0000"]}
5898
+ max={1}
5899
+ />
5900
+ </div>
5901
+ </TooltipProvider>
5902
+ ```
5903
+
5904
+
5905
+ ---
5906
+
5907
+ ### Pill
5908
+
5909
+ A tiny static label for inline annotations (counts, flags, hints). Smaller and quieter than {@link Tag} or {@link Badge}; not interactive.
5910
+
5911
+ **Type:** component
5912
+
5913
+ **Import:** `import { Pill } from "@cloudraker/reki";`
5914
+
5915
+ **Category:** Other
5916
+
5917
+ **Props:**
5918
+
5919
+ - `label`: string (required)
5920
+ Text label.
5921
+ - `icon`: React.ComponentType<React.SVGProps<SVGSVGElement>>
5922
+ Optional leading icon (phosphor or any SVG component).
5923
+ - `className`: string
5924
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
5925
+
5926
+ **Colors (reki tokens used):**
5927
+
5928
+ `bg-reki-fill`, `text-reki-subtle`
5929
+
5930
+ **Examples:**
5931
+
5932
+ ```tsx
5933
+ <div className="flex items-center gap-2">
5934
+ <Pill label="3 records" />
5935
+ <Pill label="Beta" icon={SparkleIcon} />
5936
+ </div>
5937
+ ```
5938
+
5939
+
5035
5940
  ---
5036
5941
 
5037
5942
  ### Popover
@@ -5633,6 +6538,97 @@ Props:
5633
6538
  ```
5634
6539
 
5635
6540
 
6541
+ ---
6542
+
6543
+ ### Rating
6544
+
6545
+ 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).
6546
+
6547
+ **Type:** component
6548
+
6549
+ **Import:** `import { Rating } from "@cloudraker/reki";`
6550
+
6551
+ **Category:** Other
6552
+
6553
+ **Props:**
6554
+
6555
+ - `value`: number | null (required)
6556
+ Current rating (1..max), or `null` for unrated.
6557
+ - `readonly`: boolean
6558
+ Renders as read-only (no hover/click).
6559
+ - `className`: string
6560
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
6561
+
6562
+ **Colors (reki tokens used):**
6563
+
6564
+ `text-reki-default`, `text-reki-inactive`
6565
+
6566
+ **Examples:**
6567
+
6568
+ ```tsx
6569
+ <div className="flex flex-col gap-1">
6570
+ <Rating value={1} readonly />
6571
+ <Rating value={3} readonly />
6572
+ <Rating value={5} readonly />
6573
+ </div>
6574
+ ```
6575
+
6576
+ ```tsx
6577
+ <Rating value={value} onChange={setValue} />
6578
+ ```
6579
+
6580
+
6581
+ ---
6582
+
6583
+ ### RecordBoard
6584
+
6585
+ RecordBoard component
6586
+
6587
+ **Type:** component
6588
+
6589
+ **Import:** `import { RecordBoard } from "@cloudraker/reki";`
6590
+
6591
+ **Category:** Other
6592
+
6593
+ **Props:**
6594
+
6595
+ - `className`: string
6596
+ Additional CSS classes
6597
+ - `children`: ReactNode
6598
+ Child elements
6599
+
6600
+ **Colors (reki tokens used):**
6601
+
6602
+ `bg-reki-base`, `bg-reki-recessed`, `ring-reki-hairline`, `text-reki-default`, `text-reki-subtle`
6603
+
6604
+ **Examples:**
6605
+
6606
+ ```tsx
6607
+ <div className="h-[420px] w-[760px]">
6608
+ <RecordBoard
6609
+ columns={STAGES}
6610
+ records={opps}
6611
+ getRecordId={(o) => o.id}
6612
+ getColumnId={(o) => o.stage}
6613
+ onMove={({ recordId, toColumnId }) =>
6614
+ setOpps((rs) =>
6615
+ rs.map((o) => (o.id === recordId ? { ...o, stage: toColumnId } : o)),
6616
+ )
6617
+ }
6618
+ renderCard={(o) => (
6619
+ <div className="flex flex-col gap-1.5">
6620
+ <span className="text-sm font-medium text-reki-default">{o.name}</span>
6621
+ <div className="flex items-center justify-between">
6622
+ <Tag color="gray" text={`$${o.amount.toLocaleString()}`} />
6623
+ <Avatar initials={o.owner} size="xs" />
6624
+ </div>
6625
+ </div>
6626
+ )}
6627
+ />
6628
+ </div>
6629
+ ```
6630
+
6631
+
5636
6632
  ---
5637
6633
 
5638
6634
  ### Select
@@ -6967,6 +7963,55 @@ Props:
6967
7963
  ```
6968
7964
 
6969
7965
 
7966
+ ---
7967
+
7968
+ ### Status
7969
+
7970
+ 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.
7971
+
7972
+ **Type:** component
7973
+
7974
+ **Import:** `import { Status } from "@cloudraker/reki";`
7975
+
7976
+ **Category:** Other
7977
+
7978
+ **Props:**
7979
+
7980
+ - `text`: string (required)
7981
+ Status label text.
7982
+ - `isLoaderVisible`: boolean
7983
+ Shows an inline loader after the text (e.g. while a transition runs).
7984
+ - `weight`: enum [default: regular]
7985
+ - `"regular"`: Regular weight
7986
+ - `"medium"`: Medium weight
7987
+ - `className`: string
7988
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
7989
+
7990
+ **Colors (reki tokens used):**
7991
+
7992
+ `text-reki-subtle`
7993
+
7994
+ **Examples:**
7995
+
7996
+ ```tsx
7997
+ <div className="flex flex-wrap items-center gap-2">
7998
+ <Status color="green" text="Active" />
7999
+ <Status color="gray" text="Inactive" />
8000
+ <Status color="red" text="Blocked" />
8001
+ <Status color="blue" text="In progress" />
8002
+ <Status color="purple" text="Review" />
8003
+ </div>
8004
+ ```
8005
+
8006
+ ```tsx
8007
+ <Status color="orange" text="Syncing" isLoaderVisible />
8008
+ ```
8009
+
8010
+ ```tsx
8011
+ <Status color="green" text="Active" weight="medium" />
8012
+ ```
8013
+
8014
+
6970
8015
  ---
6971
8016
 
6972
8017
  ### Surface
@@ -7846,7 +8891,7 @@ Tab navigation component with segmented or underline style. Built on Base UI Tab
7846
8891
 
7847
8892
  **Colors (reki tokens used):**
7848
8893
 
7849
- `bg-reki-base`, `bg-reki-brand`, `bg-reki-recessed`, `bg-reki-tint`, `border-reki-hairline`, `ring-reki-brand`, `ring-reki-focus`, `ring-reki-hairline`, `ring-reki-line`, `text-reki-default`, `text-reki-subtle`
8894
+ `bg-reki-base`, `bg-reki-brand`, `bg-reki-tint`, `border-reki-hairline`, `ring-reki-brand`, `ring-reki-focus`, `ring-reki-line`, `text-reki-default`, `text-reki-subtle`
7850
8895
 
7851
8896
  **Styling:**
7852
8897
 
@@ -7970,12 +9015,15 @@ Tab navigation component with segmented or underline style. Built on Base UI Tab
7970
9015
  {
7971
9016
  value: "tab2",
7972
9017
  label: "Link Tab",
9018
+ // Anchor content is supplied by Tabs via the spread props at runtime.
9019
+ // oxlint-disable-next-line anchor-has-content
7973
9020
  render: (props) => <a {...props} href="#tab2" />,
7974
9021
  },
7975
9022
  {
7976
9023
  value: "tab3",
7977
9024
  label: "Cloudflare",
7978
9025
  render: (props) => (
9026
+ // oxlint-disable-next-line anchor-has-content
7979
9027
  <a {...props} href="https://cloudflare.com" target="_blank" />
7980
9028
  ),
7981
9029
  },
@@ -7985,6 +9033,76 @@ Tab navigation component with segmented or underline style. Built on Base UI Tab
7985
9033
  ```
7986
9034
 
7987
9035
 
9036
+ ---
9037
+
9038
+ ### Tag
9039
+
9040
+ 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.
9041
+
9042
+ **Type:** component
9043
+
9044
+ **Import:** `import { Tag } from "@cloudraker/reki";`
9045
+
9046
+ **Category:** Other
9047
+
9048
+ **Props:**
9049
+
9050
+ - `text`: string (required)
9051
+ Text label rendered inside the tag (truncated with a tooltip on overflow).
9052
+ - `icon`: React.ComponentType<React.SVGProps<SVGSVGElement>>
9053
+ Optional leading icon (phosphor or any SVG component).
9054
+ - `variant`: enum [default: solid]
9055
+ - `"solid"`: Subtle colored background (default)
9056
+ - `"outline"`: Transparent background with a colored ring
9057
+ - `"border"`: Subtle background with a matching ring
9058
+ - `weight`: enum [default: regular]
9059
+ - `"regular"`: Regular weight
9060
+ - `"medium"`: Medium weight
9061
+ - `preventShrink`: boolean
9062
+ Prevents the tag from shrinking inside flex containers.
9063
+ - `className`: string
9064
+ Additional CSS classes merged via `cn()`. Use reki semantic tokens only.
9065
+
9066
+ **Colors (reki tokens used):**
9067
+
9068
+ `bg-reki-tag-blue`, `bg-reki-tag-gray`, `bg-reki-tag-green`, `bg-reki-tag-orange`, `bg-reki-tag-pink`, `bg-reki-tag-purple`, `bg-reki-tag-red`, `bg-reki-tag-sky`, `bg-reki-tag-turquoise`, `bg-reki-tag-yellow`, `text-reki-subtle`, `text-reki-tag-blue`, `text-reki-tag-gray`, `text-reki-tag-green`, `text-reki-tag-orange`, `text-reki-tag-pink`, `text-reki-tag-purple`, `text-reki-tag-red`, `text-reki-tag-sky`, `text-reki-tag-turquoise`, `text-reki-tag-yellow`
9069
+
9070
+ **Examples:**
9071
+
9072
+ ```tsx
9073
+ <div className="flex flex-wrap items-center gap-2">
9074
+ {TAG_COLOR_NAMES.map((color) => (
9075
+ <Tag key={color} color={color} text={color} />
9076
+ ))}
9077
+ </div>
9078
+ ```
9079
+
9080
+ ```tsx
9081
+ <div className="flex flex-wrap items-center gap-2">
9082
+ <Tag color="blue" text="Solid" variant="solid" />
9083
+ <Tag color="blue" text="Outline" variant="outline" />
9084
+ <Tag color="blue" text="Border" variant="border" />
9085
+ </div>
9086
+ ```
9087
+
9088
+ ```tsx
9089
+ <div className="flex flex-wrap items-center gap-2">
9090
+ <Tag color="green" text="Active" icon={CircleIcon} />
9091
+ <Tag color="purple" text="Assigned" icon={UserIcon} />
9092
+ </div>
9093
+ ```
9094
+
9095
+ ```tsx
9096
+ <Tag color="transparent" text="No color" />
9097
+ ```
9098
+
9099
+ ```tsx
9100
+ <div className="w-32">
9101
+ <Tag color="orange" text="A very long tag label that will truncate" />
9102
+ </div>
9103
+ ```
9104
+
9105
+
7988
9106
  ---
7989
9107
 
7990
9108
  ### Text
@@ -8336,7 +9454,7 @@ Multi-line textarea input with Input variants and InputArea-specific dimensions
8336
9454
  ## Quick Reference
8337
9455
 
8338
9456
  **Components by Category:**
8339
- - **Other:** Autocomplete, CloudflareLogo, DatePicker, Label, Link, SensitiveInput, Sidebar, Table, TableOfContents, DeleteResource
9457
+ - **Other:** ActorDisplay, AddressInput, ArrayDisplay, Autocomplete, Avatar, AvatarGroup, Chip, CircularProgressBar, CloudflareLogo, ColorSample, DataGrid, DatePicker, DoubleTextInput, EmailsDisplay, ExpandableList, JsonDisplay, Label, Link, LinkChip, LinksDisplay, MenuItem, NotificationCounter, OverflowingText, PhonesDisplay, Pill, Rating, RecordBoard, SensitiveInput, Sidebar, Status, Table, TableOfContents, Tag, DeleteResource
8340
9458
  - **Display:** Badge, Breadcrumbs, Code, Collapsible, Empty, LayerCard, Meter, Text
8341
9459
  - **Feedback:** Banner, Loader, Toasty
8342
9460
  - **Action:** Button, ClipboardText