admin-ui-starter-kit 0.1.2 → 0.1.4

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 (1948) hide show
  1. package/.agents/skills/admin-ui-consumer-migration/SKILL.md +135 -0
  2. package/.agents/skills/component-library-rules/SKILL.md +13 -2
  3. package/.agents/skills/component-library-rules/references/components/INDEX.json +1 -0
  4. package/.agents/skills/component-library-rules/references/components/INDEX.md +1 -0
  5. package/.agents/skills/component-library-rules/references/components/base__buttons.md +18 -6
  6. package/.agents/skills/component-library-rules/references/components/base__combobox.md +1 -1
  7. package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +1 -1
  8. package/.agents/skills/component-library-rules/references/components/base__forms.md +10 -7
  9. package/.agents/skills/component-library-rules/references/components/base__item.md +1 -1
  10. package/.agents/skills/component-library-rules/references/components/base__map.md +7 -7
  11. package/.agents/skills/component-library-rules/references/components/base__navigation.md +8 -8
  12. package/.agents/skills/component-library-rules/references/components/base__table.md +2 -2
  13. package/.agents/skills/component-library-rules/references/components/base__typography.md +6 -4
  14. package/.agents/skills/component-library-rules/references/components/composed__ai-elements.md +4 -4
  15. package/.agents/skills/component-library-rules/references/components/composed__api-key-list.md +4 -4
  16. package/.agents/skills/component-library-rules/references/components/composed__commerce-extras.md +107 -113
  17. package/.agents/skills/component-library-rules/references/components/composed__commerce.md +49 -48
  18. package/.agents/skills/component-library-rules/references/components/composed__navigation.md +6 -2
  19. package/.agents/skills/component-library-rules/references/components/composed__timelines.md +21 -7
  20. package/.agents/skills/component-library-rules/references/components/features__comments.md +12 -4
  21. package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +4 -2
  22. package/.agents/skills/component-library-rules/references/components/features__event-log.md +6 -2
  23. package/.agents/skills/component-library-rules/references/components/features__overlays.md +8 -6
  24. package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +552 -0
  25. package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +2 -2
  26. package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +2 -2
  27. package/.agents/skills/component-library-rules/references/components/layout__layout-users.md +7 -7
  28. package/.agents/skills/component-library-rules/references/components/ui__toggles-group.md +7 -7
  29. package/.agents/skills/component-library-rules/references/components/ui__toggles.md +1 -1
  30. package/AGENTS.md +6 -4
  31. package/CHANGELOG.md +27 -1
  32. package/COMPONENT_SELECTION.md +115 -0
  33. package/INTEGRATION.md +10 -0
  34. package/MIGRATION.md +239 -0
  35. package/PUBLISHING.md +6 -1
  36. package/README.md +31 -8
  37. package/dist/_shared/accordion-BnxO7Is4.js +130 -0
  38. package/dist/_shared/accordion-BnxO7Is4.js.map +1 -0
  39. package/dist/_shared/accordion-RIN0MjPz.cjs +2 -0
  40. package/dist/_shared/accordion-RIN0MjPz.cjs.map +1 -0
  41. package/dist/_shared/action-menu-IIO9KtJ2.js +96 -0
  42. package/dist/_shared/action-menu-IIO9KtJ2.js.map +1 -0
  43. package/dist/_shared/action-menu-RAyg3cvM.cjs +2 -0
  44. package/dist/_shared/action-menu-RAyg3cvM.cjs.map +1 -0
  45. package/dist/_shared/ai-artifact--MqIfP-8.js +1068 -0
  46. package/dist/_shared/ai-artifact--MqIfP-8.js.map +1 -0
  47. package/dist/_shared/ai-artifact-D1dBeEz1.cjs +3 -0
  48. package/dist/_shared/ai-artifact-D1dBeEz1.cjs.map +1 -0
  49. package/dist/_shared/alert-D3gRd7RK.cjs +2 -0
  50. package/dist/_shared/alert-D3gRd7RK.cjs.map +1 -0
  51. package/dist/_shared/alert-DQ-tV8b-.js +48 -0
  52. package/dist/_shared/alert-DQ-tV8b-.js.map +1 -0
  53. package/dist/_shared/app-shell-C4d7kCCd.cjs +2 -0
  54. package/dist/_shared/app-shell-C4d7kCCd.cjs.map +1 -0
  55. package/dist/_shared/app-shell-CKxcpPTc.js +94 -0
  56. package/dist/_shared/app-shell-CKxcpPTc.js.map +1 -0
  57. package/dist/_shared/avatar-0spfQEHG.cjs +2 -0
  58. package/dist/_shared/avatar-0spfQEHG.cjs.map +1 -0
  59. package/dist/_shared/avatar-CBi4LGxy.js +52 -0
  60. package/dist/_shared/avatar-CBi4LGxy.js.map +1 -0
  61. package/dist/_shared/badge-BK5VvEgg.js +108 -0
  62. package/dist/_shared/badge-BK5VvEgg.js.map +1 -0
  63. package/dist/_shared/badge-kS_XtN-z.cjs +2 -0
  64. package/dist/_shared/badge-kS_XtN-z.cjs.map +1 -0
  65. package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs +2 -0
  66. package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs.map +1 -0
  67. package/dist/_shared/breadcrumbs-bJ-J0oCd.js +111 -0
  68. package/dist/_shared/breadcrumbs-bJ-J0oCd.js.map +1 -0
  69. package/dist/_shared/button-683R5quQ.js +46 -0
  70. package/dist/_shared/button-683R5quQ.js.map +1 -0
  71. package/dist/_shared/button-CjZrRLzR.cjs +2 -0
  72. package/dist/_shared/button-CjZrRLzR.cjs.map +1 -0
  73. package/dist/_shared/button-LZWDn-aU.cjs +2 -0
  74. package/dist/_shared/button-LZWDn-aU.cjs.map +1 -0
  75. package/dist/_shared/button-cnkCF8q8.js +177 -0
  76. package/dist/_shared/button-cnkCF8q8.js.map +1 -0
  77. package/dist/_shared/buttons-DHV2eZAf.cjs +2 -0
  78. package/dist/_shared/buttons-DHV2eZAf.cjs.map +1 -0
  79. package/dist/_shared/buttons-ehfMSkwP.js +143 -0
  80. package/dist/_shared/buttons-ehfMSkwP.js.map +1 -0
  81. package/dist/_shared/card-radio-group-Bf03M6c5.js +158 -0
  82. package/dist/_shared/card-radio-group-Bf03M6c5.js.map +1 -0
  83. package/dist/_shared/card-radio-group-SqPUL0Je.cjs +2 -0
  84. package/dist/_shared/card-radio-group-SqPUL0Je.cjs.map +1 -0
  85. package/dist/_shared/chunk-CMqjfN_6.cjs +1 -0
  86. package/dist/_shared/combobox-Cvs70ic4.js +808 -0
  87. package/dist/_shared/combobox-Cvs70ic4.js.map +1 -0
  88. package/dist/_shared/combobox-Dos9YWjk.cjs +2 -0
  89. package/dist/_shared/combobox-Dos9YWjk.cjs.map +1 -0
  90. package/dist/_shared/command-Bxe_FmGD.cjs +2 -0
  91. package/dist/_shared/command-Bxe_FmGD.cjs.map +1 -0
  92. package/dist/_shared/command-CAI-BCSR.js +123 -0
  93. package/dist/_shared/command-CAI-BCSR.js.map +1 -0
  94. package/dist/_shared/command-DRIySU26.cjs +2 -0
  95. package/dist/_shared/command-DRIySU26.cjs.map +1 -0
  96. package/dist/_shared/command-DwRnPIGs.js +39 -0
  97. package/dist/_shared/command-DwRnPIGs.js.map +1 -0
  98. package/dist/_shared/comments-DD2aeZVz.js +946 -0
  99. package/dist/_shared/comments-DD2aeZVz.js.map +1 -0
  100. package/dist/_shared/comments-DzwU4sNE.cjs +2 -0
  101. package/dist/_shared/comments-DzwU4sNE.cjs.map +1 -0
  102. package/dist/_shared/containers-D7oZE4XI.cjs +2 -0
  103. package/dist/_shared/containers-D7oZE4XI.cjs.map +1 -0
  104. package/dist/_shared/containers-anBivbL9.js +19 -0
  105. package/dist/_shared/containers-anBivbL9.js.map +1 -0
  106. package/dist/_shared/content-container-CVUJCLhn.cjs +2 -0
  107. package/dist/_shared/content-container-CVUJCLhn.cjs.map +1 -0
  108. package/dist/_shared/content-container-Dv8XsAw4.js +33 -0
  109. package/dist/_shared/content-container-Dv8XsAw4.js.map +1 -0
  110. package/dist/_shared/copyable-D7WhgEzJ.js +38 -0
  111. package/dist/_shared/copyable-D7WhgEzJ.js.map +1 -0
  112. package/dist/_shared/copyable-DDjT505-.cjs +2 -0
  113. package/dist/_shared/copyable-DDjT505-.cjs.map +1 -0
  114. package/dist/_shared/date-picker-3G3C-sIq.cjs +2 -0
  115. package/dist/_shared/date-picker-3G3C-sIq.cjs.map +1 -0
  116. package/dist/_shared/date-picker-7yuMHPYs.js +1362 -0
  117. package/dist/_shared/date-picker-7yuMHPYs.js.map +1 -0
  118. package/dist/_shared/date-pickers-B_VUgjvY.cjs +2 -0
  119. package/dist/_shared/date-pickers-B_VUgjvY.cjs.map +1 -0
  120. package/dist/_shared/date-pickers-DZXi0di0.js +330 -0
  121. package/dist/_shared/date-pickers-DZXi0di0.js.map +1 -0
  122. package/dist/_shared/dialog-A95-614f.js +101 -0
  123. package/dist/_shared/dialog-A95-614f.js.map +1 -0
  124. package/dist/_shared/dialog-ivDByBmO.cjs +2 -0
  125. package/dist/_shared/dialog-ivDByBmO.cjs.map +1 -0
  126. package/dist/_shared/display-Cuj4td-V.js +1237 -0
  127. package/dist/_shared/display-Cuj4td-V.js.map +1 -0
  128. package/dist/_shared/display-D2q93jiS.cjs +8 -0
  129. package/dist/_shared/display-D2q93jiS.cjs.map +1 -0
  130. package/dist/_shared/dropdown-menu-CHQzQWUK.cjs +2 -0
  131. package/dist/_shared/dropdown-menu-CHQzQWUK.cjs.map +1 -0
  132. package/dist/_shared/dropdown-menu-CoWmrjYX.js +147 -0
  133. package/dist/_shared/dropdown-menu-CoWmrjYX.js.map +1 -0
  134. package/dist/_shared/form-field-BNuCBym1.js +319 -0
  135. package/dist/_shared/form-field-BNuCBym1.js.map +1 -0
  136. package/dist/_shared/form-field-C4fQYsqv.cjs +2 -0
  137. package/dist/_shared/form-field-C4fQYsqv.cjs.map +1 -0
  138. package/dist/_shared/form-sizing-D74IS9KG.js +21 -0
  139. package/dist/_shared/form-sizing-D74IS9KG.js.map +1 -0
  140. package/dist/_shared/form-sizing-aVwVuF-w.cjs +2 -0
  141. package/dist/_shared/form-sizing-aVwVuF-w.cjs.map +1 -0
  142. package/dist/_shared/format-BTtJC6oz.cjs +2 -0
  143. package/dist/_shared/format-BTtJC6oz.cjs.map +1 -0
  144. package/dist/_shared/format-BX3QestD.js +48 -0
  145. package/dist/_shared/format-BX3QestD.js.map +1 -0
  146. package/dist/_shared/forms-BV4fHeRx.cjs +2 -0
  147. package/dist/_shared/forms-BV4fHeRx.cjs.map +1 -0
  148. package/dist/_shared/forms-DjAdYxme.js +3378 -0
  149. package/dist/_shared/forms-DjAdYxme.js.map +1 -0
  150. package/dist/_shared/header-D4Oz-mCv.cjs +2 -0
  151. package/dist/_shared/header-D4Oz-mCv.cjs.map +1 -0
  152. package/dist/_shared/header-X5DZ8vmO.js +360 -0
  153. package/dist/_shared/header-X5DZ8vmO.js.map +1 -0
  154. package/dist/_shared/heading-C7mNh03X.cjs +2 -0
  155. package/dist/_shared/heading-C7mNh03X.cjs.map +1 -0
  156. package/dist/_shared/heading-CrNpYcUr.js +39 -0
  157. package/dist/_shared/heading-CrNpYcUr.js.map +1 -0
  158. package/dist/_shared/hooks-CKXPg30g.js +118 -0
  159. package/dist/_shared/hooks-CKXPg30g.js.map +1 -0
  160. package/dist/_shared/hooks-CTiEImZp.cjs +2 -0
  161. package/dist/_shared/hooks-CTiEImZp.cjs.map +1 -0
  162. package/dist/_shared/icon-badge-BAWl1oOe.cjs +2 -0
  163. package/dist/_shared/icon-badge-BAWl1oOe.cjs.map +1 -0
  164. package/dist/_shared/icon-badge-zTBVtgt9.js +52 -0
  165. package/dist/_shared/icon-badge-zTBVtgt9.js.map +1 -0
  166. package/dist/_shared/input-Cw2uICc1.cjs +2 -0
  167. package/dist/_shared/input-Cw2uICc1.cjs.map +1 -0
  168. package/dist/_shared/input-D43_IMWW.cjs +2 -0
  169. package/dist/_shared/input-D43_IMWW.cjs.map +1 -0
  170. package/dist/_shared/input-DJo8d1Rr.js +182 -0
  171. package/dist/_shared/input-DJo8d1Rr.js.map +1 -0
  172. package/dist/_shared/input-R8c90tNY.js +17 -0
  173. package/dist/_shared/input-R8c90tNY.js.map +1 -0
  174. package/dist/_shared/item-BxlP5TO3.js +224 -0
  175. package/dist/_shared/item-BxlP5TO3.js.map +1 -0
  176. package/dist/_shared/item-X18HIqR7.cjs +2 -0
  177. package/dist/_shared/item-X18HIqR7.cjs.map +1 -0
  178. package/dist/_shared/mentions-DE9aDOMu.cjs +2 -0
  179. package/dist/_shared/mentions-DE9aDOMu.cjs.map +1 -0
  180. package/dist/_shared/mentions-DjjYmMLc.js +493 -0
  181. package/dist/_shared/mentions-DjjYmMLc.js.map +1 -0
  182. package/dist/_shared/metadata-C5MSNo7y.js +236 -0
  183. package/dist/_shared/metadata-C5MSNo7y.js.map +1 -0
  184. package/dist/_shared/metadata-Cw3Kj2Ug.cjs +2 -0
  185. package/dist/_shared/metadata-Cw3Kj2Ug.cjs.map +1 -0
  186. package/dist/_shared/money-display-B7AKxxNt.js +198 -0
  187. package/dist/_shared/money-display-B7AKxxNt.js.map +1 -0
  188. package/dist/_shared/money-display-E22wbM21.cjs +2 -0
  189. package/dist/_shared/money-display-E22wbM21.cjs.map +1 -0
  190. package/dist/_shared/navigation-B9VAXqLL.cjs +2 -0
  191. package/dist/_shared/navigation-B9VAXqLL.cjs.map +1 -0
  192. package/dist/_shared/navigation-CxoJVgfo.js +420 -0
  193. package/dist/_shared/navigation-CxoJVgfo.js.map +1 -0
  194. package/dist/_shared/overlays-C-T8RnJz.cjs +2 -0
  195. package/dist/_shared/overlays-C-T8RnJz.cjs.map +1 -0
  196. package/dist/_shared/overlays-DfRsQzD3.js +633 -0
  197. package/dist/_shared/overlays-DfRsQzD3.js.map +1 -0
  198. package/dist/_shared/page-C4jEULwi.js +263 -0
  199. package/dist/_shared/page-C4jEULwi.js.map +1 -0
  200. package/dist/_shared/page-DX3pA_tJ.cjs +2 -0
  201. package/dist/_shared/page-DX3pA_tJ.cjs.map +1 -0
  202. package/dist/_shared/popover-CaHvG8Vj.cjs +2 -0
  203. package/dist/_shared/popover-CaHvG8Vj.cjs.map +1 -0
  204. package/dist/_shared/popover-L37RqoRO.js +83 -0
  205. package/dist/_shared/popover-L37RqoRO.js.map +1 -0
  206. package/dist/_shared/popover-menu-CVAr985u.js +95 -0
  207. package/dist/_shared/popover-menu-CVAr985u.js.map +1 -0
  208. package/dist/_shared/popover-menu-Cq-LnAMh.cjs +2 -0
  209. package/dist/_shared/popover-menu-Cq-LnAMh.cjs.map +1 -0
  210. package/dist/_shared/rich-text-editor-C3gVBm-v.cjs +2 -0
  211. package/dist/_shared/rich-text-editor-C3gVBm-v.cjs.map +1 -0
  212. package/dist/_shared/rich-text-editor-Cylb-lkv.js +616 -0
  213. package/dist/_shared/rich-text-editor-Cylb-lkv.js.map +1 -0
  214. package/dist/_shared/scroll-area-BH5CPQh4.js +41 -0
  215. package/dist/_shared/scroll-area-BH5CPQh4.js.map +1 -0
  216. package/dist/_shared/scroll-area-u46BOVcC.cjs +2 -0
  217. package/dist/_shared/scroll-area-u46BOVcC.cjs.map +1 -0
  218. package/dist/_shared/select-BwUUXpsb.js +85 -0
  219. package/dist/_shared/select-BwUUXpsb.js.map +1 -0
  220. package/dist/_shared/select-CG5Yq-6A.cjs +2 -0
  221. package/dist/_shared/select-CG5Yq-6A.cjs.map +1 -0
  222. package/dist/_shared/separator-B8FBp-7E.js +16 -0
  223. package/dist/_shared/separator-B8FBp-7E.js.map +1 -0
  224. package/dist/_shared/separator-q42IlFFA.cjs +2 -0
  225. package/dist/_shared/separator-q42IlFFA.cjs.map +1 -0
  226. package/dist/_shared/sheet-BKEfwhCn.js +100 -0
  227. package/dist/_shared/sheet-BKEfwhCn.js.map +1 -0
  228. package/dist/_shared/sheet-D4yWgkwC.cjs +2 -0
  229. package/dist/_shared/sheet-D4yWgkwC.cjs.map +1 -0
  230. package/dist/_shared/sidebar-BeWLjIRR.js +537 -0
  231. package/dist/_shared/sidebar-BeWLjIRR.js.map +1 -0
  232. package/dist/_shared/sidebar-Bl_KRk-S.cjs +2 -0
  233. package/dist/_shared/sidebar-Bl_KRk-S.cjs.map +1 -0
  234. package/dist/_shared/sidebar-DzzdJ2xk.cjs +2 -0
  235. package/dist/_shared/sidebar-DzzdJ2xk.cjs.map +1 -0
  236. package/dist/_shared/sidebar-ux-yk-Ph.js +382 -0
  237. package/dist/_shared/sidebar-ux-yk-Ph.js.map +1 -0
  238. package/dist/_shared/skeleton-CGQMeno1.js +14 -0
  239. package/dist/_shared/skeleton-CGQMeno1.js.map +1 -0
  240. package/dist/_shared/skeleton-D1c5OHXa.cjs +2 -0
  241. package/dist/_shared/skeleton-D1c5OHXa.cjs.map +1 -0
  242. package/dist/_shared/slot-C5EJicOc.js +18 -0
  243. package/dist/_shared/slot-C5EJicOc.js.map +1 -0
  244. package/dist/_shared/slot-D-Rwlrz2.cjs +2 -0
  245. package/dist/_shared/slot-D-Rwlrz2.cjs.map +1 -0
  246. package/dist/_shared/smart-card-DL7esK_y.cjs +2 -0
  247. package/dist/_shared/smart-card-DL7esK_y.cjs.map +1 -0
  248. package/dist/_shared/smart-card-eBfUvQ9r.js +360 -0
  249. package/dist/_shared/smart-card-eBfUvQ9r.js.map +1 -0
  250. package/dist/_shared/spinner-Bvjs1ybK.cjs +2 -0
  251. package/dist/_shared/spinner-Bvjs1ybK.cjs.map +1 -0
  252. package/dist/_shared/spinner-XcfVYbbp.js +67 -0
  253. package/dist/_shared/spinner-XcfVYbbp.js.map +1 -0
  254. package/dist/_shared/switch-BBP3u1z5.js +55 -0
  255. package/dist/_shared/switch-BBP3u1z5.js.map +1 -0
  256. package/dist/_shared/switch-zFZhhOEP.cjs +2 -0
  257. package/dist/_shared/switch-zFZhhOEP.cjs.map +1 -0
  258. package/dist/_shared/text-DzKt9cyb.cjs +2 -0
  259. package/dist/_shared/text-DzKt9cyb.cjs.map +1 -0
  260. package/dist/_shared/text-qsEg5GdP.js +74 -0
  261. package/dist/_shared/text-qsEg5GdP.js.map +1 -0
  262. package/dist/_shared/textarea-BAKapsLQ.cjs +2 -0
  263. package/dist/_shared/textarea-BAKapsLQ.cjs.map +1 -0
  264. package/dist/_shared/textarea-Bfv1KxBm.js +119 -0
  265. package/dist/_shared/textarea-Bfv1KxBm.js.map +1 -0
  266. package/dist/_shared/tooltip-CLr_sPX8.js +49 -0
  267. package/dist/_shared/tooltip-CLr_sPX8.js.map +1 -0
  268. package/dist/_shared/tooltip-mvxZV_Lu.cjs +2 -0
  269. package/dist/_shared/tooltip-mvxZV_Lu.cjs.map +1 -0
  270. package/dist/_shared/typography-4CSyoCj9.js +102 -0
  271. package/dist/_shared/typography-4CSyoCj9.js.map +1 -0
  272. package/dist/_shared/typography-DKn7P4wX.cjs +2 -0
  273. package/dist/_shared/typography-DKn7P4wX.cjs.map +1 -0
  274. package/dist/_shared/ui-provider-CQJ1glwN.js +85 -0
  275. package/dist/_shared/ui-provider-CQJ1glwN.js.map +1 -0
  276. package/dist/_shared/ui-provider-RIYE7O_V.cjs +2 -0
  277. package/dist/_shared/ui-provider-RIYE7O_V.cjs.map +1 -0
  278. package/dist/components/base/accordion/index.cjs +1 -1
  279. package/dist/components/base/accordion/index.js +2 -2
  280. package/dist/components/base/badge/badge.d.ts +1 -1
  281. package/dist/components/base/badge/badge.d.ts.map +1 -1
  282. package/dist/components/base/badge/index.cjs +1 -1
  283. package/dist/components/base/badge/index.js +1 -1
  284. package/dist/components/base/buttons/google-button.d.ts +1 -1
  285. package/dist/components/base/buttons/google-button.d.ts.map +1 -1
  286. package/dist/components/base/buttons/index.cjs +1 -1
  287. package/dist/components/base/buttons/index.js +2 -2
  288. package/dist/components/base/buttons/shopify-button.d.ts +1 -1
  289. package/dist/components/base/buttons/shopify-button.d.ts.map +1 -1
  290. package/dist/components/base/buttons/tooltip-button.d.ts.map +1 -1
  291. package/dist/components/base/cards/index.cjs +1 -1
  292. package/dist/components/base/cards/index.js +1 -1
  293. package/dist/components/base/cards/partials/card-primitives.d.ts +6 -6
  294. package/dist/components/base/cards/partials/card-primitives.d.ts.map +1 -1
  295. package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts +1 -1
  296. package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts.map +1 -1
  297. package/dist/components/base/cards/partials/smart-card-alert.d.ts +1 -1
  298. package/dist/components/base/cards/partials/smart-card-alert.d.ts.map +1 -1
  299. package/dist/components/base/cards/partials/smart-card-header-row.d.ts +1 -1
  300. package/dist/components/base/cards/partials/smart-card-header-row.d.ts.map +1 -1
  301. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +1 -1
  302. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts.map +1 -1
  303. package/dist/components/base/cards/smart-card.tokens.d.ts +1 -1
  304. package/dist/components/base/combobox/combobox.strings.d.ts.map +1 -1
  305. package/dist/components/base/combobox/components/highlighted-text.d.ts.map +1 -1
  306. package/dist/components/base/combobox/enhanced-combobox.d.ts.map +1 -1
  307. package/dist/components/base/combobox/index.cjs +1 -1
  308. package/dist/components/base/combobox/index.js +1 -1
  309. package/dist/components/base/combobox/types.d.ts +2 -0
  310. package/dist/components/base/combobox/types.d.ts.map +1 -1
  311. package/dist/components/base/command/command.d.ts +5 -5
  312. package/dist/components/base/command/command.d.ts.map +1 -1
  313. package/dist/components/base/command/index.cjs +1 -1
  314. package/dist/components/base/command/index.js +2 -2
  315. package/dist/components/base/copyable/copyable.d.ts +1 -1
  316. package/dist/components/base/copyable/copyable.d.ts.map +1 -1
  317. package/dist/components/base/copyable/index.cjs +1 -1
  318. package/dist/components/base/copyable/index.js +1 -1
  319. package/dist/components/base/currency/currency-pair-preview.d.ts +1 -1
  320. package/dist/components/base/currency/currency-pair-preview.d.ts.map +1 -1
  321. package/dist/components/base/currency/index.cjs +1 -1
  322. package/dist/components/base/currency/index.js +1 -1
  323. package/dist/components/base/date-pickers/date-picker-footer.d.ts +2 -1
  324. package/dist/components/base/date-pickers/date-picker-footer.d.ts.map +1 -1
  325. package/dist/components/base/date-pickers/date-picker-header.d.ts +1 -1
  326. package/dist/components/base/date-pickers/date-picker-header.d.ts.map +1 -1
  327. package/dist/components/base/date-pickers/date-picker-helpers.d.ts +5 -1
  328. package/dist/components/base/date-pickers/date-picker-helpers.d.ts.map +1 -1
  329. package/dist/components/base/date-pickers/date-picker.d.ts +2 -1
  330. package/dist/components/base/date-pickers/date-picker.d.ts.map +1 -1
  331. package/dist/components/base/date-pickers/date-range-picker.d.ts +2 -1
  332. package/dist/components/base/date-pickers/date-range-picker.d.ts.map +1 -1
  333. package/dist/components/base/date-pickers/index.cjs +1 -1
  334. package/dist/components/base/date-pickers/index.js +3 -3
  335. package/dist/components/base/date-pickers/month-year-picker.d.ts +2 -1
  336. package/dist/components/base/date-pickers/month-year-picker.d.ts.map +1 -1
  337. package/dist/components/base/date-pickers/segmented-time-input.d.ts +2 -1
  338. package/dist/components/base/date-pickers/segmented-time-input.d.ts.map +1 -1
  339. package/dist/components/base/display/boolean-indicator.d.ts +1 -1
  340. package/dist/components/base/display/boolean-indicator.d.ts.map +1 -1
  341. package/dist/components/base/display/date-block.d.ts +1 -1
  342. package/dist/components/base/display/date-block.d.ts.map +1 -1
  343. package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts +1 -1
  344. package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts.map +1 -1
  345. package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -1
  346. package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts.map +1 -1
  347. package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts +1 -1
  348. package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts.map +1 -1
  349. package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -1
  350. package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts.map +1 -1
  351. package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts +1 -1
  352. package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts.map +1 -1
  353. package/dist/components/base/display/fields/email-display.d.ts +1 -1
  354. package/dist/components/base/display/fields/email-display.d.ts.map +1 -1
  355. package/dist/components/base/display/fields/phone-display.d.ts +1 -1
  356. package/dist/components/base/display/fields/phone-display.d.ts.map +1 -1
  357. package/dist/components/base/display/fields/url-display.d.ts +1 -1
  358. package/dist/components/base/display/fields/url-display.d.ts.map +1 -1
  359. package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
  360. package/dist/components/base/display/icon-badge/icon-badge.d.ts.map +1 -1
  361. package/dist/components/base/display/index.cjs +1 -1
  362. package/dist/components/base/display/index.js +12 -12
  363. package/dist/components/base/display/inline-stat/inline-stat.d.ts +1 -1
  364. package/dist/components/base/display/inline-stat/inline-stat.d.ts.map +1 -1
  365. package/dist/components/base/display/metadata/index.cjs +1 -1
  366. package/dist/components/base/display/metadata/index.js +1 -1
  367. package/dist/components/base/display/metadata/metadata-list.d.ts +1 -1
  368. package/dist/components/base/display/metadata/metadata-list.d.ts.map +1 -1
  369. package/dist/components/base/display/money-display.d.ts +1 -1
  370. package/dist/components/base/display/money-display.d.ts.map +1 -1
  371. package/dist/components/base/display/money-input.d.ts +1 -1
  372. package/dist/components/base/display/money-input.d.ts.map +1 -1
  373. package/dist/components/base/display/notification-banner.d.ts +1 -1
  374. package/dist/components/base/display/notification-banner.d.ts.map +1 -1
  375. package/dist/components/base/display/numeric-value/numeric-value.d.ts +1 -1
  376. package/dist/components/base/display/numeric-value/numeric-value.d.ts.map +1 -1
  377. package/dist/components/base/display/placeholder-pattern.d.ts +1 -1
  378. package/dist/components/base/display/placeholder-pattern.d.ts.map +1 -1
  379. package/dist/components/base/display/qr-code.d.ts +1 -1
  380. package/dist/components/base/display/qr-code.d.ts.map +1 -1
  381. package/dist/components/base/display/section-header/section-header.d.ts +1 -1
  382. package/dist/components/base/display/section-header/section-header.d.ts.map +1 -1
  383. package/dist/components/base/display/stacked-avatars.d.ts +1 -1
  384. package/dist/components/base/display/stacked-avatars.d.ts.map +1 -1
  385. package/dist/components/base/display/throttle-alert.d.ts +1 -1
  386. package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
  387. package/dist/components/base/display/user-cell/user-cell.d.ts +1 -1
  388. package/dist/components/base/display/user-cell/user-cell.d.ts.map +1 -1
  389. package/dist/components/base/display/visually-hidden.d.ts +1 -1
  390. package/dist/components/base/display/visually-hidden.d.ts.map +1 -1
  391. package/dist/components/base/event-calendar/event-calendar-day-cell.d.ts +1 -1
  392. package/dist/components/base/event-calendar/event-calendar-day-cell.d.ts.map +1 -1
  393. package/dist/components/base/event-calendar/event-calendar-event-badge.d.ts +1 -1
  394. package/dist/components/base/event-calendar/event-calendar-event-badge.d.ts.map +1 -1
  395. package/dist/components/base/event-calendar/event-calendar-event-card.d.ts +1 -1
  396. package/dist/components/base/event-calendar/event-calendar-event-card.d.ts.map +1 -1
  397. package/dist/components/base/event-calendar/event-calendar-header.d.ts +1 -1
  398. package/dist/components/base/event-calendar/event-calendar-header.d.ts.map +1 -1
  399. package/dist/components/base/event-calendar/event-calendar-legend.d.ts +1 -1
  400. package/dist/components/base/event-calendar/event-calendar-legend.d.ts.map +1 -1
  401. package/dist/components/base/event-calendar/event-calendar.d.ts +1 -1
  402. package/dist/components/base/event-calendar/event-calendar.d.ts.map +1 -1
  403. package/dist/components/base/event-calendar/index.cjs +1 -1
  404. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  405. package/dist/components/base/event-calendar/index.js +12 -12
  406. package/dist/components/base/event-calendar/index.js.map +1 -1
  407. package/dist/components/base/forms/fields/avatar-upload.d.ts.map +1 -1
  408. package/dist/components/base/forms/fields/card-checkbox-group.d.ts +1 -1
  409. package/dist/components/base/forms/fields/card-checkbox-group.d.ts.map +1 -1
  410. package/dist/components/base/forms/fields/card-radio-group.d.ts +1 -1
  411. package/dist/components/base/forms/fields/card-radio-group.d.ts.map +1 -1
  412. package/dist/components/base/forms/fields/coordinates-input.d.ts +1 -1
  413. package/dist/components/base/forms/fields/coordinates-input.d.ts.map +1 -1
  414. package/dist/components/base/forms/fields/date-time-input.d.ts +1 -1
  415. package/dist/components/base/forms/fields/date-time-input.d.ts.map +1 -1
  416. package/dist/components/base/forms/fields/dimensions-input.d.ts +1 -1
  417. package/dist/components/base/forms/fields/dimensions-input.d.ts.map +1 -1
  418. package/dist/components/base/forms/fields/key-value-editor.d.ts +1 -1
  419. package/dist/components/base/forms/fields/key-value-editor.d.ts.map +1 -1
  420. package/dist/components/base/forms/fields/list-radio-group.d.ts +1 -1
  421. package/dist/components/base/forms/fields/list-radio-group.d.ts.map +1 -1
  422. package/dist/components/base/forms/fields/list.d.ts +1 -1
  423. package/dist/components/base/forms/fields/list.d.ts.map +1 -1
  424. package/dist/components/base/forms/fields/localized-object-field.d.ts +1 -1
  425. package/dist/components/base/forms/fields/localized-object-field.d.ts.map +1 -1
  426. package/dist/components/base/forms/fields/localized-string-field.d.ts +1 -1
  427. package/dist/components/base/forms/fields/localized-string-field.d.ts.map +1 -1
  428. package/dist/components/base/forms/fields/localized-string-repeater.d.ts +1 -1
  429. package/dist/components/base/forms/fields/localized-string-repeater.d.ts.map +1 -1
  430. package/dist/components/base/forms/fields/media-gallery.d.ts +1 -1
  431. package/dist/components/base/forms/fields/media-gallery.d.ts.map +1 -1
  432. package/dist/components/base/forms/fields/object-repeater.d.ts +1 -1
  433. package/dist/components/base/forms/fields/object-repeater.d.ts.map +1 -1
  434. package/dist/components/base/forms/fields/pill-radio-group.d.ts +11 -1
  435. package/dist/components/base/forms/fields/pill-radio-group.d.ts.map +1 -1
  436. package/dist/components/base/forms/fields/repeater.d.ts +1 -1
  437. package/dist/components/base/forms/fields/repeater.d.ts.map +1 -1
  438. package/dist/components/base/forms/fields/rounding-mode-select.d.ts +1 -1
  439. package/dist/components/base/forms/fields/rounding-mode-select.d.ts.map +1 -1
  440. package/dist/components/base/forms/fields/string-repeater.d.ts +1 -1
  441. package/dist/components/base/forms/fields/string-repeater.d.ts.map +1 -1
  442. package/dist/components/base/forms/fields/switch-card.d.ts +2 -1
  443. package/dist/components/base/forms/fields/switch-card.d.ts.map +1 -1
  444. package/dist/components/base/forms/fields/switch.d.ts.map +1 -1
  445. package/dist/components/base/forms/fields/tags-input.d.ts +1 -1
  446. package/dist/components/base/forms/fields/tags-input.d.ts.map +1 -1
  447. package/dist/components/base/forms/fields/time-picker.d.ts +2 -1
  448. package/dist/components/base/forms/fields/time-picker.d.ts.map +1 -1
  449. package/dist/components/base/forms/fields/toggle-field.d.ts +1 -1
  450. package/dist/components/base/forms/fields/toggle-field.d.ts.map +1 -1
  451. package/dist/components/base/forms/fields/upload-progress-list.d.ts +1 -1
  452. package/dist/components/base/forms/fields/upload-progress-list.d.ts.map +1 -1
  453. package/dist/components/base/forms/fields/weight-input.d.ts +2 -1
  454. package/dist/components/base/forms/fields/weight-input.d.ts.map +1 -1
  455. package/dist/components/base/forms/form-field.d.ts +63 -2
  456. package/dist/components/base/forms/form-field.d.ts.map +1 -1
  457. package/dist/components/base/forms/index.cjs +1 -1
  458. package/dist/components/base/forms/index.js +6 -6
  459. package/dist/components/base/forms/operation-password-form.d.ts +1 -1
  460. package/dist/components/base/forms/operation-password-form.d.ts.map +1 -1
  461. package/dist/components/base/item/index.cjs +1 -1
  462. package/dist/components/base/item/index.js +1 -1
  463. package/dist/components/base/map/index.cjs +1 -1
  464. package/dist/components/base/map/index.cjs.map +1 -1
  465. package/dist/components/base/map/index.js +104 -85
  466. package/dist/components/base/map/index.js.map +1 -1
  467. package/dist/components/base/map/map.d.ts +31 -30
  468. package/dist/components/base/map/map.d.ts.map +1 -1
  469. package/dist/components/base/map/place-autocomplete.d.ts +1 -1
  470. package/dist/components/base/map/place-autocomplete.d.ts.map +1 -1
  471. package/dist/components/base/navigation/action-menu.d.ts +1 -1
  472. package/dist/components/base/navigation/aside-navigation-menu.d.ts +1 -1
  473. package/dist/components/base/navigation/aside-navigation-menu.d.ts.map +1 -1
  474. package/dist/components/base/navigation/breadcrumbs.d.ts +1 -1
  475. package/dist/components/base/navigation/breadcrumbs.d.ts.map +1 -1
  476. package/dist/components/base/navigation/index.cjs +1 -1
  477. package/dist/components/base/navigation/index.js +4 -4
  478. package/dist/components/base/navigation/language-switcher.d.ts +1 -1
  479. package/dist/components/base/navigation/language-switcher.d.ts.map +1 -1
  480. package/dist/components/base/navigation/navigation-tabs.d.ts +1 -1
  481. package/dist/components/base/navigation/navigation-tabs.d.ts.map +1 -1
  482. package/dist/components/base/navigation/overflow-tab-bar.d.ts +1 -1
  483. package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -1
  484. package/dist/components/base/navigation/page-header/page-header.d.ts +1 -1
  485. package/dist/components/base/navigation/page-header/page-header.d.ts.map +1 -1
  486. package/dist/components/base/navigation/section-nav/section-nav.d.ts +1 -1
  487. package/dist/components/base/navigation/section-nav/section-nav.d.ts.map +1 -1
  488. package/dist/components/base/navigation/side-nav.d.ts +1 -1
  489. package/dist/components/base/navigation/side-nav.d.ts.map +1 -1
  490. package/dist/components/base/navigation/tab-navigation-menu.d.ts +1 -1
  491. package/dist/components/base/navigation/tab-navigation-menu.d.ts.map +1 -1
  492. package/dist/components/base/popover/index.cjs +1 -1
  493. package/dist/components/base/popover/index.js +1 -1
  494. package/dist/components/base/popover/popover.d.ts +1 -1
  495. package/dist/components/base/popover/popover.d.ts.map +1 -1
  496. package/dist/components/base/popover-menu/index.cjs +1 -1
  497. package/dist/components/base/popover-menu/index.js +1 -1
  498. package/dist/components/base/popover-menu/popover-menu.d.ts +1 -1
  499. package/dist/components/base/popover-menu/popover-menu.d.ts.map +1 -1
  500. package/dist/components/base/sheet/index.cjs +1 -1
  501. package/dist/components/base/sheet/index.js +1 -1
  502. package/dist/components/base/sidebar/index.cjs +1 -1
  503. package/dist/components/base/sidebar/index.js +2 -2
  504. package/dist/components/base/sidebar/sidebar.d.ts +10 -9
  505. package/dist/components/base/sidebar/sidebar.d.ts.map +1 -1
  506. package/dist/components/base/spinner/index.cjs +1 -1
  507. package/dist/components/base/spinner/index.js +1 -1
  508. package/dist/components/base/table/column-visibility-toggle.d.ts +1 -1
  509. package/dist/components/base/table/column-visibility-toggle.d.ts.map +1 -1
  510. package/dist/components/base/table/data-table.d.ts +1 -1
  511. package/dist/components/base/table/data-table.d.ts.map +1 -1
  512. package/dist/components/base/table/filter-bar.d.ts +1 -1
  513. package/dist/components/base/table/filter-bar.d.ts.map +1 -1
  514. package/dist/components/base/table/index.cjs +1 -1
  515. package/dist/components/base/table/index.cjs.map +1 -1
  516. package/dist/components/base/table/index.js +23 -23
  517. package/dist/components/base/table/index.js.map +1 -1
  518. package/dist/components/base/table/pagination.d.ts +1 -1
  519. package/dist/components/base/table/pagination.d.ts.map +1 -1
  520. package/dist/components/base/table/partials/cell-renderers.d.ts +4 -4
  521. package/dist/components/base/table/partials/cell-renderers.d.ts.map +1 -1
  522. package/dist/components/base/table/partials/cell-value.d.ts +1 -1
  523. package/dist/components/base/table/partials/cell-value.d.ts.map +1 -1
  524. package/dist/components/base/table/partials/density-toggle.d.ts +1 -1
  525. package/dist/components/base/table/partials/density-toggle.d.ts.map +1 -1
  526. package/dist/components/base/table/partials/table-link.d.ts +1 -1
  527. package/dist/components/base/table/partials/table-link.d.ts.map +1 -1
  528. package/dist/components/base/table/table-actions.d.ts +1 -1
  529. package/dist/components/base/table/table-actions.d.ts.map +1 -1
  530. package/dist/components/base/table/table-body.d.ts +1 -1
  531. package/dist/components/base/table/table-body.d.ts.map +1 -1
  532. package/dist/components/base/table/table-header.d.ts +2 -1
  533. package/dist/components/base/table/table-header.d.ts.map +1 -1
  534. package/dist/components/base/table/table-helpers.d.ts +2 -2
  535. package/dist/components/base/table/table-helpers.d.ts.map +1 -1
  536. package/dist/components/base/table/table-pagination.d.ts +1 -1
  537. package/dist/components/base/table/table-pagination.d.ts.map +1 -1
  538. package/dist/components/base/table/table-toolbar.d.ts +1 -1
  539. package/dist/components/base/table/table-toolbar.d.ts.map +1 -1
  540. package/dist/components/base/toaster/index.cjs +1 -1
  541. package/dist/components/base/toaster/index.cjs.map +1 -1
  542. package/dist/components/base/toaster/index.js +1 -1
  543. package/dist/components/base/toaster/index.js.map +1 -1
  544. package/dist/components/base/toaster/toaster.d.ts +1 -1
  545. package/dist/components/base/toaster/toaster.d.ts.map +1 -1
  546. package/dist/components/composed/admin/conversation-row/conversation-row.d.ts +1 -1
  547. package/dist/components/composed/admin/conversation-row/conversation-row.d.ts.map +1 -1
  548. package/dist/components/composed/admin/index.cjs +1 -1
  549. package/dist/components/composed/admin/index.cjs.map +1 -1
  550. package/dist/components/composed/admin/index.js +159 -155
  551. package/dist/components/composed/admin/index.js.map +1 -1
  552. package/dist/components/composed/admin/inventory-level/inventory-level.d.ts +1 -1
  553. package/dist/components/composed/admin/inventory-level/inventory-level.d.ts.map +1 -1
  554. package/dist/components/composed/admin/role-permission/role-permission.d.ts +1 -1
  555. package/dist/components/composed/admin/role-permission/role-permission.d.ts.map +1 -1
  556. package/dist/components/composed/admin/settings-toggle/settings-toggle.d.ts +1 -1
  557. package/dist/components/composed/admin/settings-toggle/settings-toggle.d.ts.map +1 -1
  558. package/dist/components/composed/admin/team-member/team-member.d.ts +1 -1
  559. package/dist/components/composed/admin/team-member/team-member.d.ts.map +1 -1
  560. package/dist/components/composed/ai/ai-agent/ai-agent.d.ts +1 -1
  561. package/dist/components/composed/ai/ai-agent/ai-agent.d.ts.map +1 -1
  562. package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts +1 -1
  563. package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts.map +1 -1
  564. package/dist/components/composed/ai/ai-attachment/ai-attachment.d.ts +1 -1
  565. package/dist/components/composed/ai/ai-attachment/ai-attachment.d.ts.map +1 -1
  566. package/dist/components/composed/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
  567. package/dist/components/composed/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts.map +1 -1
  568. package/dist/components/composed/ai/ai-citation/ai-citation.d.ts +1 -1
  569. package/dist/components/composed/ai/ai-citation/ai-citation.d.ts.map +1 -1
  570. package/dist/components/composed/ai/ai-classification/ai-classification.d.ts +1 -1
  571. package/dist/components/composed/ai/ai-classification/ai-classification.d.ts.map +1 -1
  572. package/dist/components/composed/ai/ai-code-block/ai-code-block.d.ts +1 -1
  573. package/dist/components/composed/ai/ai-code-block/ai-code-block.d.ts.map +1 -1
  574. package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts +1 -1
  575. package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts.map +1 -1
  576. package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
  577. package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts.map +1 -1
  578. package/dist/components/composed/ai/ai-feedback/ai-feedback.d.ts +1 -1
  579. package/dist/components/composed/ai/ai-feedback/ai-feedback.d.ts.map +1 -1
  580. package/dist/components/composed/ai/ai-file-tree/ai-file-tree.d.ts +1 -1
  581. package/dist/components/composed/ai/ai-file-tree/ai-file-tree.d.ts.map +1 -1
  582. package/dist/components/composed/ai/ai-inline-citation/ai-inline-citation.d.ts +1 -1
  583. package/dist/components/composed/ai/ai-inline-citation/ai-inline-citation.d.ts.map +1 -1
  584. package/dist/components/composed/ai/ai-message-bubble/ai-message-bubble.d.ts +1 -1
  585. package/dist/components/composed/ai/ai-message-bubble/ai-message-bubble.d.ts.map +1 -1
  586. package/dist/components/composed/ai/ai-package-info/ai-package-info.d.ts +1 -1
  587. package/dist/components/composed/ai/ai-package-info/ai-package-info.d.ts.map +1 -1
  588. package/dist/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts +1 -1
  589. package/dist/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts.map +1 -1
  590. package/dist/components/composed/ai/ai-reasoning/ai-reasoning.d.ts +1 -1
  591. package/dist/components/composed/ai/ai-reasoning/ai-reasoning.d.ts.map +1 -1
  592. package/dist/components/composed/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  593. package/dist/components/composed/ai/ai-shimmer/ai-shimmer.d.ts.map +1 -1
  594. package/dist/components/composed/ai/ai-sources/ai-sources.d.ts +1 -1
  595. package/dist/components/composed/ai/ai-sources/ai-sources.d.ts.map +1 -1
  596. package/dist/components/composed/ai/ai-summary/ai-summary.d.ts +1 -1
  597. package/dist/components/composed/ai/ai-summary/ai-summary.d.ts.map +1 -1
  598. package/dist/components/composed/ai/ai-task/ai-task.d.ts +1 -1
  599. package/dist/components/composed/ai/ai-task/ai-task.d.ts.map +1 -1
  600. package/dist/components/composed/ai/ai-token-usage/ai-token-usage.d.ts +1 -1
  601. package/dist/components/composed/ai/ai-token-usage/ai-token-usage.d.ts.map +1 -1
  602. package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
  603. package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts.map +1 -1
  604. package/dist/components/composed/ai/index.cjs +1 -1
  605. package/dist/components/composed/ai/index.cjs.map +1 -1
  606. package/dist/components/composed/ai/index.js +34 -36
  607. package/dist/components/composed/ai/index.js.map +1 -1
  608. package/dist/components/composed/analytics/activity-heatmap/activity-heatmap.d.ts +1 -1
  609. package/dist/components/composed/analytics/activity-heatmap/activity-heatmap.d.ts.map +1 -1
  610. package/dist/components/composed/analytics/atoms/metric-skeleton.d.ts +1 -1
  611. package/dist/components/composed/analytics/atoms/metric-skeleton.d.ts.map +1 -1
  612. package/dist/components/composed/analytics/atoms/metric-sparkline.d.ts +1 -1
  613. package/dist/components/composed/analytics/atoms/metric-sparkline.d.ts.map +1 -1
  614. package/dist/components/composed/analytics/atoms/metric-trend-chip.d.ts +1 -1
  615. package/dist/components/composed/analytics/atoms/metric-trend-chip.d.ts.map +1 -1
  616. package/dist/components/composed/analytics/index.cjs +1 -1
  617. package/dist/components/composed/analytics/index.cjs.map +1 -1
  618. package/dist/components/composed/analytics/index.js +100 -111
  619. package/dist/components/composed/analytics/index.js.map +1 -1
  620. package/dist/components/composed/analytics/metric/metric.d.ts +1 -1
  621. package/dist/components/composed/analytics/metric/metric.d.ts.map +1 -1
  622. package/dist/components/composed/analytics/metric-bar/metric-bar.d.ts +1 -1
  623. package/dist/components/composed/analytics/metric-bar/metric-bar.d.ts.map +1 -1
  624. package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts +1 -1
  625. package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts.map +1 -1
  626. package/dist/components/composed/analytics/metric-gradient/metric-gradient.d.ts +1 -1
  627. package/dist/components/composed/analytics/metric-gradient/metric-gradient.d.ts.map +1 -1
  628. package/dist/components/composed/analytics/metric-grid/metric-grid.d.ts +1 -1
  629. package/dist/components/composed/analytics/metric-grid/metric-grid.d.ts.map +1 -1
  630. package/dist/components/composed/analytics/metric-micro-grid/metric-micro-grid.d.ts +1 -1
  631. package/dist/components/composed/analytics/metric-micro-grid/metric-micro-grid.d.ts.map +1 -1
  632. package/dist/components/composed/cards/contact-card/contact-card.d.ts +1 -1
  633. package/dist/components/composed/cards/contact-card/contact-card.d.ts.map +1 -1
  634. package/dist/components/composed/cards/course-card/course-card.d.ts +1 -1
  635. package/dist/components/composed/cards/course-card/course-card.d.ts.map +1 -1
  636. package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts +1 -1
  637. package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts.map +1 -1
  638. package/dist/components/composed/cards/giftcard-card/partials/giftcard-compact.d.ts +1 -1
  639. package/dist/components/composed/cards/giftcard-card/partials/giftcard-compact.d.ts.map +1 -1
  640. package/dist/components/composed/cards/giftcard-card/partials/giftcard-dark.d.ts +1 -1
  641. package/dist/components/composed/cards/giftcard-card/partials/giftcard-dark.d.ts.map +1 -1
  642. package/dist/components/composed/cards/giftcard-card/partials/giftcard-full.d.ts +1 -1
  643. package/dist/components/composed/cards/giftcard-card/partials/giftcard-full.d.ts.map +1 -1
  644. package/dist/components/composed/cards/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
  645. package/dist/components/composed/cards/giftcard-card/partials/giftcard-illustrated.d.ts.map +1 -1
  646. package/dist/components/composed/cards/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
  647. package/dist/components/composed/cards/giftcard-card/partials/giftcard-minimal.d.ts.map +1 -1
  648. package/dist/components/composed/cards/gradient-card/gradient-card.d.ts +2 -2
  649. package/dist/components/composed/cards/gradient-card/gradient-card.d.ts.map +1 -1
  650. package/dist/components/composed/cards/index.cjs +1 -1
  651. package/dist/components/composed/cards/index.cjs.map +1 -1
  652. package/dist/components/composed/cards/index.js +492 -512
  653. package/dist/components/composed/cards/index.js.map +1 -1
  654. package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts +1 -1
  655. package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts.map +1 -1
  656. package/dist/components/composed/commerce/address-card/address-card.d.ts +1 -1
  657. package/dist/components/composed/commerce/address-card/address-card.d.ts.map +1 -1
  658. package/dist/components/composed/commerce/cart-summary/cart-summary.d.ts +1 -1
  659. package/dist/components/composed/commerce/cart-summary/cart-summary.d.ts.map +1 -1
  660. package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts +1 -1
  661. package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts.map +1 -1
  662. package/dist/components/composed/commerce/discount-stack/discount-stack.d.ts +1 -1
  663. package/dist/components/composed/commerce/discount-stack/discount-stack.d.ts.map +1 -1
  664. package/dist/components/composed/commerce/index.cjs +1 -1
  665. package/dist/components/composed/commerce/index.cjs.map +1 -1
  666. package/dist/components/composed/commerce/index.js +94 -98
  667. package/dist/components/composed/commerce/index.js.map +1 -1
  668. package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts +1 -1
  669. package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts.map +1 -1
  670. package/dist/components/composed/commerce/order-status/order-status.d.ts +1 -1
  671. package/dist/components/composed/commerce/order-status/order-status.d.ts.map +1 -1
  672. package/dist/components/composed/commerce/payment-method/payment-method.d.ts +1 -1
  673. package/dist/components/composed/commerce/payment-method/payment-method.d.ts.map +1 -1
  674. package/dist/components/composed/commerce/refund-status/refund-status.d.ts +1 -1
  675. package/dist/components/composed/commerce/refund-status/refund-status.d.ts.map +1 -1
  676. package/dist/components/composed/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  677. package/dist/components/composed/commerce/shipment-tracking/shipment-tracking.d.ts.map +1 -1
  678. package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts +1 -1
  679. package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts.map +1 -1
  680. package/dist/components/composed/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  681. package/dist/components/composed/commerce/tax-breakdown/tax-breakdown.d.ts.map +1 -1
  682. package/dist/components/composed/commerce/upcoming-booking/upcoming-booking.d.ts +1 -1
  683. package/dist/components/composed/commerce/upcoming-booking/upcoming-booking.d.ts.map +1 -1
  684. package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts +1 -1
  685. package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts.map +1 -1
  686. package/dist/components/composed/dark-surfaces/booking-receipt/booking-receipt.d.ts +1 -1
  687. package/dist/components/composed/dark-surfaces/booking-receipt/booking-receipt.d.ts.map +1 -1
  688. package/dist/components/composed/dark-surfaces/dark-info-panel/dark-info-panel.d.ts +1 -1
  689. package/dist/components/composed/dark-surfaces/dark-info-panel/dark-info-panel.d.ts.map +1 -1
  690. package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts +1 -1
  691. package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts.map +1 -1
  692. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  693. package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
  694. package/dist/components/composed/dark-surfaces/index.js +30 -27
  695. package/dist/components/composed/dark-surfaces/index.js.map +1 -1
  696. package/dist/components/composed/dark-surfaces/order-items/order-items.d.ts +1 -1
  697. package/dist/components/composed/dark-surfaces/order-items/order-items.d.ts.map +1 -1
  698. package/dist/components/composed/dark-surfaces/outstanding-balance/outstanding-balance.d.ts +1 -1
  699. package/dist/components/composed/dark-surfaces/outstanding-balance/outstanding-balance.d.ts.map +1 -1
  700. package/dist/components/composed/data-display/dense-info-card/helpers.d.ts +2 -2
  701. package/dist/components/composed/data-display/dense-info-card/helpers.d.ts.map +1 -1
  702. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
  703. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-classification.d.ts.map +1 -1
  704. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
  705. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-dashboard.d.ts.map +1 -1
  706. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
  707. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-financial.d.ts.map +1 -1
  708. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
  709. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-project.d.ts.map +1 -1
  710. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
  711. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-score.d.ts.map +1 -1
  712. package/dist/components/composed/data-display/index.cjs +1 -1
  713. package/dist/components/composed/data-display/index.cjs.map +1 -1
  714. package/dist/components/composed/data-display/index.js +344 -319
  715. package/dist/components/composed/data-display/index.js.map +1 -1
  716. package/dist/components/composed/data-display/inline-metric/inline-metric.d.ts +1 -1
  717. package/dist/components/composed/data-display/inline-metric/inline-metric.d.ts.map +1 -1
  718. package/dist/components/composed/data-display/invoice-header/invoice-header.d.ts +1 -1
  719. package/dist/components/composed/data-display/invoice-header/invoice-header.d.ts.map +1 -1
  720. package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts +3 -3
  721. package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts.map +1 -1
  722. package/dist/components/composed/data-display/invoice-mini/invoice-mini.d.ts +1 -1
  723. package/dist/components/composed/data-display/invoice-mini/invoice-mini.d.ts.map +1 -1
  724. package/dist/components/composed/data-display/invoice-table/invoice-table.d.ts +1 -1
  725. package/dist/components/composed/data-display/invoice-table/invoice-table.d.ts.map +1 -1
  726. package/dist/components/composed/data-display/mini-kpi/mini-kpi.d.ts +1 -1
  727. package/dist/components/composed/data-display/mini-kpi/mini-kpi.d.ts.map +1 -1
  728. package/dist/components/composed/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
  729. package/dist/components/composed/navigation/breadcrumb-progress/breadcrumb-progress.d.ts.map +1 -1
  730. package/dist/components/composed/navigation/category-nav/category-nav.d.ts +1 -1
  731. package/dist/components/composed/navigation/category-nav/category-nav.d.ts.map +1 -1
  732. package/dist/components/composed/navigation/experience-activity/experience-activity.d.ts +1 -1
  733. package/dist/components/composed/navigation/experience-activity/experience-activity.d.ts.map +1 -1
  734. package/dist/components/composed/navigation/experience-activity/experience-activity.strings.d.ts +8 -0
  735. package/dist/components/composed/navigation/experience-activity/experience-activity.strings.d.ts.map +1 -0
  736. package/dist/components/composed/navigation/experience-activity/index.d.ts +1 -0
  737. package/dist/components/composed/navigation/experience-activity/index.d.ts.map +1 -1
  738. package/dist/components/composed/navigation/experience-activity/types.d.ts +2 -0
  739. package/dist/components/composed/navigation/experience-activity/types.d.ts.map +1 -1
  740. package/dist/components/composed/navigation/index.cjs +1 -1
  741. package/dist/components/composed/navigation/index.cjs.map +1 -1
  742. package/dist/components/composed/navigation/index.js +42 -35
  743. package/dist/components/composed/navigation/index.js.map +1 -1
  744. package/dist/components/composed/navigation/kanban-board/kanban-board.d.ts +1 -1
  745. package/dist/components/composed/navigation/kanban-board/kanban-board.d.ts.map +1 -1
  746. package/dist/components/composed/navigation/tab-switcher/tab-switcher.d.ts +1 -1
  747. package/dist/components/composed/navigation/tab-switcher/tab-switcher.d.ts.map +1 -1
  748. package/dist/components/composed/navigation/time-ruler/time-ruler.d.ts +1 -1
  749. package/dist/components/composed/navigation/time-ruler/time-ruler.d.ts.map +1 -1
  750. package/dist/components/composed/navigation/vendor-performance/vendor-performance.d.ts +1 -1
  751. package/dist/components/composed/navigation/vendor-performance/vendor-performance.d.ts.map +1 -1
  752. package/dist/components/composed/onboarding/checklist/checklist.d.ts.map +1 -1
  753. package/dist/components/composed/onboarding/checklist/partials/step-status-indicator.d.ts +1 -1
  754. package/dist/components/composed/onboarding/checklist/partials/step-status-indicator.d.ts.map +1 -1
  755. package/dist/components/composed/onboarding/index.cjs +1 -1
  756. package/dist/components/composed/onboarding/index.cjs.map +1 -1
  757. package/dist/components/composed/onboarding/index.js +60 -60
  758. package/dist/components/composed/onboarding/index.js.map +1 -1
  759. package/dist/components/composed/timelines/activity-stream/activity-stream.d.ts +1 -1
  760. package/dist/components/composed/timelines/activity-stream/activity-stream.d.ts.map +1 -1
  761. package/dist/components/composed/timelines/changelog/changelog-timeline.d.ts +1 -1
  762. package/dist/components/composed/timelines/changelog/changelog-timeline.d.ts.map +1 -1
  763. package/dist/components/composed/timelines/index.cjs +1 -1
  764. package/dist/components/composed/timelines/index.cjs.map +1 -1
  765. package/dist/components/composed/timelines/index.js +34 -7
  766. package/dist/components/composed/timelines/index.js.map +1 -1
  767. package/dist/components/composed/timelines/milestones/milestones-timeline.d.ts +1 -1
  768. package/dist/components/composed/timelines/milestones/milestones-timeline.d.ts.map +1 -1
  769. package/dist/components/composed/timelines/order-timeline/order-timeline.d.ts +1 -1
  770. package/dist/components/composed/timelines/order-timeline/order-timeline.d.ts.map +1 -1
  771. package/dist/components/composed/timelines/payment-timeline/payment-timeline.d.ts +1 -1
  772. package/dist/components/composed/timelines/payment-timeline/payment-timeline.d.ts.map +1 -1
  773. package/dist/components/composed/timelines/shared/timeline.d.ts +1 -1
  774. package/dist/components/composed/timelines/shared/timeline.d.ts.map +1 -1
  775. package/dist/components/composed/timelines/steps-card/steps-card.d.ts +2 -2
  776. package/dist/components/composed/timelines/steps-card/steps-card.d.ts.map +1 -1
  777. package/dist/components/features/activities/activities-feed.d.ts +1 -1
  778. package/dist/components/features/activities/activities-feed.d.ts.map +1 -1
  779. package/dist/components/features/activities/index.cjs +1 -1
  780. package/dist/components/features/activities/index.cjs.map +1 -1
  781. package/dist/components/features/activities/index.js +7 -7
  782. package/dist/components/features/activities/index.js.map +1 -1
  783. package/dist/components/features/activities/partials/activities-feed-card.d.ts +1 -1
  784. package/dist/components/features/activities/partials/activities-feed-card.d.ts.map +1 -1
  785. package/dist/components/features/activities/partials/activity-actions-menu.d.ts +1 -1
  786. package/dist/components/features/activities/partials/activity-actions-menu.d.ts.map +1 -1
  787. package/dist/components/features/activities/partials/activity-changes.d.ts +1 -1
  788. package/dist/components/features/activities/partials/activity-changes.d.ts.map +1 -1
  789. package/dist/components/features/activities/partials/activity-date-label.d.ts +1 -1
  790. package/dist/components/features/activities/partials/activity-date-label.d.ts.map +1 -1
  791. package/dist/components/features/activities/partials/activity-empty-state.d.ts +1 -1
  792. package/dist/components/features/activities/partials/activity-empty-state.d.ts.map +1 -1
  793. package/dist/components/features/activities/partials/activity-headline.d.ts +1 -1
  794. package/dist/components/features/activities/partials/activity-headline.d.ts.map +1 -1
  795. package/dist/components/features/activities/partials/activity-marker.d.ts +1 -1
  796. package/dist/components/features/activities/partials/activity-marker.d.ts.map +1 -1
  797. package/dist/components/features/activities/partials/activity-resource-tag.d.ts +1 -1
  798. package/dist/components/features/activities/partials/activity-resource-tag.d.ts.map +1 -1
  799. package/dist/components/features/activities/partials/activity-row.d.ts +1 -1
  800. package/dist/components/features/activities/partials/activity-row.d.ts.map +1 -1
  801. package/dist/components/features/ai-chat/ai-chat.d.ts +1 -1
  802. package/dist/components/features/ai-chat/ai-chat.d.ts.map +1 -1
  803. package/dist/components/features/ai-chat/index.cjs +1 -1
  804. package/dist/components/features/ai-chat/index.cjs.map +1 -1
  805. package/dist/components/features/ai-chat/index.js +7 -7
  806. package/dist/components/features/ai-chat/index.js.map +1 -1
  807. package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +1 -1
  808. package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts.map +1 -1
  809. package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts +1 -1
  810. package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts.map +1 -1
  811. package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts +1 -1
  812. package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts.map +1 -1
  813. package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts +1 -1
  814. package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts.map +1 -1
  815. package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +1 -1
  816. package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts.map +1 -1
  817. package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +1 -1
  818. package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts.map +1 -1
  819. package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +1 -1
  820. package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts.map +1 -1
  821. package/dist/components/features/card/booking-calendar-event-card.d.ts +1 -1
  822. package/dist/components/features/card/booking-calendar-event-card.d.ts.map +1 -1
  823. package/dist/components/features/card/index.cjs +1 -1
  824. package/dist/components/features/card/index.cjs.map +1 -1
  825. package/dist/components/features/card/index.js +4 -4
  826. package/dist/components/features/card/index.js.map +1 -1
  827. package/dist/components/features/card/partials/default-shared-resource-partials.d.ts +4 -4
  828. package/dist/components/features/card/partials/default-shared-resource-partials.d.ts.map +1 -1
  829. package/dist/components/features/card/shared-resource-card.d.ts +1 -1
  830. package/dist/components/features/card/shared-resource-card.d.ts.map +1 -1
  831. package/dist/components/features/comments/comments.d.ts +1 -1
  832. package/dist/components/features/comments/comments.d.ts.map +1 -1
  833. package/dist/components/features/comments/index.cjs +1 -1
  834. package/dist/components/features/comments/index.js +2 -2
  835. package/dist/components/features/comments/partials/comment-composer.d.ts.map +1 -1
  836. package/dist/components/features/event-log/event-log.d.ts +1 -1
  837. package/dist/components/features/event-log/event-log.d.ts.map +1 -1
  838. package/dist/components/features/event-log/index.cjs +1 -1
  839. package/dist/components/features/event-log/index.cjs.map +1 -1
  840. package/dist/components/features/event-log/index.js +5 -5
  841. package/dist/components/features/event-log/index.js.map +1 -1
  842. package/dist/components/features/filters/facets/async-select-facet.d.ts +1 -1
  843. package/dist/components/features/filters/facets/async-select-facet.d.ts.map +1 -1
  844. package/dist/components/features/filters/facets/date-facet.d.ts +1 -1
  845. package/dist/components/features/filters/facets/date-facet.d.ts.map +1 -1
  846. package/dist/components/features/filters/facets/range-facet.d.ts +1 -1
  847. package/dist/components/features/filters/facets/range-facet.d.ts.map +1 -1
  848. package/dist/components/features/filters/facets/search-facet.d.ts +1 -1
  849. package/dist/components/features/filters/facets/search-facet.d.ts.map +1 -1
  850. package/dist/components/features/filters/facets/select-facet.d.ts +1 -1
  851. package/dist/components/features/filters/facets/select-facet.d.ts.map +1 -1
  852. package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
  853. package/dist/components/features/filters/facets/tags-facet.d.ts.map +1 -1
  854. package/dist/components/features/filters/filter-context.d.ts +1 -1
  855. package/dist/components/features/filters/filter-context.d.ts.map +1 -1
  856. package/dist/components/features/filters/filter-layout.d.ts +1 -1
  857. package/dist/components/features/filters/filter-layout.d.ts.map +1 -1
  858. package/dist/components/features/filters/filters.strings.d.ts +1 -0
  859. package/dist/components/features/filters/filters.strings.d.ts.map +1 -1
  860. package/dist/components/features/filters/filters.types.d.ts +1 -1
  861. package/dist/components/features/filters/index.cjs +1 -1
  862. package/dist/components/features/filters/index.cjs.map +1 -1
  863. package/dist/components/features/filters/index.js +195 -188
  864. package/dist/components/features/filters/index.js.map +1 -1
  865. package/dist/components/features/filters/partials/active-filter-item.d.ts +2 -1
  866. package/dist/components/features/filters/partials/active-filter-item.d.ts.map +1 -1
  867. package/dist/components/features/filters/partials/async-filter-content.d.ts +1 -1
  868. package/dist/components/features/filters/partials/async-filter-content.d.ts.map +1 -1
  869. package/dist/components/features/filters/partials/date-filter-content.d.ts +1 -1
  870. package/dist/components/features/filters/partials/date-filter-content.d.ts.map +1 -1
  871. package/dist/components/features/filters/partials/filter-error-boundary.d.ts +1 -1
  872. package/dist/components/features/filters/partials/filter-error-boundary.d.ts.map +1 -1
  873. package/dist/components/features/filters/partials/filter-list-content.d.ts +1 -1
  874. package/dist/components/features/filters/partials/filter-list-content.d.ts.map +1 -1
  875. package/dist/components/features/filters/partials/filter-list-item.d.ts +1 -1
  876. package/dist/components/features/filters/partials/filter-list-item.d.ts.map +1 -1
  877. package/dist/components/features/filters/partials/filter-operator-select.d.ts +2 -1
  878. package/dist/components/features/filters/partials/filter-operator-select.d.ts.map +1 -1
  879. package/dist/components/features/filters/partials/filter-pill.d.ts +1 -1
  880. package/dist/components/features/filters/partials/filter-pill.d.ts.map +1 -1
  881. package/dist/components/features/filters/partials/filter-popover-content.d.ts +1 -1
  882. package/dist/components/features/filters/partials/filter-popover-content.d.ts.map +1 -1
  883. package/dist/components/features/filters/partials/filter-tabs.d.ts +1 -1
  884. package/dist/components/features/filters/partials/filter-tabs.d.ts.map +1 -1
  885. package/dist/components/features/filters/partials/filter-value-display.d.ts +1 -1
  886. package/dist/components/features/filters/partials/filter-value-display.d.ts.map +1 -1
  887. package/dist/components/features/filters/partials/filters-button.d.ts +1 -1
  888. package/dist/components/features/filters/partials/filters-button.d.ts.map +1 -1
  889. package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
  890. package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
  891. package/dist/components/features/filters/partials/search-filters-list.d.ts +1 -1
  892. package/dist/components/features/filters/partials/search-filters-list.d.ts.map +1 -1
  893. package/dist/components/features/filters/partials/tags-filter-content.d.ts +1 -1
  894. package/dist/components/features/filters/partials/tags-filter-content.d.ts.map +1 -1
  895. package/dist/components/features/global-search/global-search.d.ts +22 -1
  896. package/dist/components/features/global-search/global-search.d.ts.map +1 -1
  897. package/dist/components/features/global-search/index.cjs +1 -1
  898. package/dist/components/features/global-search/index.cjs.map +1 -1
  899. package/dist/components/features/global-search/index.js +3 -3
  900. package/dist/components/features/global-search/index.js.map +1 -1
  901. package/dist/components/features/global-search/partials/global-search-empty-state.d.ts +1 -1
  902. package/dist/components/features/global-search/partials/global-search-empty-state.d.ts.map +1 -1
  903. package/dist/components/features/global-search/partials/global-search-footer.d.ts +1 -1
  904. package/dist/components/features/global-search/partials/global-search-footer.d.ts.map +1 -1
  905. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
  906. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts.map +1 -1
  907. package/dist/components/features/global-search/partials/global-search-result-row.d.ts +2 -1
  908. package/dist/components/features/global-search/partials/global-search-result-row.d.ts.map +1 -1
  909. package/dist/components/features/global-search/partials/global-search-tabs.d.ts +1 -1
  910. package/dist/components/features/global-search/partials/global-search-tabs.d.ts.map +1 -1
  911. package/dist/components/features/kanban/index.cjs +1 -1
  912. package/dist/components/features/kanban/index.cjs.map +1 -1
  913. package/dist/components/features/kanban/index.js +2 -2
  914. package/dist/components/features/kanban/index.js.map +1 -1
  915. package/dist/components/features/kanban/kanban.d.ts +7 -7
  916. package/dist/components/features/kanban/kanban.d.ts.map +1 -1
  917. package/dist/components/features/mentions/index.cjs +1 -1
  918. package/dist/components/features/mentions/index.js +1 -1
  919. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +1 -1
  920. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts.map +1 -1
  921. package/dist/components/features/mentions/partials/mention-picker.d.ts +1 -1
  922. package/dist/components/features/mentions/partials/mention-picker.d.ts.map +1 -1
  923. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  924. package/dist/components/features/overlays/alert-dialog.d.ts.map +1 -1
  925. package/dist/components/features/overlays/dialog.d.ts +1 -1
  926. package/dist/components/features/overlays/dialog.d.ts.map +1 -1
  927. package/dist/components/features/overlays/drawer.d.ts +1 -1
  928. package/dist/components/features/overlays/drawer.d.ts.map +1 -1
  929. package/dist/components/features/overlays/index.cjs +1 -1
  930. package/dist/components/features/overlays/index.js +1 -1
  931. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
  932. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts.map +1 -1
  933. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  934. package/dist/components/features/rich-text-editor/index.cjs.map +1 -1
  935. package/dist/components/features/rich-text-editor/index.js +1 -1
  936. package/dist/components/features/rich-text-editor/index.js.map +1 -1
  937. package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts +2 -2
  938. package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts.map +1 -1
  939. package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts.map +1 -1
  940. package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts.map +1 -1
  941. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +1 -1
  942. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts.map +1 -1
  943. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +4 -0
  944. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts.map +1 -1
  945. package/dist/components/features/suggestions/index.cjs +1 -1
  946. package/dist/components/features/suggestions/index.cjs.map +1 -1
  947. package/dist/components/features/suggestions/index.js +1 -1
  948. package/dist/components/features/suggestions/index.js.map +1 -1
  949. package/dist/components/features/suggestions/suggestions.d.ts +1 -1
  950. package/dist/components/features/suggestions/suggestions.d.ts.map +1 -1
  951. package/dist/components/features/sync/index.cjs +1 -1
  952. package/dist/components/features/sync/index.cjs.map +1 -1
  953. package/dist/components/features/sync/index.js +3 -3
  954. package/dist/components/features/sync/index.js.map +1 -1
  955. package/dist/components/features/sync/sync-range-dialog-form.d.ts +1 -1
  956. package/dist/components/layout/app-shell/app-shell.types.d.ts +65 -0
  957. package/dist/components/layout/app-shell/app-shell.types.d.ts.map +1 -0
  958. package/dist/components/layout/app-shell/index.cjs +1 -0
  959. package/dist/components/layout/app-shell/index.d.ts +3 -0
  960. package/dist/components/layout/app-shell/index.d.ts.map +1 -0
  961. package/dist/components/layout/app-shell/index.js +2 -0
  962. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +3 -0
  963. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts.map +1 -0
  964. package/dist/components/layout/containers/content-container.d.ts +1 -1
  965. package/dist/components/layout/containers/content-container.d.ts.map +1 -1
  966. package/dist/components/layout/containers/index.cjs +1 -1
  967. package/dist/components/layout/containers/index.js +2 -2
  968. package/dist/components/layout/containers/section.d.ts +1 -1
  969. package/dist/components/layout/containers/section.d.ts.map +1 -1
  970. package/dist/components/layout/header/header.d.ts +1 -1
  971. package/dist/components/layout/header/header.d.ts.map +1 -1
  972. package/dist/components/layout/header/index.cjs +1 -1
  973. package/dist/components/layout/header/index.js +1 -1
  974. package/dist/components/layout/header/partials/header-breadcrumbs.d.ts +3 -1
  975. package/dist/components/layout/header/partials/header-breadcrumbs.d.ts.map +1 -1
  976. package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
  977. package/dist/components/layout/header/partials/header-notifications.d.ts.map +1 -1
  978. package/dist/components/layout/header/partials/header-search.d.ts +1 -1
  979. package/dist/components/layout/header/partials/header-search.d.ts.map +1 -1
  980. package/dist/components/layout/header/partials/header-user-menu.d.ts +1 -1
  981. package/dist/components/layout/header/partials/header-user-menu.d.ts.map +1 -1
  982. package/dist/components/layout/hooks/index.cjs +1 -1
  983. package/dist/components/layout/hooks/index.js +1 -1
  984. package/dist/components/layout/index.cjs +1 -1
  985. package/dist/components/layout/index.d.ts +1 -0
  986. package/dist/components/layout/index.d.ts.map +1 -1
  987. package/dist/components/layout/index.js +8 -7
  988. package/dist/components/layout/page/index.cjs +1 -1
  989. package/dist/components/layout/page/index.js +1 -1
  990. package/dist/components/layout/page/page-content.d.ts +1 -1
  991. package/dist/components/layout/page/page-content.d.ts.map +1 -1
  992. package/dist/components/layout/page/page.d.ts +1 -1
  993. package/dist/components/layout/page/page.d.ts.map +1 -1
  994. package/dist/components/layout/page/partials/page-actions.d.ts +1 -1
  995. package/dist/components/layout/page/partials/page-actions.d.ts.map +1 -1
  996. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  997. package/dist/components/layout/page/partials/page-header.d.ts.map +1 -1
  998. package/dist/components/layout/sidebar/app-sidebar.d.ts +6 -1
  999. package/dist/components/layout/sidebar/app-sidebar.d.ts.map +1 -1
  1000. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
  1001. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts.map +1 -1
  1002. package/dist/components/layout/sidebar/components/sidebar-logo.d.ts +1 -1
  1003. package/dist/components/layout/sidebar/components/sidebar-logo.d.ts.map +1 -1
  1004. package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
  1005. package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts.map +1 -1
  1006. package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +1 -1
  1007. package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts.map +1 -1
  1008. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +3 -1
  1009. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts.map +1 -1
  1010. package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts +1 -1
  1011. package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts.map +1 -1
  1012. package/dist/components/layout/sidebar/index.cjs +1 -1
  1013. package/dist/components/layout/sidebar/index.js +2 -2
  1014. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
  1015. package/dist/components/layout/sidebar/sidebar.context.d.ts.map +1 -1
  1016. package/dist/components/layout/sidebar/sidebar.d.ts +1 -1
  1017. package/dist/components/layout/sidebar/sidebar.d.ts.map +1 -1
  1018. package/dist/components/layout/sidebar/sidebar.utils.d.ts +2 -2
  1019. package/dist/components/layout/sidebar/sidebar.utils.d.ts.map +1 -1
  1020. package/dist/components/typography/heading.d.ts +1 -1
  1021. package/dist/components/typography/heading.d.ts.map +1 -1
  1022. package/dist/components/typography/index.cjs +1 -1
  1023. package/dist/components/typography/index.js +3 -3
  1024. package/dist/components/typography/label.d.ts +1 -1
  1025. package/dist/components/typography/label.d.ts.map +1 -1
  1026. package/dist/components/typography/text-link.d.ts +1 -1
  1027. package/dist/components/typography/text-link.d.ts.map +1 -1
  1028. package/dist/components/typography/text.d.ts +1 -1
  1029. package/dist/components/typography/text.d.ts.map +1 -1
  1030. package/dist/components/typography/typography.d.ts +3 -3
  1031. package/dist/components/typography/typography.d.ts.map +1 -1
  1032. package/dist/components/ui/accordion.d.ts +4 -4
  1033. package/dist/components/ui/accordion.d.ts.map +1 -1
  1034. package/dist/components/ui/alert.d.ts +4 -4
  1035. package/dist/components/ui/alert.d.ts.map +1 -1
  1036. package/dist/components/ui/avatar.d.ts +6 -6
  1037. package/dist/components/ui/avatar.d.ts.map +1 -1
  1038. package/dist/components/ui/badge.d.ts +1 -1
  1039. package/dist/components/ui/badge.d.ts.map +1 -1
  1040. package/dist/components/ui/breadcrumb.d.ts +7 -7
  1041. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  1042. package/dist/components/ui/button-group.d.ts +2 -2
  1043. package/dist/components/ui/button-group.d.ts.map +1 -1
  1044. package/dist/components/ui/button.d.ts +1 -1
  1045. package/dist/components/ui/button.d.ts.map +1 -1
  1046. package/dist/components/ui/calendar.d.ts +2 -2
  1047. package/dist/components/ui/calendar.d.ts.map +1 -1
  1048. package/dist/components/ui/card.d.ts +7 -7
  1049. package/dist/components/ui/card.d.ts.map +1 -1
  1050. package/dist/components/ui/chart.d.ts +4 -4
  1051. package/dist/components/ui/chart.d.ts.map +1 -1
  1052. package/dist/components/ui/checkbox.d.ts +1 -1
  1053. package/dist/components/ui/checkbox.d.ts.map +1 -1
  1054. package/dist/components/ui/collapsible.d.ts +4 -3
  1055. package/dist/components/ui/collapsible.d.ts.map +1 -1
  1056. package/dist/components/ui/combobox.d.ts +20 -20
  1057. package/dist/components/ui/combobox.d.ts.map +1 -1
  1058. package/dist/components/ui/command.d.ts +9 -9
  1059. package/dist/components/ui/command.d.ts.map +1 -1
  1060. package/dist/components/ui/context-menu.d.ts +15 -15
  1061. package/dist/components/ui/context-menu.d.ts.map +1 -1
  1062. package/dist/components/ui/dialog.d.ts +10 -10
  1063. package/dist/components/ui/dialog.d.ts.map +1 -1
  1064. package/dist/components/ui/dropdown-menu.d.ts +16 -16
  1065. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  1066. package/dist/components/ui/empty.d.ts +6 -6
  1067. package/dist/components/ui/empty.d.ts.map +1 -1
  1068. package/dist/components/ui/hover-card.d.ts +3 -3
  1069. package/dist/components/ui/hover-card.d.ts.map +1 -1
  1070. package/dist/components/ui/input-group.d.ts +6 -6
  1071. package/dist/components/ui/input-group.d.ts.map +1 -1
  1072. package/dist/components/ui/input.d.ts +1 -1
  1073. package/dist/components/ui/input.d.ts.map +1 -1
  1074. package/dist/components/ui/item.d.ts +9 -9
  1075. package/dist/components/ui/item.d.ts.map +1 -1
  1076. package/dist/components/ui/pagination.d.ts +7 -7
  1077. package/dist/components/ui/pagination.d.ts.map +1 -1
  1078. package/dist/components/ui/popover.d.ts +7 -7
  1079. package/dist/components/ui/popover.d.ts.map +1 -1
  1080. package/dist/components/ui/progress.d.ts +5 -5
  1081. package/dist/components/ui/progress.d.ts.map +1 -1
  1082. package/dist/components/ui/radio-group.d.ts +2 -2
  1083. package/dist/components/ui/radio-group.d.ts.map +1 -1
  1084. package/dist/components/ui/scroll-area.d.ts +2 -2
  1085. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  1086. package/dist/components/ui/select.d.ts +9 -9
  1087. package/dist/components/ui/select.d.ts.map +1 -1
  1088. package/dist/components/ui/separator.d.ts +1 -1
  1089. package/dist/components/ui/separator.d.ts.map +1 -1
  1090. package/dist/components/ui/sheet.d.ts +8 -8
  1091. package/dist/components/ui/sheet.d.ts.map +1 -1
  1092. package/dist/components/ui/sidebar.d.ts +19 -19
  1093. package/dist/components/ui/sidebar.d.ts.map +1 -1
  1094. package/dist/components/ui/skeleton.d.ts +1 -1
  1095. package/dist/components/ui/skeleton.d.ts.map +1 -1
  1096. package/dist/components/ui/slider.d.ts +2 -1
  1097. package/dist/components/ui/slider.d.ts.map +1 -1
  1098. package/dist/components/ui/sonner.d.ts +1 -1
  1099. package/dist/components/ui/sonner.d.ts.map +1 -1
  1100. package/dist/components/ui/spinner.d.ts +1 -1
  1101. package/dist/components/ui/spinner.d.ts.map +1 -1
  1102. package/dist/components/ui/switch.d.ts +1 -1
  1103. package/dist/components/ui/switch.d.ts.map +1 -1
  1104. package/dist/components/ui/table.d.ts +8 -8
  1105. package/dist/components/ui/table.d.ts.map +1 -1
  1106. package/dist/components/ui/tabs.d.ts +4 -4
  1107. package/dist/components/ui/tabs.d.ts.map +1 -1
  1108. package/dist/components/ui/textarea.d.ts +1 -1
  1109. package/dist/components/ui/textarea.d.ts.map +1 -1
  1110. package/dist/components/ui/toggle-group.d.ts +3 -2
  1111. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  1112. package/dist/components/ui/toggle.d.ts +1 -1
  1113. package/dist/components/ui/toggle.d.ts.map +1 -1
  1114. package/dist/components/ui/tooltip.d.ts +4 -4
  1115. package/dist/components/ui/tooltip.d.ts.map +1 -1
  1116. package/dist/index.cjs +1 -1
  1117. package/dist/index.js +1 -1
  1118. package/dist/lib/strings.cjs +1 -1
  1119. package/dist/lib/strings.cjs.map +1 -1
  1120. package/dist/lib/strings.js.map +1 -1
  1121. package/dist/lib/ui-provider/index.cjs +1 -1
  1122. package/dist/lib/ui-provider/index.js +1 -1
  1123. package/dist/lib/ui-provider/provider.d.ts +1 -1
  1124. package/dist/lib/ui-provider/provider.d.ts.map +1 -1
  1125. package/dist/lib/utils.cjs +1 -1
  1126. package/dist/lib/utils.cjs.map +1 -1
  1127. package/dist/lib/utils.js.map +1 -1
  1128. package/dist/showcase/assets/AreaChart-CzBEYPbz.js +6 -0
  1129. package/dist/showcase/assets/CSPContext-ImKusJJ_.js +1 -0
  1130. package/dist/showcase/assets/CompositeItem-C-DIOBdJ.js +1 -0
  1131. package/dist/showcase/assets/CompositeRoot-Ce4ORgG2.js +1 -0
  1132. package/dist/showcase/assets/Control.FullScreen-CwLQ1MMK.js +1 -0
  1133. package/dist/showcase/assets/DialogTrigger-DWvMs7dp.js +1 -0
  1134. package/dist/showcase/assets/FormContext-BeC1MJpT.js +1 -0
  1135. package/dist/showcase/assets/PreviewLayout-N1PTTyZK.js +1 -0
  1136. package/dist/showcase/assets/RadioGroup-DAWaa26D.js +1 -0
  1137. package/dist/showcase/assets/Separator-guDkmky0.js +1 -0
  1138. package/dist/showcase/assets/ToolbarRootContext-BJ7hWga8.js +1 -0
  1139. package/dist/showcase/assets/accordion-CiM9WhkT.js +172 -0
  1140. package/dist/showcase/assets/accordion-variants-C_sHrQ7C.js +1 -0
  1141. package/dist/showcase/assets/action-menu-mlWlGE5P.js +1 -0
  1142. package/dist/showcase/assets/activities-YWR4wh4f.js +501 -0
  1143. package/dist/showcase/assets/activities-feed-card-Cglnf5as.js +1 -0
  1144. package/dist/showcase/assets/admin-BtOtzPd4.js +80 -0
  1145. package/dist/showcase/assets/ai-8iNe0R1M.js +41 -0
  1146. package/dist/showcase/assets/ai-artifact-CQL5krnJ.js +2 -0
  1147. package/dist/showcase/assets/ai-chat-BzCdOOc6.js +568 -0
  1148. package/dist/showcase/assets/ai-elements-CBHy2xWU.js +379 -0
  1149. package/dist/showcase/assets/ai-new-CgL5NeVs.js +167 -0
  1150. package/dist/showcase/assets/ai-tool-call-D9AsaWJF.js +1 -0
  1151. package/dist/showcase/assets/alert-B2BuF4vZ.js +59 -0
  1152. package/dist/showcase/assets/alert-BkVaTONJ.js +1 -0
  1153. package/dist/showcase/assets/api-key-list-C-_59dli.js +73 -0
  1154. package/dist/showcase/assets/app-sidebar-BdOu5rVn.js +1 -0
  1155. package/dist/showcase/assets/arrow-down-BpVaq9-H.js +1 -0
  1156. package/dist/showcase/assets/arrow-left-C40rxfqj.js +1 -0
  1157. package/dist/showcase/assets/arrow-right-BclouSfP.js +1 -0
  1158. package/dist/showcase/assets/arrow-up-BpWEnkdX.js +1 -0
  1159. package/dist/showcase/assets/arrow-up-right-Z5sMa1HH.js +1 -0
  1160. package/dist/showcase/assets/avatar-CDNhh3rv.js +57 -0
  1161. package/dist/showcase/assets/avatar-QBwg3fvR.js +1 -0
  1162. package/dist/showcase/assets/badge-check-DXDQ3SaL.js +1 -0
  1163. package/dist/showcase/assets/badge-tAdYt--9.js +28 -0
  1164. package/dist/showcase/assets/bell-CVEeEWw4.js +1 -0
  1165. package/dist/showcase/assets/bot-Bcx5mNAQ.js +1 -0
  1166. package/dist/showcase/assets/box-Dgy2Xc70.js +1 -0
  1167. package/dist/showcase/assets/brain-DsoOsd7m.js +1 -0
  1168. package/dist/showcase/assets/brand-DAyuXNUz.js +40 -0
  1169. package/dist/showcase/assets/breadcrumb-CC4Z8eMY.js +1 -0
  1170. package/dist/showcase/assets/breadcrumb-DCbAzeMs.js +52 -0
  1171. package/dist/showcase/assets/breadcrumbs-DGZMpIoQ.js +1 -0
  1172. package/dist/showcase/assets/briefcase-2uLXCvAZ.js +1 -0
  1173. package/dist/showcase/assets/button-DhQ6rMPU.js +44 -0
  1174. package/dist/showcase/assets/button-group-Ce9vnZ1H.js +1 -0
  1175. package/dist/showcase/assets/buttons-CHja0LUL.js +270 -0
  1176. package/dist/showcase/assets/calendar-BbiK8AMZ.js +16 -0
  1177. package/dist/showcase/assets/calendar-BhZpIjCo.js +1 -0
  1178. package/dist/showcase/assets/calendar-oKaDsUIy.js +1 -0
  1179. package/dist/showcase/assets/card-DoU1VD79.js +1 -0
  1180. package/dist/showcase/assets/cards-3OgH8m3F.js +328 -0
  1181. package/dist/showcase/assets/chart-column-6Tn3WAT9.js +1 -0
  1182. package/dist/showcase/assets/chevron-down-x7TQsvYY.js +1 -0
  1183. package/dist/showcase/assets/chevron-left-CglzJgA2.js +1 -0
  1184. package/dist/showcase/assets/chevron-right-CDDMIkYP.js +1 -0
  1185. package/dist/showcase/assets/chevron-up-Dc3aAaGH.js +1 -0
  1186. package/dist/showcase/assets/chevrons-up-down-DJNnSBAj.js +1 -0
  1187. package/dist/showcase/assets/circle-BBmNFtO8.js +1 -0
  1188. package/dist/showcase/assets/circle-alert-DJevf3tT.js +1 -0
  1189. package/dist/showcase/assets/circle-check-BCxORlAM.js +1 -0
  1190. package/dist/showcase/assets/circle-check-big-tiuK2w0-.js +1 -0
  1191. package/dist/showcase/assets/circle-dot-BEVVQjgN.js +1 -0
  1192. package/dist/showcase/assets/circle-question-mark-BQrUUiKD.js +1 -0
  1193. package/dist/showcase/assets/circle-x-CoV_AUtZ.js +1 -0
  1194. package/dist/showcase/assets/clock-Bn2R4aDX.js +1 -0
  1195. package/dist/showcase/assets/code-xml-BVYp_JDX.js +1 -0
  1196. package/dist/showcase/assets/collapsible-Co2Y739_.js +27 -0
  1197. package/dist/showcase/assets/collapsible-DPbftgrO.js +1 -0
  1198. package/dist/showcase/assets/combobox-Cm4__LnJ.js +622 -0
  1199. package/dist/showcase/assets/command-DQFIxPN9.js +45 -0
  1200. package/dist/showcase/assets/command-KNncGgZW.js +1 -0
  1201. package/dist/showcase/assets/comment-composer-DTJtqYGP.js +1 -0
  1202. package/dist/showcase/assets/comment-item-DIEYMmV_.js +1 -0
  1203. package/dist/showcase/assets/comments-B0BbDp-3.js +357 -0
  1204. package/dist/showcase/assets/commerce-BOWBCLA-.js +79 -0
  1205. package/dist/showcase/assets/commerce-extras-C6CWYfpC.js +173 -0
  1206. package/dist/showcase/assets/composite-YicTVAO0.js +1 -0
  1207. package/dist/showcase/assets/contact-card-DQPRIlnJ.js +65 -0
  1208. package/dist/showcase/assets/content-container-CHXwWViz.js +1 -0
  1209. package/dist/showcase/assets/copyable-CjTwco9O.js +96 -0
  1210. package/dist/showcase/assets/course-card-CTQScd2C.js +113 -0
  1211. package/dist/showcase/assets/cpu-D52NjUWq.js +1 -0
  1212. package/dist/showcase/assets/credit-card-BoDfW0R8.js +1 -0
  1213. package/dist/showcase/assets/currency-BPREbpDA.js +149 -0
  1214. package/dist/showcase/assets/dark-surfaces-BCG45K2m.js +90 -0
  1215. package/dist/showcase/assets/database-DeGR0hed.js +1 -0
  1216. package/dist/showcase/assets/date-block-Bl1kXJrM.js +1 -0
  1217. package/dist/showcase/assets/date-picker-BHbZa4ML.js +1 -0
  1218. package/dist/showcase/assets/date-pickers-DumwUEXE.js +110 -0
  1219. package/dist/showcase/assets/dense-info-DxfgBw9Z.js +106 -0
  1220. package/dist/showcase/assets/dialog-BYHZvlL8.js +1 -0
  1221. package/dist/showcase/assets/display-BXMGOjL3.js +392 -0
  1222. package/dist/showcase/assets/dist-CnonIdcR.js +1 -0
  1223. package/dist/showcase/assets/dollar-sign-BipUTVXC.js +1 -0
  1224. package/dist/showcase/assets/download-CxspQgIc.js +1 -0
  1225. package/dist/showcase/assets/dropdown-menu-Q1BV3wPP.js +1 -0
  1226. package/dist/showcase/assets/dropzone-OivkuTPF.js +1 -0
  1227. package/dist/showcase/assets/ellipsis-Bn-XgoA7.js +1 -0
  1228. package/dist/showcase/assets/ellipsis-vertical-Bcl9HX9k.js +1 -0
  1229. package/dist/showcase/assets/empty-CcafLcw-.js +1 -0
  1230. package/dist/showcase/assets/empty-item-CiJeS8ZV.js +49 -0
  1231. package/dist/showcase/assets/empty-state-B1RYYjUP.js +188 -0
  1232. package/dist/showcase/assets/enhanced-activities-IB811DS6.js +361 -0
  1233. package/dist/showcase/assets/esm-CAF_uoYd.js +2 -0
  1234. package/dist/showcase/assets/event-calendar-C2VCfcUz.js +138 -0
  1235. package/dist/showcase/assets/event-log-ckmsCPmG.js +330 -0
  1236. package/dist/showcase/assets/example-C6-_Sy6B.js +1 -0
  1237. package/dist/showcase/assets/external-link-Bg-_8Uq7.js +1 -0
  1238. package/dist/showcase/assets/eye-JVsUA85G.js +1 -0
  1239. package/dist/showcase/assets/feature-announcement-C4aRXesF.js +34 -0
  1240. package/dist/showcase/assets/fetchers-DHuMQ6PN.js +1 -0
  1241. package/dist/showcase/assets/file-4pOq58jl.js +1 -0
  1242. package/dist/showcase/assets/file-text-BIi71mZ1.js +1 -0
  1243. package/dist/showcase/assets/filters-CxrcnmLU.js +78 -0
  1244. package/dist/showcase/assets/flag-DeiJmomk.js +1 -0
  1245. package/dist/showcase/assets/folder-open-zMXBpVNs.js +1 -0
  1246. package/dist/showcase/assets/form-sizing-B8jbL5tL.js +1 -0
  1247. package/dist/showcase/assets/format-BG4laCmp.js +1 -0
  1248. package/dist/showcase/assets/format-metric-value-B94EDo8X.js +1 -0
  1249. package/dist/showcase/assets/forms-PsN5zTLx.js +793 -0
  1250. package/dist/showcase/assets/generic-BH5YLC_H.js +1 -0
  1251. package/dist/showcase/assets/getPseudoElementBounds-B7wr19E1.js +1 -0
  1252. package/dist/showcase/assets/gift-CKFIh1Wh.js +1 -0
  1253. package/dist/showcase/assets/giftcard-cards-BfOlIHmA.js +85 -0
  1254. package/dist/showcase/assets/git-branch-BO9i8XkJ.js +1 -0
  1255. package/dist/showcase/assets/global-search-CNmUraNa.js +90 -0
  1256. package/dist/showcase/assets/global-search-DkJkQ0Vs.js +1 -0
  1257. package/dist/showcase/assets/globe-47T22W56.js +1 -0
  1258. package/dist/showcase/assets/gradient-card-CXSY29TZ.js +58 -0
  1259. package/dist/showcase/assets/header-eZHN-s6P.js +1 -0
  1260. package/dist/showcase/assets/header-notifications-Caa9i87J.js +1 -0
  1261. package/dist/showcase/assets/heart-DjKkkUsX.js +1 -0
  1262. package/dist/showcase/assets/house-DKxCiHyB.js +1 -0
  1263. package/dist/showcase/assets/icon-badge-Bcm8TlJi.js +1 -0
  1264. package/dist/showcase/assets/image-r-gMI33G.js +1 -0
  1265. package/dist/showcase/assets/inbox-ZxSy1pgX.js +1 -0
  1266. package/dist/showcase/assets/index-B8DVXCmf.js +10 -0
  1267. package/dist/showcase/assets/index-DbLs6mcj.css +2 -0
  1268. package/dist/showcase/assets/inertValue-i0cAMG-0.js +1 -0
  1269. package/dist/showcase/assets/info-B1KV2DkO.js +1 -0
  1270. package/dist/showcase/assets/inline-stat-D0sE-A4C.js +1 -0
  1271. package/dist/showcase/assets/input-25epjsiD.js +1 -0
  1272. package/dist/showcase/assets/input-CnwMt9Sr.js +1 -0
  1273. package/dist/showcase/assets/input-group-DSKyV7we.js +47 -0
  1274. package/dist/showcase/assets/input-group-x5eWeAZg.js +1 -0
  1275. package/dist/showcase/assets/inputs-B2Maxr14.js +49 -0
  1276. package/dist/showcase/assets/invoice-header-Gxl--yFu.js +36 -0
  1277. package/dist/showcase/assets/invoice-items-BtoaGNjE.js +36 -0
  1278. package/dist/showcase/assets/invoice-mini-DHFSZegy.js +14 -0
  1279. package/dist/showcase/assets/invoice-table-6dmU_KrL.js +30 -0
  1280. package/dist/showcase/assets/isSameDay-BrDHfKHm.js +1 -0
  1281. package/dist/showcase/assets/isToday-VtoSc1IH.js +1 -0
  1282. package/dist/showcase/assets/italic-CXkAsf6H.js +1 -0
  1283. package/dist/showcase/assets/item-CGOThKAx.js +1 -0
  1284. package/dist/showcase/assets/item-CMRbW6s-.js +1 -0
  1285. package/dist/showcase/assets/item-sw6fAZcn.js +117 -0
  1286. package/dist/showcase/assets/kanban-CKGYTXji.js +175 -0
  1287. package/dist/showcase/assets/label-BmKD22pm.js +1 -0
  1288. package/dist/showcase/assets/layout-app-shell-CeMHzVNn.js +501 -0
  1289. package/dist/showcase/assets/layout-containers-8Drow5f9.js +96 -0
  1290. package/dist/showcase/assets/layout-header-BlBw4JAV.js +170 -0
  1291. package/dist/showcase/assets/layout-page-BQfgHFau.js +122 -0
  1292. package/dist/showcase/assets/layout-sidebar-DZer5Uuh.js +224 -0
  1293. package/dist/showcase/assets/layout-users-nuioUkeu.js +104 -0
  1294. package/dist/showcase/assets/leaflet-src-S_KZeH2q.js +1 -0
  1295. package/dist/showcase/assets/lib-DMGme4uo.js +1 -0
  1296. package/dist/showcase/assets/lock-DQcZ9cEj.js +1 -0
  1297. package/dist/showcase/assets/mail-yNXDtmNr.js +1 -0
  1298. package/dist/showcase/assets/map-JMM1F9VR.js +124 -0
  1299. package/dist/showcase/assets/map-pin-2WS7oVo3.js +1 -0
  1300. package/dist/showcase/assets/menus-mK-FeNki.js +89 -0
  1301. package/dist/showcase/assets/message-square-DGTAjNJG.js +1 -0
  1302. package/dist/showcase/assets/metadata-list-CBxuQjVO.js +278 -0
  1303. package/dist/showcase/assets/metric-BWGrmyD6.js +1 -0
  1304. package/dist/showcase/assets/metric-grid-CewIJQvo.js +1 -0
  1305. package/dist/showcase/assets/metric-trend-chip-kLBN8u5z.js +1 -0
  1306. package/dist/showcase/assets/metrics-analytics-bar-COnc7VN9.js +44 -0
  1307. package/dist/showcase/assets/metrics-analytics-cards-BR83UVqi.js +77 -0
  1308. package/dist/showcase/assets/metrics-comparison-C0SUjdMg.js +76 -0
  1309. package/dist/showcase/assets/metrics-heatmap-Orq1hLk-.js +27 -0
  1310. package/dist/showcase/assets/metrics-inline-badge-C924q2Xx.js +17 -0
  1311. package/dist/showcase/assets/metrics-kpi-row-Cwi05ruK.js +31 -0
  1312. package/dist/showcase/assets/metrics-micro-grid-D97nkrge.js +42 -0
  1313. package/dist/showcase/assets/metrics-overview-BOc8y3QX.js +192 -0
  1314. package/dist/showcase/assets/metrics-stat-cards-Cilh-A5D.js +54 -0
  1315. package/dist/showcase/assets/minus-DvrDGcTv.js +1 -0
  1316. package/dist/showcase/assets/money-display-0egZ_O76.js +1 -0
  1317. package/dist/showcase/assets/month-year-picker-2cWfwnmP.js +1 -0
  1318. package/dist/showcase/assets/navigation-BnYme-Wj.js +90 -0
  1319. package/dist/showcase/assets/navigation-CLQWl32A.js +230 -0
  1320. package/dist/showcase/assets/navigation-extras-BPDoAdXF.js +43 -0
  1321. package/dist/showcase/assets/onboarding-checklist-26XVWgDF.js +119 -0
  1322. package/dist/showcase/assets/overlays-2sVGhanu.js +88 -0
  1323. package/dist/showcase/assets/overlays-BaR6HDwB.js +394 -0
  1324. package/dist/showcase/assets/package-CUNvdlBi.js +1 -0
  1325. package/dist/showcase/assets/page-action-button-DgvZVtzx.js +1 -0
  1326. package/dist/showcase/assets/page-header-4F_iaFPW.js +1 -0
  1327. package/dist/showcase/assets/pagination-CDjZ6jiZ.js +42 -0
  1328. package/dist/showcase/assets/pagination-g1NQaN42.js +1 -0
  1329. package/dist/showcase/assets/paperclip-CDxdf8Os.js +1 -0
  1330. package/dist/showcase/assets/pencil-Ddc5JwBe.js +1 -0
  1331. package/dist/showcase/assets/phone-NIZ5SwgK.js +1 -0
  1332. package/dist/showcase/assets/plus-C9kwz7rW.js +1 -0
  1333. package/dist/showcase/assets/popover-DtnuOBgr.js +1 -0
  1334. package/dist/showcase/assets/popover-T85aV4zW.js +1 -0
  1335. package/dist/showcase/assets/popover-menu-BRGSZe4f.js +1 -0
  1336. package/dist/showcase/assets/progress-CcZjuzK3.js +1 -0
  1337. package/dist/showcase/assets/progress-DbouniUl.js +18 -0
  1338. package/dist/showcase/assets/props-table-CM_1cocj.js +1 -0
  1339. package/dist/showcase/assets/props.generated-Bg627Jai.json +32829 -0
  1340. package/dist/showcase/assets/quote-vjygm2-7.js +1 -0
  1341. package/dist/showcase/assets/react-dom-Bz4cALsF.js +1 -0
  1342. package/dist/showcase/assets/receipt-CfMgwFPl.js +1 -0
  1343. package/dist/showcase/assets/refresh-cw-Tu5E_cGA.js +1 -0
  1344. package/dist/showcase/assets/resolveValueLabel-CipUZh6i.js +1 -0
  1345. package/dist/showcase/assets/rich-text-editor-BMZUyuQX.js +143 -0
  1346. package/dist/showcase/assets/rich-text-editor-HwYIeWYW.js +124 -0
  1347. package/dist/showcase/assets/rotate-ccw-B4Wi4ws7.js +1 -0
  1348. package/dist/showcase/assets/scroll-area-CuB_woqF.js +1 -0
  1349. package/dist/showcase/assets/scroll-area-I4mSIpRq.js +32 -0
  1350. package/dist/showcase/assets/select-CF3cKjCo.js +1 -0
  1351. package/dist/showcase/assets/send-Blu_n6xl.js +1 -0
  1352. package/dist/showcase/assets/separator-9mrRf_DZ.js +28 -0
  1353. package/dist/showcase/assets/separator-DUKleOvU.js +1 -0
  1354. package/dist/showcase/assets/settings-DlKX-bZT.js +1 -0
  1355. package/dist/showcase/assets/sheet-CwcLVoF3.js +1 -0
  1356. package/dist/showcase/assets/shield-BD0Y8Jj3.js +1 -0
  1357. package/dist/showcase/assets/shield-alert-DNOTmkwG.js +1 -0
  1358. package/dist/showcase/assets/shield-check-Sbul0dUK.js +1 -0
  1359. package/dist/showcase/assets/shopping-bag-EDVpxI9n.js +1 -0
  1360. package/dist/showcase/assets/sidebar-JWZ88xw5.js +1 -0
  1361. package/dist/showcase/assets/sidebar.context-D3P7qppn.js +1 -0
  1362. package/dist/showcase/assets/skeleton-CIS1Kaas.js +1 -0
  1363. package/dist/showcase/assets/skeleton-CJCJDQFt.js +29 -0
  1364. package/dist/showcase/assets/smart-card-7szg_qSt.js +1 -0
  1365. package/dist/showcase/assets/sonner-DMHXr9Ce.js +22 -0
  1366. package/dist/showcase/assets/sortable.esm-DVuzVA1U.js +5 -0
  1367. package/dist/showcase/assets/sparkles-BEa1AgNq.js +1 -0
  1368. package/dist/showcase/assets/spinner-Bi-T9etI.js +30 -0
  1369. package/dist/showcase/assets/spinner-C77XIUVf.js +1 -0
  1370. package/dist/showcase/assets/spinner-DK9BAT6K.js +49 -0
  1371. package/dist/showcase/assets/square-pen-N0mq-vPu.js +1 -0
  1372. package/dist/showcase/assets/stacked-avatars-DORVEni2.js +1 -0
  1373. package/dist/showcase/assets/star-Dbtxr60S.js +1 -0
  1374. package/dist/showcase/assets/startOfDay-BJgxz4yq.js +1 -0
  1375. package/dist/showcase/assets/styles-CwW4IBUg.js +1 -0
  1376. package/dist/showcase/assets/switch-B4iRxZFU.js +1 -0
  1377. package/dist/showcase/assets/switch-B_rnbXwy.js +1 -0
  1378. package/dist/showcase/assets/table-BJ9HSK6H.js +1 -0
  1379. package/dist/showcase/assets/table-IB0MEYf4.js +389 -0
  1380. package/dist/showcase/assets/tabs-D02JL-Fa.js +1 -0
  1381. package/dist/showcase/assets/tabs-XpsVS3ff.js +19 -0
  1382. package/dist/showcase/assets/text-button-BWCgXGnr.js +1 -0
  1383. package/dist/showcase/assets/text-link-TzuDnSCF.js +1 -0
  1384. package/dist/showcase/assets/textarea-B7DUIiH_.js +1 -0
  1385. package/dist/showcase/assets/textarea-CV5gNzXf.js +1 -0
  1386. package/dist/showcase/assets/timelines-CF0UYhwm.js +200 -0
  1387. package/dist/showcase/assets/toggle-group-CK8mBx6E.js +1 -0
  1388. package/dist/showcase/assets/toggles-CqJSApnF.js +71 -0
  1389. package/dist/showcase/assets/toggles-group-v0JijMzG.js +32 -0
  1390. package/dist/showcase/assets/trash-2-_xF5j-Ya.js +1 -0
  1391. package/dist/showcase/assets/trending-up-BCzmjYzm.js +1 -0
  1392. package/dist/showcase/assets/truck-CryH-5dx.js +1 -0
  1393. package/dist/showcase/assets/typography-D3PFbRpb.js +215 -0
  1394. package/dist/showcase/assets/ui-badge-ByyFPLOB.js +28 -0
  1395. package/dist/showcase/assets/ui-card-DYLLiD89.js +30 -0
  1396. package/dist/showcase/assets/ui-table-DW4QIwxK.js +42 -0
  1397. package/dist/showcase/assets/upload-tray-ZdL_dzc0.js +138 -0
  1398. package/dist/showcase/assets/useAnchoredPopupScrollLock-AFPLx3SZ.js +1 -0
  1399. package/dist/showcase/assets/useCollapsiblePanel-CeHRY8U2.js +1 -0
  1400. package/dist/showcase/assets/useCompositeItem-C-1zP8zD.js +1 -0
  1401. package/dist/showcase/assets/useCompositeListItem-D4ugfKLB.js +1 -0
  1402. package/dist/showcase/assets/useControlled-Cpg8gDqb.js +1 -0
  1403. package/dist/showcase/assets/useLabelableId-CSxAHpU-.js +1 -0
  1404. package/dist/showcase/assets/useOpenInteractionType-BLV8Pa2n.js +1 -0
  1405. package/dist/showcase/assets/useRender-DparzvOu.js +1 -0
  1406. package/dist/showcase/assets/useTriggerFocusGuards-CrYLO2g5.js +1 -0
  1407. package/dist/showcase/assets/useValueChanged-DwgbaueK.js +1 -0
  1408. package/dist/showcase/assets/user-CGcV8Ppb.js +1 -0
  1409. package/dist/showcase/assets/user-plus-iOsntM6P.js +1 -0
  1410. package/dist/showcase/assets/users-DzgXeZbf.js +1 -0
  1411. package/dist/showcase/assets/vendor-profile-DbFPkGn9.js +37 -0
  1412. package/dist/showcase/assets/wrench-1Ra9xb3d.js +1 -0
  1413. package/dist/showcase/assets/x-CE8oevyh.js +1 -0
  1414. package/dist/showcase/assets/zap-se3n2YVD.js +1 -0
  1415. package/dist/showcase/index.html +4 -3
  1416. package/dist/style.css +2 -2
  1417. package/package.json +14 -3
  1418. package/scripts/audit-consumer.mjs +337 -0
  1419. package/scripts/install-skill.mjs +50 -36
  1420. package/src/App.css +28 -0
  1421. package/dist/_shared/accordion-CztqyaIN.js +0 -130
  1422. package/dist/_shared/accordion-CztqyaIN.js.map +0 -1
  1423. package/dist/_shared/accordion-D5uTCLCB.cjs +0 -2
  1424. package/dist/_shared/accordion-D5uTCLCB.cjs.map +0 -1
  1425. package/dist/_shared/action-menu-Yrj6VzFS.js +0 -96
  1426. package/dist/_shared/action-menu-Yrj6VzFS.js.map +0 -1
  1427. package/dist/_shared/action-menu-eVP8GGlv.cjs +0 -2
  1428. package/dist/_shared/action-menu-eVP8GGlv.cjs.map +0 -1
  1429. package/dist/_shared/ai-artifact-DaHXJTKg.cjs +0 -3
  1430. package/dist/_shared/ai-artifact-DaHXJTKg.cjs.map +0 -1
  1431. package/dist/_shared/ai-artifact-DyLn3JAs.js +0 -1068
  1432. package/dist/_shared/ai-artifact-DyLn3JAs.js.map +0 -1
  1433. package/dist/_shared/alert-BVw4Mq6H.js +0 -48
  1434. package/dist/_shared/alert-BVw4Mq6H.js.map +0 -1
  1435. package/dist/_shared/alert-DXSlR9ja.cjs +0 -2
  1436. package/dist/_shared/alert-DXSlR9ja.cjs.map +0 -1
  1437. package/dist/_shared/avatar-CpBz9pTv.js +0 -52
  1438. package/dist/_shared/avatar-CpBz9pTv.js.map +0 -1
  1439. package/dist/_shared/avatar-dg20YFFs.cjs +0 -2
  1440. package/dist/_shared/avatar-dg20YFFs.cjs.map +0 -1
  1441. package/dist/_shared/badge-BVCh_hfL.js +0 -108
  1442. package/dist/_shared/badge-BVCh_hfL.js.map +0 -1
  1443. package/dist/_shared/badge-C49SSz-6.cjs +0 -2
  1444. package/dist/_shared/badge-C49SSz-6.cjs.map +0 -1
  1445. package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs +0 -2
  1446. package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs.map +0 -1
  1447. package/dist/_shared/breadcrumbs-Dc93fqqE.js +0 -111
  1448. package/dist/_shared/breadcrumbs-Dc93fqqE.js.map +0 -1
  1449. package/dist/_shared/button-2xglT7yf.cjs +0 -2
  1450. package/dist/_shared/button-2xglT7yf.cjs.map +0 -1
  1451. package/dist/_shared/button-ChCkwoOD.js +0 -176
  1452. package/dist/_shared/button-ChCkwoOD.js.map +0 -1
  1453. package/dist/_shared/button-D0nF99a9.cjs +0 -2
  1454. package/dist/_shared/button-D0nF99a9.cjs.map +0 -1
  1455. package/dist/_shared/button-DBR4QI9E.js +0 -46
  1456. package/dist/_shared/button-DBR4QI9E.js.map +0 -1
  1457. package/dist/_shared/buttons-Bcnt1md_.js +0 -143
  1458. package/dist/_shared/buttons-Bcnt1md_.js.map +0 -1
  1459. package/dist/_shared/buttons-km9xqXJv.cjs +0 -2
  1460. package/dist/_shared/buttons-km9xqXJv.cjs.map +0 -1
  1461. package/dist/_shared/card-radio-group-BGH93O5-.js +0 -158
  1462. package/dist/_shared/card-radio-group-BGH93O5-.js.map +0 -1
  1463. package/dist/_shared/card-radio-group-Vq741uhL.cjs +0 -2
  1464. package/dist/_shared/card-radio-group-Vq741uhL.cjs.map +0 -1
  1465. package/dist/_shared/chunk-D3uCBrYO.cjs +0 -1
  1466. package/dist/_shared/combobox-BgXAxjU2.js +0 -746
  1467. package/dist/_shared/combobox-BgXAxjU2.js.map +0 -1
  1468. package/dist/_shared/combobox-DuIyh3xJ.cjs +0 -2
  1469. package/dist/_shared/combobox-DuIyh3xJ.cjs.map +0 -1
  1470. package/dist/_shared/command-BbiijN61.js +0 -39
  1471. package/dist/_shared/command-BbiijN61.js.map +0 -1
  1472. package/dist/_shared/command-D7zTvyBJ.cjs +0 -2
  1473. package/dist/_shared/command-D7zTvyBJ.cjs.map +0 -1
  1474. package/dist/_shared/command-DGNtTI-V.cjs +0 -2
  1475. package/dist/_shared/command-DGNtTI-V.cjs.map +0 -1
  1476. package/dist/_shared/command-jKbwFRtS.js +0 -123
  1477. package/dist/_shared/command-jKbwFRtS.js.map +0 -1
  1478. package/dist/_shared/comments-CNUsdwGW.cjs +0 -2
  1479. package/dist/_shared/comments-CNUsdwGW.cjs.map +0 -1
  1480. package/dist/_shared/comments-CvmS7zG3.js +0 -945
  1481. package/dist/_shared/comments-CvmS7zG3.js.map +0 -1
  1482. package/dist/_shared/containers-BFDv7cCV.cjs +0 -2
  1483. package/dist/_shared/containers-BFDv7cCV.cjs.map +0 -1
  1484. package/dist/_shared/containers-C1-A_2PT.js +0 -19
  1485. package/dist/_shared/containers-C1-A_2PT.js.map +0 -1
  1486. package/dist/_shared/content-container-CwqFnaI0.cjs +0 -2
  1487. package/dist/_shared/content-container-CwqFnaI0.cjs.map +0 -1
  1488. package/dist/_shared/content-container-D_3JGBSc.js +0 -33
  1489. package/dist/_shared/content-container-D_3JGBSc.js.map +0 -1
  1490. package/dist/_shared/copyable-CHhCGMfW.js +0 -38
  1491. package/dist/_shared/copyable-CHhCGMfW.js.map +0 -1
  1492. package/dist/_shared/copyable-ndaiocYq.cjs +0 -2
  1493. package/dist/_shared/copyable-ndaiocYq.cjs.map +0 -1
  1494. package/dist/_shared/date-picker-B8O_qbik.js +0 -1353
  1495. package/dist/_shared/date-picker-B8O_qbik.js.map +0 -1
  1496. package/dist/_shared/date-picker-BnOjyuKS.cjs +0 -2
  1497. package/dist/_shared/date-picker-BnOjyuKS.cjs.map +0 -1
  1498. package/dist/_shared/date-pickers-Cas9cPlj.js +0 -330
  1499. package/dist/_shared/date-pickers-Cas9cPlj.js.map +0 -1
  1500. package/dist/_shared/date-pickers-Dk-G3RMy.cjs +0 -2
  1501. package/dist/_shared/date-pickers-Dk-G3RMy.cjs.map +0 -1
  1502. package/dist/_shared/dialog-67GmkMLC.js +0 -101
  1503. package/dist/_shared/dialog-67GmkMLC.js.map +0 -1
  1504. package/dist/_shared/dialog-BF_4uAhE.cjs +0 -2
  1505. package/dist/_shared/dialog-BF_4uAhE.cjs.map +0 -1
  1506. package/dist/_shared/display-B9xVWboG.cjs +0 -8
  1507. package/dist/_shared/display-B9xVWboG.cjs.map +0 -1
  1508. package/dist/_shared/display-BM_GxDAo.js +0 -1237
  1509. package/dist/_shared/display-BM_GxDAo.js.map +0 -1
  1510. package/dist/_shared/dropdown-menu-4nxEBMnd.js +0 -147
  1511. package/dist/_shared/dropdown-menu-4nxEBMnd.js.map +0 -1
  1512. package/dist/_shared/dropdown-menu-DZlWHqWS.cjs +0 -2
  1513. package/dist/_shared/dropdown-menu-DZlWHqWS.cjs.map +0 -1
  1514. package/dist/_shared/form-field-BQlki-8s.js +0 -319
  1515. package/dist/_shared/form-field-BQlki-8s.js.map +0 -1
  1516. package/dist/_shared/form-field-DzpwVS99.cjs +0 -2
  1517. package/dist/_shared/form-field-DzpwVS99.cjs.map +0 -1
  1518. package/dist/_shared/form-sizing-CcbB-OHF.js +0 -21
  1519. package/dist/_shared/form-sizing-CcbB-OHF.js.map +0 -1
  1520. package/dist/_shared/form-sizing-Cw12UeI6.cjs +0 -2
  1521. package/dist/_shared/form-sizing-Cw12UeI6.cjs.map +0 -1
  1522. package/dist/_shared/format-B2AdSQVn.cjs +0 -2
  1523. package/dist/_shared/format-B2AdSQVn.cjs.map +0 -1
  1524. package/dist/_shared/format-CP65h1vK.js +0 -48
  1525. package/dist/_shared/format-CP65h1vK.js.map +0 -1
  1526. package/dist/_shared/forms-B8aaNG44.cjs +0 -2
  1527. package/dist/_shared/forms-B8aaNG44.cjs.map +0 -1
  1528. package/dist/_shared/forms-BusuTZZ2.js +0 -3374
  1529. package/dist/_shared/forms-BusuTZZ2.js.map +0 -1
  1530. package/dist/_shared/header-DWfOUjFL.cjs +0 -2
  1531. package/dist/_shared/header-DWfOUjFL.cjs.map +0 -1
  1532. package/dist/_shared/header-KpdoLtP9.js +0 -369
  1533. package/dist/_shared/header-KpdoLtP9.js.map +0 -1
  1534. package/dist/_shared/heading-BprqyzDs.js +0 -39
  1535. package/dist/_shared/heading-BprqyzDs.js.map +0 -1
  1536. package/dist/_shared/heading-mZc_jan1.cjs +0 -2
  1537. package/dist/_shared/heading-mZc_jan1.cjs.map +0 -1
  1538. package/dist/_shared/hooks-C-uWoRq5.cjs +0 -2
  1539. package/dist/_shared/hooks-C-uWoRq5.cjs.map +0 -1
  1540. package/dist/_shared/hooks-D5HJtvvP.js +0 -118
  1541. package/dist/_shared/hooks-D5HJtvvP.js.map +0 -1
  1542. package/dist/_shared/icon-badge-BBqDyAUz.cjs +0 -2
  1543. package/dist/_shared/icon-badge-BBqDyAUz.cjs.map +0 -1
  1544. package/dist/_shared/icon-badge-Bi63T-bj.js +0 -52
  1545. package/dist/_shared/icon-badge-Bi63T-bj.js.map +0 -1
  1546. package/dist/_shared/input-B2YXTHqz.cjs +0 -2
  1547. package/dist/_shared/input-B2YXTHqz.cjs.map +0 -1
  1548. package/dist/_shared/input-BJb10xb9.cjs +0 -2
  1549. package/dist/_shared/input-BJb10xb9.cjs.map +0 -1
  1550. package/dist/_shared/input-CZxP5Xgj.js +0 -17
  1551. package/dist/_shared/input-CZxP5Xgj.js.map +0 -1
  1552. package/dist/_shared/input-DQahu2sm.js +0 -182
  1553. package/dist/_shared/input-DQahu2sm.js.map +0 -1
  1554. package/dist/_shared/item-Cu5JbZyZ.js +0 -224
  1555. package/dist/_shared/item-Cu5JbZyZ.js.map +0 -1
  1556. package/dist/_shared/item-Cx_7QZ2o.cjs +0 -2
  1557. package/dist/_shared/item-Cx_7QZ2o.cjs.map +0 -1
  1558. package/dist/_shared/mentions-CS3rIhze.js +0 -493
  1559. package/dist/_shared/mentions-CS3rIhze.js.map +0 -1
  1560. package/dist/_shared/mentions-D7gnP3Nf.cjs +0 -2
  1561. package/dist/_shared/mentions-D7gnP3Nf.cjs.map +0 -1
  1562. package/dist/_shared/metadata-CRsVWE8Y.cjs +0 -2
  1563. package/dist/_shared/metadata-CRsVWE8Y.cjs.map +0 -1
  1564. package/dist/_shared/metadata-CfG0FdFZ.js +0 -236
  1565. package/dist/_shared/metadata-CfG0FdFZ.js.map +0 -1
  1566. package/dist/_shared/money-display-Bd0rkjc9.js +0 -198
  1567. package/dist/_shared/money-display-Bd0rkjc9.js.map +0 -1
  1568. package/dist/_shared/money-display-DSFft9Mi.cjs +0 -2
  1569. package/dist/_shared/money-display-DSFft9Mi.cjs.map +0 -1
  1570. package/dist/_shared/navigation-Do9k5Xh1.js +0 -420
  1571. package/dist/_shared/navigation-Do9k5Xh1.js.map +0 -1
  1572. package/dist/_shared/navigation-QAAD3HJd.cjs +0 -2
  1573. package/dist/_shared/navigation-QAAD3HJd.cjs.map +0 -1
  1574. package/dist/_shared/overlays-B8AH8fNv.js +0 -633
  1575. package/dist/_shared/overlays-B8AH8fNv.js.map +0 -1
  1576. package/dist/_shared/overlays-DOcoRy8k.cjs +0 -2
  1577. package/dist/_shared/overlays-DOcoRy8k.cjs.map +0 -1
  1578. package/dist/_shared/page-BPCeKX9X.js +0 -263
  1579. package/dist/_shared/page-BPCeKX9X.js.map +0 -1
  1580. package/dist/_shared/page-DMM32sxi.cjs +0 -2
  1581. package/dist/_shared/page-DMM32sxi.cjs.map +0 -1
  1582. package/dist/_shared/popover-B1f_EUQS.cjs +0 -2
  1583. package/dist/_shared/popover-B1f_EUQS.cjs.map +0 -1
  1584. package/dist/_shared/popover-CgRGcFk9.js +0 -83
  1585. package/dist/_shared/popover-CgRGcFk9.js.map +0 -1
  1586. package/dist/_shared/popover-menu-BEKIT3LR.cjs +0 -2
  1587. package/dist/_shared/popover-menu-BEKIT3LR.cjs.map +0 -1
  1588. package/dist/_shared/popover-menu-BHdHLEVL.js +0 -95
  1589. package/dist/_shared/popover-menu-BHdHLEVL.js.map +0 -1
  1590. package/dist/_shared/rich-text-editor-0uoIoYXU.js +0 -608
  1591. package/dist/_shared/rich-text-editor-0uoIoYXU.js.map +0 -1
  1592. package/dist/_shared/rich-text-editor-wTiARGuB.cjs +0 -2
  1593. package/dist/_shared/rich-text-editor-wTiARGuB.cjs.map +0 -1
  1594. package/dist/_shared/scroll-area-Bo17wtZD.cjs +0 -2
  1595. package/dist/_shared/scroll-area-Bo17wtZD.cjs.map +0 -1
  1596. package/dist/_shared/scroll-area-Cj-hmB5D.js +0 -41
  1597. package/dist/_shared/scroll-area-Cj-hmB5D.js.map +0 -1
  1598. package/dist/_shared/select-07RRiTWc.js +0 -85
  1599. package/dist/_shared/select-07RRiTWc.js.map +0 -1
  1600. package/dist/_shared/select-BfiU7a4n.cjs +0 -2
  1601. package/dist/_shared/select-BfiU7a4n.cjs.map +0 -1
  1602. package/dist/_shared/separator-CN9zAJfs.cjs +0 -2
  1603. package/dist/_shared/separator-CN9zAJfs.cjs.map +0 -1
  1604. package/dist/_shared/separator-DR0uUMKa.js +0 -16
  1605. package/dist/_shared/separator-DR0uUMKa.js.map +0 -1
  1606. package/dist/_shared/sheet-B5FoGJAZ.cjs +0 -2
  1607. package/dist/_shared/sheet-B5FoGJAZ.cjs.map +0 -1
  1608. package/dist/_shared/sheet-cUI8cypP.js +0 -100
  1609. package/dist/_shared/sheet-cUI8cypP.js.map +0 -1
  1610. package/dist/_shared/sidebar-Bq7yKLrG.cjs +0 -2
  1611. package/dist/_shared/sidebar-Bq7yKLrG.cjs.map +0 -1
  1612. package/dist/_shared/sidebar-Da20tCUc.cjs +0 -2
  1613. package/dist/_shared/sidebar-Da20tCUc.cjs.map +0 -1
  1614. package/dist/_shared/sidebar-Q6TYE8Ux.js +0 -371
  1615. package/dist/_shared/sidebar-Q6TYE8Ux.js.map +0 -1
  1616. package/dist/_shared/sidebar-WmnQ55YY.js +0 -537
  1617. package/dist/_shared/sidebar-WmnQ55YY.js.map +0 -1
  1618. package/dist/_shared/skeleton-B3HWEc6G.js +0 -14
  1619. package/dist/_shared/skeleton-B3HWEc6G.js.map +0 -1
  1620. package/dist/_shared/skeleton-Cz_l8-fc.cjs +0 -2
  1621. package/dist/_shared/skeleton-Cz_l8-fc.cjs.map +0 -1
  1622. package/dist/_shared/slot-BgnZtKR5.js +0 -18
  1623. package/dist/_shared/slot-BgnZtKR5.js.map +0 -1
  1624. package/dist/_shared/slot-Dac1ipUC.cjs +0 -2
  1625. package/dist/_shared/slot-Dac1ipUC.cjs.map +0 -1
  1626. package/dist/_shared/smart-card-Bm_VxYUG.cjs +0 -2
  1627. package/dist/_shared/smart-card-Bm_VxYUG.cjs.map +0 -1
  1628. package/dist/_shared/smart-card-MT6JjkoI.js +0 -360
  1629. package/dist/_shared/smart-card-MT6JjkoI.js.map +0 -1
  1630. package/dist/_shared/spinner-BQjxJ_Kx.js +0 -67
  1631. package/dist/_shared/spinner-BQjxJ_Kx.js.map +0 -1
  1632. package/dist/_shared/spinner-Dvaa6GUm.cjs +0 -2
  1633. package/dist/_shared/spinner-Dvaa6GUm.cjs.map +0 -1
  1634. package/dist/_shared/switch-C0yyhsXZ.js +0 -51
  1635. package/dist/_shared/switch-C0yyhsXZ.js.map +0 -1
  1636. package/dist/_shared/switch-DozkSQNn.cjs +0 -2
  1637. package/dist/_shared/switch-DozkSQNn.cjs.map +0 -1
  1638. package/dist/_shared/text-DBnY6fcL.cjs +0 -2
  1639. package/dist/_shared/text-DBnY6fcL.cjs.map +0 -1
  1640. package/dist/_shared/text-DIxMTECE.js +0 -74
  1641. package/dist/_shared/text-DIxMTECE.js.map +0 -1
  1642. package/dist/_shared/textarea-Cgl-FPwu.js +0 -119
  1643. package/dist/_shared/textarea-Cgl-FPwu.js.map +0 -1
  1644. package/dist/_shared/textarea-D8wC0XlZ.cjs +0 -2
  1645. package/dist/_shared/textarea-D8wC0XlZ.cjs.map +0 -1
  1646. package/dist/_shared/tooltip-Cws4BiPT.js +0 -49
  1647. package/dist/_shared/tooltip-Cws4BiPT.js.map +0 -1
  1648. package/dist/_shared/tooltip-DyUi-Tac.cjs +0 -2
  1649. package/dist/_shared/tooltip-DyUi-Tac.cjs.map +0 -1
  1650. package/dist/_shared/typography-BW7iZBx7.cjs +0 -2
  1651. package/dist/_shared/typography-BW7iZBx7.cjs.map +0 -1
  1652. package/dist/_shared/typography-a3hydyvI.js +0 -102
  1653. package/dist/_shared/typography-a3hydyvI.js.map +0 -1
  1654. package/dist/_shared/ui-provider-4qKSKMPd.js +0 -85
  1655. package/dist/_shared/ui-provider-4qKSKMPd.js.map +0 -1
  1656. package/dist/_shared/ui-provider-uiQgATj1.cjs +0 -2
  1657. package/dist/_shared/ui-provider-uiQgATj1.cjs.map +0 -1
  1658. package/dist/showcase/assets/AreaChart-CJ57G5Ub.js +0 -6
  1659. package/dist/showcase/assets/CSPContext-BA7DfnCI.js +0 -1
  1660. package/dist/showcase/assets/CompositeItem-PwzgE4va.js +0 -1
  1661. package/dist/showcase/assets/CompositeRoot-Du4CMlK7.js +0 -1
  1662. package/dist/showcase/assets/Control.FullScreen-B9vseC57.js +0 -1
  1663. package/dist/showcase/assets/DialogTrigger-FkENgwo6.js +0 -1
  1664. package/dist/showcase/assets/FormContext-ChygLayp.js +0 -1
  1665. package/dist/showcase/assets/PreviewLayout-z6vpJJGt.js +0 -1
  1666. package/dist/showcase/assets/RadioGroup-CcDmbxOw.js +0 -1
  1667. package/dist/showcase/assets/Separator-Dk4eN76U.js +0 -1
  1668. package/dist/showcase/assets/ToolbarRootContext-D_KAA5hZ.js +0 -1
  1669. package/dist/showcase/assets/accordion-dQszzfmw.js +0 -172
  1670. package/dist/showcase/assets/accordion-variants-Dp4wxic-.js +0 -1
  1671. package/dist/showcase/assets/action-menu-CBi2Eiy0.js +0 -1
  1672. package/dist/showcase/assets/activities-DoXsgP4G.js +0 -501
  1673. package/dist/showcase/assets/activities-feed-card-xz5FtkOm.js +0 -1
  1674. package/dist/showcase/assets/admin-CxklUqAG.js +0 -80
  1675. package/dist/showcase/assets/ai-artifact-DkhUdEbM.js +0 -2
  1676. package/dist/showcase/assets/ai-chat-B6PuqkEu.js +0 -568
  1677. package/dist/showcase/assets/ai-elements-D_rpj_ds.js +0 -379
  1678. package/dist/showcase/assets/ai-new-CUPrAbOK.js +0 -167
  1679. package/dist/showcase/assets/ai-tool-call-CEr-dGVx.js +0 -1
  1680. package/dist/showcase/assets/ai-zxF_msJF.js +0 -41
  1681. package/dist/showcase/assets/alert-771BE3Ny.js +0 -59
  1682. package/dist/showcase/assets/alert-CG42DAlX.js +0 -1
  1683. package/dist/showcase/assets/api-key-list-D6jUN7Fq.js +0 -73
  1684. package/dist/showcase/assets/arrow-down-CUoXUyN1.js +0 -1
  1685. package/dist/showcase/assets/arrow-left-Cdq69X6h.js +0 -1
  1686. package/dist/showcase/assets/arrow-right-i25q9L2H.js +0 -1
  1687. package/dist/showcase/assets/arrow-up-pnezegnF.js +0 -1
  1688. package/dist/showcase/assets/arrow-up-right-CK3XnMah.js +0 -1
  1689. package/dist/showcase/assets/avatar-LPmQqZQv.js +0 -1
  1690. package/dist/showcase/assets/avatar-ZVFIQouy.js +0 -57
  1691. package/dist/showcase/assets/badge-DK4bsgZC.js +0 -28
  1692. package/dist/showcase/assets/badge-check-Cw5gkVcG.js +0 -1
  1693. package/dist/showcase/assets/bell-BvJELoaV.js +0 -1
  1694. package/dist/showcase/assets/bot-DRj6sdSR.js +0 -1
  1695. package/dist/showcase/assets/box-BNND3M2m.js +0 -1
  1696. package/dist/showcase/assets/brain-Cy3o-12l.js +0 -1
  1697. package/dist/showcase/assets/brand-DvipEpFn.js +0 -40
  1698. package/dist/showcase/assets/breadcrumb-B-LNuOyv.js +0 -1
  1699. package/dist/showcase/assets/breadcrumb-Lzpc0yo4.js +0 -52
  1700. package/dist/showcase/assets/breadcrumbs-DD6msKFZ.js +0 -1
  1701. package/dist/showcase/assets/briefcase-LcAwoEmu.js +0 -1
  1702. package/dist/showcase/assets/button-CuwcGzk1.js +0 -44
  1703. package/dist/showcase/assets/button-group-CAImjDrl.js +0 -1
  1704. package/dist/showcase/assets/buttons-DTjNHCMl.js +0 -259
  1705. package/dist/showcase/assets/calendar-B1zW0q6I.js +0 -1
  1706. package/dist/showcase/assets/calendar-Dlv72ytt.js +0 -1
  1707. package/dist/showcase/assets/calendar-ls2A08Pn.js +0 -16
  1708. package/dist/showcase/assets/card-BhtkM1BT.js +0 -1
  1709. package/dist/showcase/assets/cards-BRpRXzGk.js +0 -328
  1710. package/dist/showcase/assets/chart-column-BpQkEi1H.js +0 -1
  1711. package/dist/showcase/assets/chevron-down-DyObdfSb.js +0 -1
  1712. package/dist/showcase/assets/chevron-left-T7dHNxYM.js +0 -1
  1713. package/dist/showcase/assets/chevron-right-D_EcqHpT.js +0 -1
  1714. package/dist/showcase/assets/chevron-up-B38ivdGO.js +0 -1
  1715. package/dist/showcase/assets/chevrons-up-down-SdRARzoq.js +0 -1
  1716. package/dist/showcase/assets/circle-BrCPAmDA.js +0 -1
  1717. package/dist/showcase/assets/circle-alert-DdhzLPY_.js +0 -1
  1718. package/dist/showcase/assets/circle-check-DlA6zidQ.js +0 -1
  1719. package/dist/showcase/assets/circle-check-big-DFGJANQF.js +0 -1
  1720. package/dist/showcase/assets/circle-dot-BKmnVUqM.js +0 -1
  1721. package/dist/showcase/assets/circle-question-mark-BNREvgVC.js +0 -1
  1722. package/dist/showcase/assets/circle-x-C45QjHEs.js +0 -1
  1723. package/dist/showcase/assets/clock-D1nKQzQo.js +0 -1
  1724. package/dist/showcase/assets/code-xml-B8N3GRSu.js +0 -1
  1725. package/dist/showcase/assets/collapsible-4TfcWyNs.js +0 -1
  1726. package/dist/showcase/assets/collapsible-CKbZtvTj.js +0 -27
  1727. package/dist/showcase/assets/combobox-DTdGPaU0.js +0 -622
  1728. package/dist/showcase/assets/command-DymTXwL1.js +0 -1
  1729. package/dist/showcase/assets/command-ksVIHQKJ.js +0 -45
  1730. package/dist/showcase/assets/comment-composer-DC9oS1Yy.js +0 -1
  1731. package/dist/showcase/assets/comment-item-CAmKnJa7.js +0 -1
  1732. package/dist/showcase/assets/comments-Benk-2mV.js +0 -349
  1733. package/dist/showcase/assets/commerce-Qz-mq8mQ.js +0 -78
  1734. package/dist/showcase/assets/commerce-extras-CQRc3Bna.js +0 -179
  1735. package/dist/showcase/assets/composite-DBDXLPyz.js +0 -1
  1736. package/dist/showcase/assets/contact-card-DkL2nI3r.js +0 -65
  1737. package/dist/showcase/assets/content-container-mRm6oJEa.js +0 -1
  1738. package/dist/showcase/assets/copyable-DmLlmwzy.js +0 -96
  1739. package/dist/showcase/assets/course-card-CJJoeZj9.js +0 -113
  1740. package/dist/showcase/assets/cpu-BXJnF2Xy.js +0 -1
  1741. package/dist/showcase/assets/credit-card-BQK3KKb2.js +0 -1
  1742. package/dist/showcase/assets/currency-DBPUh8ee.js +0 -149
  1743. package/dist/showcase/assets/dark-surfaces-LpPuIeYy.js +0 -90
  1744. package/dist/showcase/assets/database-BZerpzGE.js +0 -1
  1745. package/dist/showcase/assets/date-block-iiHUpbNX.js +0 -1
  1746. package/dist/showcase/assets/date-picker-BQeBGL7T.js +0 -1
  1747. package/dist/showcase/assets/date-pickers-CKcUEMMF.js +0 -110
  1748. package/dist/showcase/assets/dense-info-DATmxRU8.js +0 -106
  1749. package/dist/showcase/assets/dialog-Bqu5KDYH.js +0 -1
  1750. package/dist/showcase/assets/display-Bj7uPXD4.js +0 -392
  1751. package/dist/showcase/assets/dist-QK7JxeYv.js +0 -1
  1752. package/dist/showcase/assets/dollar-sign-DFZs6vfz.js +0 -1
  1753. package/dist/showcase/assets/download-5oGw_WbW.js +0 -1
  1754. package/dist/showcase/assets/dropdown-menu-1CJgYn0S.js +0 -1
  1755. package/dist/showcase/assets/dropzone-Co1uhsDn.js +0 -1
  1756. package/dist/showcase/assets/ellipsis-cKRcvuyL.js +0 -1
  1757. package/dist/showcase/assets/ellipsis-vertical-B1RErEkj.js +0 -1
  1758. package/dist/showcase/assets/empty-Y2-4nCBr.js +0 -1
  1759. package/dist/showcase/assets/empty-item-USa6xcUv.js +0 -49
  1760. package/dist/showcase/assets/empty-state-DfhZ9AT5.js +0 -188
  1761. package/dist/showcase/assets/enhanced-activities-DmAPVUSu.js +0 -359
  1762. package/dist/showcase/assets/esm-BeGQ_ZTM.js +0 -2
  1763. package/dist/showcase/assets/event-calendar-D-jGrrZS.js +0 -138
  1764. package/dist/showcase/assets/event-log-tA_i4eR9.js +0 -326
  1765. package/dist/showcase/assets/example-6phCHGsN.js +0 -1
  1766. package/dist/showcase/assets/external-link-BuVHkCy0.js +0 -1
  1767. package/dist/showcase/assets/eye-DC5HfGm6.js +0 -1
  1768. package/dist/showcase/assets/feature-announcement-DwvxLytd.js +0 -34
  1769. package/dist/showcase/assets/fetchers-SLCIqgnM.js +0 -1
  1770. package/dist/showcase/assets/file-D-xM4vLy.js +0 -1
  1771. package/dist/showcase/assets/file-text-tmG5vNbr.js +0 -1
  1772. package/dist/showcase/assets/filters-CrGRXmq6.js +0 -78
  1773. package/dist/showcase/assets/flag-CWrEtkY5.js +0 -1
  1774. package/dist/showcase/assets/folder-open-Br-x1pjP.js +0 -1
  1775. package/dist/showcase/assets/form-sizing-Bb5hiM45.js +0 -1
  1776. package/dist/showcase/assets/format-D_ETCyg4.js +0 -1
  1777. package/dist/showcase/assets/format-metric-value-cyOYS377.js +0 -1
  1778. package/dist/showcase/assets/forms-B_MkQ3rm.js +0 -790
  1779. package/dist/showcase/assets/generic-CdmsyXV3.js +0 -1
  1780. package/dist/showcase/assets/getPseudoElementBounds-CZnCbCFP.js +0 -1
  1781. package/dist/showcase/assets/gift-NkuklfU2.js +0 -1
  1782. package/dist/showcase/assets/giftcard-cards-BAvevZ0i.js +0 -85
  1783. package/dist/showcase/assets/git-branch-B_CBqPeO.js +0 -1
  1784. package/dist/showcase/assets/global-search-D9teAbPe.js +0 -90
  1785. package/dist/showcase/assets/globe-gzw45GU2.js +0 -1
  1786. package/dist/showcase/assets/gradient-card-Xk2r7R5H.js +0 -58
  1787. package/dist/showcase/assets/header-notifications-_aZCpE5A.js +0 -1
  1788. package/dist/showcase/assets/heart-CEMKbRaZ.js +0 -1
  1789. package/dist/showcase/assets/house-BlGXAcMH.js +0 -1
  1790. package/dist/showcase/assets/icon-badge-z6N9reH_.js +0 -1
  1791. package/dist/showcase/assets/image-B8mzmVBr.js +0 -1
  1792. package/dist/showcase/assets/inbox-qdSnP4UV.js +0 -1
  1793. package/dist/showcase/assets/index-B4ubXfly.js +0 -10
  1794. package/dist/showcase/assets/index-Cu3Ssz5r.css +0 -2
  1795. package/dist/showcase/assets/inertValue-D5Q8cLku.js +0 -1
  1796. package/dist/showcase/assets/info-DBvvNjc_.js +0 -1
  1797. package/dist/showcase/assets/inline-stat-Bm1zVT8D.js +0 -1
  1798. package/dist/showcase/assets/input-CBQR0aeX.js +0 -1
  1799. package/dist/showcase/assets/input-OrUzpI55.js +0 -1
  1800. package/dist/showcase/assets/input-group-DhqOen2N.js +0 -47
  1801. package/dist/showcase/assets/input-group-l8xa5nUq.js +0 -1
  1802. package/dist/showcase/assets/inputs-DbiJ0qy2.js +0 -49
  1803. package/dist/showcase/assets/invoice-header-C6youIbL.js +0 -36
  1804. package/dist/showcase/assets/invoice-items-g6dgryF-.js +0 -36
  1805. package/dist/showcase/assets/invoice-mini-0iWhufpt.js +0 -14
  1806. package/dist/showcase/assets/invoice-table-Bvdh3rRq.js +0 -30
  1807. package/dist/showcase/assets/isSameDay-BpZEtJe8.js +0 -1
  1808. package/dist/showcase/assets/isToday-F0CS28oK.js +0 -1
  1809. package/dist/showcase/assets/italic-CJOEwjdc.js +0 -1
  1810. package/dist/showcase/assets/item-BiMm1PPB.js +0 -1
  1811. package/dist/showcase/assets/item-CN0cwdj_.js +0 -1
  1812. package/dist/showcase/assets/item-DNqEUYLT.js +0 -117
  1813. package/dist/showcase/assets/kanban-DxePEUiQ.js +0 -175
  1814. package/dist/showcase/assets/label-Dx4WO-fg.js +0 -1
  1815. package/dist/showcase/assets/layout-containers-DDl8rG8S.js +0 -96
  1816. package/dist/showcase/assets/layout-header-Bu6IcDWu.js +0 -170
  1817. package/dist/showcase/assets/layout-page-D-88Qnoy.js +0 -122
  1818. package/dist/showcase/assets/layout-sidebar-Ctft10pk.js +0 -224
  1819. package/dist/showcase/assets/layout-users-DtbZduBG.js +0 -104
  1820. package/dist/showcase/assets/leaflet-src-9EZQ14iG.js +0 -1
  1821. package/dist/showcase/assets/lib-D9BoOYUd.js +0 -1
  1822. package/dist/showcase/assets/lock-CHurDI0n.js +0 -1
  1823. package/dist/showcase/assets/mail-DZ1o1RLW.js +0 -1
  1824. package/dist/showcase/assets/map-C8xiyT9X.js +0 -124
  1825. package/dist/showcase/assets/map-pin-CAKaoYod.js +0 -1
  1826. package/dist/showcase/assets/menus-C6mnp636.js +0 -89
  1827. package/dist/showcase/assets/message-square-Zo5J_zU1.js +0 -1
  1828. package/dist/showcase/assets/metadata-list-W83-UMhc.js +0 -278
  1829. package/dist/showcase/assets/metric-BSvxidIX.js +0 -1
  1830. package/dist/showcase/assets/metric-grid-Dtqx_3Lg.js +0 -1
  1831. package/dist/showcase/assets/metric-trend-chip-mtvcJ_M9.js +0 -1
  1832. package/dist/showcase/assets/metrics-analytics-bar-DQbyss7i.js +0 -44
  1833. package/dist/showcase/assets/metrics-analytics-cards-CEBu5Uw0.js +0 -77
  1834. package/dist/showcase/assets/metrics-comparison-Bs-R6v4y.js +0 -76
  1835. package/dist/showcase/assets/metrics-heatmap-BKHWH8sM.js +0 -27
  1836. package/dist/showcase/assets/metrics-inline-badge-BxVn0Y2p.js +0 -17
  1837. package/dist/showcase/assets/metrics-kpi-row-DtACYEds.js +0 -31
  1838. package/dist/showcase/assets/metrics-micro-grid-BkwUGOUR.js +0 -42
  1839. package/dist/showcase/assets/metrics-overview-BAtrlzsI.js +0 -192
  1840. package/dist/showcase/assets/metrics-stat-cards-iCRCNyHY.js +0 -54
  1841. package/dist/showcase/assets/minus-C6eBW-2t.js +0 -1
  1842. package/dist/showcase/assets/money-display-DjGRJ16l.js +0 -1
  1843. package/dist/showcase/assets/month-year-picker-DTDebPqf.js +0 -1
  1844. package/dist/showcase/assets/navigation-BrG8Chig.js +0 -86
  1845. package/dist/showcase/assets/navigation-CfXQJbyM.js +0 -230
  1846. package/dist/showcase/assets/navigation-extras-D_gzLlZ5.js +0 -43
  1847. package/dist/showcase/assets/onboarding-checklist-1EerUwAo.js +0 -119
  1848. package/dist/showcase/assets/overlays-2AB9-S1Z.js +0 -88
  1849. package/dist/showcase/assets/overlays-CYt9o3Xq.js +0 -393
  1850. package/dist/showcase/assets/package-BJMP-Fcr.js +0 -1
  1851. package/dist/showcase/assets/page-action-button-BZxJ0X1j.js +0 -1
  1852. package/dist/showcase/assets/page-header-B_rqHJhe.js +0 -1
  1853. package/dist/showcase/assets/pagination-BHiQvvka.js +0 -1
  1854. package/dist/showcase/assets/pagination-Dq0GruQd.js +0 -42
  1855. package/dist/showcase/assets/paperclip-BMYKrUQo.js +0 -1
  1856. package/dist/showcase/assets/pencil-BJ3VS_FO.js +0 -1
  1857. package/dist/showcase/assets/phone-CsRIyvep.js +0 -1
  1858. package/dist/showcase/assets/plus-D2JuXYLg.js +0 -1
  1859. package/dist/showcase/assets/popover-DNT9755r.js +0 -1
  1860. package/dist/showcase/assets/popover-KvGgcPNg.js +0 -1
  1861. package/dist/showcase/assets/popover-menu-CJx30R65.js +0 -1
  1862. package/dist/showcase/assets/progress-B7WuXcJR.js +0 -1
  1863. package/dist/showcase/assets/progress-CweCSAUv.js +0 -18
  1864. package/dist/showcase/assets/props-table-uDY4eIzt.js +0 -1
  1865. package/dist/showcase/assets/props.generated-BqPfiNI-.json +0 -32423
  1866. package/dist/showcase/assets/quote-DAyyfzQd.js +0 -1
  1867. package/dist/showcase/assets/receipt-C0mMZGbF.js +0 -1
  1868. package/dist/showcase/assets/refresh-cw-X06JbXb-.js +0 -1
  1869. package/dist/showcase/assets/resolveValueLabel-Bks7UDko.js +0 -1
  1870. package/dist/showcase/assets/rich-text-editor-QJsb-qIe.js +0 -124
  1871. package/dist/showcase/assets/rich-text-editor-h07VBNI9.js +0 -141
  1872. package/dist/showcase/assets/rotate-ccw-D84bdX_x.js +0 -1
  1873. package/dist/showcase/assets/scroll-area-0rT06pXZ.js +0 -1
  1874. package/dist/showcase/assets/scroll-area-YXwdzGpN.js +0 -32
  1875. package/dist/showcase/assets/select-BoWQDtUf.js +0 -1
  1876. package/dist/showcase/assets/send-DJsk3cr1.js +0 -1
  1877. package/dist/showcase/assets/separator-CLSnRcJa.js +0 -28
  1878. package/dist/showcase/assets/separator-DWv-twD-.js +0 -1
  1879. package/dist/showcase/assets/settings-Cb2MsAmN.js +0 -1
  1880. package/dist/showcase/assets/sheet-Dn1-MYus.js +0 -1
  1881. package/dist/showcase/assets/shield-DwLjF5ch.js +0 -1
  1882. package/dist/showcase/assets/shield-alert-D8i6gzMK.js +0 -1
  1883. package/dist/showcase/assets/shield-check-D5YRSBIz.js +0 -1
  1884. package/dist/showcase/assets/shopping-bag-BqlAP4vn.js +0 -1
  1885. package/dist/showcase/assets/sidebar.context-BAp_pBEB.js +0 -1
  1886. package/dist/showcase/assets/skeleton-CeNPp4hr.js +0 -1
  1887. package/dist/showcase/assets/skeleton-QPsnM_NR.js +0 -29
  1888. package/dist/showcase/assets/smart-card-BisUbLPt.js +0 -1
  1889. package/dist/showcase/assets/sonner-B7GzbBK2.js +0 -22
  1890. package/dist/showcase/assets/sortable.esm-BDcEOHT7.js +0 -5
  1891. package/dist/showcase/assets/sparkles-CF9P5Tqh.js +0 -1
  1892. package/dist/showcase/assets/spinner-BeamEyJd.js +0 -49
  1893. package/dist/showcase/assets/spinner-DoYBfalR.js +0 -1
  1894. package/dist/showcase/assets/spinner-UsLsOYzn.js +0 -30
  1895. package/dist/showcase/assets/square-pen-BGTVdnt1.js +0 -1
  1896. package/dist/showcase/assets/stacked-avatars-BWfVX1Ov.js +0 -1
  1897. package/dist/showcase/assets/star-NsPNO9gR.js +0 -1
  1898. package/dist/showcase/assets/startOfDay-zJBpxLuW.js +0 -1
  1899. package/dist/showcase/assets/styles-DA7a7hVy.js +0 -1
  1900. package/dist/showcase/assets/switch-C62S4U2o.js +0 -1
  1901. package/dist/showcase/assets/switch-CYQcinJZ.js +0 -1
  1902. package/dist/showcase/assets/table-w4IABkpa.js +0 -1
  1903. package/dist/showcase/assets/table-xgB63UrY.js +0 -390
  1904. package/dist/showcase/assets/tabs-BFTEaTXj.js +0 -19
  1905. package/dist/showcase/assets/tabs-oMJn9Ujq.js +0 -1
  1906. package/dist/showcase/assets/text-button-BgcutPuu.js +0 -1
  1907. package/dist/showcase/assets/text-link-CS9thOWL.js +0 -1
  1908. package/dist/showcase/assets/textarea-BOBx4EM6.js +0 -1
  1909. package/dist/showcase/assets/textarea-CTzYZZqa.js +0 -1
  1910. package/dist/showcase/assets/timelines-CK07mEBK.js +0 -186
  1911. package/dist/showcase/assets/toggle-group-CSPdPT6G.js +0 -1
  1912. package/dist/showcase/assets/toggles-DDSdl-gA.js +0 -71
  1913. package/dist/showcase/assets/toggles-group-Y2BdKEFB.js +0 -32
  1914. package/dist/showcase/assets/trash-2-C-FAptQP.js +0 -1
  1915. package/dist/showcase/assets/trending-up-BmLhdF_w.js +0 -1
  1916. package/dist/showcase/assets/truck-pZdUS_as.js +0 -1
  1917. package/dist/showcase/assets/typography-CnBH2z7f.js +0 -214
  1918. package/dist/showcase/assets/ui-badge-Cl6INRO5.js +0 -28
  1919. package/dist/showcase/assets/ui-card-B5P-thNu.js +0 -30
  1920. package/dist/showcase/assets/ui-table-B32RILKk.js +0 -42
  1921. package/dist/showcase/assets/upload-tray-mu6bR2ZE.js +0 -138
  1922. package/dist/showcase/assets/useAnchoredPopupScrollLock-CzDaXxmM.js +0 -1
  1923. package/dist/showcase/assets/useCollapsiblePanel-B0DZvDFu.js +0 -1
  1924. package/dist/showcase/assets/useCompositeItem-BVIVLT9X.js +0 -1
  1925. package/dist/showcase/assets/useCompositeListItem-JEMeTFPx.js +0 -1
  1926. package/dist/showcase/assets/useControlled-ZjqBfPCn.js +0 -1
  1927. package/dist/showcase/assets/useLabelableId-D8CZq8Bm.js +0 -1
  1928. package/dist/showcase/assets/useOpenInteractionType-CopGCf3q.js +0 -1
  1929. package/dist/showcase/assets/useRender-zuKv6JQF.js +0 -1
  1930. package/dist/showcase/assets/useRole-08KeyiD3.js +0 -1
  1931. package/dist/showcase/assets/useTriggerFocusGuards-DEuz5CGe.js +0 -1
  1932. package/dist/showcase/assets/useValueChanged-BxFi_qyj.js +0 -1
  1933. package/dist/showcase/assets/user-Bgc2t2_e.js +0 -1
  1934. package/dist/showcase/assets/user-plus-F_TfagnP.js +0 -1
  1935. package/dist/showcase/assets/users-B7G4yTCR.js +0 -1
  1936. package/dist/showcase/assets/vendor-profile-BTQmsKM6.js +0 -37
  1937. package/dist/showcase/assets/wrench-BdzICmjR.js +0 -1
  1938. package/dist/showcase/assets/x-B156Wr-5.js +0 -1
  1939. package/dist/showcase/assets/zap-B3iByjNV.js +0 -1
  1940. /package/dist/showcase/assets/{analytics.strings-BcotPUad.js → analytics.strings-B9262Jmq.js} +0 -0
  1941. /package/dist/showcase/assets/{chunk-CilyBKbf.js → chunk-QTnfLwEv.js} +0 -0
  1942. /package/dist/showcase/assets/{customers-BETQwFRp.js → customers-DvBxRjHv.js} +0 -0
  1943. /package/dist/showcase/assets/{format-DoQ4Wqkq.js → format-C_LjuBUs.js} +0 -0
  1944. /package/dist/showcase/assets/{isElementDisabled-BLmk_uhf.js → isElementDisabled-KSuuBj8D.js} +0 -0
  1945. /package/dist/showcase/assets/{leaflet.draw-CwFqqsDc.js → leaflet.draw-lpeKTWFs.js} +0 -0
  1946. /package/dist/showcase/assets/{orders-DNn7r9k_.js → orders-BFwWtubb.js} +0 -0
  1947. /package/dist/showcase/assets/{resolveAriaLabelledBy-DmY5COAB.js → resolveAriaLabelledBy-B6CR9UP2.js} +0 -0
  1948. /package/dist/showcase/assets/{valueToPercent-CDF3aNnc.js → valueToPercent-B5BHWU68.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"space-y-0.5\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n onClick={item.onSelect}\n className={cn(\n 'flex w-full items-center gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:outline-none',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div className=\"flex items-center gap-3 border-b border-border px-4 py-3\">\n <Search className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n />\n {loading && (\n <Loader2\n className=\"size-4 shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <button\n type=\"button\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/15 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <button\n type=\"button\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative flex w-full items-center gap-3 rounded-lg px-3 py-(--row-py) text-left transition-colors',\n 'focus-visible:outline-none',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-8', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-8 items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 leading-tight\">\n <Text tag=\"span\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 truncate\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-3 md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n >\n <TabsList className=\"h-8 w-fit\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className={cn(\n 'rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: Partial<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings: GlobalSearchStrings = {\n ...defaultGlobalSearchStrings,\n ...stringsProp,\n };\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-2 py-2\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-2 last:pb-0',\n gi > 0 && 'mt-3 pt-2',\n )}\n >\n <div className=\"flex items-center justify-between px-3 pb-1\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <button\n type=\"button\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"rounded text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </button>\n )}\n </div>\n <ul className=\"space-y-0.5\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"space-y-0.5\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n onClick={item.onSelect}\n className={cn(\n 'flex w-full items-center gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:outline-none',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div className=\"flex items-center gap-3 border-b border-border px-4 py-3\">\n <Search className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n />\n {loading && (\n <Loader2\n className=\"size-4 shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <button\n type=\"button\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/15 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <button\n type=\"button\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative flex w-full items-center gap-3 rounded-lg px-3 py-(--row-py) text-left transition-colors',\n 'focus-visible:outline-none',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-8', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-8 items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 leading-tight\">\n <Text tag=\"span\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 truncate\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-3 md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n >\n <TabsList className=\"h-8 w-fit\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className={cn(\n 'rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: Partial<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings: GlobalSearchStrings = {\n ...defaultGlobalSearchStrings,\n ...stringsProp,\n };\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-2 py-2\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-2 last:pb-0',\n gi > 0 && 'mt-3 pt-2',\n )}\n >\n <div className=\"flex items-center justify-between px-3 pb-1\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <button\n type=\"button\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"rounded text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </button>\n )}\n </div>\n <ul className=\"space-y-0.5\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { cn as e } from "../../../lib/utils.js";
2
- import { t } from "../../../_shared/text-DIxMTECE.js";
3
- import { t as n } from "../../../_shared/badge-BVCh_hfL.js";
4
- import { o as r, r as i, t as a } from "../../../_shared/avatar-CpBz9pTv.js";
2
+ import { t } from "../../../_shared/text-qsEg5GdP.js";
3
+ import { t as n } from "../../../_shared/badge-BK5VvEgg.js";
4
+ import { o as r, r as i, t as a } from "../../../_shared/avatar-CBi4LGxy.js";
5
5
  import * as o from "react";
6
6
  import { useEffect as s, useMemo as c, useRef as l, useState as u } from "react";
7
7
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"space-y-0.5\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n onClick={item.onSelect}\n className={cn(\n 'flex w-full items-center gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:outline-none',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div className=\"flex items-center gap-3 border-b border-border px-4 py-3\">\n <Search className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n />\n {loading && (\n <Loader2\n className=\"size-4 shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <button\n type=\"button\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/15 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <button\n type=\"button\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative flex w-full items-center gap-3 rounded-lg px-3 py-(--row-py) text-left transition-colors',\n 'focus-visible:outline-none',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-8', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-8 items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 leading-tight\">\n <Text tag=\"span\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 truncate\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-3 md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n >\n <TabsList className=\"h-8 w-fit\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className={cn(\n 'rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: Partial<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings: GlobalSearchStrings = {\n ...defaultGlobalSearchStrings,\n ...stringsProp,\n };\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-2 py-2\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-2 last:pb-0',\n gi > 0 && 'mt-3 pt-2',\n )}\n >\n <div className=\"flex items-center justify-between px-3 pb-1\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <button\n type=\"button\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"rounded text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </button>\n )}\n </div>\n <ul className=\"space-y-0.5\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"space-y-0.5\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n onClick={item.onSelect}\n className={cn(\n 'flex w-full items-center gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:outline-none',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div className=\"flex items-center gap-3 border-b border-border px-4 py-3\">\n <Search className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n />\n {loading && (\n <Loader2\n className=\"size-4 shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <button\n type=\"button\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"inline-flex size-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/15 text-primary',\n success: 'bg-success/15 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/15 text-info',\n destructive: 'bg-destructive/15 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <button\n type=\"button\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative flex w-full items-center gap-3 rounded-lg px-3 py-(--row-py) text-left transition-colors',\n 'focus-visible:outline-none',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-8', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-8 items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 leading-tight\">\n <Text tag=\"span\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 truncate\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-3 md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n >\n <TabsList className=\"h-8 w-fit\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className={cn(\n 'rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: Partial<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings: GlobalSearchStrings = {\n ...defaultGlobalSearchStrings,\n ...stringsProp,\n };\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-2 py-2\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-2 last:pb-0',\n gi > 0 && 'mt-3 pt-2',\n )}\n >\n <div className=\"flex items-center justify-between px-3 pb-1\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <button\n type=\"button\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"rounded text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </button>\n )}\n </div>\n <ul className=\"space-y-0.5\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}