@cloudraker/reki 2.6.1 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +1 -1
  3. package/ai/component-registry.json +1271 -41
  4. package/ai/component-registry.md +1310 -34
  5. package/ai/schemas.ts +226 -2
  6. package/dist/.build-complete +1 -1
  7. package/dist/ai/schemas.d.ts +554 -5
  8. package/dist/ai/schemas.d.ts.map +1 -1
  9. package/dist/ai/schemas.js +1699 -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/timeline-lqurr2lcxkayomk2.js +109 -0
  122. package/dist/chunks/timeline-lqurr2lcxkayomk2.js.map +1 -0
  123. package/dist/chunks/{toast-ivr4097bstjcjotf.js → toast-j47dl441zpxa1yw3.js} +3 -3
  124. package/dist/chunks/{toast-ivr4097bstjcjotf.js.map → toast-j47dl441zpxa1yw3.js.map} +1 -1
  125. package/dist/chunks/{tooltip-ncaia8n1lavkyw8n.js → tooltip-bkgxuz77xzg5fooc.js} +2 -2
  126. package/dist/chunks/{tooltip-ncaia8n1lavkyw8n.js.map → tooltip-bkgxuz77xzg5fooc.js.map} +1 -1
  127. package/dist/chunks/{vendor-base-ui-bgl9g5nkvqy3tn36.js → vendor-base-ui-djdjrfuoxlb1lubi.js} +2358 -2358
  128. package/dist/chunks/{vendor-base-ui-bgl9g5nkvqy3tn36.js.map → vendor-base-ui-djdjrfuoxlb1lubi.js.map} +1 -1
  129. package/dist/code.js +1 -1
  130. package/dist/components/actor-display.js +6 -0
  131. package/dist/components/actor-display.js.map +1 -0
  132. package/dist/components/address-input.js +6 -0
  133. package/dist/components/address-input.js.map +1 -0
  134. package/dist/components/array-display.js +6 -0
  135. package/dist/components/array-display.js.map +1 -0
  136. package/dist/components/autocomplete.js +1 -1
  137. package/dist/components/avatar-group.js +6 -0
  138. package/dist/components/avatar-group.js.map +1 -0
  139. package/dist/components/avatar.js +6 -0
  140. package/dist/components/avatar.js.map +1 -0
  141. package/dist/components/breadcrumbs.js +1 -1
  142. package/dist/components/button.js +1 -1
  143. package/dist/components/chart.js +1 -1
  144. package/dist/components/checkbox.js +1 -1
  145. package/dist/components/chip.js +8 -0
  146. package/dist/components/chip.js.map +1 -0
  147. package/dist/components/circular-progress-bar.js +6 -0
  148. package/dist/components/circular-progress-bar.js.map +1 -0
  149. package/dist/components/clipboard-text.js +1 -1
  150. package/dist/components/collapsible.js +1 -1
  151. package/dist/components/color-sample.js +6 -0
  152. package/dist/components/color-sample.js.map +1 -0
  153. package/dist/components/combobox.js +1 -1
  154. package/dist/components/command-palette.js +1 -1
  155. package/dist/components/data-grid.js +8 -0
  156. package/dist/components/data-grid.js.map +1 -0
  157. package/dist/components/dialog.js +1 -1
  158. package/dist/components/double-text-input.js +6 -0
  159. package/dist/components/double-text-input.js.map +1 -0
  160. package/dist/components/dropdown.js +1 -1
  161. package/dist/components/emails-display.js +6 -0
  162. package/dist/components/emails-display.js.map +1 -0
  163. package/dist/components/empty.js +1 -1
  164. package/dist/components/expandable-list.js +6 -0
  165. package/dist/components/expandable-list.js.map +1 -0
  166. package/dist/components/field.js +1 -1
  167. package/dist/components/input-group.js +1 -1
  168. package/dist/components/input.js +3 -3
  169. package/dist/components/json-display.js +6 -0
  170. package/dist/components/json-display.js.map +1 -0
  171. package/dist/components/label.js +1 -1
  172. package/dist/components/layer-card.js +1 -1
  173. package/dist/components/link-chip.js +6 -0
  174. package/dist/components/link-chip.js.map +1 -0
  175. package/dist/components/link.js +1 -1
  176. package/dist/components/links-display.js +6 -0
  177. package/dist/components/links-display.js.map +1 -0
  178. package/dist/components/menu-item.js +11 -0
  179. package/dist/components/menu-item.js.map +1 -0
  180. package/dist/components/menubar.js +1 -1
  181. package/dist/components/meter.js +1 -1
  182. package/dist/components/notification-counter.js +6 -0
  183. package/dist/components/notification-counter.js.map +1 -0
  184. package/dist/components/overflowing-text.js +6 -0
  185. package/dist/components/overflowing-text.js.map +1 -0
  186. package/dist/components/pagination.js +1 -1
  187. package/dist/components/phones-display.js +6 -0
  188. package/dist/components/phones-display.js.map +1 -0
  189. package/dist/components/pill.js +6 -0
  190. package/dist/components/pill.js.map +1 -0
  191. package/dist/components/popover.js +1 -1
  192. package/dist/components/radio.js +1 -1
  193. package/dist/components/rating.js +6 -0
  194. package/dist/components/rating.js.map +1 -0
  195. package/dist/components/record-board.js +8 -0
  196. package/dist/components/record-board.js.map +1 -0
  197. package/dist/components/select.js +1 -1
  198. package/dist/components/sensitive-input.js +1 -1
  199. package/dist/components/sidebar.js +1 -1
  200. package/dist/components/status.js +6 -0
  201. package/dist/components/status.js.map +1 -0
  202. package/dist/components/surface.js +1 -1
  203. package/dist/components/switch.js +1 -1
  204. package/dist/components/table.js +1 -1
  205. package/dist/components/tabs.js +1 -1
  206. package/dist/components/tag.js +10 -0
  207. package/dist/components/tag.js.map +1 -0
  208. package/dist/components/timeline.js +8 -0
  209. package/dist/components/timeline.js.map +1 -0
  210. package/dist/components/toast.js +2 -2
  211. package/dist/components/tooltip.js +1 -1
  212. package/dist/index.js +380 -251
  213. package/dist/index.js.map +1 -1
  214. package/dist/primitives/accordion.js +1 -1
  215. package/dist/primitives/alert-dialog.js +1 -1
  216. package/dist/primitives/autocomplete.js +1 -1
  217. package/dist/primitives/avatar.js +1 -1
  218. package/dist/primitives/button.js +1 -1
  219. package/dist/primitives/checkbox-group.js +1 -1
  220. package/dist/primitives/checkbox.js +1 -1
  221. package/dist/primitives/collapsible.js +1 -1
  222. package/dist/primitives/combobox.js +1 -1
  223. package/dist/primitives/context-menu.js +1 -1
  224. package/dist/primitives/csp-provider.js +1 -1
  225. package/dist/primitives/dialog.js +1 -1
  226. package/dist/primitives/direction-provider.js +1 -1
  227. package/dist/primitives/drawer.js +1 -1
  228. package/dist/primitives/field.js +1 -1
  229. package/dist/primitives/fieldset.js +1 -1
  230. package/dist/primitives/form.js +1 -1
  231. package/dist/primitives/input.js +1 -1
  232. package/dist/primitives/menu.js +1 -1
  233. package/dist/primitives/menubar.js +1 -1
  234. package/dist/primitives/meter.js +1 -1
  235. package/dist/primitives/navigation-menu.js +1 -1
  236. package/dist/primitives/number-field.js +1 -1
  237. package/dist/primitives/otp-field.js +1 -1
  238. package/dist/primitives/popover.js +1 -1
  239. package/dist/primitives/preview-card.js +1 -1
  240. package/dist/primitives/progress.js +1 -1
  241. package/dist/primitives/radio-group.js +1 -1
  242. package/dist/primitives/radio.js +1 -1
  243. package/dist/primitives/scroll-area.js +1 -1
  244. package/dist/primitives/select.js +1 -1
  245. package/dist/primitives/separator.js +1 -1
  246. package/dist/primitives/slider.js +1 -1
  247. package/dist/primitives/switch.js +1 -1
  248. package/dist/primitives/tabs.js +1 -1
  249. package/dist/primitives/toast.js +1 -1
  250. package/dist/primitives/toggle-group.js +1 -1
  251. package/dist/primitives/toggle.js +1 -1
  252. package/dist/primitives/toolbar.js +1 -1
  253. package/dist/primitives/tooltip.js +1 -1
  254. package/dist/primitives.js +1 -1
  255. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  256. package/dist/scripts/theme-generator/config.js +229 -5
  257. package/dist/scripts/theme-generator/config.js.map +1 -1
  258. package/dist/src/components/actor-display/actor-display.d.ts +33 -0
  259. package/dist/src/components/actor-display/actor-display.d.ts.map +1 -0
  260. package/dist/src/components/actor-display/index.d.ts +2 -0
  261. package/dist/src/components/actor-display/index.d.ts.map +1 -0
  262. package/dist/src/components/address-input/address-input.d.ts +42 -0
  263. package/dist/src/components/address-input/address-input.d.ts.map +1 -0
  264. package/dist/src/components/address-input/index.d.ts +2 -0
  265. package/dist/src/components/address-input/index.d.ts.map +1 -0
  266. package/dist/src/components/array-display/array-display.d.ts +30 -0
  267. package/dist/src/components/array-display/array-display.d.ts.map +1 -0
  268. package/dist/src/components/array-display/index.d.ts +2 -0
  269. package/dist/src/components/array-display/index.d.ts.map +1 -0
  270. package/dist/src/components/avatar/avatar.d.ts +80 -0
  271. package/dist/src/components/avatar/avatar.d.ts.map +1 -0
  272. package/dist/src/components/avatar/index.d.ts +2 -0
  273. package/dist/src/components/avatar/index.d.ts.map +1 -0
  274. package/dist/src/components/avatar-group/avatar-group.d.ts +35 -0
  275. package/dist/src/components/avatar-group/avatar-group.d.ts.map +1 -0
  276. package/dist/src/components/avatar-group/index.d.ts +2 -0
  277. package/dist/src/components/avatar-group/index.d.ts.map +1 -0
  278. package/dist/src/components/button/button.d.ts +4 -4
  279. package/dist/src/components/chip/chip.d.ts +78 -0
  280. package/dist/src/components/chip/chip.d.ts.map +1 -0
  281. package/dist/src/components/chip/index.d.ts +2 -0
  282. package/dist/src/components/chip/index.d.ts.map +1 -0
  283. package/dist/src/components/circular-progress-bar/circular-progress-bar.d.ts +35 -0
  284. package/dist/src/components/circular-progress-bar/circular-progress-bar.d.ts.map +1 -0
  285. package/dist/src/components/circular-progress-bar/index.d.ts +2 -0
  286. package/dist/src/components/circular-progress-bar/index.d.ts.map +1 -0
  287. package/dist/src/components/color-sample/color-sample.d.ts +56 -0
  288. package/dist/src/components/color-sample/color-sample.d.ts.map +1 -0
  289. package/dist/src/components/color-sample/index.d.ts +2 -0
  290. package/dist/src/components/color-sample/index.d.ts.map +1 -0
  291. package/dist/src/components/data-grid/data-grid.d.ts +25 -0
  292. package/dist/src/components/data-grid/data-grid.d.ts.map +1 -0
  293. package/dist/src/components/data-grid/index.d.ts +3 -0
  294. package/dist/src/components/data-grid/index.d.ts.map +1 -0
  295. package/dist/src/components/data-grid/types.d.ts +103 -0
  296. package/dist/src/components/data-grid/types.d.ts.map +1 -0
  297. package/dist/src/components/data-grid/use-data-grid-edit.d.ts +34 -0
  298. package/dist/src/components/data-grid/use-data-grid-edit.d.ts.map +1 -0
  299. package/dist/src/components/double-text-input/double-text-input.d.ts +47 -0
  300. package/dist/src/components/double-text-input/double-text-input.d.ts.map +1 -0
  301. package/dist/src/components/double-text-input/index.d.ts +2 -0
  302. package/dist/src/components/double-text-input/index.d.ts.map +1 -0
  303. package/dist/src/components/emails-display/emails-display.d.ts +30 -0
  304. package/dist/src/components/emails-display/emails-display.d.ts.map +1 -0
  305. package/dist/src/components/emails-display/index.d.ts +2 -0
  306. package/dist/src/components/emails-display/index.d.ts.map +1 -0
  307. package/dist/src/components/expandable-list/expandable-list.d.ts +41 -0
  308. package/dist/src/components/expandable-list/expandable-list.d.ts.map +1 -0
  309. package/dist/src/components/expandable-list/index.d.ts +2 -0
  310. package/dist/src/components/expandable-list/index.d.ts.map +1 -0
  311. package/dist/src/components/json-display/index.d.ts +2 -0
  312. package/dist/src/components/json-display/index.d.ts.map +1 -0
  313. package/dist/src/components/json-display/json-display.d.ts +29 -0
  314. package/dist/src/components/json-display/json-display.d.ts.map +1 -0
  315. package/dist/src/components/link-chip/index.d.ts +2 -0
  316. package/dist/src/components/link-chip/index.d.ts.map +1 -0
  317. package/dist/src/components/link-chip/link-chip.d.ts +50 -0
  318. package/dist/src/components/link-chip/link-chip.d.ts.map +1 -0
  319. package/dist/src/components/links-display/index.d.ts +2 -0
  320. package/dist/src/components/links-display/index.d.ts.map +1 -0
  321. package/dist/src/components/links-display/links-display.d.ts +37 -0
  322. package/dist/src/components/links-display/links-display.d.ts.map +1 -0
  323. package/dist/src/components/menu-item/index.d.ts +2 -0
  324. package/dist/src/components/menu-item/index.d.ts.map +1 -0
  325. package/dist/src/components/menu-item/menu-item.d.ts +104 -0
  326. package/dist/src/components/menu-item/menu-item.d.ts.map +1 -0
  327. package/dist/src/components/notification-counter/index.d.ts +2 -0
  328. package/dist/src/components/notification-counter/index.d.ts.map +1 -0
  329. package/dist/src/components/notification-counter/notification-counter.d.ts +51 -0
  330. package/dist/src/components/notification-counter/notification-counter.d.ts.map +1 -0
  331. package/dist/src/components/overflowing-text/index.d.ts +2 -0
  332. package/dist/src/components/overflowing-text/index.d.ts.map +1 -0
  333. package/dist/src/components/overflowing-text/overflowing-text.d.ts +48 -0
  334. package/dist/src/components/overflowing-text/overflowing-text.d.ts.map +1 -0
  335. package/dist/src/components/phones-display/index.d.ts +2 -0
  336. package/dist/src/components/phones-display/index.d.ts.map +1 -0
  337. package/dist/src/components/phones-display/phones-display.d.ts +31 -0
  338. package/dist/src/components/phones-display/phones-display.d.ts.map +1 -0
  339. package/dist/src/components/pill/index.d.ts +2 -0
  340. package/dist/src/components/pill/index.d.ts.map +1 -0
  341. package/dist/src/components/pill/pill.d.ts +31 -0
  342. package/dist/src/components/pill/pill.d.ts.map +1 -0
  343. package/dist/src/components/rating/index.d.ts +2 -0
  344. package/dist/src/components/rating/index.d.ts.map +1 -0
  345. package/dist/src/components/rating/rating.d.ts +37 -0
  346. package/dist/src/components/rating/rating.d.ts.map +1 -0
  347. package/dist/src/components/record-board/index.d.ts +2 -0
  348. package/dist/src/components/record-board/index.d.ts.map +1 -0
  349. package/dist/src/components/record-board/record-board.d.ts +75 -0
  350. package/dist/src/components/record-board/record-board.d.ts.map +1 -0
  351. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
  352. package/dist/src/components/status/index.d.ts +2 -0
  353. package/dist/src/components/status/index.d.ts.map +1 -0
  354. package/dist/src/components/status/status.d.ts +52 -0
  355. package/dist/src/components/status/status.d.ts.map +1 -0
  356. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  357. package/dist/src/components/tag/index.d.ts +2 -0
  358. package/dist/src/components/tag/index.d.ts.map +1 -0
  359. package/dist/src/components/tag/tag.d.ts +153 -0
  360. package/dist/src/components/tag/tag.d.ts.map +1 -0
  361. package/dist/src/components/timeline/index.d.ts +2 -0
  362. package/dist/src/components/timeline/index.d.ts.map +1 -0
  363. package/dist/src/components/timeline/timeline.d.ts +155 -0
  364. package/dist/src/components/timeline/timeline.d.ts.map +1 -0
  365. package/dist/src/index.d.ts +26 -0
  366. package/dist/src/index.d.ts.map +1 -1
  367. package/dist/src/utils/use-is-dark-mode.d.ts +18 -0
  368. package/dist/src/utils/use-is-dark-mode.d.ts.map +1 -0
  369. package/dist/styles/reki-standalone.css +1 -1
  370. package/dist/styles/reki.css +19 -0
  371. package/dist/styles/theme-fedramp.css +6 -0
  372. package/dist/styles/theme-reki.css +164 -10
  373. package/package.json +118 -4
  374. package/scripts/component-registry/index.ts +6 -11
  375. package/scripts/extract-demo-examples.ts +323 -0
  376. package/scripts/generate-stories.ts +205 -0
  377. package/scripts/theme-generator/config.ts +230 -5
  378. package/dist/chunks/button-nc5p1h28cwes0tjw.js.map +0 -1
  379. package/dist/chunks/command-palette-fe5cjfdgsg3t17vq.js.map +0 -1
  380. package/dist/chunks/sidebar-noz668nhdu2gso12.js.map +0 -1
  381. package/dist/chunks/tabs-e4pcjkw94kpe35x0.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { jsxs as w, jsx as g } from "react/jsx-runtime";
2
+ import { jsxs as w, jsx as b } from "react/jsx-runtime";
3
3
  import { useRef as h, useState as z, useEffect as D } from "react";
4
4
  import { c as u } from "./cn-ct4n7r74mh8y0f48.js";
5
- import { bg as N, bh as y, bi as L, bj as R } from "./vendor-base-ui-bgl9g5nkvqy3tn36.js";
5
+ import { bg as N, bh as y, bi as L, bj as R } from "./vendor-base-ui-djdjrfuoxlb1lubi.js";
6
6
  const I = {
7
7
  variant: "segmented",
8
8
  size: "base"
@@ -19,10 +19,10 @@ function U({
19
19
  variant: v = I.variant,
20
20
  size: C = I.size
21
21
  }) {
22
- const b = o ?? [];
23
- if (b.length === 0)
22
+ const g = o ?? [];
23
+ if (g.length === 0)
24
24
  return null;
25
- const T = b[0]?.value, k = a !== void 0, P = {
25
+ const T = g[0]?.value, k = a !== void 0, P = {
26
26
  value: k ? a : void 0,
27
27
  defaultValue: k ? void 0 : n ?? T
28
28
  }, l = v === "segmented", d = v === "underline", c = C === "sm", { ref: x, isOverflowing: p } = O(l), S = V(x, p);
@@ -32,7 +32,6 @@ function U({
32
32
  ...P,
33
33
  className: u(
34
34
  "relative isolate min-w-0 font-medium",
35
- l && (c ? "rounded-md" : "rounded-lg") + " ring ring-reki-hairline/70",
36
35
  r
37
36
  ),
38
37
  onValueChange: (s) => {
@@ -40,12 +39,12 @@ function U({
40
39
  i?.(m);
41
40
  },
42
41
  children: [
43
- l && /* @__PURE__ */ g(
42
+ l && /* @__PURE__ */ b(
44
43
  "div",
45
44
  {
46
45
  className: u(
47
- "absolute inset-x-0 top-1/2 z-0 -translate-y-1/2 rounded-lg bg-reki-recessed",
48
- c ? "h-6.5" : "h-9"
46
+ "absolute inset-x-0 top-1/2 z-0 -translate-y-1/2 rounded-lg",
47
+ c ? "h-5" : "h-7"
49
48
  )
50
49
  }
51
50
  ),
@@ -58,7 +57,7 @@ function U({
58
57
  ...S(),
59
58
  className: u(
60
59
  "relative flex min-w-0 shrink items-stretch",
61
- l && "reki-tabs-list overflow-x-auto rounded-lg bg-reki-recessed px-0.5 [--scroll-fade-width:3rem] scroll-px-(--scroll-fade-width)",
60
+ l && "reki-tabs-list overflow-x-auto rounded-lg px-0.5 [--scroll-fade-width:3rem] scroll-px-(--scroll-fade-width)",
62
61
  l && (c ? "h-6.5 rounded-md" : "h-9"),
63
62
  p && "cursor-grab active:cursor-grabbing",
64
63
  d && "gap-4 border-b border-reki-hairline pb-2",
@@ -66,7 +65,7 @@ function U({
66
65
  t
67
66
  ),
68
67
  children: [
69
- b.map((s) => /* @__PURE__ */ g(
68
+ g.map((s) => /* @__PURE__ */ b(
70
69
  L,
71
70
  {
72
71
  "data-reki-component": "Tabs",
@@ -94,10 +93,10 @@ function U({
94
93
  },
95
94
  s.value
96
95
  )),
97
- /* @__PURE__ */ g(
96
+ /* @__PURE__ */ b(
98
97
  R,
99
98
  {
100
- render: (s) => /* @__PURE__ */ g(
99
+ render: (s) => /* @__PURE__ */ b(
101
100
  "div",
102
101
  {
103
102
  ...s,
@@ -106,8 +105,7 @@ function U({
106
105
  "w-(--active-tab-width) translate-x-(--active-tab-left) transition-all duration-200",
107
106
  "data-[rendered=false]:scale-90 data-[rendered=false]:opacity-0",
108
107
  l && u(
109
- "top-(--active-tab-top) h-(--active-tab-height) bg-reki-base shadow-sm ring ring-reki-line",
110
- c ? "rounded" : "rounded-md"
108
+ "top-(--active-tab-top) h-(--active-tab-height) bg-reki-base shadow-sm ring ring-reki-line rounded-full"
111
109
  ),
112
110
  d && "bottom-0 h-0.5 bg-reki-brand",
113
111
  f
@@ -174,4 +172,4 @@ function O(o) {
174
172
  export {
175
173
  U as T
176
174
  };
177
- //# sourceMappingURL=tabs-e4pcjkw94kpe35x0.js.map
175
+ //# sourceMappingURL=tabs-klj6wapad6fpd9at.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-klj6wapad6fpd9at.js","sources":["../../src/components/tabs/tabs.tsx"],"sourcesContent":["import {\n useEffect,\n useRef,\n useState,\n type MouseEvent,\n type PointerEvent,\n type ReactNode,\n} from \"react\";\nimport type { TabsTab } from \"@base-ui/react/tabs\";\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { cn } from \"../../utils/cn\";\n\n/** Tabs variant definitions. */\nexport const REKI_TABS_VARIANTS = {\n variant: [\"segmented\", \"underline\"],\n size: [\"base\", \"sm\"],\n} as const;\n\nexport const REKI_TABS_DEFAULT_VARIANTS = {\n variant: \"segmented\",\n size: \"base\",\n} as const;\n\nexport const REKI_TABS_STYLING = {\n container: {\n height: 34,\n borderRadius: 8,\n background: \"color-accent\",\n padding: 1,\n },\n tab: {\n paddingX: 10,\n verticalMargin: 1,\n fontSize: 16,\n fontWeight: 500,\n borderRadius: 8,\n activeColor: \"text-color-surface\",\n inactiveColor: \"text-color-label\",\n },\n indicator: {\n background: \"color-surface-secondary\",\n ring: \"color-color-2\",\n borderRadius: 6,\n shadow: \"shadow-sm\",\n },\n} as const;\n\n// Derived types from REKI_TABS_VARIANTS\nexport interface RekiTabsVariantsProps {\n /**\n * Tab style.\n * - `\"segmented\"` — Pill-shaped indicator on a filled track\n * - `\"underline\"` — Underline indicator below tab text\n * @default \"segmented\"\n */\n variant?: (typeof REKI_TABS_VARIANTS.variant)[number];\n /**\n * Tab size.\n * - `\"base\"` — Default size (h-9, text-base)\n * - `\"sm\"` — Compact size (h-6.5, text-xs) — matches Input size=\"sm\"\n * @default \"base\"\n */\n size?: (typeof REKI_TABS_VARIANTS.size)[number];\n}\n\n/** Configuration for a single tab within the Tabs component. */\nexport type TabsItem = {\n /** Unique identifier for the tab, used as the controlled value. */\n value: string;\n /** Display content for the tab trigger. */\n label: ReactNode;\n /** Additional CSS classes for this tab trigger. */\n className?: string;\n /**\n * Custom render function or element to replace the tab element (e.g. for link-based tabs).\n * When using a function, it receives the props to spread on the element and the tab's state.\n */\n render?: TabsTab.Props[\"render\"];\n};\n\n/**\n * Tabs component props.\n *\n * @example\n * ```tsx\n * <Tabs\n * tabs={[\n * { value: \"overview\", label: \"Overview\" },\n * { value: \"settings\", label: \"Settings\" },\n * ]}\n * value={activeTab}\n * onValueChange={setActiveTab}\n * />\n * ```\n */\nexport type TabsProps = RekiTabsVariantsProps & {\n /** Array of tab items to render. */\n tabs?: TabsItem[];\n /** Controlled value. When set, component becomes controlled. */\n value?: string;\n /** Default selected value for uncontrolled mode. Ignored when `value` is set. */\n selectedValue?: string;\n /** Callback fired when the active tab changes. */\n onValueChange?: (value: string) => void;\n /**\n * When `true`, tabs are activated immediately upon receiving focus via arrow keys.\n * When `false` (default), tabs receive focus but require Enter/Space to activate.\n */\n activateOnFocus?: boolean;\n /** Additional CSS classes for the root element. */\n className?: string;\n /** Additional CSS classes for the tab list element. */\n listClassName?: string;\n /** Additional CSS classes for the indicator element. */\n indicatorClassName?: string;\n};\n\n/**\n * Tab navigation component with segmented or underline style.\n * Built on Base UI Tabs with animated active indicator.\n *\n * @example\n * ```tsx\n * <Tabs\n * variant=\"segmented\"\n * tabs={[{ value: \"tab1\", label: \"Tab 1\" }, { value: \"tab2\", label: \"Tab 2\" }]}\n * value={active}\n * onValueChange={setActive}\n * />\n * ```\n */\nexport function Tabs({\n tabs,\n value,\n selectedValue,\n onValueChange,\n activateOnFocus,\n className,\n listClassName,\n indicatorClassName,\n variant = REKI_TABS_DEFAULT_VARIANTS.variant,\n size = REKI_TABS_DEFAULT_VARIANTS.size,\n}: TabsProps) {\n const items: TabsItem[] = tabs ?? [];\n\n if (items.length === 0) {\n return null;\n }\n\n const fallbackValue = items[0]?.value;\n const isControlled = value !== undefined;\n const rootProps = {\n value: isControlled ? value : undefined,\n defaultValue: isControlled ? undefined : (selectedValue ?? fallbackValue),\n };\n\n const isSegmented = variant === \"segmented\";\n const isUnderline = variant === \"underline\";\n const isSm = size === \"sm\";\n const { ref: listRef, isOverflowing } = useOverflowDetect(isSegmented);\n const bindDrag = useHorizontalDragScroll(listRef, isOverflowing);\n\n return (\n <TabsPrimitive.Root\n {...rootProps}\n className={cn(\n \"relative isolate min-w-0 font-medium\",\n className,\n )}\n onValueChange={(nextValue) => {\n const stringValue = String(nextValue);\n onValueChange?.(stringValue);\n }}\n >\n {/* Background element for segmented variant */}\n {isSegmented && (\n <div\n className={cn(\n \"absolute inset-x-0 top-1/2 z-0 -translate-y-1/2 rounded-lg\",\n isSm ? \"h-5\" : \"h-7\",\n )}\n />\n )}\n <TabsPrimitive.List\n ref={listRef}\n activateOnFocus={activateOnFocus}\n data-overflowing={isOverflowing ? \"\" : undefined}\n {...bindDrag()}\n className={cn(\n \"relative flex min-w-0 shrink items-stretch\",\n isSegmented &&\n \"reki-tabs-list overflow-x-auto rounded-lg px-0.5 [--scroll-fade-width:3rem] scroll-px-(--scroll-fade-width)\",\n isSegmented && (isSm ? \"h-6.5 rounded-md\" : \"h-9\"),\n isOverflowing && \"cursor-grab active:cursor-grabbing\",\n isUnderline && \"gap-4 border-b border-reki-hairline pb-2\",\n isUnderline && (isSm ? \"h-6.5\" : \"h-7.5\"),\n listClassName,\n )}\n >\n {items.map((tab) => (\n <TabsPrimitive.Tab\n key={tab.value}\n data-reki-component=\"Tabs\"\n data-reki-part=\"tab\"\n value={tab.value}\n render={tab.render}\n onClick={(e) => {\n e.currentTarget.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n }}\n className={cn(\n \"relative z-2 flex items-center rounded bg-transparent whitespace-nowrap focus:outline-none focus:ring-reki-focus/50 focus-visible:ring-2 focus-visible:ring-reki-brand\",\n isOverflowing\n ? \"cursor-grab active:cursor-grabbing\"\n : \"cursor-pointer\",\n isSm ? \"text-xs\" : \"text-base\",\n isSegmented &&\n \"my-0.5 text-reki-subtle hover:text-reki-default aria-selected:text-reki-default focus-visible:ring-inset\",\n isSegmented && (isSm ? \"px-2 rounded-sm\" : \"px-2.5 rounded-md\"),\n isUnderline &&\n \"text-reki-subtle hover:bg-reki-tint hover:text-reki-default aria-selected:hover:bg-reki-tint aria-selected:font-medium aria-selected:text-reki-default\",\n isUnderline && (isSm ? \"px-1.5 py-2.5\" : \"px-2 py-3\"),\n tab.className,\n )}\n >\n {tab.label}\n </TabsPrimitive.Tab>\n ))}\n <TabsPrimitive.Indicator\n render={(props) => (\n <div\n {...props}\n className={cn(\n \"absolute z-1 left-0\",\n \"w-(--active-tab-width) translate-x-(--active-tab-left) transition-all duration-200\",\n \"data-[rendered=false]:scale-90 data-[rendered=false]:opacity-0\",\n isSegmented &&\n cn(\n \"top-(--active-tab-top) h-(--active-tab-height) bg-reki-base shadow-sm ring ring-reki-line rounded-full\",\n \n ),\n isUnderline && \"bottom-0 h-0.5 bg-reki-brand\",\n indicatorClassName,\n )}\n />\n )}\n />\n </TabsPrimitive.List>\n </TabsPrimitive.Root>\n );\n}\n\n// ─── Horizontal drag-to-scroll ────────────────────────────────────────\n\n/**\n * Enables mouse drag to horizontally scroll the tab list.\n * Touch devices keep native horizontal overflow scrolling and inertia.\n */\nfunction useHorizontalDragScroll(\n ref: React.RefObject<HTMLElement | null>,\n enabled: boolean,\n) {\n const dragState = useRef<{\n pointerId: number;\n startX: number;\n scrollLeft: number;\n dragging: boolean;\n } | null>(null);\n const shouldSuppressClick = useRef(false);\n\n return () => ({\n onPointerDownCapture: (event: PointerEvent<HTMLElement>) => {\n const el = ref.current;\n if (!el || !enabled) return;\n if (event.pointerType !== \"mouse\" || event.button !== 0) return;\n\n dragState.current = {\n pointerId: event.pointerId,\n startX: event.clientX,\n scrollLeft: el.scrollLeft,\n dragging: false,\n };\n shouldSuppressClick.current = false;\n },\n onPointerMoveCapture: (event: PointerEvent<HTMLElement>) => {\n const el = ref.current;\n const state = dragState.current;\n if (!el || !enabled || !state || state.pointerId !== event.pointerId)\n return;\n\n const movementX = event.clientX - state.startX;\n if (!state.dragging) {\n if (Math.abs(movementX) <= 3) return;\n state.dragging = true;\n shouldSuppressClick.current = true;\n el.setPointerCapture(event.pointerId);\n }\n\n event.preventDefault();\n el.scrollLeft = state.scrollLeft - movementX;\n },\n onPointerUpCapture: (event: PointerEvent<HTMLElement>) => {\n const el = ref.current;\n const state = dragState.current;\n if (!el || !state || state.pointerId !== event.pointerId) return;\n\n dragState.current = null;\n if (el.hasPointerCapture(event.pointerId)) {\n el.releasePointerCapture(event.pointerId);\n }\n if (shouldSuppressClick.current) {\n window.setTimeout(() => {\n shouldSuppressClick.current = false;\n }, 0);\n }\n },\n onPointerCancelCapture: (event: PointerEvent<HTMLElement>) => {\n const el = ref.current;\n const state = dragState.current;\n if (!el || !state || state.pointerId !== event.pointerId) return;\n\n dragState.current = null;\n if (el.hasPointerCapture(event.pointerId)) {\n el.releasePointerCapture(event.pointerId);\n }\n },\n onClickCapture: (event: MouseEvent<HTMLElement>) => {\n if (!shouldSuppressClick.current) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n shouldSuppressClick.current = false;\n },\n });\n}\n\n// ─── Overflow detection ───────────────────────────────────────────────\n\n/**\n * Detects whether the element's content overflows horizontally.\n * Returns a ref to attach and a boolean for conditional rendering.\n * The `data-overflowing` attribute drives the scroll-fade CSS.\n */\nfunction useOverflowDetect(enabled: boolean) {\n const ref = useRef<HTMLDivElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useEffect(() => {\n if (!enabled) return;\n const el = ref.current;\n if (!el) return;\n\n const check = () => setIsOverflowing(el.scrollWidth > el.clientWidth);\n\n const ro = new ResizeObserver(check);\n ro.observe(el);\n check();\n\n return () => ro.disconnect();\n }, [enabled]);\n\n return { ref, isOverflowing };\n}\n"],"names":["REKI_TABS_DEFAULT_VARIANTS","Tabs","tabs","value","selectedValue","onValueChange","activateOnFocus","className","listClassName","indicatorClassName","variant","size","items","fallbackValue","isControlled","rootProps","isSegmented","isUnderline","isSm","listRef","isOverflowing","useOverflowDetect","bindDrag","useHorizontalDragScroll","jsxs","TabsPrimitive.Root","cn","nextValue","stringValue","jsx","TabsPrimitive.List","tab","TabsPrimitive.Tab","e","TabsPrimitive.Indicator","props","ref","enabled","dragState","useRef","shouldSuppressClick","event","el","state","movementX","setIsOverflowing","useState","useEffect","check","ro"],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ "use client";
2
+ import { jsx as a, jsxs as h, Fragment as d } from "react/jsx-runtime";
3
+ import { O as f } from "./overflowing-text-mm8bkx7voc6h8ra4.js";
4
+ import { c as x } from "./cn-ct4n7r74mh8y0f48.js";
5
+ const b = {
6
+ gray: { bg: "bg-reki-tag-gray", text: "text-reki-tag-gray" },
7
+ red: { bg: "bg-reki-tag-red", text: "text-reki-tag-red" },
8
+ orange: { bg: "bg-reki-tag-orange", text: "text-reki-tag-orange" },
9
+ yellow: { bg: "bg-reki-tag-yellow", text: "text-reki-tag-yellow" },
10
+ green: { bg: "bg-reki-tag-green", text: "text-reki-tag-green" },
11
+ turquoise: { bg: "bg-reki-tag-turquoise", text: "text-reki-tag-turquoise" },
12
+ sky: { bg: "bg-reki-tag-sky", text: "text-reki-tag-sky" },
13
+ blue: { bg: "bg-reki-tag-blue", text: "text-reki-tag-blue" },
14
+ purple: { bg: "bg-reki-tag-purple", text: "text-reki-tag-purple" },
15
+ pink: { bg: "bg-reki-tag-pink", text: "text-reki-tag-pink" }
16
+ }, u = Object.keys(b);
17
+ function _(e) {
18
+ let r = 0;
19
+ for (let t = 0; t < e.length; t++)
20
+ r = r * 31 + e.charCodeAt(t) | 0;
21
+ return u[Math.abs(r) % u.length];
22
+ }
23
+ const y = "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";
24
+ function A({
25
+ color: e,
26
+ text: r,
27
+ icon: t,
28
+ variant: i = "solid",
29
+ weight: k = "regular",
30
+ onClick: g,
31
+ preventShrink: c,
32
+ className: p
33
+ }) {
34
+ const n = e === "transparent", s = n ? null : b[e], m = n ? "text-reki-subtle" : x(
35
+ s?.text,
36
+ i !== "outline" && s?.bg,
37
+ i !== "solid" && "ring ring-inset ring-current/30"
38
+ ), o = x(
39
+ y,
40
+ k === "medium" && "font-medium",
41
+ c && "flex-none shrink-0",
42
+ g && "cursor-pointer",
43
+ m,
44
+ p
45
+ ), l = /* @__PURE__ */ h(d, { children: [
46
+ t ? /* @__PURE__ */ a(t, { "aria-hidden": !0, className: "size-3.5 shrink-0" }) : null,
47
+ /* @__PURE__ */ a(f, { text: r, className: "text-inherit" })
48
+ ] });
49
+ return g ? /* @__PURE__ */ a("button", { type: "button", onClick: g, className: o, children: l }) : /* @__PURE__ */ a("span", { className: o, children: l });
50
+ }
51
+ export {
52
+ y as R,
53
+ u as T,
54
+ b as a,
55
+ A as b,
56
+ _ as s
57
+ };
58
+ //# sourceMappingURL=tag-h5kwf5eh7dyyvc2c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-h5kwf5eh7dyyvc2c.js","sources":["../../src/components/tag/tag.tsx"],"sourcesContent":["import type { ComponentType, SVGProps } from \"react\";\nimport { OverflowingText } from \"../overflowing-text\";\nimport { cn } from \"../../utils/cn\";\n\n/** Variant standard export (reki convention). */\nexport const REKI_TAG_VARIANTS = {\n variant: {\n solid: { classes: \"\", description: \"Subtle colored background (default)\" },\n outline: { classes: \"ring ring-inset ring-current/30\", description: \"Transparent background with a colored ring\" },\n border: { classes: \"ring ring-inset ring-current/30\", description: \"Subtle background with a matching ring\" },\n },\n weight: {\n regular: { classes: \"\", description: \"Regular weight\" },\n medium: { classes: \"font-medium\", description: \"Medium weight\" },\n },\n} as const;\n\nexport const REKI_TAG_DEFAULT_VARIANTS = {\n variant: \"solid\",\n weight: \"regular\",\n} as const;\n\n/**\n * The CRM tag-color palette, mirrored from the `reki-tag-*` theme tokens.\n * Each maps to a subtle background (`bg-reki-tag-*`) + readable text\n * (`text-reki-tag-*`) pair that adapts to light/dark automatically.\n */\nexport const REKI_TAG_COLORS = {\n gray: { bg: \"bg-reki-tag-gray\", text: \"text-reki-tag-gray\" },\n red: { bg: \"bg-reki-tag-red\", text: \"text-reki-tag-red\" },\n orange: { bg: \"bg-reki-tag-orange\", text: \"text-reki-tag-orange\" },\n yellow: { bg: \"bg-reki-tag-yellow\", text: \"text-reki-tag-yellow\" },\n green: { bg: \"bg-reki-tag-green\", text: \"text-reki-tag-green\" },\n turquoise: { bg: \"bg-reki-tag-turquoise\", text: \"text-reki-tag-turquoise\" },\n sky: { bg: \"bg-reki-tag-sky\", text: \"text-reki-tag-sky\" },\n blue: { bg: \"bg-reki-tag-blue\", text: \"text-reki-tag-blue\" },\n purple: { bg: \"bg-reki-tag-purple\", text: \"text-reki-tag-purple\" },\n pink: { bg: \"bg-reki-tag-pink\", text: \"text-reki-tag-pink\" },\n} as const;\n\n/** A named tag color, or `\"transparent\"` for an unstyled neutral tag. */\nexport type TagColor = keyof typeof REKI_TAG_COLORS | \"transparent\";\n\n/** Ordered list of selectable tag colors (excludes `\"transparent\"`). */\nexport const TAG_COLOR_NAMES = Object.keys(REKI_TAG_COLORS) as Array<\n keyof typeof REKI_TAG_COLORS\n>;\n\n/**\n * Deterministically map an arbitrary string (e.g. a record id or option value)\n * to a tag color, so the same input always yields the same color across\n * sessions and clients.\n *\n * @example\n * ```tsx\n * <Tag color={stringToTagColor(option.id)} text={option.label} />\n * ```\n */\nexport function stringToTagColor(seed: string): keyof typeof REKI_TAG_COLORS {\n let hash = 0;\n for (let i = 0; i < seed.length; i++) {\n hash = (hash * 31 + seed.charCodeAt(i)) | 0;\n }\n return TAG_COLOR_NAMES[Math.abs(hash) % TAG_COLOR_NAMES.length];\n}\n\nexport type TagVariant = \"solid\" | \"outline\" | \"border\";\nexport type TagWeight = \"regular\" | \"medium\";\n\n/** Base styles shared by all tag variants. */\nexport const REKI_TAG_BASE_STYLES =\n \"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\";\n\n/**\n * Tag component props.\n *\n * @example\n * ```tsx\n * <Tag color=\"green\" text=\"Active\" />\n * <Tag color=\"blue\" text=\"In progress\" variant=\"border\" />\n * ```\n */\nexport interface TagProps {\n /**\n * Tag color. One of the named CRM colors, or `\"transparent\"` for a neutral\n * tag that inherits the surface background.\n */\n color: TagColor;\n /** Text label rendered inside the tag (truncated with a tooltip on overflow). */\n text: string;\n /** Optional leading icon (phosphor or any SVG component). */\n icon?: ComponentType<SVGProps<SVGSVGElement>>;\n /**\n * 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\n * @default \"solid\"\n */\n variant?: TagVariant;\n /**\n * Font weight of the label.\n * - `\"regular\"` (default)\n * - `\"medium\"`\n * @default \"regular\"\n */\n weight?: TagWeight;\n /** Makes the tag interactive; renders as a button. */\n onClick?: () => void;\n /** Prevents the tag from shrinking inside flex containers. */\n preventShrink?: boolean;\n /** Additional CSS classes merged via `cn()`. Use reki semantic tokens only. */\n className?: string;\n}\n\n/**\n * Colored label for enum / select / multi-select values and entity categories.\n * Built on the `reki-tag-*` token palette so colors adapt to light/dark\n * automatically, and on {@link OverflowingText} so long labels truncate with a\n * tooltip.\n *\n * @example\n * ```tsx\n * <Tag color=\"green\" text=\"Active\" />\n * <Tag color={stringToTagColor(stage.id)} text={stage.label} />\n * ```\n */\nexport function Tag({\n color,\n text,\n icon: Icon,\n variant = \"solid\",\n weight = \"regular\",\n onClick,\n preventShrink,\n className,\n}: TagProps) {\n const isTransparent = color === \"transparent\";\n const palette = isTransparent ? null : REKI_TAG_COLORS[color];\n\n const colorClasses = isTransparent\n ? \"text-reki-subtle\"\n : cn(\n palette?.text,\n variant !== \"outline\" && palette?.bg,\n variant !== \"solid\" && \"ring ring-inset ring-current/30\",\n );\n\n const classes = cn(\n REKI_TAG_BASE_STYLES,\n weight === \"medium\" && \"font-medium\",\n preventShrink && \"flex-none shrink-0\",\n onClick && \"cursor-pointer\",\n colorClasses,\n className,\n );\n\n const content = (\n <>\n {Icon ? <Icon aria-hidden className=\"size-3.5 shrink-0\" /> : null}\n <OverflowingText text={text} className=\"text-inherit\" />\n </>\n );\n\n if (onClick) {\n return (\n <button type=\"button\" onClick={onClick} className={classes}>\n {content}\n </button>\n );\n }\n\n return <span className={classes}>{content}</span>;\n}\n"],"names":["REKI_TAG_COLORS","TAG_COLOR_NAMES","stringToTagColor","seed","hash","i","REKI_TAG_BASE_STYLES","Tag","color","text","Icon","variant","weight","onClick","preventShrink","className","isTransparent","palette","colorClasses","cn","classes","content","jsxs","Fragment","jsx","OverflowingText"],"mappings":";;;;AA2BO,MAAMA,IAAkB;AAAA,EAC7B,MAAM,EAAE,IAAI,oBAAoB,MAAM,qBAAA;AAAA,EACtC,KAAK,EAAE,IAAI,mBAAmB,MAAM,oBAAA;AAAA,EACpC,QAAQ,EAAE,IAAI,sBAAsB,MAAM,uBAAA;AAAA,EAC1C,QAAQ,EAAE,IAAI,sBAAsB,MAAM,uBAAA;AAAA,EAC1C,OAAO,EAAE,IAAI,qBAAqB,MAAM,sBAAA;AAAA,EACxC,WAAW,EAAE,IAAI,yBAAyB,MAAM,0BAAA;AAAA,EAChD,KAAK,EAAE,IAAI,mBAAmB,MAAM,oBAAA;AAAA,EACpC,MAAM,EAAE,IAAI,oBAAoB,MAAM,qBAAA;AAAA,EACtC,QAAQ,EAAE,IAAI,sBAAsB,MAAM,uBAAA;AAAA,EAC1C,MAAM,EAAE,IAAI,oBAAoB,MAAM,qBAAA;AACxC,GAMaC,IAAkB,OAAO,KAAKD,CAAe;AAcnD,SAASE,EAAiBC,GAA4C;AAC3E,MAAIC,IAAO;AACX,WAASC,IAAI,GAAGA,IAAIF,EAAK,QAAQE;AAC/B,IAAAD,IAAQA,IAAO,KAAKD,EAAK,WAAWE,CAAC,IAAK;AAE5C,SAAOJ,EAAgB,KAAK,IAAIG,CAAI,IAAIH,EAAgB,MAAM;AAChE;AAMO,MAAMK,IACX;AAwDK,SAASC,EAAI;AAAA,EAClB,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAMC;AAAA,EACN,SAAAC,IAAU;AAAA,EACV,QAAAC,IAAS;AAAA,EACT,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,WAAAC;AACF,GAAa;AACX,QAAMC,IAAgBR,MAAU,eAC1BS,IAAUD,IAAgB,OAAOhB,EAAgBQ,CAAK,GAEtDU,IAAeF,IACjB,qBACAG;AAAA,IACEF,GAAS;AAAA,IACTN,MAAY,aAAaM,GAAS;AAAA,IAClCN,MAAY,WAAW;AAAA,EAAA,GAGvBS,IAAUD;AAAA,IACdb;AAAA,IACAM,MAAW,YAAY;AAAA,IACvBE,KAAiB;AAAA,IACjBD,KAAW;AAAA,IACXK;AAAA,IACAH;AAAA,EAAA,GAGIM,IACJ,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAb,sBAAQA,GAAA,EAAK,eAAW,IAAC,WAAU,qBAAoB,IAAK;AAAA,IAC7D,gBAAAc,EAACC,GAAA,EAAgB,MAAAhB,GAAY,WAAU,eAAA,CAAe;AAAA,EAAA,GACxD;AAGF,SAAII,sBAEC,UAAA,EAAO,MAAK,UAAS,SAAAA,GAAkB,WAAWO,GAChD,UAAAC,GACH,IAIG,gBAAAG,EAAC,QAAA,EAAK,WAAWJ,GAAU,UAAAC,GAAQ;AAC5C;"}
@@ -0,0 +1,109 @@
1
+ "use client";
2
+ import { jsx as t, jsxs as c } from "react/jsx-runtime";
3
+ import { A as h } from "./avatar-g40cun6cn17fcxd4.js";
4
+ import { a as N } from "./tag-h5kwf5eh7dyyvc2c.js";
5
+ import { c as r } from "./cn-ct4n7r74mh8y0f48.js";
6
+ const g = {
7
+ tone: {
8
+ default: { classes: "", description: "Completed or normal event" },
9
+ muted: { classes: "opacity-55", description: "Upcoming / not-yet-started item" },
10
+ active: { classes: "", description: "Current / in-progress item (brand ring)" }
11
+ },
12
+ variant: {
13
+ compact: { classes: "", description: "Single-line event row" },
14
+ rich: { classes: "", description: "Full-width content row (comment / inline card)" }
15
+ }
16
+ }, z = {
17
+ tone: "default",
18
+ variant: "compact"
19
+ };
20
+ function f({ children: e, className: n }) {
21
+ return /* @__PURE__ */ t("ol", { className: r("flex flex-col", n), children: e });
22
+ }
23
+ function b(e) {
24
+ return e.connector ? e.connector : e.isFirst && e.isLast ? "none" : e.isFirst ? "end" : e.isLast ? "start" : "full";
25
+ }
26
+ function v(e) {
27
+ const n = e.trim().split(/\s+/).filter(Boolean);
28
+ return n.length === 0 ? "?" : n.length === 1 ? n[0].slice(0, 2).toUpperCase() : (n[0][0] + n[n.length - 1][0]).toUpperCase();
29
+ }
30
+ function T({ nodeType: e = "icon", avatar: n, icon: i, statusColor: s, node: a, tone: l }) {
31
+ if (a)
32
+ return /* @__PURE__ */ t("span", { className: "relative z-10 flex size-5 items-center justify-center", children: a });
33
+ if (e === "avatar" && n)
34
+ return /* @__PURE__ */ t("span", { className: "relative z-10", children: /* @__PURE__ */ t(h, { size: "xs", src: n.src, alt: n.name, initials: v(n.name) }) });
35
+ if (e === "status") {
36
+ const o = !s || s === "transparent" ? null : N[s];
37
+ return /* @__PURE__ */ t("span", { className: "relative z-10 flex size-5 items-center justify-center rounded-full bg-reki-base ring-1 ring-reki-line", children: /* @__PURE__ */ t("span", { className: r("size-2.5 rounded-full", o?.bg ?? "bg-reki-fill") }) });
38
+ }
39
+ return /* @__PURE__ */ t(
40
+ "span",
41
+ {
42
+ className: r(
43
+ "relative z-10 flex size-5 items-center justify-center rounded-full bg-reki-base text-reki-subtle ring-1",
44
+ l === "active" ? "ring-reki-brand text-reki-brand" : "ring-reki-line"
45
+ ),
46
+ children: i ? /* @__PURE__ */ t(i, { size: 12, weight: "bold" }) : null
47
+ }
48
+ );
49
+ }
50
+ function d(e) {
51
+ const { tone: n = "default", variant: i = "compact", children: s, className: a } = e, l = b(e), m = l === "full" || l === "start", o = l === "full" || l === "end", u = g.tone[n].classes;
52
+ return /* @__PURE__ */ c("li", { className: r("relative flex gap-3", i === "compact" ? "pb-1.5" : "pb-3", a), children: [
53
+ /* @__PURE__ */ c("div", { className: r("relative flex w-5 shrink-0 justify-center self-stretch", u), children: [
54
+ m ? /* @__PURE__ */ t("span", { "aria-hidden": !0, className: "absolute top-0 left-1/2 h-2.5 w-px -translate-x-1/2 bg-reki-hairline" }) : null,
55
+ o ? /* @__PURE__ */ t("span", { "aria-hidden": !0, className: "absolute top-2.5 bottom-0 left-1/2 w-px -translate-x-1/2 bg-reki-hairline" }) : null,
56
+ /* @__PURE__ */ t(T, { ...e })
57
+ ] }),
58
+ /* @__PURE__ */ t(
59
+ "div",
60
+ {
61
+ className: r(
62
+ "min-w-0 flex-1",
63
+ i === "compact" ? "flex min-h-5 items-center" : "pt-px",
64
+ u
65
+ ),
66
+ children: s
67
+ }
68
+ )
69
+ ] });
70
+ }
71
+ function p({ children: e, className: n }) {
72
+ return /* @__PURE__ */ t("div", { className: r("flex min-w-0 flex-col gap-1.5", n), children: e });
73
+ }
74
+ function x({ actor: e, action: n, target: i, timestamp: s, truncate: a = !0, className: l }) {
75
+ return /* @__PURE__ */ c(
76
+ "span",
77
+ {
78
+ className: r(
79
+ "flex min-w-0 items-baseline gap-1 text-sm leading-5",
80
+ a ? "truncate" : "flex-wrap",
81
+ l
82
+ ),
83
+ children: [
84
+ e ? /* @__PURE__ */ t("span", { className: "font-medium text-reki-default", children: e }) : null,
85
+ n ? /* @__PURE__ */ t("span", { className: "text-reki-subtle", children: n }) : null,
86
+ i ? /* @__PURE__ */ t("span", { className: "text-reki-default", children: i }) : null,
87
+ s ? /* @__PURE__ */ c("span", { className: "text-reki-subtle", children: [
88
+ "· ",
89
+ s
90
+ ] }) : null
91
+ ]
92
+ }
93
+ );
94
+ }
95
+ f.displayName = "Timeline";
96
+ d.displayName = "Timeline.Item";
97
+ p.displayName = "Timeline.Content";
98
+ x.displayName = "Timeline.Event";
99
+ const y = Object.assign(f, {
100
+ Item: d,
101
+ Content: p,
102
+ Event: x
103
+ });
104
+ export {
105
+ z as R,
106
+ y as T,
107
+ g as a
108
+ };
109
+ //# sourceMappingURL=timeline-lqurr2lcxkayomk2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-lqurr2lcxkayomk2.js","sources":["../../src/components/timeline/timeline.tsx"],"sourcesContent":["import type { ComponentType, ReactNode } from \"react\";\nimport { Avatar } from \"../avatar\";\nimport { REKI_TAG_COLORS, type TagColor } from \"../tag\";\nimport { cn } from \"../../utils/cn\";\n\n/** Variant standard export (reki convention). */\nexport const REKI_TIMELINE_VARIANTS = {\n tone: {\n default: { classes: \"\", description: \"Completed or normal event\" },\n muted: { classes: \"opacity-55\", description: \"Upcoming / not-yet-started item\" },\n active: { classes: \"\", description: \"Current / in-progress item (brand ring)\" },\n },\n variant: {\n compact: { classes: \"\", description: \"Single-line event row\" },\n rich: { classes: \"\", description: \"Full-width content row (comment / inline card)\" },\n },\n} as const;\n\nexport const REKI_TIMELINE_DEFAULT_VARIANTS = {\n tone: \"default\",\n variant: \"compact\",\n} as const;\n\nexport type RekiTimelineTone = keyof typeof REKI_TIMELINE_VARIANTS.tone;\nexport type RekiTimelineVariant = keyof typeof REKI_TIMELINE_VARIANTS.variant;\n\n/** Which half-segments of the connecting rail draw for an item. */\nexport type RekiTimelineConnector = \"full\" | \"start\" | \"end\" | \"none\";\n\ntype NodeType = \"avatar\" | \"icon\" | \"status\";\n\n/**\n * Timeline root props.\n *\n * @example\n * ```tsx\n * <Timeline>\n * <Timeline.Item isFirst nodeType=\"avatar\" avatar={{ name: \"Jane Doe\" }}>\n * <Timeline.Content>\n * <Timeline.Event actor=\"Jane Doe\" action=\"created the run\" timestamp=\"5d ago\" />\n * </Timeline.Content>\n * </Timeline.Item>\n * </Timeline>\n * ```\n */\nexport interface TimelineProps {\n /** `Timeline.Item` elements. */\n children?: ReactNode;\n /** Additional CSS classes merged via `cn()`. Use reki semantic tokens only. */\n className?: string;\n}\n\nfunction TimelineRoot({ children, className }: TimelineProps) {\n return <ol className={cn(\"flex flex-col\", className)}>{children}</ol>;\n}\n\nexport interface TimelineItemProps {\n /** Which node glyph to render. @default \"icon\" */\n nodeType?: NodeType;\n /** Avatar descriptor, used when `nodeType=\"avatar\"`. */\n avatar?: { src?: string | null; name: string };\n /** Phosphor glyph component, used when `nodeType=\"icon\"`. */\n icon?: ComponentType<{ size?: number; weight?: \"bold\" | \"regular\" | \"fill\" }>;\n /** Named status color, used when `nodeType=\"status\"`. */\n statusColor?: TagColor;\n /** Escape hatch: arbitrary 20px node content; overrides the typed node paths. */\n node?: ReactNode;\n /** Visual state. `muted` dims (upcoming), `active` brand-tints the node ring. @default \"default\" */\n tone?: RekiTimelineTone;\n /** `compact` constrains to a one-line row; `rich` allows full-width content. @default \"compact\" */\n variant?: RekiTimelineVariant;\n /** Which rail segments draw. Computed from `isFirst`/`isLast` when omitted. */\n connector?: RekiTimelineConnector;\n /** First item in the list — suppresses the rail above the node. */\n isFirst?: boolean;\n /** Last item in the list — suppresses the rail below the node. */\n isLast?: boolean;\n /** Expected to be a `Timeline.Content`. */\n children?: ReactNode;\n /** Additional CSS classes merged via `cn()`. Use reki semantic tokens only. */\n className?: string;\n}\n\nfunction resolveConnector(p: TimelineItemProps): RekiTimelineConnector {\n if (p.connector) {\n return p.connector;\n }\n if (p.isFirst && p.isLast) {\n return \"none\";\n }\n if (p.isFirst) {\n return \"end\";\n }\n if (p.isLast) {\n return \"start\";\n }\n return \"full\";\n}\n\nfunction initials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return \"?\";\n }\n if (parts.length === 1) {\n return parts[0].slice(0, 2).toUpperCase();\n }\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n}\n\nfunction TimelineNode({ nodeType = \"icon\", avatar, icon: Icon, statusColor, node, tone }: TimelineItemProps) {\n if (node) {\n return <span className=\"relative z-10 flex size-5 items-center justify-center\">{node}</span>;\n }\n\n if (nodeType === \"avatar\" && avatar) {\n return (\n <span className=\"relative z-10\">\n <Avatar size=\"xs\" src={avatar.src} alt={avatar.name} initials={initials(avatar.name)} />\n </span>\n );\n }\n\n if (nodeType === \"status\") {\n const isTransparent = !statusColor || statusColor === \"transparent\";\n const palette = isTransparent\n ? null\n : REKI_TAG_COLORS[statusColor as Exclude<TagColor, \"transparent\">];\n return (\n <span className=\"relative z-10 flex size-5 items-center justify-center rounded-full bg-reki-base ring-1 ring-reki-line\">\n <span className={cn(\"size-2.5 rounded-full\", palette?.bg ?? \"bg-reki-fill\")} />\n </span>\n );\n }\n\n return (\n <span\n className={cn(\n \"relative z-10 flex size-5 items-center justify-center rounded-full bg-reki-base text-reki-subtle ring-1\",\n tone === \"active\" ? \"ring-reki-brand text-reki-brand\" : \"ring-reki-line\",\n )}\n >\n {Icon ? <Icon size={12} weight=\"bold\" /> : null}\n </span>\n );\n}\n\nfunction TimelineItem(props: TimelineItemProps) {\n const { tone = \"default\", variant = \"compact\", children, className } = props;\n const connector = resolveConnector(props);\n const showTop = connector === \"full\" || connector === \"start\";\n const showBottom = connector === \"full\" || connector === \"end\";\n const toneClass = REKI_TIMELINE_VARIANTS.tone[tone].classes;\n\n return (\n <li className={cn(\"relative flex gap-3\", variant === \"compact\" ? \"pb-1.5\" : \"pb-3\", className)}>\n {/* rail: node + connecting line; the line sits behind the opaque node */}\n <div className={cn(\"relative flex w-5 shrink-0 justify-center self-stretch\", toneClass)}>\n {/* top segment: row top → node centre (10px) */}\n {showTop ? (\n <span aria-hidden className=\"absolute top-0 left-1/2 h-2.5 w-px -translate-x-1/2 bg-reki-hairline\" />\n ) : null}\n {/* bottom segment: node centre → row bottom */}\n {showBottom ? (\n <span aria-hidden className=\"absolute top-2.5 bottom-0 left-1/2 w-px -translate-x-1/2 bg-reki-hairline\" />\n ) : null}\n <TimelineNode {...props} />\n </div>\n <div\n className={cn(\n \"min-w-0 flex-1\",\n variant === \"compact\" ? \"flex min-h-5 items-center\" : \"pt-px\",\n toneClass,\n )}\n >\n {children}\n </div>\n </li>\n );\n}\n\nexport interface TimelineContentProps {\n /** A `Timeline.Event` (compact) or arbitrary rich content. */\n children?: ReactNode;\n /** Additional CSS classes merged via `cn()`. Use reki semantic tokens only. */\n className?: string;\n}\n\nfunction TimelineContent({ children, className }: TimelineContentProps) {\n return <div className={cn(\"flex min-w-0 flex-col gap-1.5\", className)}>{children}</div>;\n}\n\nexport interface TimelineEventProps {\n /** Actor name, rendered emphasised. */\n actor?: ReactNode;\n /** Verb phrase, rendered muted. */\n action?: ReactNode;\n /** Optional target entity, rendered in the default text color. */\n target?: ReactNode;\n /** Pre-formatted relative timestamp (e.g. \"3d ago\"); rendered muted after a separator. */\n timestamp?: ReactNode;\n /** Single-line truncation. @default true */\n truncate?: boolean;\n /** Additional CSS classes merged via `cn()`. Use reki semantic tokens only. */\n className?: string;\n}\n\nfunction TimelineEvent({ actor, action, target, timestamp, truncate = true, className }: TimelineEventProps) {\n return (\n <span\n className={cn(\n \"flex min-w-0 items-baseline gap-1 text-sm leading-5\",\n truncate ? \"truncate\" : \"flex-wrap\",\n className,\n )}\n >\n {actor ? <span className=\"font-medium text-reki-default\">{actor}</span> : null}\n {action ? <span className=\"text-reki-subtle\">{action}</span> : null}\n {target ? <span className=\"text-reki-default\">{target}</span> : null}\n {timestamp ? <span className=\"text-reki-subtle\">· {timestamp}</span> : null}\n </span>\n );\n}\n\nTimelineRoot.displayName = \"Timeline\";\nTimelineItem.displayName = \"Timeline.Item\";\nTimelineContent.displayName = \"Timeline.Content\";\nTimelineEvent.displayName = \"Timeline.Event\";\n\n/**\n * Timeline — presentational compound component for a Linear-style activity feed.\n *\n * A thin faint vertical line connects a column of ~20px nodes (avatar, status\n * circle, or glyph icon). Each item renders either a compact one-line\n * {@link Timeline.Event} or arbitrary rich content (a comment, an inline card).\n * Purely visual — ordering, data, and date formatting are the consumer's job.\n *\n * @example\n * ```tsx\n * <Timeline>\n * <Timeline.Item isFirst nodeType=\"status\" statusColor=\"green\">\n * <Timeline.Content>\n * <Timeline.Event actor=\"Florent\" action=\"moved to\" target=\"In Progress\" timestamp=\"3d ago\" />\n * </Timeline.Content>\n * </Timeline.Item>\n * <Timeline.Item isLast variant=\"rich\" tone=\"active\" nodeType=\"icon\" icon={PaperPlaneTiltIcon}>\n * <Timeline.Content>{inlineCard}</Timeline.Content>\n * </Timeline.Item>\n * </Timeline>\n * ```\n */\nexport const Timeline = Object.assign(TimelineRoot, {\n Item: TimelineItem,\n Content: TimelineContent,\n Event: TimelineEvent,\n});\n"],"names":["REKI_TIMELINE_VARIANTS","REKI_TIMELINE_DEFAULT_VARIANTS","TimelineRoot","children","className","cn","resolveConnector","p","initials","name","parts","TimelineNode","nodeType","avatar","Icon","statusColor","node","tone","jsx","Avatar","palette","REKI_TAG_COLORS","TimelineItem","props","variant","connector","showTop","showBottom","toneClass","jsxs","TimelineContent","TimelineEvent","actor","action","target","timestamp","truncate","Timeline"],"mappings":"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"}
@@ -2,10 +2,10 @@
2
2
  import { jsxs as o, jsx as l, Fragment as x } from "react/jsx-runtime";
3
3
  import { c as m } from "./cn-ct4n7r74mh8y0f48.js";
4
4
  import { r as d } from "./resolve-variant-t8jcltsizeg29ege.js";
5
- import { B as b } from "./button-nc5p1h28cwes0tjw.js";
5
+ import { B as b } from "./button-fvlz1rzc3s1hpyxs.js";
6
6
  import { u as y } from "./portal-provider-off76og7tjyz96ys.js";
7
7
  import * as a from "react";
8
- import { a0 as k, bE as F, a2 as V, a1 as T, a4 as _, bF as H, bG as N, a5 as R, bH as C, _ as I } from "./vendor-base-ui-bgl9g5nkvqy3tn36.js";
8
+ import { a0 as k, bE as F, a2 as V, a1 as T, a4 as _, bF as H, bG as N, a5 as R, bH as C, _ as I } from "./vendor-base-ui-djdjrfuoxlb1lubi.js";
9
9
  const s = a.forwardRef((t, e) => {
10
10
  const {
11
11
  alt: n,
@@ -367,4 +367,4 @@ export {
367
367
  e1 as c,
368
368
  z as u
369
369
  };
370
- //# sourceMappingURL=toast-ivr4097bstjcjotf.js.map
370
+ //# sourceMappingURL=toast-j47dl441zpxa1yw3.js.map