@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
@@ -175,6 +175,107 @@ export const THEME_CONFIG: ThemeConfig = {
175
175
  },
176
176
  },
177
177
  },
178
+ // --- CRM tag palette (text) ---
179
+ "reki-tag-gray": {
180
+ newName: "",
181
+ description: "Readable text for gray tag",
182
+ theme: {
183
+ reki: {
184
+ light: "var(--color-neutral-700, oklch(37.1% 0 0))",
185
+ dark: "var(--color-neutral-300, oklch(87% 0 0))",
186
+ },
187
+ },
188
+ },
189
+ "reki-tag-red": {
190
+ newName: "",
191
+ description: "Readable text for red tag",
192
+ theme: {
193
+ reki: {
194
+ light: "var(--color-red-700, oklch(50.5% 0.213 27.518))",
195
+ dark: "var(--color-red-300, oklch(80.8% 0.114 19.571))",
196
+ },
197
+ },
198
+ },
199
+ "reki-tag-orange": {
200
+ newName: "",
201
+ description: "Readable text for orange tag",
202
+ theme: {
203
+ reki: {
204
+ light: "var(--color-orange-700, oklch(55.3% 0.195 38.402))",
205
+ dark: "var(--color-orange-300, oklch(83.7% 0.128 66.29))",
206
+ },
207
+ },
208
+ },
209
+ "reki-tag-yellow": {
210
+ newName: "",
211
+ description: "Readable text for yellow tag",
212
+ theme: {
213
+ reki: {
214
+ light: "var(--color-yellow-700, oklch(55.4% 0.135 66.442))",
215
+ dark: "var(--color-yellow-300, oklch(90.5% 0.182 98.111))",
216
+ },
217
+ },
218
+ },
219
+ "reki-tag-green": {
220
+ newName: "",
221
+ description: "Readable text for green tag",
222
+ theme: {
223
+ reki: {
224
+ light: "var(--color-emerald-700, oklch(50.8% 0.118 165.612))",
225
+ dark: "var(--color-emerald-300, oklch(84.5% 0.143 164.978))",
226
+ },
227
+ },
228
+ },
229
+ "reki-tag-turquoise": {
230
+ newName: "",
231
+ description: "Readable text for turquoise tag",
232
+ theme: {
233
+ reki: {
234
+ light: "var(--color-teal-700, oklch(51.1% 0.096 186.391))",
235
+ dark: "var(--color-teal-300, oklch(85.5% 0.138 181.071))",
236
+ },
237
+ },
238
+ },
239
+ "reki-tag-sky": {
240
+ newName: "",
241
+ description: "Readable text for sky tag",
242
+ theme: {
243
+ reki: {
244
+ light: "var(--color-sky-700, oklch(50% 0.134 242.749))",
245
+ dark: "var(--color-sky-300, oklch(82.8% 0.111 230.318))",
246
+ },
247
+ },
248
+ },
249
+ "reki-tag-blue": {
250
+ newName: "",
251
+ description: "Readable text for blue tag",
252
+ theme: {
253
+ reki: {
254
+ light: "var(--color-blue-700, oklch(48.8% 0.243 264.376))",
255
+ dark: "var(--color-blue-300, oklch(80.9% 0.105 251.813))",
256
+ },
257
+ },
258
+ },
259
+ "reki-tag-purple": {
260
+ newName: "",
261
+ description: "Readable text for purple tag",
262
+ theme: {
263
+ reki: {
264
+ light: "var(--color-purple-700, oklch(49.6% 0.265 301.924))",
265
+ dark: "var(--color-purple-300, oklch(82.7% 0.119 306.383))",
266
+ },
267
+ },
268
+ },
269
+ "reki-tag-pink": {
270
+ newName: "",
271
+ description: "Readable text for pink tag",
272
+ theme: {
273
+ reki: {
274
+ light: "var(--color-pink-700, oklch(52.5% 0.223 3.958))",
275
+ dark: "var(--color-pink-300, oklch(82.3% 0.12 346.018))",
276
+ },
277
+ },
278
+ },
178
279
  },
179
280
 
180
281
  /**
@@ -183,11 +284,34 @@ export const THEME_CONFIG: ThemeConfig = {
183
284
  * CSS variable: --color-{token}
184
285
  */
185
286
  color: {
287
+ "reki-sidebar": {
288
+ newName: "",
289
+ theme: {
290
+ reki: {
291
+ light: "var(--color-reki-neutral-15, oklch(0.964 0.001 286.4))",
292
+ dark: "var(--color-reki-neutral-1000, oklch(10% 0 0))",
293
+ },
294
+ fedramp: {
295
+ light: "#5b697c",
296
+ dark: "#5b697c",
297
+ },
298
+ },
299
+ },
300
+
301
+ "reki-sidebar-active": {
302
+ newName: "",
303
+ theme: {
304
+ reki: {
305
+ light: "oklch(0.94 0.001 286.4)",
306
+ dark: "oklch(21% 0.006 285.885)",
307
+ },
308
+ },
309
+ },
186
310
  "reki-canvas": {
187
311
  newName: "",
188
312
  theme: {
189
313
  reki: {
190
- light: "var(--color-reki-neutral-25, oklch(98.75% 0 0))",
314
+ light: "var(--color-reki-neutral-25, oklch(0.991 0.001 286.4))",
191
315
  dark: "var(--color-reki-neutral-1000, oklch(10% 0 0))",
192
316
  },
193
317
  fedramp: {
@@ -200,7 +324,7 @@ export const THEME_CONFIG: ThemeConfig = {
200
324
  newName: "",
201
325
  theme: {
202
326
  reki: {
203
- light: "var(--color-reki-neutral-75, oklch(98% 0 0))",
327
+ light: "oklch(98% 0 0)",
204
328
  dark: "var(--color-reki-neutral-975, oklch(12% 0 0))",
205
329
  },
206
330
  },
@@ -231,7 +355,7 @@ export const THEME_CONFIG: ThemeConfig = {
231
355
  newName: "",
232
356
  theme: {
233
357
  reki: {
234
- light: "var(--color-neutral-100, oklch(97% 0 0))",
358
+ light: "var(--color-neutral-100, oklch(92% 0 0))",
235
359
  dark: "var(--color-reki-neutral-800, oklch(26.9% 0 0))",
236
360
  },
237
361
  },
@@ -314,7 +438,7 @@ export const THEME_CONFIG: ThemeConfig = {
314
438
  newName: "",
315
439
  theme: {
316
440
  reki: {
317
- light: "oklch(14.5% 0 0 / 0.1)",
441
+ light: "oklch(55.5% 0 0 / 0.1)",
318
442
  dark: "var(--color-reki-neutral-750, oklch(32% 0 0))",
319
443
  },
320
444
  },
@@ -323,7 +447,7 @@ export const THEME_CONFIG: ThemeConfig = {
323
447
  newName: "",
324
448
  theme: {
325
449
  reki: {
326
- light: "var(--color-reki-neutral-150, oklch(93.5% 0 0))",
450
+ light: "var(--color-reki-neutral-150, oklch(95.5% 0 0))",
327
451
  dark: "var(--color-neutral-800, oklch(26.9% 0 0))",
328
452
  },
329
453
  fedramp: {
@@ -586,6 +710,107 @@ export const THEME_CONFIG: ThemeConfig = {
586
710
  },
587
711
  },
588
712
  },
713
+ // --- CRM tag palette (background) ---
714
+ "reki-tag-gray": {
715
+ newName: "",
716
+ description: "Subtle background for gray tag",
717
+ theme: {
718
+ reki: {
719
+ light: "var(--color-neutral-100, oklch(97% 0 0))",
720
+ dark: "var(--color-neutral-950, oklch(14.5% 0 0))",
721
+ },
722
+ },
723
+ },
724
+ "reki-tag-red": {
725
+ newName: "",
726
+ description: "Subtle background for red tag",
727
+ theme: {
728
+ reki: {
729
+ light: "var(--color-red-100, oklch(93.6% 0.032 17.717))",
730
+ dark: "var(--color-red-950, oklch(25.8% 0.092 26.042))",
731
+ },
732
+ },
733
+ },
734
+ "reki-tag-orange": {
735
+ newName: "",
736
+ description: "Subtle background for orange tag",
737
+ theme: {
738
+ reki: {
739
+ light: "var(--color-orange-100, oklch(95.4% 0.038 75.164))",
740
+ dark: "var(--color-orange-950, oklch(26.6% 0.079 36.259))",
741
+ },
742
+ },
743
+ },
744
+ "reki-tag-yellow": {
745
+ newName: "",
746
+ description: "Subtle background for yellow tag",
747
+ theme: {
748
+ reki: {
749
+ light: "var(--color-yellow-100, oklch(97.3% 0.071 103.193))",
750
+ dark: "var(--color-yellow-950, oklch(28.6% 0.066 53.813))",
751
+ },
752
+ },
753
+ },
754
+ "reki-tag-green": {
755
+ newName: "",
756
+ description: "Subtle background for green tag",
757
+ theme: {
758
+ reki: {
759
+ light: "var(--color-emerald-100, oklch(95% 0.052 163.051))",
760
+ dark: "var(--color-emerald-950, oklch(26.2% 0.051 172.552))",
761
+ },
762
+ },
763
+ },
764
+ "reki-tag-turquoise": {
765
+ newName: "",
766
+ description: "Subtle background for turquoise tag",
767
+ theme: {
768
+ reki: {
769
+ light: "var(--color-teal-100, oklch(95.3% 0.051 180.801))",
770
+ dark: "var(--color-teal-950, oklch(27.7% 0.046 192.524))",
771
+ },
772
+ },
773
+ },
774
+ "reki-tag-sky": {
775
+ newName: "",
776
+ description: "Subtle background for sky tag",
777
+ theme: {
778
+ reki: {
779
+ light: "var(--color-sky-100, oklch(95.1% 0.026 236.824))",
780
+ dark: "var(--color-sky-950, oklch(29.3% 0.066 243.157))",
781
+ },
782
+ },
783
+ },
784
+ "reki-tag-blue": {
785
+ newName: "",
786
+ description: "Subtle background for blue tag",
787
+ theme: {
788
+ reki: {
789
+ light: "var(--color-blue-100, oklch(93.2% 0.032 255.585))",
790
+ dark: "var(--color-blue-950, oklch(28.2% 0.091 267.935))",
791
+ },
792
+ },
793
+ },
794
+ "reki-tag-purple": {
795
+ newName: "",
796
+ description: "Subtle background for purple tag",
797
+ theme: {
798
+ reki: {
799
+ light: "var(--color-purple-100, oklch(94.6% 0.033 307.174))",
800
+ dark: "var(--color-purple-950, oklch(29.1% 0.149 302.717))",
801
+ },
802
+ },
803
+ },
804
+ "reki-tag-pink": {
805
+ newName: "",
806
+ description: "Subtle background for pink tag",
807
+ theme: {
808
+ reki: {
809
+ light: "var(--color-pink-100, oklch(94.8% 0.028 342.258))",
810
+ dark: "var(--color-pink-950, oklch(28.4% 0.109 3.907))",
811
+ },
812
+ },
813
+ },
589
814
  },
590
815
 
591
816
  /**
@@ -1 +0,0 @@
1
- {"version":3,"file":"button-nc5p1h28cwes0tjw.js","sources":["../../src/components/button/button.tsx"],"sourcesContent":["import React from \"react\";\nimport { ArrowsClockwise, type Icon } from \"@phosphor-icons/react\";\nimport { Loader } from \"../loader/loader\";\nimport { Tooltip } from \"../tooltip/tooltip\";\nimport { cn } from \"../../utils/cn\";\nimport { resolveVariant } from \"../../utils/resolve-variant\";\nimport { useLinkComponent } from \"../../utils/link-provider\";\n\n/** Button variant definitions mapping shape, size, and variant names to their Tailwind classes. */\nexport const REKI_BUTTON_VARIANTS = {\n shape: {\n base: {\n classes: \"\",\n description: \"Default rectangular button shape\",\n },\n square: {\n classes: \"items-center justify-center p-0\",\n description: \"Square button for icon-only actions\",\n },\n circle: {\n classes: \"items-center justify-center p-0 rounded-full\",\n description: \"Circular button for icon-only actions\",\n },\n },\n size: {\n xs: {\n classes: \"h-5 gap-1 rounded-sm px-1.5 text-xs\",\n description: \"Extra small button for compact UIs\",\n },\n sm: {\n classes: \"h-6.5 gap-1 rounded-md px-2 text-xs\",\n description: \"Small button for secondary actions\",\n },\n base: {\n classes: \"h-9 gap-1.5 rounded-lg px-3 text-base\",\n description: \"Default button size\",\n },\n lg: {\n classes: \"h-10 gap-2 rounded-lg px-4 text-base\",\n description: \"Large button for primary CTAs\",\n },\n },\n compactSize: {\n xs: { classes: \"size-3.5\" },\n sm: { classes: \"size-6.5\" },\n base: { classes: \"size-9\" },\n lg: { classes: \"size-10\" },\n },\n variant: {\n primary: {\n classes:\n \"relative overflow-hidden bg-(--reki-button-emphasis-bg) !text-white ring ring-(--reki-button-emphasis-ring) disabled:opacity-50\",\n description: \"High-emphasis button for primary actions\",\n },\n secondary: {\n classes:\n \"bg-reki-base !text-reki-default ring not-disabled:hover:bg-reki-tint disabled:bg-reki-base/50 disabled:!text-reki-default/70 ring-reki-line data-[state=open]:bg-reki-base\",\n description: \"Default button style for most actions\",\n },\n ghost: {\n classes: \"text-reki-default hover:bg-reki-tint shadow-none bg-inherit\",\n description: \"Minimal button with no background\",\n },\n destructive: {\n classes:\n \"relative overflow-hidden bg-(--reki-button-emphasis-bg) !text-white ring ring-(--reki-button-emphasis-ring) disabled:opacity-50\",\n description: \"Danger button for destructive actions like delete\",\n },\n \"secondary-destructive\": {\n classes:\n \"bg-reki-base !text-reki-danger ring not-disabled:hover:!text-reki-danger not-disabled:hover:ring-reki-danger/30 disabled:bg-reki-base/50 disabled:!text-reki-danger/70 ring-reki-line data-[state=open]:bg-reki-base\",\n description:\n \"Secondary button with destructive text for less prominent dangerous actions\",\n },\n outline: {\n classes:\n \"bg-transparent text-reki-default ring ring-reki-line transition-colors not-disabled:hover:text-reki-strong not-disabled:hover:ring-reki-focus/25\",\n description: \"Bordered button with transparent background\",\n },\n },\n} as const;\n\nexport const REKI_BUTTON_DEFAULT_VARIANTS = {\n shape: \"base\",\n size: \"base\",\n variant: \"secondary\",\n} as const;\n\n// Derived types from REKI_BUTTON_VARIANTS\nexport type RekiButtonShape = keyof typeof REKI_BUTTON_VARIANTS.shape;\nexport type RekiButtonSize = keyof typeof REKI_BUTTON_VARIANTS.size;\nexport type RekiButtonVariant = keyof typeof REKI_BUTTON_VARIANTS.variant;\n\nexport interface RekiButtonVariantsProps {\n /**\n * Button shape.\n * - `\"base\"` — Default rectangular button\n * - `\"square\"` — Square button for icon-only actions\n * - `\"circle\"` — Circular button for icon-only actions\n * @default \"base\"\n */\n shape?: RekiButtonShape;\n /**\n * Button size.\n * - `\"xs\"` — Extra small for compact UIs\n * - `\"sm\"` — Small for secondary actions\n * - `\"base\"` — Default size\n * - `\"lg\"` — Large for primary CTAs\n * @default \"base\"\n */\n size?: RekiButtonSize;\n /**\n * Visual style of the button.\n * - `\"primary\"` — High-emphasis, brand-colored for primary actions\n * - `\"secondary\"` — Default style with border for most actions\n * - `\"ghost\"` — Minimal, no background for tertiary actions\n * - `\"destructive\"` — Danger button for destructive actions\n * - `\"secondary-destructive\"` — Secondary style with destructive text\n * - `\"outline\"` — Bordered with transparent background\n * @default \"secondary\"\n */\n variant?: RekiButtonVariant;\n}\n\nexport function buttonVariants({\n variant = REKI_BUTTON_DEFAULT_VARIANTS.variant,\n size = REKI_BUTTON_DEFAULT_VARIANTS.size,\n shape = REKI_BUTTON_DEFAULT_VARIANTS.shape,\n}: RekiButtonVariantsProps = {}) {\n const isCompactShape = shape === \"square\" || shape === \"circle\";\n\n return cn(\n // Base styles\n \"group flex w-max shrink-0 items-center font-medium select-none\",\n \"border-0 shadow-xs\",\n \"focus:outline-none focus:ring-reki-focus/50 focus-visible:ring-2 focus-visible:ring-reki-brand\",\n \"cursor-pointer\",\n // Disabled state\n \"disabled:cursor-not-allowed disabled:text-reki-subtle\",\n resolveVariant(\n REKI_BUTTON_VARIANTS.size,\n size,\n REKI_BUTTON_DEFAULT_VARIANTS.size,\n ).classes,\n resolveVariant(\n REKI_BUTTON_VARIANTS.shape,\n shape,\n REKI_BUTTON_DEFAULT_VARIANTS.shape,\n ).classes,\n isCompactShape &&\n resolveVariant(\n REKI_BUTTON_VARIANTS.compactSize,\n size,\n REKI_BUTTON_DEFAULT_VARIANTS.size,\n ).classes,\n resolveVariant(\n REKI_BUTTON_VARIANTS.variant,\n variant,\n REKI_BUTTON_DEFAULT_VARIANTS.variant,\n ).classes,\n );\n}\n\n// Normalize icon prop to support both React elements and component types\nconst renderIconNode = (IconComponent?: Icon | React.ReactNode) => {\n if (!IconComponent) return null;\n if (React.isValidElement(IconComponent)) return IconComponent;\n const Comp = IconComponent as React.ComponentType<Record<string, unknown>>;\n return <Comp />;\n};\n\nconst getEmphasisToken = (variant: RekiButtonVariant) => {\n if (variant === \"primary\") return \"var(--color-reki-brand)\";\n if (variant === \"destructive\") return \"var(--color-reki-danger)\";\n return undefined;\n};\n\nconst getEmphasisStyle = (variant: RekiButtonVariant) => {\n const token = getEmphasisToken(variant);\n if (!token) return undefined;\n\n return {\n \"--reki-button-emphasis-ring\": `color-mix(in oklch, ${token}, black 10%)`,\n \"--reki-button-emphasis-bg\": `color-mix(in oklch, ${token}, white 30%)`,\n \"--reki-button-emphasis-gradient-start\": `color-mix(in oklch, ${token}, white 15%)`,\n \"--reki-button-emphasis-gradient-end\": token,\n } satisfies React.CSSProperties & Record<`--${string}`, string>;\n};\n\nconst renderButtonContent = (\n variant: RekiButtonVariant,\n iconNode: React.ReactNode,\n children: React.ReactNode,\n) => {\n const childNode =\n children != null ? <span className=\"contents\">{children}</span> : null;\n\n if (!getEmphasisToken(variant)) {\n return (\n <>\n {iconNode}\n {childNode}\n </>\n );\n }\n\n return (\n <>\n <span\n aria-hidden=\"true\"\n className=\"absolute inset-0 rounded-[inherit] bg-linear-to-b from-(--reki-button-emphasis-gradient-start) to-(--reki-button-emphasis-gradient-end) translate-y-px group-hover:from-(--reki-button-emphasis-bg)\"\n />\n <span className=\"relative flex items-center gap-1.5\">\n {iconNode}\n {childNode}\n </span>\n </>\n );\n};\n\n/**\n * Button component props.\n *\n * Uses a discriminated union on `shape` so that icon-only buttons\n * (`shape=\"square\"` or `shape=\"circle\"`) require an `aria-label`.\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\">Save</Button>\n * <Button variant=\"secondary\" shape=\"square\" icon={PlusIcon} aria-label=\"Add\" />\n * <Button variant=\"destructive\" loading>Deleting...</Button>\n * ```\n */\ntype ButtonBaseProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Content rendered inside the button. */\n children?: React.ReactNode;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Icon from `@phosphor-icons/react` or a React element. Rendered before children. */\n icon?: Icon | React.ReactNode;\n /** Shows a loading spinner and disables interaction. */\n loading?: boolean;\n /** When set, wraps the button in a Tooltip with this content. */\n title?: React.ReactNode;\n};\n\ntype ButtonWithTextProps = ButtonBaseProps & {\n shape?: \"base\";\n size?: RekiButtonSize;\n variant?: RekiButtonVariant;\n};\n\ntype IconOnlyButtonProps = ButtonBaseProps & {\n shape: \"square\" | \"circle\";\n size?: RekiButtonSize;\n variant?: RekiButtonVariant;\n /** Required for icon-only buttons to provide accessible label for screen readers */\n \"aria-label\": string;\n};\n\nexport type ButtonProps = ButtonWithTextProps | IconOnlyButtonProps;\n\n/**\n * LinkButton component props — renders an anchor styled as a button.\n *\n * @example\n * ```tsx\n * <LinkButton href=\"/docs\" variant=\"ghost\" icon={BookIcon}>Docs</LinkButton>\n * <LinkButton href=\"https://example.com\" external>Visit Site</LinkButton>\n * ```\n */\nexport type LinkButtonProps = React.AnchorHTMLAttributes<HTMLAnchorElement> &\n RekiButtonVariantsProps & {\n /** Content rendered inside the link button. */\n children?: React.ReactNode;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Icon from `@phosphor-icons/react` or a React element. Rendered before children. */\n icon?: Icon | React.ReactNode;\n /** When `true`, opens in a new tab with `rel=\"noopener noreferrer\"`. */\n external?: boolean;\n linksExternal?: boolean;\n };\n\n/**\n * Primary action trigger. Supports multiple variants, sizes, shapes, icons, and loading state.\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\">Save</Button>\n * <Button variant=\"secondary\" icon={PlusIcon}>Create Worker</Button>\n * ```\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n className,\n disabled,\n loading,\n shape = \"base\",\n size = \"base\",\n variant = \"secondary\",\n icon: IconComponent,\n style,\n title,\n ...props\n },\n ref,\n ) => {\n const { type, ...restProps } = props;\n const emphasisStyle = getEmphasisStyle(variant);\n const iconNode = loading ? (\n <Loader size={size === \"lg\" ? 16 : 14} />\n ) : (\n renderIconNode(IconComponent)\n );\n\n const button = (\n <button\n ref={ref}\n data-reki-component=\"Button\"\n className={cn(\n buttonVariants({ variant, size, shape }),\n disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n disabled={loading || disabled}\n style={emphasisStyle ? { ...emphasisStyle, ...style } : style}\n type={type ?? \"button\"}\n {...restProps}\n >\n {renderButtonContent(variant, iconNode, children)}\n </button>\n );\n\n if (title) {\n return <Tooltip content={title} render={button} />;\n }\n\n return button;\n },\n);\n\nButton.displayName = \"Button\";\n\n/**\n * Square button with a rotating arrows icon, used to trigger data refresh actions.\n *\n * @example\n * ```tsx\n * <RefreshButton loading={isRefreshing} onClick={refresh} />\n * ```\n */\nexport const RefreshButton = ({\n \"aria-label\": ariaLabel = \"Refresh\",\n loading,\n ...props\n}: ButtonProps) => (\n <Button shape=\"square\" aria-label={ariaLabel} {...props}>\n <ArrowsClockwise\n className={cn({\n \"animate-refresh\": loading,\n \"size-4.5\": props.size === \"base\" || !props.size,\n \"size-4\": props.size === \"sm\",\n \"size-5\": props.size === \"lg\",\n })}\n />\n </Button>\n);\n\n/**\n * Anchor element styled as a button. Integrates with `LinkProvider` for framework routing.\n *\n * @example\n * ```tsx\n * <LinkButton href=\"/settings\" variant=\"ghost\">Settings</LinkButton>\n * ```\n */\nexport const LinkButton = React.forwardRef<HTMLAnchorElement, LinkButtonProps>(\n (\n {\n children,\n className,\n external,\n href,\n shape = \"base\",\n size = \"base\",\n variant = \"ghost\",\n icon: IconComponent,\n style,\n // linksExternal = false,\n ...props\n },\n ref,\n ) => {\n const LinkComponent = useLinkComponent();\n const emphasisStyle = getEmphasisStyle(variant);\n const externalProps = external\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n\n return (\n <LinkComponent\n ref={ref}\n data-reki-component=\"LinkButton\"\n className={cn(\n buttonVariants({ variant, size, shape }),\n \"flex items-center no-underline!\",\n className,\n )}\n href={href}\n style={emphasisStyle ? { ...emphasisStyle, ...style } : style}\n to={typeof href === \"string\" ? href : undefined}\n {...externalProps}\n {...props}\n >\n {renderButtonContent(variant, renderIconNode(IconComponent), children)}\n </LinkComponent>\n );\n },\n);\n\nLinkButton.displayName = \"LinkButton\";\n"],"names":["REKI_BUTTON_VARIANTS","REKI_BUTTON_DEFAULT_VARIANTS","buttonVariants","variant","size","shape","isCompactShape","cn","resolveVariant","renderIconNode","IconComponent","React","getEmphasisToken","getEmphasisStyle","token","renderButtonContent","iconNode","children","childNode","jsx","jsxs","Fragment","Button","className","disabled","loading","style","title","props","ref","type","restProps","emphasisStyle","Loader","button","Tooltip","RefreshButton","ariaLabel","ArrowsClockwise","LinkButton","external","href","LinkComponent","useLinkComponent","externalProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-palette-fe5cjfdgsg3t17vq.js","sources":["../../src/components/command-palette/command-palette.tsx"],"sourcesContent":["import {\n useRef,\n useCallback,\n createContext,\n useContext,\n forwardRef,\n type CSSProperties,\n} from \"react\";\nimport { Autocomplete } from \"@base-ui/react/autocomplete\";\nimport { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport {\n MagnifyingGlassIcon,\n ArrowRightIcon,\n ArrowSquareOutIcon,\n CaretRightIcon,\n} from \"@phosphor-icons/react\";\n\nimport { LayerCard } from \"../layer-card\";\nimport { Loader } from \"../loader\";\nimport { cn } from \"../../utils\";\nimport {\n usePortalContainer,\n type PortalContainer,\n} from \"../../utils/portal-provider\";\nimport type {\n HighlightRange,\n CommandPaletteRootProps,\n CommandPaletteInputProps,\n CommandPaletteListProps,\n CommandPaletteGroupProps,\n CommandPaletteGroupLabelProps,\n CommandPaletteItemProps,\n CommandPaletteEmptyProps,\n CommandPaletteLoadingProps,\n CommandPaletteFooterProps,\n CommandPaletteResultItemProps,\n} from \"./types\";\n\n/**\n * CommandPalette - A composable command palette component for Reki\n *\n * Uses @base-ui/react/autocomplete primitives for accessible command palette functionality.\n *\n * Keyboard navigation is built-in:\n * - Arrow keys (up/down) move highlight between items\n * - Enter selects the highlighted item (calls onSelect with newTab: false)\n * - Cmd+Enter (Mac) / Ctrl+Enter (Windows/Linux) selects with newTab: true\n * - First item is auto-highlighted when results change\n * - Escape closes the dialog\n *\n * Usage:\n * ```tsx\n * <CommandPalette.Root\n * open={open}\n * onOpenChange={setOpen}\n * items={results}\n * value={searchTerm}\n * onValueChange={setSearchTerm}\n * itemToStringValue={(group) => group.label}\n * onSelect={(item, { newTab }) => handleSelect(item, newTab)}\n * getSelectableItems={(groups) => groups.flatMap(g => g.items)}\n * >\n * <CommandPalette.Input placeholder=\"Search...\" />\n * <CommandPalette.List>\n * <Autocomplete.List>\n * {(group) => (\n * <CommandPalette.Group items={group.items}>\n * <CommandPalette.GroupLabel>{group.label}</CommandPalette.GroupLabel>\n * <Autocomplete.Collection>\n * {(item) => (\n * <CommandPalette.Item value={item} onClick={(e) => handleSelect(item, e.metaKey || e.ctrlKey)}>\n * {item.title}\n * </CommandPalette.Item>\n * )}\n * </Autocomplete.Collection>\n * </CommandPalette.Group>\n * )}\n * </Autocomplete.List>\n * <CommandPalette.Empty>No results found</CommandPalette.Empty>\n * </CommandPalette.List>\n * <CommandPalette.Footer />\n * </CommandPalette.Root>\n * ```\n */\n\n/**\n * Dialog context for passing close handler to children\n */\ninterface DialogContextValue {\n onClose?: () => void;\n}\n\nconst DialogContext = createContext<DialogContextValue>({});\n\n/**\n * Props for the Dialog component\n */\ninterface DialogProps {\n /** Whether the dialog is open */\n open: boolean;\n /** Callback when the open state changes */\n onOpenChange: (open: boolean) => void;\n /**\n * Optional callback when backdrop is clicked.\n * Receives the mouse event for position tracking (e.g., for ripple effects).\n * If not provided, backdrop click calls onOpenChange(false).\n */\n onBackdropClick?: (e: React.MouseEvent) => void;\n /** Child content - typically one or more Panel components */\n children: React.ReactNode;\n /**\n * Container element for the portal. Use this to render the command palette inside\n * a Shadow DOM or custom container. Overrides `RekiPortalProvider` context.\n * @default document.body (or RekiPortalProvider container if set)\n */\n container?: PortalContainer;\n}\n\n/**\n * Dialog component - Modal wrapper for command palette content.\n *\n * Use this when you need a dialog that can swap between different Panel contents\n * without re-mounting (e.g., drill-down navigation).\n *\n * @example\n * ```tsx\n * <CommandPalette.Dialog open={open} onOpenChange={setOpen}>\n * {showDrillDown ? (\n * <ZonePicker />\n * ) : (\n * <CommandPalette.Panel items={results} ...>\n * ...\n * </CommandPalette.Panel>\n * )}\n * </CommandPalette.Dialog>\n * ```\n */\nfunction Dialog({\n open,\n onOpenChange,\n onBackdropClick,\n children,\n container: containerProp,\n}: DialogProps) {\n const contextContainer = usePortalContainer();\n const container = containerProp ?? contextContainer ?? undefined;\n\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (onBackdropClick) {\n onBackdropClick(e);\n } else {\n onOpenChange(false);\n }\n };\n\n const handleClose = useCallback(() => {\n onOpenChange(false);\n }, [onOpenChange]);\n\n return (\n <DialogBase.Root open={open} onOpenChange={onOpenChange} modal>\n <DialogBase.Portal container={container}>\n <DialogBase.Backdrop\n className=\"fixed inset-0 bg-reki-overlay opacity-80 transition-all duration-150 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0\"\n onClick={handleBackdropClick}\n />\n <LayerCard\n render={<DialogBase.Popup />}\n className={cn(\n \"fixed top-[10vh] left-1/2 w-full max-w-2xl -translate-x-1/2\",\n \"overflow-hidden rounded-lg\",\n \"duration-150 data-[ending-style]:scale-90 data-[ending-style]:opacity-0 data-[starting-style]:scale-90 data-[starting-style]:opacity-0\",\n )}\n style={\n {\n transitionProperty: \"scale, opacity\",\n transitionTimingFunction:\n \"var(--default-transition-timing-function)\",\n } as CSSProperties\n }\n >\n <DialogContext.Provider value={{ onClose: handleClose }}>\n {children}\n </DialogContext.Provider>\n </LayerCard>\n </DialogBase.Portal>\n </DialogBase.Root>\n );\n}\n\n/**\n * Root component - Dialog + Panel combined for simple use cases.\n *\n * For cases where you need to swap content inside the dialog without\n * re-mounting (e.g., drill-down navigation), use Dialog + Panel separately.\n *\n * Keyboard navigation is always enabled:\n * - Arrow keys (up/down) move highlight\n * - Enter selects highlighted item\n * - Cmd/Ctrl+Enter selects with newTab: true\n * - First item is auto-highlighted when results change\n */\nfunction Root<TGroup, TItem = TGroup>({\n open,\n onOpenChange,\n onBackdropClick,\n children,\n items,\n value,\n onValueChange,\n onItemHighlighted,\n itemToStringValue,\n filter,\n onSelect,\n getSelectableItems,\n container,\n}: CommandPaletteRootProps<TGroup, TItem>) {\n return (\n <Dialog\n open={open}\n onOpenChange={onOpenChange}\n onBackdropClick={onBackdropClick}\n container={container}\n >\n <Panel\n items={items}\n value={value}\n onValueChange={onValueChange}\n onItemHighlighted={onItemHighlighted}\n itemToStringValue={itemToStringValue}\n filter={filter}\n open={open}\n onSelect={onSelect}\n getSelectableItems={getSelectableItems}\n >\n {children}\n </Panel>\n </Dialog>\n );\n}\n\n/**\n * InputHeader component - Internal styled container for search input.\n */\nfunction InputHeader({\n children,\n leading,\n trailing,\n}: {\n children: React.ReactNode;\n leading?: React.ReactNode;\n trailing?: React.ReactNode;\n}) {\n return (\n <div className=\"flex items-center gap-3 bg-reki-base px-4 py-3 focus-within:ring-2 focus-within:ring-reki-brand\">\n {leading ?? (\n <MagnifyingGlassIcon\n className=\"h-4 w-4 text-reki-subtle\"\n weight=\"bold\"\n />\n )}\n {children}\n {trailing}\n </div>\n );\n}\n\n/**\n * List component - Scrollable results container\n *\n * Wrapper div with proper styling, contains Autocomplete.List internally.\n * Supports ref forwarding for scroll control.\n */\nconst List = forwardRef<\n HTMLDivElement,\n CommandPaletteListProps & { className?: string }\n>(function List({ children, className }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n \"relative min-h-0 flex-1 overflow-y-auto rounded-b-lg bg-reki-base px-2 py-2 scroll-py-2 ring-1 ring-reki-hairline\",\n className,\n )}\n >\n {children}\n </div>\n );\n});\n\nList.displayName = \"CommandPalette.List\";\n\n/**\n * Group component - Category grouping\n *\n * Re-export of Autocomplete.Group with default styling.\n */\nfunction Group({\n children,\n className,\n ...props\n}: CommandPaletteGroupProps & {\n className?: string;\n items?: unknown[];\n}) {\n return (\n <Autocomplete.Group className={cn(\"space-y-0.5\", className)} {...props}>\n {children}\n </Autocomplete.Group>\n );\n}\n\n/**\n * GroupLabel component - Section header text\n *\n * Re-export of Autocomplete.GroupLabel with styling matching SectionHeader.\n */\nfunction GroupLabel({\n children,\n className,\n}: CommandPaletteGroupLabelProps & { className?: string }) {\n return (\n <Autocomplete.GroupLabel\n className={cn(\n \"mb-2 px-2 pt-1 text-xs font-semibold text-reki-subtle\",\n className,\n )}\n >\n {children}\n </Autocomplete.GroupLabel>\n );\n}\n\n/**\n * Item component - Individual result item\n *\n * Re-export of Autocomplete.Item with styling matching SearchResultItem.\n * Note: Use onClick for selection handling, matching the existing CommandPalette pattern.\n */\nfunction Item<T>({\n value,\n disabled,\n children,\n className,\n onClick,\n}: CommandPaletteItemProps<T> & {\n className?: string;\n}) {\n return (\n <Autocomplete.Item\n value={value}\n disabled={disabled}\n onClick={onClick}\n className={cn(\n \"group flex w-full items-center gap-3 px-2 py-1.5 text-left text-base transition-colors\",\n \"cursor-pointer data-[highlighted]:bg-reki-overlay\",\n \"rounded-lg\",\n disabled && \"cursor-default opacity-50\",\n className,\n )}\n >\n {children}\n </Autocomplete.Item>\n );\n}\n\n/**\n * Empty component - Empty state when no results\n *\n * Re-export of Autocomplete.Empty with default styling.\n */\nfunction Empty({ children }: CommandPaletteEmptyProps) {\n return (\n <Autocomplete.Empty>\n <div className=\"p-8 text-center\">\n <p className=\"text-reki-subtle\">{children ?? \"No results found\"}</p>\n </div>\n </Autocomplete.Empty>\n );\n}\n\n/**\n * Loading component - Loading spinner state\n *\n * Centered loading spinner using Reki Loader.\n */\nfunction Loading({ children }: CommandPaletteLoadingProps) {\n return (\n <div className=\"flex items-center justify-center p-8\">\n {children ?? <Loader size={24} />}\n </div>\n );\n}\n\n/**\n * Footer component - Styled container for keyboard hints or other footer content.\n *\n * Children are required - this is just a styled container.\n * Consumers should provide their own keyboard hints with proper i18n.\n */\nfunction Footer({ children }: CommandPaletteFooterProps) {\n return (\n <div className=\"flex items-center justify-between rounded-b-lg bg-reki-elevated px-4 py-3 text-xs text-reki-subtle\">\n {children}\n </div>\n );\n}\n\n/**\n * HighlightedText - Renders text with highlighted portions based on match indices.\n * Highlighted text is shown with a background color to indicate matches.\n */\nfunction HighlightedText({\n text,\n highlights,\n className,\n}: {\n text: string;\n highlights?: HighlightRange[];\n className?: string;\n}) {\n if (!highlights || highlights.length === 0) {\n return <span className={className}>{text}</span>;\n }\n\n // Sort highlights by start index and merge overlapping ranges\n const sortedHighlights = [...highlights].sort((a, b) => a[0] - b[0]);\n const mergedHighlights: HighlightRange[] = [];\n\n for (const range of sortedHighlights) {\n const last = mergedHighlights[mergedHighlights.length - 1];\n if (last && range[0] <= last[1] + 1) {\n // Merge overlapping or adjacent ranges\n last[1] = Math.max(last[1], range[1]);\n } else {\n mergedHighlights.push([...range]);\n }\n }\n\n const parts: React.ReactNode[] = [];\n let lastIndex = 0;\n\n mergedHighlights.forEach((range, i) => {\n const [start, end] = range;\n\n // Add non-highlighted text before this match\n if (start > lastIndex) {\n parts.push(<span key={`text-${i}`}>{text.slice(lastIndex, start)}</span>);\n }\n\n // Add highlighted text (end index is inclusive)\n parts.push(\n <mark\n key={`highlight-${i}`}\n className=\"rounded-sm bg-reki-warning/50 text-reki-default\"\n >\n {text.slice(start, end + 1)}\n </mark>,\n );\n\n lastIndex = end + 1;\n });\n\n // Add remaining non-highlighted text\n if (lastIndex < text.length) {\n parts.push(<span key=\"text-end\">{text.slice(lastIndex)}</span>);\n }\n\n return <span className={className}>{parts}</span>;\n}\n\n/**\n * ResultItem - Rich item component with breadcrumbs, highlights, icons, and external indicators.\n *\n * Use this for search result items that need breadcrumb navigation, text highlighting,\n * or external link indicators. For simple items, use Item instead.\n */\nfunction ResultItem<T>({\n title,\n breadcrumbs,\n titleHighlights,\n breadcrumbHighlights,\n description,\n icon,\n value,\n onClick,\n showArrow = true,\n external = false,\n nonInteractive = false,\n}: CommandPaletteResultItemProps<T>) {\n return (\n <Autocomplete.Item\n value={value}\n onClick={nonInteractive ? undefined : (e: React.MouseEvent) => onClick(e)}\n className={cn(\n \"group flex w-full items-center gap-3 rounded-lg px-2 py-1.5 text-left transition-colors\",\n nonInteractive\n ? \"cursor-default\"\n : \"cursor-pointer data-[highlighted]:bg-reki-overlay\",\n )}\n >\n {icon && (\n <div className=\"flex flex-shrink-0 items-center text-reki-subtle\">\n {icon}\n </div>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 truncate\">\n {breadcrumbs?.map((crumb, index) => (\n <span key={index} className=\"flex items-center gap-2\">\n <HighlightedText\n text={crumb}\n highlights={breadcrumbHighlights?.[index]}\n className=\"text-base text-reki-default\"\n />\n <CaretRightIcon\n className=\"h-3 w-3 flex-shrink-0 text-reki-subtle\"\n weight=\"bold\"\n />\n </span>\n ))}\n <HighlightedText\n text={title}\n highlights={titleHighlights}\n className=\"text-base text-reki-default\"\n />\n {external && (\n <ArrowSquareOutIcon className=\"h-3.5 w-3.5 flex-shrink-0 text-reki-subtle\" />\n )}\n {description && (\n <>\n <span className=\"text-reki-subtle\">—</span>\n <span className=\"truncate text-sm text-reki-subtle\">\n {description}\n </span>\n </>\n )}\n </div>\n </div>\n {showArrow && !external && !nonInteractive && (\n <ArrowRightIcon className=\"h-4 w-4 flex-shrink-0 text-reki-subtle opacity-0 transition-opacity group-data-[highlighted]:opacity-100\" />\n )}\n </Autocomplete.Item>\n );\n}\n\n/**\n * Container component - Internal styled wrapper.\n */\nfunction Container({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n \"flex max-h-[60vh] flex-col overflow-hidden rounded-lg bg-reki-elevated\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\n/**\n * Panel context for passing handlers from Panel to children\n */\ninterface PanelContextValue {\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nconst PanelContext = createContext<PanelContextValue>({});\n\n/**\n * Props for the Panel component\n */\ninterface PanelProps<TGroup, TItem = TGroup> {\n /** Child components (Input, List, Footer, etc.) */\n children: React.ReactNode;\n /** Items for the autocomplete */\n items: TGroup[];\n /** Controlled input value */\n value?: string;\n /** Callback when input value changes */\n onValueChange?: (value: string) => void;\n /** Callback when an item is highlighted */\n onItemHighlighted?: (\n item: TGroup | undefined,\n details: { reason: string; event: Event; index: number },\n ) => void;\n /** Convert item to string for accessibility */\n itemToStringValue?: (item: TGroup) => string;\n /** Custom filter function */\n filter?: (item: TGroup, query: string) => boolean;\n /** Whether the panel is active/open (for autocomplete state) */\n open?: boolean;\n /** Optional className for the container */\n className?: string;\n /**\n * Callback when an item is selected via Cmd/Ctrl+Enter.\n * Requires getSelectableItems to be provided.\n */\n onSelect?: (item: TItem, options: { newTab: boolean }) => void;\n /**\n * Function to get flat list of selectable items from groups.\n * Required when items are grouped and onSelect is used.\n */\n getSelectableItems?: (items: TGroup[]) => TItem[];\n}\n\n/**\n * Panel component - Command palette without dialog wrapper.\n *\n * Use this when you need to render command palette content inside an existing dialog\n * (e.g., for drill-down navigation where the dialog stays open but content changes).\n *\n * Combines Container + Autocomplete functionality with a clean API.\n *\n * @example\n * ```tsx\n * <DialogRoot open={open} onOpenChange={setOpen}>\n * <Dialog>\n * <CommandPalette.Panel\n * items={results}\n * value={searchTerm}\n * onValueChange={setSearchTerm}\n * itemToStringValue={(group) => group.label}\n * >\n * <CommandPalette.Input placeholder=\"Search...\" />\n * <CommandPalette.List>\n * <CommandPalette.Results>\n * {(group) => (\n * <CommandPalette.Group items={group.items}>\n * <CommandPalette.GroupLabel>{group.label}</CommandPalette.GroupLabel>\n * <CommandPalette.Items>\n * {(item) => <CommandPalette.ResultItem ... />}\n * </CommandPalette.Items>\n * </CommandPalette.Group>\n * )}\n * </CommandPalette.Results>\n * <CommandPalette.Empty>No results</CommandPalette.Empty>\n * </CommandPalette.List>\n * <CommandPalette.Footer>...</CommandPalette.Footer>\n * </CommandPalette.Panel>\n * </Dialog>\n * </DialogRoot>\n * ```\n */\nconst defaultFilter = () => true;\n\nfunction Panel<TGroup, TItem = TGroup>({\n children,\n items,\n value,\n onValueChange,\n onItemHighlighted,\n itemToStringValue,\n filter = defaultFilter,\n open = true,\n className,\n onSelect,\n getSelectableItems,\n}: PanelProps<TGroup, TItem>) {\n const highlightedIndexRef = useRef<number>(-1);\n\n const handleItemHighlighted = useCallback(\n (\n item: TGroup | undefined,\n details: { reason: string; event: Event; index: number },\n ) => {\n highlightedIndexRef.current = details.index;\n onItemHighlighted?.(item, details);\n },\n [onItemHighlighted],\n );\n\n // Handle Cmd/Ctrl+Enter for new tab selection\n const handleInputKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const isEnter = e.key === \"Enter\";\n const withModifier = e.metaKey || e.ctrlKey;\n\n if (isEnter && withModifier && onSelect && getSelectableItems) {\n const selectableItems = getSelectableItems(items);\n const highlightedItem = selectableItems[highlightedIndexRef.current];\n\n if (highlightedItem !== undefined) {\n e.preventDefault();\n onSelect(highlightedItem, { newTab: true });\n }\n }\n },\n [items, onSelect, getSelectableItems],\n );\n\n return (\n <Container className={className}>\n <Autocomplete.Root\n items={items}\n value={value}\n onValueChange={onValueChange}\n onItemHighlighted={handleItemHighlighted}\n itemToStringValue={itemToStringValue}\n filter={filter}\n autoHighlight=\"always\"\n keepHighlight\n open={open}\n >\n <PanelContext.Provider value={{ onInputKeyDown: handleInputKeyDown }}>\n {children}\n </PanelContext.Provider>\n </Autocomplete.Root>\n </Container>\n );\n}\n\n/**\n * PanelInput component - Input that works inside Panel.\n *\n * Similar to Input but designed for use with Panel instead of Root.\n * Automatically wires up Cmd/Ctrl+Enter handling from Panel.\n */\nfunction PanelInput({\n autoFocus = true,\n placeholder,\n className,\n onKeyDown: onKeyDownProp,\n leading,\n trailing,\n ...props\n}: CommandPaletteInputProps) {\n const { onInputKeyDown } = useContext(PanelContext);\n const { onClose } = useContext(DialogContext);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Let consumer handle first (e.g., for custom Escape/Backspace behavior)\n onKeyDownProp?.(e);\n if (e.defaultPrevented) return;\n\n // Handle Escape to close the dialog\n if (e.key === \"Escape\" && onClose) {\n e.preventDefault();\n onClose();\n return;\n }\n onInputKeyDown?.(e);\n },\n [onInputKeyDown, onKeyDownProp, onClose],\n );\n\n return (\n <InputHeader leading={leading} trailing={trailing}>\n <Autocomplete.Input\n placeholder={placeholder}\n className={cn(\n \"flex-1 border-none bg-transparent text-base reki-input-placeholder\",\n \"outline-none\",\n className,\n )}\n onKeyDown={handleKeyDown}\n // oxlint-disable-next-line no-autofocus -- Command palette input should autofocus for keyboard-driven UX\n autoFocus={autoFocus}\n {...props}\n />\n </InputHeader>\n );\n}\n\n/**\n * Render prop iterators - wrap base-ui primitives with cleaner names.\n */\n\n/**\n * Results component - Render prop iterator for groups.\n *\n * Wraps Autocomplete.List with default spacing between groups.\n */\nfunction Results({\n children,\n className,\n}: React.ComponentProps<typeof Autocomplete.List> & { className?: string }) {\n return (\n <Autocomplete.List className={cn(\"space-y-3\", className)}>\n {children}\n </Autocomplete.List>\n );\n}\n\nconst Items = Autocomplete.Collection;\n\n/** CommandPalette variant definitions (no user-facing variants; structure reserved for future use). */\nexport const REKI_COMMAND_PALETTE_VARIANTS = {} as const;\n\nexport const REKI_COMMAND_PALETTE_DEFAULT_VARIANTS = {} as const;\n\n/**\n * CommandPalette — accessible command palette / spotlight search overlay.\n *\n * Compound component: `CommandPalette.Root` (or `.Dialog` + `.Panel`),\n * `.Input`, `.List`, `.Results`, `.Items`, `.Group`, `.GroupLabel`,\n * `.Item`, `.ResultItem`, `.HighlightedText`, `.Empty`, `.Loading`, `.Footer`.\n *\n * Built on `@base-ui/react/autocomplete` + `@base-ui/react/dialog`.\n *\n * @example\n * ```tsx\n * <CommandPalette.Root\n * open={open}\n * onOpenChange={setOpen}\n * items={results}\n * value={query}\n * onValueChange={setQuery}\n * itemToStringValue={(g) => g.label}\n * onSelect={(item, { newTab }) => navigate(item, newTab)}\n * getSelectableItems={(groups) => groups.flatMap((g) => g.items)}\n * >\n * <CommandPalette.Input placeholder=\"Search…\" />\n * <CommandPalette.List>\n * <CommandPalette.Results>\n * {(group) => (\n * <CommandPalette.Group items={group.items}>\n * <CommandPalette.GroupLabel>{group.label}</CommandPalette.GroupLabel>\n * <CommandPalette.Items>\n * {(item) => (\n * <CommandPalette.ResultItem title={item.title} value={item} onClick={…} />\n * )}\n * </CommandPalette.Items>\n * </CommandPalette.Group>\n * )}\n * </CommandPalette.Results>\n * <CommandPalette.Empty>No results found</CommandPalette.Empty>\n * </CommandPalette.List>\n * <CommandPalette.Footer>…keyboard hints…</CommandPalette.Footer>\n * </CommandPalette.Root>\n * ```\n */\nexport const CommandPalette = {\n /** Modal dialog wrapper - use with Panel for content that can swap */\n Dialog,\n /** Dialog + Panel combined - for simple single-view command palettes */\n Root,\n /** Autocomplete panel without dialog - use inside Dialog for swappable content */\n Panel,\n /** Input for use inside Panel */\n Input: PanelInput,\n /** Scrollable results container */\n List,\n /** Category grouping */\n Group,\n /** Section header text */\n GroupLabel,\n /** Basic item */\n Item,\n /** Rich item with breadcrumbs, highlights, icons */\n ResultItem,\n /** Text with highlighted portions */\n HighlightedText,\n /** Empty state */\n Empty,\n /** Loading state */\n Loading,\n /** Footer for keyboard hints */\n Footer,\n /** Render prop iterator for groups */\n Results,\n /** Render prop iterator for items within a group */\n Items,\n};\n"],"names":["DialogContext","createContext","Dialog","open","onOpenChange","onBackdropClick","children","containerProp","contextContainer","usePortalContainer","container","handleBackdropClick","e","handleClose","useCallback","jsx","DialogBase.Root","jsxs","DialogBase.Portal","DialogBase.Backdrop","LayerCard","DialogBase.Popup","cn","Root","items","value","onValueChange","onItemHighlighted","itemToStringValue","filter","onSelect","getSelectableItems","Panel","InputHeader","leading","trailing","MagnifyingGlassIcon","List","forwardRef","className","ref","Group","props","Autocomplete.Group","GroupLabel","Autocomplete.GroupLabel","Item","disabled","onClick","Autocomplete.Item","Empty","Autocomplete.Empty","Loading","Loader","Footer","HighlightedText","text","highlights","sortedHighlights","a","b","mergedHighlights","range","last","parts","lastIndex","i","start","end","ResultItem","title","breadcrumbs","titleHighlights","breadcrumbHighlights","description","icon","showArrow","external","nonInteractive","crumb","index","CaretRightIcon","ArrowSquareOutIcon","Fragment","ArrowRightIcon","Container","PanelContext","defaultFilter","highlightedIndexRef","useRef","handleItemHighlighted","item","details","handleInputKeyDown","isEnter","withModifier","highlightedItem","Autocomplete.Root","PanelInput","autoFocus","placeholder","onKeyDownProp","onInputKeyDown","useContext","onClose","handleKeyDown","Autocomplete.Input","Results","Autocomplete.List","Items","Autocomplete.Collection","REKI_COMMAND_PALETTE_VARIANTS","REKI_COMMAND_PALETTE_DEFAULT_VARIANTS","CommandPalette"],"mappings":"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"}