admin-ui-starter-kit 0.4.3 → 0.4.5

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 (1014) hide show
  1. package/.agents/skills/admin-ui-consumer-migration/SKILL.md +10 -0
  2. package/.agents/skills/admin-ui-consumer-migration/references/actions-service.md +377 -0
  3. package/CHANGELOG.md +37 -1
  4. package/COMPONENT_SELECTION.md +10 -1
  5. package/INTEGRATION.md +93 -0
  6. package/README.md +95 -1
  7. package/dist/_shared/accordion-Df1XrCDv.cjs +2 -0
  8. package/dist/_shared/accordion-Df1XrCDv.cjs.map +1 -0
  9. package/dist/_shared/accordion-Rzi9wEl6.js +130 -0
  10. package/dist/_shared/accordion-Rzi9wEl6.js.map +1 -0
  11. package/dist/_shared/action-menu-CrOJ63Q9.js +96 -0
  12. package/dist/_shared/action-menu-CrOJ63Q9.js.map +1 -0
  13. package/dist/_shared/action-menu-D9OowHKx.cjs +2 -0
  14. package/dist/_shared/action-menu-D9OowHKx.cjs.map +1 -0
  15. package/dist/_shared/ai-artifact-D4EjKoq6.cjs +3 -0
  16. package/dist/_shared/ai-artifact-D4EjKoq6.cjs.map +1 -0
  17. package/dist/_shared/ai-artifact-nlOrSeqT.js +1099 -0
  18. package/dist/_shared/ai-artifact-nlOrSeqT.js.map +1 -0
  19. package/dist/_shared/auth-C5HawWvp.cjs +2 -0
  20. package/dist/_shared/auth-C5HawWvp.cjs.map +1 -0
  21. package/dist/_shared/auth-DnMEJXP9.js +643 -0
  22. package/dist/_shared/auth-DnMEJXP9.js.map +1 -0
  23. package/dist/_shared/badge-6WYAMJwA.js +108 -0
  24. package/dist/_shared/badge-6WYAMJwA.js.map +1 -0
  25. package/dist/_shared/badge-CBof1rbF.cjs +2 -0
  26. package/dist/_shared/badge-CBof1rbF.cjs.map +1 -0
  27. package/dist/_shared/button-BGKY8UY0.js +173 -0
  28. package/dist/_shared/button-BGKY8UY0.js.map +1 -0
  29. package/dist/_shared/button-BI347RlM.cjs +2 -0
  30. package/dist/_shared/button-BI347RlM.cjs.map +1 -0
  31. package/dist/_shared/button-DEFoa7-c.cjs +2 -0
  32. package/dist/_shared/button-DEFoa7-c.cjs.map +1 -0
  33. package/dist/_shared/button-DlqryxqA.js +46 -0
  34. package/dist/_shared/button-DlqryxqA.js.map +1 -0
  35. package/dist/_shared/buttons-PL-TGJ32.js +143 -0
  36. package/dist/_shared/buttons-PL-TGJ32.js.map +1 -0
  37. package/dist/_shared/buttons-kVvSD_oI.cjs +2 -0
  38. package/dist/_shared/buttons-kVvSD_oI.cjs.map +1 -0
  39. package/dist/_shared/combobox-B4KmDZK0.cjs +2 -0
  40. package/dist/_shared/combobox-B4KmDZK0.cjs.map +1 -0
  41. package/dist/_shared/combobox-YUGi3xSc.js +810 -0
  42. package/dist/_shared/combobox-YUGi3xSc.js.map +1 -0
  43. package/dist/_shared/comments-GzXdwpq4.js +952 -0
  44. package/dist/_shared/comments-GzXdwpq4.js.map +1 -0
  45. package/dist/_shared/comments-Zj_foV1V.cjs +2 -0
  46. package/dist/_shared/comments-Zj_foV1V.cjs.map +1 -0
  47. package/dist/_shared/date-picker-Dl91BM3D.js +1361 -0
  48. package/dist/_shared/date-picker-Dl91BM3D.js.map +1 -0
  49. package/dist/_shared/date-picker-zFOqtmAS.cjs +2 -0
  50. package/dist/_shared/date-picker-zFOqtmAS.cjs.map +1 -0
  51. package/dist/_shared/date-pickers-BBydcIjN.cjs +2 -0
  52. package/dist/_shared/date-pickers-BBydcIjN.cjs.map +1 -0
  53. package/dist/_shared/date-pickers-D2OsgV4V.js +330 -0
  54. package/dist/_shared/date-pickers-D2OsgV4V.js.map +1 -0
  55. package/dist/_shared/dialog-CCN4tjU9.js +101 -0
  56. package/dist/_shared/dialog-CCN4tjU9.js.map +1 -0
  57. package/dist/_shared/dialog-Dd0ENSrU.cjs +2 -0
  58. package/dist/_shared/dialog-Dd0ENSrU.cjs.map +1 -0
  59. package/dist/_shared/display-Dhy5ogxC.cjs +2 -0
  60. package/dist/_shared/display-Dhy5ogxC.cjs.map +1 -0
  61. package/dist/_shared/display-NBtWdAMl.js +1154 -0
  62. package/dist/_shared/display-NBtWdAMl.js.map +1 -0
  63. package/dist/_shared/forms-BweX9Lm8.cjs +2 -0
  64. package/dist/_shared/forms-BweX9Lm8.cjs.map +1 -0
  65. package/dist/_shared/forms-L1hyNKpZ.js +3430 -0
  66. package/dist/_shared/forms-L1hyNKpZ.js.map +1 -0
  67. package/dist/_shared/header-BSBPtGn4.cjs +2 -0
  68. package/dist/_shared/header-BSBPtGn4.cjs.map +1 -0
  69. package/dist/_shared/header-No6GSp4R.js +360 -0
  70. package/dist/_shared/header-No6GSp4R.js.map +1 -0
  71. package/dist/_shared/hooks-BkXvZ4py.js +118 -0
  72. package/dist/_shared/hooks-BkXvZ4py.js.map +1 -0
  73. package/dist/_shared/hooks-D3SbLBRk.cjs +2 -0
  74. package/dist/_shared/hooks-D3SbLBRk.cjs.map +1 -0
  75. package/dist/_shared/mentions-CA1Ka_Bv.cjs +2 -0
  76. package/dist/_shared/mentions-CA1Ka_Bv.cjs.map +1 -0
  77. package/dist/_shared/mentions-CdvvLGQG.js +506 -0
  78. package/dist/_shared/mentions-CdvvLGQG.js.map +1 -0
  79. package/dist/_shared/metadata-Ckcmar8d.js +235 -0
  80. package/dist/_shared/metadata-Ckcmar8d.js.map +1 -0
  81. package/dist/_shared/metadata-DamdYVZL.cjs +2 -0
  82. package/dist/_shared/metadata-DamdYVZL.cjs.map +1 -0
  83. package/dist/_shared/navigation-BemwPPC8.cjs +2 -0
  84. package/dist/_shared/navigation-BemwPPC8.cjs.map +1 -0
  85. package/dist/_shared/navigation-DY540HB0.js +419 -0
  86. package/dist/_shared/navigation-DY540HB0.js.map +1 -0
  87. package/dist/_shared/overlays-CJs_syAu.js +648 -0
  88. package/dist/_shared/overlays-CJs_syAu.js.map +1 -0
  89. package/dist/_shared/overlays-DWFEaAog.cjs +2 -0
  90. package/dist/_shared/overlays-DWFEaAog.cjs.map +1 -0
  91. package/dist/_shared/page-Cg_gNpyK.js +262 -0
  92. package/dist/_shared/page-Cg_gNpyK.js.map +1 -0
  93. package/dist/_shared/page-CpFWQuWU.cjs +2 -0
  94. package/dist/_shared/page-CpFWQuWU.cjs.map +1 -0
  95. package/dist/_shared/rich-text-editor-B2VqNi6j.js +620 -0
  96. package/dist/_shared/rich-text-editor-B2VqNi6j.js.map +1 -0
  97. package/dist/_shared/rich-text-editor-ChE-pI3N.cjs +2 -0
  98. package/dist/_shared/rich-text-editor-ChE-pI3N.cjs.map +1 -0
  99. package/dist/_shared/sheet-BOgUA4fC.cjs +2 -0
  100. package/dist/_shared/sheet-BOgUA4fC.cjs.map +1 -0
  101. package/dist/_shared/sheet-DWQuyRRz.js +100 -0
  102. package/dist/_shared/sheet-DWQuyRRz.js.map +1 -0
  103. package/dist/_shared/sidebar-BGpi9K_Q.js +389 -0
  104. package/dist/_shared/sidebar-BGpi9K_Q.js.map +1 -0
  105. package/dist/_shared/sidebar-BTFfxmNG.cjs +2 -0
  106. package/dist/_shared/sidebar-BTFfxmNG.cjs.map +1 -0
  107. package/dist/_shared/sidebar-CC3lcvNX.cjs +2 -0
  108. package/dist/_shared/sidebar-CC3lcvNX.cjs.map +1 -0
  109. package/dist/_shared/sidebar-wmztVpnO.js +538 -0
  110. package/dist/_shared/sidebar-wmztVpnO.js.map +1 -0
  111. package/dist/_shared/smart-card-B6m7tmt0.cjs +2 -0
  112. package/dist/_shared/smart-card-B6m7tmt0.cjs.map +1 -0
  113. package/dist/_shared/smart-card-thLb85Ih.js +361 -0
  114. package/dist/_shared/smart-card-thLb85Ih.js.map +1 -0
  115. package/dist/_shared/table-BItnJ8lG.cjs +2 -0
  116. package/dist/_shared/table-BItnJ8lG.cjs.map +1 -0
  117. package/dist/_shared/table-D3349b-v.js +1189 -0
  118. package/dist/_shared/table-D3349b-v.js.map +1 -0
  119. package/dist/_shared/workspace-BGVeTeJy.js +357 -0
  120. package/dist/_shared/workspace-BGVeTeJy.js.map +1 -0
  121. package/dist/_shared/workspace-CWyzTUmE.cjs +2 -0
  122. package/dist/_shared/workspace-CWyzTUmE.cjs.map +1 -0
  123. package/dist/components/base/accordion/index.cjs +1 -1
  124. package/dist/components/base/accordion/index.js +1 -1
  125. package/dist/components/base/badge/index.cjs +1 -1
  126. package/dist/components/base/badge/index.js +1 -1
  127. package/dist/components/base/buttons/index.cjs +1 -1
  128. package/dist/components/base/buttons/index.js +2 -2
  129. package/dist/components/base/cards/index.cjs +1 -1
  130. package/dist/components/base/cards/index.js +1 -1
  131. package/dist/components/base/carousel/index.cjs +1 -1
  132. package/dist/components/base/carousel/index.js +1 -1
  133. package/dist/components/base/combobox/index.cjs +1 -1
  134. package/dist/components/base/combobox/index.js +1 -1
  135. package/dist/components/base/date-pickers/index.cjs +1 -1
  136. package/dist/components/base/date-pickers/index.js +2 -2
  137. package/dist/components/base/display/alert.d.ts +1 -1
  138. package/dist/components/base/display/index.cjs +1 -1
  139. package/dist/components/base/display/index.js +6 -6
  140. package/dist/components/base/display/metadata/index.cjs +1 -1
  141. package/dist/components/base/display/metadata/index.js +1 -1
  142. package/dist/components/base/event-calendar/index.cjs +1 -1
  143. package/dist/components/base/event-calendar/index.js +41 -41
  144. package/dist/components/base/forms/index.cjs +1 -1
  145. package/dist/components/base/forms/index.js +1 -1
  146. package/dist/components/base/map/index.cjs +1 -1
  147. package/dist/components/base/map/index.js +31 -31
  148. package/dist/components/base/navigation/index.cjs +1 -1
  149. package/dist/components/base/navigation/index.js +2 -2
  150. package/dist/components/base/sheet/index.cjs +1 -1
  151. package/dist/components/base/sheet/index.js +1 -1
  152. package/dist/components/base/sidebar/index.cjs +1 -1
  153. package/dist/components/base/sidebar/index.js +1 -1
  154. package/dist/components/base/table/index.cjs +1 -1
  155. package/dist/components/base/table/index.js +1 -1
  156. package/dist/components/composed/admin/index.cjs +1 -1
  157. package/dist/components/composed/admin/index.js +47 -47
  158. package/dist/components/composed/ai/index.cjs +1 -1
  159. package/dist/components/composed/ai/index.js +105 -105
  160. package/dist/components/composed/analytics/index.cjs +1 -1
  161. package/dist/components/composed/analytics/index.js +89 -89
  162. package/dist/components/composed/cards/index.cjs +1 -1
  163. package/dist/components/composed/cards/index.js +116 -116
  164. package/dist/components/composed/commerce/index.cjs +1 -1
  165. package/dist/components/composed/commerce/index.js +127 -127
  166. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  167. package/dist/components/composed/dark-surfaces/index.js +37 -37
  168. package/dist/components/composed/data-display/index.cjs +1 -1
  169. package/dist/components/composed/data-display/index.js +3 -3
  170. package/dist/components/composed/navigation/index.cjs +1 -1
  171. package/dist/components/composed/navigation/index.js +55 -55
  172. package/dist/components/composed/onboarding/index.cjs +1 -1
  173. package/dist/components/composed/onboarding/index.js +1 -1
  174. package/dist/components/composed/timelines/index.cjs +1 -1
  175. package/dist/components/composed/timelines/index.js +2 -2
  176. package/dist/components/features/activities/index.cjs +1 -1
  177. package/dist/components/features/activities/index.js +56 -56
  178. package/dist/components/features/ai-chat/index.cjs +2 -2
  179. package/dist/components/features/ai-chat/index.js +53 -53
  180. package/dist/components/features/card/index.cjs +1 -1
  181. package/dist/components/features/card/index.js +21 -21
  182. package/dist/components/features/comments/index.cjs +1 -1
  183. package/dist/components/features/comments/index.js +2 -2
  184. package/dist/components/features/event-log/index.cjs +1 -1
  185. package/dist/components/features/event-log/index.js +3 -3
  186. package/dist/components/features/filters/index.cjs +1 -1
  187. package/dist/components/features/filters/index.js +143 -143
  188. package/dist/components/features/global-search/index.cjs +1 -1
  189. package/dist/components/features/global-search/index.js +57 -57
  190. package/dist/components/features/kanban/index.cjs +1 -1
  191. package/dist/components/features/kanban/index.js +14 -14
  192. package/dist/components/features/media-library/index.cjs +1 -1
  193. package/dist/components/features/media-library/index.js +178 -178
  194. package/dist/components/features/mentions/index.cjs +1 -1
  195. package/dist/components/features/mentions/index.js +1 -1
  196. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  197. package/dist/components/features/overlays/alert-dialog.d.ts.map +1 -1
  198. package/dist/components/features/overlays/drawer.d.ts +1 -1
  199. package/dist/components/features/overlays/drawer.d.ts.map +1 -1
  200. package/dist/components/features/overlays/index.cjs +1 -1
  201. package/dist/components/features/overlays/index.js +1 -1
  202. package/dist/components/features/overlays/overlays.types.d.ts +1 -0
  203. package/dist/components/features/overlays/overlays.types.d.ts.map +1 -1
  204. package/dist/components/features/products/index.cjs +1 -1
  205. package/dist/components/features/products/index.js +124 -124
  206. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  207. package/dist/components/features/rich-text-editor/index.js +1 -1
  208. package/dist/components/features/schema-form/index.cjs +1 -1
  209. package/dist/components/features/schema-form/index.js +26 -26
  210. package/dist/components/features/suggestions/index.cjs +1 -1
  211. package/dist/components/features/suggestions/index.js +1 -1
  212. package/dist/components/layout/auth/index.cjs +1 -1
  213. package/dist/components/layout/auth/index.js +1 -1
  214. package/dist/components/layout/header/index.cjs +1 -1
  215. package/dist/components/layout/header/index.js +1 -1
  216. package/dist/components/layout/hooks/index.cjs +1 -1
  217. package/dist/components/layout/hooks/index.js +1 -1
  218. package/dist/components/layout/index.cjs +1 -1
  219. package/dist/components/layout/index.js +6 -6
  220. package/dist/components/layout/page/index.cjs +1 -1
  221. package/dist/components/layout/page/index.js +1 -1
  222. package/dist/components/layout/sidebar/index.cjs +1 -1
  223. package/dist/components/layout/sidebar/index.js +2 -2
  224. package/dist/components/layout/workspace/index.cjs +1 -1
  225. package/dist/components/layout/workspace/index.js +1 -1
  226. package/dist/components/ui/alert.d.ts +1 -1
  227. package/dist/components/ui/badge.d.ts +1 -1
  228. package/dist/components/ui/button.d.ts +1 -1
  229. package/dist/services/actions/action-adapters.d.ts +97 -0
  230. package/dist/services/actions/action-adapters.d.ts.map +1 -0
  231. package/dist/services/actions/action-overlay-outlet.d.ts +4 -0
  232. package/dist/services/actions/action-overlay-outlet.d.ts.map +1 -0
  233. package/dist/services/actions/action-provider.d.ts +8 -0
  234. package/dist/services/actions/action-provider.d.ts.map +1 -0
  235. package/dist/services/actions/action-scope.d.ts +4 -0
  236. package/dist/services/actions/action-scope.d.ts.map +1 -0
  237. package/dist/services/actions/action-store.d.ts +56 -0
  238. package/dist/services/actions/action-store.d.ts.map +1 -0
  239. package/dist/services/actions/actions.strings.d.ts +3 -0
  240. package/dist/services/actions/actions.strings.d.ts.map +1 -0
  241. package/dist/services/actions/actions.types.d.ts +309 -0
  242. package/dist/services/actions/actions.types.d.ts.map +1 -0
  243. package/dist/services/actions/hooks.d.ts +9 -0
  244. package/dist/services/actions/hooks.d.ts.map +1 -0
  245. package/dist/services/actions/index.cjs +2 -0
  246. package/dist/services/actions/index.cjs.map +1 -0
  247. package/dist/services/actions/index.d.ts +9 -0
  248. package/dist/services/actions/index.d.ts.map +1 -0
  249. package/dist/services/actions/index.js +844 -0
  250. package/dist/services/actions/index.js.map +1 -0
  251. package/dist/showcase/assets/AreaChart-BYEewdc_.js +6 -0
  252. package/dist/showcase/assets/CompositeItem-Duekeg4m.js +1 -0
  253. package/dist/showcase/assets/CompositeRoot-BgNU3T7R.js +1 -0
  254. package/dist/showcase/assets/DialogTrigger-9xWmoeF5.js +1 -0
  255. package/dist/showcase/assets/LabelableContext-B3W_70Qk.js +1 -0
  256. package/dist/showcase/assets/PreviewLayout-nADJqRlP.js +1 -0
  257. package/dist/showcase/assets/RadioGroup-Bp1VCzxr.js +1 -0
  258. package/dist/showcase/assets/Separator-9PWX3shz.js +1 -0
  259. package/dist/showcase/assets/ToolbarRootContext-DwELw9xS.js +1 -0
  260. package/dist/showcase/assets/accordion-CfqHO9_z.js +171 -0
  261. package/dist/showcase/assets/accordion-variants-pkPHxkLW.js +1 -0
  262. package/dist/showcase/assets/action-menu-DFzSuDjI.js +1 -0
  263. package/dist/showcase/assets/activities-Bo97b2-I.js +501 -0
  264. package/dist/showcase/assets/activities-feed-card-D77gf27B.js +1 -0
  265. package/dist/showcase/assets/activity-BUlCWLI8.js +1 -0
  266. package/dist/showcase/assets/admin-CxTV4kZX.js +80 -0
  267. package/dist/showcase/assets/ai-Bym5H8bn.js +41 -0
  268. package/dist/showcase/assets/ai-artifact-DZVl1WmK.js +2 -0
  269. package/dist/showcase/assets/ai-chat-M3X5-PgT.js +568 -0
  270. package/dist/showcase/assets/ai-elements-DjppcMBD.js +387 -0
  271. package/dist/showcase/assets/ai-new-CXnrIi5S.js +167 -0
  272. package/dist/showcase/assets/ai-tool-call-DyMI8DqD.js +1 -0
  273. package/dist/showcase/assets/alert-D6Pygy2s.js +62 -0
  274. package/dist/showcase/assets/alert-DCrWLbEx.js +93 -0
  275. package/dist/showcase/assets/alert-qTNM0vld.js +1 -0
  276. package/dist/showcase/assets/api-key-list-CCpuHYHc.js +73 -0
  277. package/dist/showcase/assets/app-sidebar-CxTRNC5L.js +1 -0
  278. package/dist/showcase/assets/arrow-down--phuskCV.js +1 -0
  279. package/dist/showcase/assets/arrow-left-B__WWqyA.js +1 -0
  280. package/dist/showcase/assets/arrow-right-1-EvXxjB.js +1 -0
  281. package/dist/showcase/assets/arrow-up-lWotnmo7.js +1 -0
  282. package/dist/showcase/assets/arrow-up-right-IyQ3oeq0.js +1 -0
  283. package/dist/showcase/assets/avatar-gugtNx4D.js +57 -0
  284. package/dist/showcase/assets/avatar-n1nywTlx.js +1 -0
  285. package/dist/showcase/assets/badge-TuE-u3Hv.js +28 -0
  286. package/dist/showcase/assets/badge-check-CPDvpVzK.js +1 -0
  287. package/dist/showcase/assets/bell-DeCVddCA.js +1 -0
  288. package/dist/showcase/assets/bot-B_vzJEJH.js +1 -0
  289. package/dist/showcase/assets/box-z4O8t_K5.js +1 -0
  290. package/dist/showcase/assets/brain-DdKBE4Bh.js +1 -0
  291. package/dist/showcase/assets/brand-CfW7mgTY.js +36 -0
  292. package/dist/showcase/assets/breadcrumb-B4TBbKv3.js +52 -0
  293. package/dist/showcase/assets/breadcrumb-bF_sFVBL.js +1 -0
  294. package/dist/showcase/assets/breadcrumbs-CBv3EaMX.js +1 -0
  295. package/dist/showcase/assets/briefcase-ClqzeNt3.js +1 -0
  296. package/dist/showcase/assets/building-2-BQuWgjZj.js +1 -0
  297. package/dist/showcase/assets/button-CWKNCI82.js +44 -0
  298. package/dist/showcase/assets/button-group-BYhxtFwV.js +1 -0
  299. package/dist/showcase/assets/buttons-mBRyBw3Q.js +270 -0
  300. package/dist/showcase/assets/calendar-BgloJjlW.js +1 -0
  301. package/dist/showcase/assets/calendar-CJDWspzi.js +1 -0
  302. package/dist/showcase/assets/calendar-CgML2kJt.js +16 -0
  303. package/dist/showcase/assets/calendar-days-C0gTLVnY.js +1 -0
  304. package/dist/showcase/assets/camera-nIlaz4Sn.js +1 -0
  305. package/dist/showcase/assets/card-1ncRnRvq.js +1 -0
  306. package/dist/showcase/assets/card-CcgWzFB-.js +188 -0
  307. package/dist/showcase/assets/card-primitives-By4-RTuP.js +1 -0
  308. package/dist/showcase/assets/card-radio-group-DeX3qsRg.js +1 -0
  309. package/dist/showcase/assets/cards-DdqQr8rY.js +328 -0
  310. package/dist/showcase/assets/carousel-CV8ltDl8.js +449 -0
  311. package/dist/showcase/assets/chart-BNzHjskC.js +358 -0
  312. package/dist/showcase/assets/chart-column-CpTxRLEH.js +1 -0
  313. package/dist/showcase/assets/checkbox-CZTTm4Dv.js +1 -0
  314. package/dist/showcase/assets/chevron-down-LWBNHe9S.js +1 -0
  315. package/dist/showcase/assets/chevron-left-BsshO7nf.js +1 -0
  316. package/dist/showcase/assets/chevron-right-t68um2_G.js +1 -0
  317. package/dist/showcase/assets/chevron-up-DjhlESJB.js +1 -0
  318. package/dist/showcase/assets/chevrons-up-down-ZUo0Do59.js +1 -0
  319. package/dist/showcase/assets/circle-BL52dLr9.js +1 -0
  320. package/dist/showcase/assets/circle-alert-CXCt6zxc.js +1 -0
  321. package/dist/showcase/assets/circle-check-CbiRRw7s.js +1 -0
  322. package/dist/showcase/assets/circle-check-big-BSgn7lyt.js +1 -0
  323. package/dist/showcase/assets/circle-dot-WEOpGGJf.js +1 -0
  324. package/dist/showcase/assets/circle-question-mark-C9hLlsD7.js +1 -0
  325. package/dist/showcase/assets/circle-x-BT9TJbJC.js +1 -0
  326. package/dist/showcase/assets/clock-3-CfRK8ckc.js +1 -0
  327. package/dist/showcase/assets/clock-D-3zf0c1.js +1 -0
  328. package/dist/showcase/assets/code-xml-CQYKKuBU.js +1 -0
  329. package/dist/showcase/assets/collapsible-BC0hQvat.js +27 -0
  330. package/dist/showcase/assets/collapsible-CRVtVDCF.js +1 -0
  331. package/dist/showcase/assets/combobox-D4VYvYCT.js +696 -0
  332. package/dist/showcase/assets/command-CxeHT4lL.js +1 -0
  333. package/dist/showcase/assets/command-Do_t_Zou.js +1 -0
  334. package/dist/showcase/assets/comment-composer-DoFwvVlq.js +1 -0
  335. package/dist/showcase/assets/comment-item-CT8UbVeg.js +1 -0
  336. package/dist/showcase/assets/comments-CqdXrjUn.js +357 -0
  337. package/dist/showcase/assets/commerce-B9V2Wo_q.js +79 -0
  338. package/dist/showcase/assets/commerce-extras-CNT3QmAT.js +189 -0
  339. package/dist/showcase/assets/composite-BXLXcagx.js +1 -0
  340. package/dist/showcase/assets/contact-card-BLcAXepj.js +65 -0
  341. package/dist/showcase/assets/content-container-DJVD3ZmI.js +1 -0
  342. package/dist/showcase/assets/copyable-od17NrMu.js +96 -0
  343. package/dist/showcase/assets/course-card-CdZQr5yy.js +77 -0
  344. package/dist/showcase/assets/cpu-B8kRNR1R.js +1 -0
  345. package/dist/showcase/assets/credit-card-BYMQj03s.js +1 -0
  346. package/dist/showcase/assets/currency-Cxv3Cp6B.js +149 -0
  347. package/dist/showcase/assets/dark-surfaces-Cfp58iFb.js +90 -0
  348. package/dist/showcase/assets/database-DuUABvxU.js +1 -0
  349. package/dist/showcase/assets/date-block-E9qfY7W7.js +1 -0
  350. package/dist/showcase/assets/date-picker-I8BdaiiU.js +1 -0
  351. package/dist/showcase/assets/date-pickers-BLJaqhcS.js +73 -0
  352. package/dist/showcase/assets/dense-info-Bk1K_7Ww.js +106 -0
  353. package/dist/showcase/assets/dialog-BuatDnQ9.js +1 -0
  354. package/dist/showcase/assets/dialog-DCx-LydW.js +1 -0
  355. package/dist/showcase/assets/display-Bt7busw5.js +403 -0
  356. package/dist/showcase/assets/dist-BPyBHOXU.js +45 -0
  357. package/dist/showcase/assets/dollar-sign-qXQSS6Gh.js +1 -0
  358. package/dist/showcase/assets/download-B2JAmHmJ.js +1 -0
  359. package/dist/showcase/assets/dropdown-menu-DXT3BZLa.js +1 -0
  360. package/dist/showcase/assets/dropzone-BKIxDJNy.js +1 -0
  361. package/dist/showcase/assets/earth-7-Z3Gv2v.js +1 -0
  362. package/dist/showcase/assets/ellipsis-6Krb3RRW.js +1 -0
  363. package/dist/showcase/assets/ellipsis-vertical-DeOMIw1J.js +1 -0
  364. package/dist/showcase/assets/empty-BSYKaeXQ.js +1 -0
  365. package/dist/showcase/assets/empty-item-YElgv25f.js +49 -0
  366. package/dist/showcase/assets/empty-state-D-LrvnKF.js +1 -0
  367. package/dist/showcase/assets/empty-state-dNh1GtVU.js +188 -0
  368. package/dist/showcase/assets/enhanced-activities-Bw99ItYl.js +361 -0
  369. package/dist/showcase/assets/enhanced-combobox-CqLZmU3K.js +1 -0
  370. package/dist/showcase/assets/event-calendar-CcSi7g5A.js +138 -0
  371. package/dist/showcase/assets/event-log-2uq-eYxh.js +330 -0
  372. package/dist/showcase/assets/example-CTJ8AdNR.js +1 -0
  373. package/dist/showcase/assets/external-link-D0gqSa1q.js +1 -0
  374. package/dist/showcase/assets/eye-CDMCDLei.js +1 -0
  375. package/dist/showcase/assets/feature-announcement-BlyNck35.js +34 -0
  376. package/dist/showcase/assets/file-Y5EbzufX.js +1 -0
  377. package/dist/showcase/assets/file-text-DH1mBuPi.js +1 -0
  378. package/dist/showcase/assets/filters-BtHF4GSM.js +78 -0
  379. package/dist/showcase/assets/flag-CJ08LwLY.js +1 -0
  380. package/dist/showcase/assets/folder-open-DODo2pjy.js +1 -0
  381. package/dist/showcase/assets/form-field-CHY7jh1q.js +1 -0
  382. package/dist/showcase/assets/format-DYJqAuDM.js +1 -0
  383. package/dist/showcase/assets/forms-DgvQQXHO.js +862 -0
  384. package/dist/showcase/assets/frame-CdKicP4A.js +167 -0
  385. package/dist/showcase/assets/getPseudoElementBounds-D9-Hr3mO.js +1 -0
  386. package/dist/showcase/assets/gift-DD8O7cld.js +1 -0
  387. package/dist/showcase/assets/giftcard-cards-Dp9eYodY.js +85 -0
  388. package/dist/showcase/assets/git-branch-DZq1Vo2G.js +1 -0
  389. package/dist/showcase/assets/global-search-BqDotXql.js +215 -0
  390. package/dist/showcase/assets/global-search-PH6LXqZw.js +1 -0
  391. package/dist/showcase/assets/globe-mRTwrUxM.js +1 -0
  392. package/dist/showcase/assets/gradient-card-CaL88YKv.js +58 -0
  393. package/dist/showcase/assets/hash-DuqvHQHv.js +1 -0
  394. package/dist/showcase/assets/header-CiNgDop3.js +1 -0
  395. package/dist/showcase/assets/header-notifications-B9XMBsK_.js +1 -0
  396. package/dist/showcase/assets/heart-DsGJfnDx.js +1 -0
  397. package/dist/showcase/assets/house-B504aFIP.js +1 -0
  398. package/dist/showcase/assets/icon-badge-DMNu8xb5.js +1 -0
  399. package/dist/showcase/assets/image-C3DaMxmn.js +1 -0
  400. package/dist/showcase/assets/inbox-BWKQMLMx.js +1 -0
  401. package/dist/showcase/assets/index-DaYVSqKu.js +10 -0
  402. package/dist/showcase/assets/inertValue-DrtTkMGx.js +1 -0
  403. package/dist/showcase/assets/info-_FrGoCay.js +1 -0
  404. package/dist/showcase/assets/inline-stat-BYu-tiUU.js +1 -0
  405. package/dist/showcase/assets/input-C96HMHWR.js +1 -0
  406. package/dist/showcase/assets/input-fMPi7XxI.js +1 -0
  407. package/dist/showcase/assets/input-group-BZnSgFCn.js +47 -0
  408. package/dist/showcase/assets/input-group-CVONNP3T.js +1 -0
  409. package/dist/showcase/assets/inputs-Blh0LJ8-.js +155 -0
  410. package/dist/showcase/assets/invoice-header-Bpo4iwX3.js +36 -0
  411. package/dist/showcase/assets/invoice-items-OVIrbG0k.js +36 -0
  412. package/dist/showcase/assets/invoice-mini-CaOMTiUO.js +14 -0
  413. package/dist/showcase/assets/invoice-table-BXd_HhUg.js +30 -0
  414. package/dist/showcase/assets/isSameDay-NBVO9AKF.js +1 -0
  415. package/dist/showcase/assets/isToday-Bk5HMXWn.js +1 -0
  416. package/dist/showcase/assets/italic-BOv5bW4H.js +1 -0
  417. package/dist/showcase/assets/item-B4rdcVVp.js +134 -0
  418. package/dist/showcase/assets/item-BVt0zZ12.js +1 -0
  419. package/dist/showcase/assets/item-C4Xk3DC1.js +1 -0
  420. package/dist/showcase/assets/kanban-BXbelelR.js +186 -0
  421. package/dist/showcase/assets/label-Cv6wotdv.js +1 -0
  422. package/dist/showcase/assets/languages-BofyvcCF.js +1 -0
  423. package/dist/showcase/assets/layers-DJK0t5px.js +1 -0
  424. package/dist/showcase/assets/layout-app-shell-D_yMonSl.js +608 -0
  425. package/dist/showcase/assets/layout-auth-BTvSTwUz.js +754 -0
  426. package/dist/showcase/assets/layout-containers-PMuo__2O.js +101 -0
  427. package/dist/showcase/assets/layout-header-DQ3zeCHz.js +170 -0
  428. package/dist/showcase/assets/layout-page-CbvWdHrK.js +122 -0
  429. package/dist/showcase/assets/layout-primitives-6nsFFIdE.js +34 -0
  430. package/dist/showcase/assets/layout-sidebar-CKqeVCSY.js +224 -0
  431. package/dist/showcase/assets/layout-users-Cypq-42s.js +117 -0
  432. package/dist/showcase/assets/layout-workspace-DiRR8vDv.js +183 -0
  433. package/dist/showcase/assets/lock-DXmvLEEx.js +1 -0
  434. package/dist/showcase/assets/lock-keyhole-Cu6M-jjE.js +1 -0
  435. package/dist/showcase/assets/mail-CXVFHkzh.js +1 -0
  436. package/dist/showcase/assets/mail-check-BNEu3j2a.js +1 -0
  437. package/dist/showcase/assets/map-DnE1pFCQ.js +124 -0
  438. package/dist/showcase/assets/map-pin-CpOVa8IH.js +1 -0
  439. package/dist/showcase/assets/media-library-C-KfEvm4.js +695 -0
  440. package/dist/showcase/assets/mention-inline-suggestions-DlmslsfR.js +1 -0
  441. package/dist/showcase/assets/mentions-C8ZdNFuC.js +138 -0
  442. package/dist/showcase/assets/menus-B8yUL75K.js +165 -0
  443. package/dist/showcase/assets/message-square-DNOTaOFs.js +1 -0
  444. package/dist/showcase/assets/metadata-list-BQAanxM-.js +1 -0
  445. package/dist/showcase/assets/metadata-list-DL9qgDAp.js +288 -0
  446. package/dist/showcase/assets/metric-CYi09Ltx.js +1 -0
  447. package/dist/showcase/assets/metric-bar-CQH1z8T3.js +1 -0
  448. package/dist/showcase/assets/metric-grid-H1ixqMCI.js +1 -0
  449. package/dist/showcase/assets/metric-trend-chip-BBzWzFZ-.js +1 -0
  450. package/dist/showcase/assets/metrics-analytics-bar-C7Z2ITl4.js +44 -0
  451. package/dist/showcase/assets/metrics-analytics-cards-CZZSWiMn.js +50 -0
  452. package/dist/showcase/assets/metrics-comparison-BPqz8k30.js +76 -0
  453. package/dist/showcase/assets/metrics-heatmap-C3NYZAfx.js +27 -0
  454. package/dist/showcase/assets/metrics-inline-badge-RjHfm7um.js +17 -0
  455. package/dist/showcase/assets/metrics-kpi-row-DnBjyDH4.js +31 -0
  456. package/dist/showcase/assets/metrics-micro-grid-CKn405qb.js +42 -0
  457. package/dist/showcase/assets/metrics-overview-D8YGtdrh.js +192 -0
  458. package/dist/showcase/assets/metrics-stat-cards-Dxh6cAha.js +54 -0
  459. package/dist/showcase/assets/minus-20OTSSxf.js +1 -0
  460. package/dist/showcase/assets/money-display-BoiAMxH8.js +1 -0
  461. package/dist/showcase/assets/month-year-picker-Bl59Ygq9.js +1 -0
  462. package/dist/showcase/assets/navigation-B8d2CDU6.js +90 -0
  463. package/dist/showcase/assets/navigation-D16JX3kL.js +230 -0
  464. package/dist/showcase/assets/navigation-extras-Dm83uT6i.js +43 -0
  465. package/dist/showcase/assets/onboarding-checklist-DznDpP9M.js +119 -0
  466. package/dist/showcase/assets/overlays-CzlSqbFz.js +408 -0
  467. package/dist/showcase/assets/overlays-DUFqbkb9.js +159 -0
  468. package/dist/showcase/assets/package-BCXIwEPz.js +1 -0
  469. package/dist/showcase/assets/package-check-Ol-Cw3j-.js +1 -0
  470. package/dist/showcase/assets/page-action-button-DpzdSYvw.js +1 -0
  471. package/dist/showcase/assets/page-header-B_b7SqW8.js +1 -0
  472. package/dist/showcase/assets/pagination-BPDQo9Dl.js +1 -0
  473. package/dist/showcase/assets/pagination-PvkEX0qs.js +42 -0
  474. package/dist/showcase/assets/paperclip-CznEsmLN.js +1 -0
  475. package/dist/showcase/assets/password-input-CWMY5q3b.js +1 -0
  476. package/dist/showcase/assets/pencil-Cl9qi90g.js +1 -0
  477. package/dist/showcase/assets/phone-DbvK_QQJ.js +1 -0
  478. package/dist/showcase/assets/plus-CO8t66Yo.js +1 -0
  479. package/dist/showcase/assets/popover-3QIVx9lU.js +1 -0
  480. package/dist/showcase/assets/popover-Cyg9oYIU.js +1 -0
  481. package/dist/showcase/assets/popover-menu-DJPHeIL1.js +1 -0
  482. package/dist/showcase/assets/products-WsU-qdMz.js +407 -0
  483. package/dist/showcase/assets/progress-C61sf-qt.js +1 -0
  484. package/dist/showcase/assets/progress-PvTl8Fgf.js +18 -0
  485. package/dist/showcase/assets/props-table-C8la6vcG.js +1 -0
  486. package/dist/showcase/assets/props.generated-vFrhDrth.json +38618 -0
  487. package/dist/showcase/assets/quote-N1_lRDnX.js +1 -0
  488. package/dist/showcase/assets/receipt-C6a_WyLu.js +1 -0
  489. package/dist/showcase/assets/receipt-text-CDOh8FAv.js +1 -0
  490. package/dist/showcase/assets/refresh-cw-D4-ECZ1x.js +1 -0
  491. package/dist/showcase/assets/resolveValueLabel-DqAP3zJd.js +1 -0
  492. package/dist/showcase/assets/rich-text-editor-CU0IZpwV.js +143 -0
  493. package/dist/showcase/assets/rich-text-editor-DCU7mMoO.js +124 -0
  494. package/dist/showcase/assets/rotate-ccw-Dd5zEmr7.js +1 -0
  495. package/dist/showcase/assets/save-DDmFSQli.js +1 -0
  496. package/dist/showcase/assets/schema-form-B7naqMvv.js +325 -0
  497. package/dist/showcase/assets/scroll-area-CdaYm4UK.js +32 -0
  498. package/dist/showcase/assets/scroll-area-DwWSHYHB.js +1 -0
  499. package/dist/showcase/assets/select-CNzpb5ug.js +1 -0
  500. package/dist/showcase/assets/select-DBXZ_Wzf.js +1 -0
  501. package/dist/showcase/assets/send-eDm7YMmA.js +1 -0
  502. package/dist/showcase/assets/separator-4IC9ED7s.js +1 -0
  503. package/dist/showcase/assets/separator-DPGDsZpG.js +28 -0
  504. package/dist/showcase/assets/settings-IANZGo2i.js +1 -0
  505. package/dist/showcase/assets/sheet-2oCce5ae.js +1 -0
  506. package/dist/showcase/assets/shield-CDZhhvFW.js +1 -0
  507. package/dist/showcase/assets/shield-alert-5hL3sdf3.js +1 -0
  508. package/dist/showcase/assets/shield-check-CaO2dhVS.js +1 -0
  509. package/dist/showcase/assets/shopping-bag-Bt3iK-Bv.js +1 -0
  510. package/dist/showcase/assets/sidebar-Cds60-PS.js +1 -0
  511. package/dist/showcase/assets/sidebar.context-CdH_DH9M.js +1 -0
  512. package/dist/showcase/assets/skeleton-2HajJKO4.js +29 -0
  513. package/dist/showcase/assets/skeleton-CGEJwPdD.js +1 -0
  514. package/dist/showcase/assets/slider-BjQViBR0.js +1 -0
  515. package/dist/showcase/assets/sliders-horizontal-C3JH5WQu.js +1 -0
  516. package/dist/showcase/assets/smart-card-CHouYi8U.js +1 -0
  517. package/dist/showcase/assets/sonner-Cog559j7.js +22 -0
  518. package/dist/showcase/assets/sortable.esm-hUEKsxpQ.js +5 -0
  519. package/dist/showcase/assets/sparkles-B18eTHVN.js +1 -0
  520. package/dist/showcase/assets/spinner-BSI97i4D.js +1 -0
  521. package/dist/showcase/assets/spinner-D0WhVyye.js +30 -0
  522. package/dist/showcase/assets/spinner-DQmJ7k9y.js +49 -0
  523. package/dist/showcase/assets/square-pen-CLyDWdhj.js +1 -0
  524. package/dist/showcase/assets/stacked-avatars-ECnU27uV.js +1 -0
  525. package/dist/showcase/assets/star-C3mhkpSK.js +1 -0
  526. package/dist/showcase/assets/startOfDay-ECIxhJGC.js +1 -0
  527. package/dist/showcase/assets/styles-CDD7mDye.js +1 -0
  528. package/dist/showcase/assets/suggestions-DOW6NBJp.js +126 -0
  529. package/dist/showcase/assets/switch-D59YKmf6.js +1 -0
  530. package/dist/showcase/assets/switch-NICmdoPn.js +1 -0
  531. package/dist/showcase/assets/sync-B8nBZXQ9.js +107 -0
  532. package/dist/showcase/assets/table-CckompuR.js +382 -0
  533. package/dist/showcase/assets/table-DtA4-Q0p.js +1 -0
  534. package/dist/showcase/assets/table-actions-DdoPJTMy.js +1 -0
  535. package/dist/showcase/assets/tabs-BrC_HxL_.js +1 -0
  536. package/dist/showcase/assets/tabs-UVxr80vY.js +19 -0
  537. package/dist/showcase/assets/tags-input-iDfvhzZD.js +1 -0
  538. package/dist/showcase/assets/text-button-DHFCLCoc.js +1 -0
  539. package/dist/showcase/assets/text-link-nCLLDcS_.js +1 -0
  540. package/dist/showcase/assets/textarea-DsSuQHQY.js +1 -0
  541. package/dist/showcase/assets/textarea-DyGI3Kcn.js +1 -0
  542. package/dist/showcase/assets/timelines-JmMcH657.js +200 -0
  543. package/dist/showcase/assets/toggle-group-BZKzMmC8.js +1 -0
  544. package/dist/showcase/assets/toggles-BSJvy4Tw.js +71 -0
  545. package/dist/showcase/assets/toggles-group-Bsc6eaWw.js +32 -0
  546. package/dist/showcase/assets/trash-2-C9AC7Pcv.js +1 -0
  547. package/dist/showcase/assets/trending-up-CGaDZj0S.js +1 -0
  548. package/dist/showcase/assets/truck-Dq6heokm.js +1 -0
  549. package/dist/showcase/assets/typography-ByvwR6Kg.js +223 -0
  550. package/dist/showcase/assets/ui-badge-BYgJSE_w.js +28 -0
  551. package/dist/showcase/assets/ui-card-BdueUfow.js +30 -0
  552. package/dist/showcase/assets/ui-table-CxtCQUsg.js +42 -0
  553. package/dist/showcase/assets/upload-tray-DKJ8nFZp.js +138 -0
  554. package/dist/showcase/assets/use-layout-link-CGBQHZon.js +1 -0
  555. package/dist/showcase/assets/useAnchoredPopupScrollLock-CywAbxVB.js +1 -0
  556. package/dist/showcase/assets/useAriaLabelledBy-B2bZzE7D.js +1 -0
  557. package/dist/showcase/assets/useCollapsiblePanel-SLdY_s6S.js +1 -0
  558. package/dist/showcase/assets/useCompositeItem-g6aCBp84.js +1 -0
  559. package/dist/showcase/assets/useCompositeListItem-DK0Tpege.js +1 -0
  560. package/dist/showcase/assets/useLabelableId-hdKzFCp2.js +1 -0
  561. package/dist/showcase/assets/useOpenInteractionType-CnhifZ1E.js +1 -0
  562. package/dist/showcase/assets/useRender-QhawWhpb.js +1 -0
  563. package/dist/showcase/assets/useTriggerFocusGuards-Cht7Sa7e.js +1 -0
  564. package/dist/showcase/assets/useValueChanged-DURO1kfZ.js +1 -0
  565. package/dist/showcase/assets/user-plus-DbOuTfr7.js +1 -0
  566. package/dist/showcase/assets/user-u65Fo7k7.js +1 -0
  567. package/dist/showcase/assets/users-BUb7CmVp.js +1 -0
  568. package/dist/showcase/assets/vendor-profile-wfI3PBuO.js +37 -0
  569. package/dist/showcase/assets/video-e4hDbTQ2.js +1 -0
  570. package/dist/showcase/assets/wrench-CBUvtxdr.js +1 -0
  571. package/dist/showcase/assets/x-oVTJnCJn.js +1 -0
  572. package/dist/showcase/assets/zap-CzABYL3c.js +1 -0
  573. package/dist/showcase/index.html +1 -1
  574. package/package.json +11 -3
  575. package/scripts/README.md +24 -0
  576. package/scripts/metadata.json +325 -0
  577. package/dist/_shared/accordion-BWU7zxlO.cjs +0 -2
  578. package/dist/_shared/accordion-BWU7zxlO.cjs.map +0 -1
  579. package/dist/_shared/accordion-DTYKGqWD.js +0 -130
  580. package/dist/_shared/accordion-DTYKGqWD.js.map +0 -1
  581. package/dist/_shared/action-menu-BoQnI2UF.cjs +0 -2
  582. package/dist/_shared/action-menu-BoQnI2UF.cjs.map +0 -1
  583. package/dist/_shared/action-menu-uyg1Phsn.js +0 -96
  584. package/dist/_shared/action-menu-uyg1Phsn.js.map +0 -1
  585. package/dist/_shared/ai-artifact-CY1Jf9gM.cjs +0 -3
  586. package/dist/_shared/ai-artifact-CY1Jf9gM.cjs.map +0 -1
  587. package/dist/_shared/ai-artifact-DdlK_l56.js +0 -1099
  588. package/dist/_shared/ai-artifact-DdlK_l56.js.map +0 -1
  589. package/dist/_shared/auth-CDjZFJxy.cjs +0 -2
  590. package/dist/_shared/auth-CDjZFJxy.cjs.map +0 -1
  591. package/dist/_shared/auth-_udUdWtn.js +0 -643
  592. package/dist/_shared/auth-_udUdWtn.js.map +0 -1
  593. package/dist/_shared/badge--o9wFHB_.cjs +0 -2
  594. package/dist/_shared/badge--o9wFHB_.cjs.map +0 -1
  595. package/dist/_shared/badge-yGlx9trX.js +0 -108
  596. package/dist/_shared/badge-yGlx9trX.js.map +0 -1
  597. package/dist/_shared/button-683R5quQ.js +0 -46
  598. package/dist/_shared/button-683R5quQ.js.map +0 -1
  599. package/dist/_shared/button-C1qc97U1.cjs +0 -2
  600. package/dist/_shared/button-C1qc97U1.cjs.map +0 -1
  601. package/dist/_shared/button-CjZrRLzR.cjs +0 -2
  602. package/dist/_shared/button-CjZrRLzR.cjs.map +0 -1
  603. package/dist/_shared/button-SuocMQFT.js +0 -173
  604. package/dist/_shared/button-SuocMQFT.js.map +0 -1
  605. package/dist/_shared/buttons-9YBwevkP.cjs +0 -2
  606. package/dist/_shared/buttons-9YBwevkP.cjs.map +0 -1
  607. package/dist/_shared/buttons-BR4BGVYf.js +0 -143
  608. package/dist/_shared/buttons-BR4BGVYf.js.map +0 -1
  609. package/dist/_shared/combobox-CpSmiPV8.cjs +0 -2
  610. package/dist/_shared/combobox-CpSmiPV8.cjs.map +0 -1
  611. package/dist/_shared/combobox-D01JwyFZ.js +0 -810
  612. package/dist/_shared/combobox-D01JwyFZ.js.map +0 -1
  613. package/dist/_shared/comments-D9velZAW.js +0 -952
  614. package/dist/_shared/comments-D9velZAW.js.map +0 -1
  615. package/dist/_shared/comments-DyUAKSQu.cjs +0 -2
  616. package/dist/_shared/comments-DyUAKSQu.cjs.map +0 -1
  617. package/dist/_shared/date-picker-BnsvBFOZ.cjs +0 -2
  618. package/dist/_shared/date-picker-BnsvBFOZ.cjs.map +0 -1
  619. package/dist/_shared/date-picker-TMcjGO26.js +0 -1361
  620. package/dist/_shared/date-picker-TMcjGO26.js.map +0 -1
  621. package/dist/_shared/date-pickers-BI4xLjHR.js +0 -330
  622. package/dist/_shared/date-pickers-BI4xLjHR.js.map +0 -1
  623. package/dist/_shared/date-pickers-BhaUK5S2.cjs +0 -2
  624. package/dist/_shared/date-pickers-BhaUK5S2.cjs.map +0 -1
  625. package/dist/_shared/dialog-A95-614f.js +0 -101
  626. package/dist/_shared/dialog-A95-614f.js.map +0 -1
  627. package/dist/_shared/dialog-ivDByBmO.cjs +0 -2
  628. package/dist/_shared/dialog-ivDByBmO.cjs.map +0 -1
  629. package/dist/_shared/display-C4n0uuxl.js +0 -1154
  630. package/dist/_shared/display-C4n0uuxl.js.map +0 -1
  631. package/dist/_shared/display-oDW0O9yB.cjs +0 -2
  632. package/dist/_shared/display-oDW0O9yB.cjs.map +0 -1
  633. package/dist/_shared/forms-CwJci54_.js +0 -3430
  634. package/dist/_shared/forms-CwJci54_.js.map +0 -1
  635. package/dist/_shared/forms-E3JkTgcC.cjs +0 -2
  636. package/dist/_shared/forms-E3JkTgcC.cjs.map +0 -1
  637. package/dist/_shared/header-CyBTcM-L.js +0 -360
  638. package/dist/_shared/header-CyBTcM-L.js.map +0 -1
  639. package/dist/_shared/header-kwvkesfq.cjs +0 -2
  640. package/dist/_shared/header-kwvkesfq.cjs.map +0 -1
  641. package/dist/_shared/hooks-MW0UTO3q.cjs +0 -2
  642. package/dist/_shared/hooks-MW0UTO3q.cjs.map +0 -1
  643. package/dist/_shared/hooks-ZiPIvs0_.js +0 -118
  644. package/dist/_shared/hooks-ZiPIvs0_.js.map +0 -1
  645. package/dist/_shared/mentions-Br-EP9tq.js +0 -506
  646. package/dist/_shared/mentions-Br-EP9tq.js.map +0 -1
  647. package/dist/_shared/mentions-DNTsRHJl.cjs +0 -2
  648. package/dist/_shared/mentions-DNTsRHJl.cjs.map +0 -1
  649. package/dist/_shared/metadata-CPSQGPJh.cjs +0 -2
  650. package/dist/_shared/metadata-CPSQGPJh.cjs.map +0 -1
  651. package/dist/_shared/metadata-qTNAOM7E.js +0 -235
  652. package/dist/_shared/metadata-qTNAOM7E.js.map +0 -1
  653. package/dist/_shared/navigation-HnnA6uSV.js +0 -419
  654. package/dist/_shared/navigation-HnnA6uSV.js.map +0 -1
  655. package/dist/_shared/navigation-J2g0Tw9D.cjs +0 -2
  656. package/dist/_shared/navigation-J2g0Tw9D.cjs.map +0 -1
  657. package/dist/_shared/overlays-CIeniDjj.js +0 -639
  658. package/dist/_shared/overlays-CIeniDjj.js.map +0 -1
  659. package/dist/_shared/overlays-Xc_F_Y-E.cjs +0 -2
  660. package/dist/_shared/overlays-Xc_F_Y-E.cjs.map +0 -1
  661. package/dist/_shared/page-BFV-KE8H.js +0 -262
  662. package/dist/_shared/page-BFV-KE8H.js.map +0 -1
  663. package/dist/_shared/page-UJfWfw2R.cjs +0 -2
  664. package/dist/_shared/page-UJfWfw2R.cjs.map +0 -1
  665. package/dist/_shared/rich-text-editor-B6WKHUKC.js +0 -620
  666. package/dist/_shared/rich-text-editor-B6WKHUKC.js.map +0 -1
  667. package/dist/_shared/rich-text-editor-Dm-6r_xe.cjs +0 -2
  668. package/dist/_shared/rich-text-editor-Dm-6r_xe.cjs.map +0 -1
  669. package/dist/_shared/sheet-BKEfwhCn.js +0 -100
  670. package/dist/_shared/sheet-BKEfwhCn.js.map +0 -1
  671. package/dist/_shared/sheet-D4yWgkwC.cjs +0 -2
  672. package/dist/_shared/sheet-D4yWgkwC.cjs.map +0 -1
  673. package/dist/_shared/sidebar-B_L_dnAe.cjs +0 -2
  674. package/dist/_shared/sidebar-B_L_dnAe.cjs.map +0 -1
  675. package/dist/_shared/sidebar-C5DApiDy.js +0 -389
  676. package/dist/_shared/sidebar-C5DApiDy.js.map +0 -1
  677. package/dist/_shared/sidebar-CIlGkVbF.js +0 -538
  678. package/dist/_shared/sidebar-CIlGkVbF.js.map +0 -1
  679. package/dist/_shared/sidebar-D3sK9otF.cjs +0 -2
  680. package/dist/_shared/sidebar-D3sK9otF.cjs.map +0 -1
  681. package/dist/_shared/smart-card-DYZGY_Su.js +0 -361
  682. package/dist/_shared/smart-card-DYZGY_Su.js.map +0 -1
  683. package/dist/_shared/smart-card-Df80VF8x.cjs +0 -2
  684. package/dist/_shared/smart-card-Df80VF8x.cjs.map +0 -1
  685. package/dist/_shared/table-CBKDA7ZE.js +0 -1189
  686. package/dist/_shared/table-CBKDA7ZE.js.map +0 -1
  687. package/dist/_shared/table-CJoxRCWy.cjs +0 -2
  688. package/dist/_shared/table-CJoxRCWy.cjs.map +0 -1
  689. package/dist/_shared/workspace-CTjIGCE0.cjs +0 -2
  690. package/dist/_shared/workspace-CTjIGCE0.cjs.map +0 -1
  691. package/dist/_shared/workspace-WgJgiSUA.js +0 -357
  692. package/dist/_shared/workspace-WgJgiSUA.js.map +0 -1
  693. package/dist/showcase/assets/AreaChart-BkAbL-UV.js +0 -6
  694. package/dist/showcase/assets/CompositeItem-Dzu0MfUC.js +0 -1
  695. package/dist/showcase/assets/CompositeRoot-CQvQ_uj2.js +0 -1
  696. package/dist/showcase/assets/DialogTrigger-BxVhSw4D.js +0 -1
  697. package/dist/showcase/assets/LabelableContext-DapqaNeY.js +0 -1
  698. package/dist/showcase/assets/PreviewLayout-CGEkbS-i.js +0 -1
  699. package/dist/showcase/assets/RadioGroup-DBA3iBQw.js +0 -1
  700. package/dist/showcase/assets/Separator-BEMr82IS.js +0 -1
  701. package/dist/showcase/assets/ToolbarRootContext-xN-ruoGR.js +0 -1
  702. package/dist/showcase/assets/accordion-B-Iy0jKu.js +0 -171
  703. package/dist/showcase/assets/accordion-variants-B9GD0oBE.js +0 -1
  704. package/dist/showcase/assets/action-menu-CMUF6gPp.js +0 -1
  705. package/dist/showcase/assets/activities-C1P9bsJm.js +0 -501
  706. package/dist/showcase/assets/activities-feed-card-WZUuGHmT.js +0 -1
  707. package/dist/showcase/assets/activity-BVP5C805.js +0 -1
  708. package/dist/showcase/assets/admin-DWOK4sj4.js +0 -80
  709. package/dist/showcase/assets/ai-Dteb3y6G.js +0 -41
  710. package/dist/showcase/assets/ai-artifact-B0d7GveY.js +0 -2
  711. package/dist/showcase/assets/ai-chat-IJ0b2FOw.js +0 -568
  712. package/dist/showcase/assets/ai-elements-Cr8GgtEV.js +0 -387
  713. package/dist/showcase/assets/ai-new-BJN9wNvX.js +0 -167
  714. package/dist/showcase/assets/ai-tool-call-BqlQuR1P.js +0 -1
  715. package/dist/showcase/assets/alert-2_0J7Vv6.js +0 -1
  716. package/dist/showcase/assets/alert-7wEOpEor.js +0 -93
  717. package/dist/showcase/assets/alert-C_FOBilU.js +0 -62
  718. package/dist/showcase/assets/api-key-list-CGV1k52v.js +0 -73
  719. package/dist/showcase/assets/app-sidebar-S6oUYO4h.js +0 -1
  720. package/dist/showcase/assets/arrow-down-VNr82bS3.js +0 -1
  721. package/dist/showcase/assets/arrow-left-BSVeKWNq.js +0 -1
  722. package/dist/showcase/assets/arrow-right-D6hTB0Bd.js +0 -1
  723. package/dist/showcase/assets/arrow-up-p9oA4cIz.js +0 -1
  724. package/dist/showcase/assets/arrow-up-right-BtlQ62bc.js +0 -1
  725. package/dist/showcase/assets/avatar-BxcQUuh0.js +0 -57
  726. package/dist/showcase/assets/avatar-LGWm52rv.js +0 -1
  727. package/dist/showcase/assets/badge-COn5psy3.js +0 -28
  728. package/dist/showcase/assets/badge-check-D2C2BPUT.js +0 -1
  729. package/dist/showcase/assets/bell-C80n9VRl.js +0 -1
  730. package/dist/showcase/assets/bot-C83bUUi9.js +0 -1
  731. package/dist/showcase/assets/box-rZ0pA-02.js +0 -1
  732. package/dist/showcase/assets/brain-BJtktdVu.js +0 -1
  733. package/dist/showcase/assets/brand-CxdIBpyJ.js +0 -36
  734. package/dist/showcase/assets/breadcrumb-BZsr_A8k.js +0 -1
  735. package/dist/showcase/assets/breadcrumb-CSU8FvWB.js +0 -52
  736. package/dist/showcase/assets/breadcrumbs-BUm4gHzL.js +0 -1
  737. package/dist/showcase/assets/briefcase-0WhUdLn5.js +0 -1
  738. package/dist/showcase/assets/building-2-1D6zVdCI.js +0 -1
  739. package/dist/showcase/assets/button-C22Gs6y0.js +0 -44
  740. package/dist/showcase/assets/button-group-C0Ts4-x3.js +0 -1
  741. package/dist/showcase/assets/buttons-Dfn6hmwe.js +0 -270
  742. package/dist/showcase/assets/calendar-7a4yQlzJ.js +0 -1
  743. package/dist/showcase/assets/calendar-Bo17POsN.js +0 -1
  744. package/dist/showcase/assets/calendar-D6XNDRVQ.js +0 -16
  745. package/dist/showcase/assets/calendar-days-C4mG2tOe.js +0 -1
  746. package/dist/showcase/assets/camera-C16z6v0m.js +0 -1
  747. package/dist/showcase/assets/card-BjqRQxxz.js +0 -1
  748. package/dist/showcase/assets/card-IzYmUTpI.js +0 -188
  749. package/dist/showcase/assets/card-primitives-BDj4DtS8.js +0 -1
  750. package/dist/showcase/assets/card-radio-group-7GU9AtWs.js +0 -1
  751. package/dist/showcase/assets/cards-DAqpr8CM.js +0 -328
  752. package/dist/showcase/assets/carousel-D1n4Kkoo.js +0 -449
  753. package/dist/showcase/assets/chart-D2EGeI3b.js +0 -358
  754. package/dist/showcase/assets/chart-column-DKcP77Dx.js +0 -1
  755. package/dist/showcase/assets/checkbox-BI3gcjED.js +0 -1
  756. package/dist/showcase/assets/chevron-down-ByPPEdNm.js +0 -1
  757. package/dist/showcase/assets/chevron-left-BNByuq3g.js +0 -1
  758. package/dist/showcase/assets/chevron-right-D4pIMCh9.js +0 -1
  759. package/dist/showcase/assets/chevron-up-Cha879Nz.js +0 -1
  760. package/dist/showcase/assets/chevrons-up-down-eAgHau5X.js +0 -1
  761. package/dist/showcase/assets/circle-V5hdlsIn.js +0 -1
  762. package/dist/showcase/assets/circle-alert-BW-Btwgh.js +0 -1
  763. package/dist/showcase/assets/circle-check-1MSds3Vu.js +0 -1
  764. package/dist/showcase/assets/circle-check-big-vBWkmhCZ.js +0 -1
  765. package/dist/showcase/assets/circle-dot-CsD5uXwH.js +0 -1
  766. package/dist/showcase/assets/circle-question-mark-xYn9p1nL.js +0 -1
  767. package/dist/showcase/assets/circle-x-VSqZOeGt.js +0 -1
  768. package/dist/showcase/assets/clock-3-CP_t59kW.js +0 -1
  769. package/dist/showcase/assets/clock-9xbB7EnW.js +0 -1
  770. package/dist/showcase/assets/code-xml-CeGA85eB.js +0 -1
  771. package/dist/showcase/assets/collapsible-C2W51-wl.js +0 -27
  772. package/dist/showcase/assets/collapsible-C4eof15p.js +0 -1
  773. package/dist/showcase/assets/combobox-i8o4u6Q0.js +0 -696
  774. package/dist/showcase/assets/command-C4F78Ppy.js +0 -1
  775. package/dist/showcase/assets/command-wjOXUieO.js +0 -1
  776. package/dist/showcase/assets/comment-composer-DeURrlgL.js +0 -1
  777. package/dist/showcase/assets/comment-item-D07Qk-Nt.js +0 -1
  778. package/dist/showcase/assets/comments-Bo-lZU18.js +0 -357
  779. package/dist/showcase/assets/commerce-extras-Cio3xn_B.js +0 -189
  780. package/dist/showcase/assets/commerce-jqA58sCZ.js +0 -79
  781. package/dist/showcase/assets/composite-BQFpnmS9.js +0 -1
  782. package/dist/showcase/assets/contact-card-4ajPhcd_.js +0 -65
  783. package/dist/showcase/assets/content-container-B83BnjFb.js +0 -1
  784. package/dist/showcase/assets/copyable-DKkroGJ3.js +0 -96
  785. package/dist/showcase/assets/course-card-DShYl03k.js +0 -77
  786. package/dist/showcase/assets/cpu-BZTsuaUu.js +0 -1
  787. package/dist/showcase/assets/credit-card-CAI3F3HB.js +0 -1
  788. package/dist/showcase/assets/currency-PXgbngHk.js +0 -149
  789. package/dist/showcase/assets/dark-surfaces-pSCicdm4.js +0 -90
  790. package/dist/showcase/assets/database-oHsxHUj-.js +0 -1
  791. package/dist/showcase/assets/date-block-CvCdJr8d.js +0 -1
  792. package/dist/showcase/assets/date-picker-Cd5vsEEd.js +0 -1
  793. package/dist/showcase/assets/date-pickers-CBK-zvSB.js +0 -73
  794. package/dist/showcase/assets/dense-info-zOdJpez6.js +0 -106
  795. package/dist/showcase/assets/dialog-D9-MRCRg.js +0 -1
  796. package/dist/showcase/assets/dialog-EDw9DvZs.js +0 -1
  797. package/dist/showcase/assets/display-CE9JWinr.js +0 -403
  798. package/dist/showcase/assets/dist-CjZ6RM9v.js +0 -45
  799. package/dist/showcase/assets/dollar-sign-BXD_x2mP.js +0 -1
  800. package/dist/showcase/assets/download-D0ur_d_N.js +0 -1
  801. package/dist/showcase/assets/dropdown-menu-Cto8-yDW.js +0 -1
  802. package/dist/showcase/assets/dropzone-9Gb4mR4x.js +0 -1
  803. package/dist/showcase/assets/earth-BN1w3w7h.js +0 -1
  804. package/dist/showcase/assets/ellipsis-DsrebD1Y.js +0 -1
  805. package/dist/showcase/assets/ellipsis-vertical-CAiMV7G2.js +0 -1
  806. package/dist/showcase/assets/empty-DoJF3uif.js +0 -1
  807. package/dist/showcase/assets/empty-item-zZ85qI6s.js +0 -49
  808. package/dist/showcase/assets/empty-state-CGfB7sOE.js +0 -1
  809. package/dist/showcase/assets/empty-state-Y_4qnNWt.js +0 -188
  810. package/dist/showcase/assets/enhanced-activities-B41hAxhb.js +0 -361
  811. package/dist/showcase/assets/enhanced-combobox-BOimEW-1.js +0 -1
  812. package/dist/showcase/assets/event-calendar-BjcfC6fM.js +0 -138
  813. package/dist/showcase/assets/event-log-BhoMXcix.js +0 -330
  814. package/dist/showcase/assets/example-Cz_880po.js +0 -1
  815. package/dist/showcase/assets/external-link-Cy1-PP8k.js +0 -1
  816. package/dist/showcase/assets/eye-C85PNNdH.js +0 -1
  817. package/dist/showcase/assets/feature-announcement-_tpahla3.js +0 -34
  818. package/dist/showcase/assets/file-C8PCBEtY.js +0 -1
  819. package/dist/showcase/assets/file-text-DwqbUujq.js +0 -1
  820. package/dist/showcase/assets/filters-ChqGg_1z.js +0 -78
  821. package/dist/showcase/assets/flag-csHQcBml.js +0 -1
  822. package/dist/showcase/assets/folder-open-BThTng3d.js +0 -1
  823. package/dist/showcase/assets/form-field-B5g_5Zjm.js +0 -1
  824. package/dist/showcase/assets/format-DrTwpH65.js +0 -1
  825. package/dist/showcase/assets/forms-BukyUSKs.js +0 -862
  826. package/dist/showcase/assets/frame-BNKhZVlb.js +0 -167
  827. package/dist/showcase/assets/getPseudoElementBounds-DwyQgIj-.js +0 -1
  828. package/dist/showcase/assets/gift-CtM--bDo.js +0 -1
  829. package/dist/showcase/assets/giftcard-cards-imm4Br0H.js +0 -85
  830. package/dist/showcase/assets/git-branch-Dl3AzbqP.js +0 -1
  831. package/dist/showcase/assets/global-search-Bhl7z_vN.js +0 -1
  832. package/dist/showcase/assets/global-search-C4yaPFSW.js +0 -215
  833. package/dist/showcase/assets/globe-BCikLfKc.js +0 -1
  834. package/dist/showcase/assets/gradient-card-Dh_5ZYv0.js +0 -58
  835. package/dist/showcase/assets/hash-C8m0EECO.js +0 -1
  836. package/dist/showcase/assets/header-BXjw7Lm_.js +0 -1
  837. package/dist/showcase/assets/header-notifications-CShSQ8kR.js +0 -1
  838. package/dist/showcase/assets/heart-BJVBFZ-j.js +0 -1
  839. package/dist/showcase/assets/house-C3fXPhlL.js +0 -1
  840. package/dist/showcase/assets/icon-badge-dwVx3Hxf.js +0 -1
  841. package/dist/showcase/assets/image-gc4qX_7C.js +0 -1
  842. package/dist/showcase/assets/inbox-C0GJ1KEC.js +0 -1
  843. package/dist/showcase/assets/index-BQIv1ffM.js +0 -10
  844. package/dist/showcase/assets/inertValue-DeVQ2cCe.js +0 -1
  845. package/dist/showcase/assets/info-BimmreJ-.js +0 -1
  846. package/dist/showcase/assets/inline-stat-DcNP6bcO.js +0 -1
  847. package/dist/showcase/assets/input-DJAWOJEx.js +0 -1
  848. package/dist/showcase/assets/input-NIgvB9CZ.js +0 -1
  849. package/dist/showcase/assets/input-group-BmqJ20bA.js +0 -1
  850. package/dist/showcase/assets/input-group-gOUubhee.js +0 -47
  851. package/dist/showcase/assets/inputs-Dk8YOVkI.js +0 -155
  852. package/dist/showcase/assets/invoice-header-BnNpWej2.js +0 -36
  853. package/dist/showcase/assets/invoice-items-BdPmW10L.js +0 -36
  854. package/dist/showcase/assets/invoice-mini-CbSYyHIb.js +0 -14
  855. package/dist/showcase/assets/invoice-table-DjnWG3KF.js +0 -30
  856. package/dist/showcase/assets/isSameDay-B2KDl_YX.js +0 -1
  857. package/dist/showcase/assets/isToday-CXNS7ELW.js +0 -1
  858. package/dist/showcase/assets/italic-BRS-PpYL.js +0 -1
  859. package/dist/showcase/assets/item--6Hx9AXZ.js +0 -1
  860. package/dist/showcase/assets/item-BszVRzXj.js +0 -134
  861. package/dist/showcase/assets/item-YF6wMI9W.js +0 -1
  862. package/dist/showcase/assets/kanban-BWBbWLVe.js +0 -186
  863. package/dist/showcase/assets/label-BgpcD3V6.js +0 -1
  864. package/dist/showcase/assets/languages-DDgmIDFe.js +0 -1
  865. package/dist/showcase/assets/layers-nkkXRmvA.js +0 -1
  866. package/dist/showcase/assets/layout-app-shell-D3MbPoGC.js +0 -608
  867. package/dist/showcase/assets/layout-auth-DIeRtG0B.js +0 -754
  868. package/dist/showcase/assets/layout-containers-Dc3-IAgV.js +0 -101
  869. package/dist/showcase/assets/layout-header-Cg6GfMST.js +0 -170
  870. package/dist/showcase/assets/layout-page-DojPq8S6.js +0 -122
  871. package/dist/showcase/assets/layout-primitives-JBSQS72B.js +0 -34
  872. package/dist/showcase/assets/layout-sidebar-C6jUJRhx.js +0 -224
  873. package/dist/showcase/assets/layout-users-uzPscfo7.js +0 -117
  874. package/dist/showcase/assets/layout-workspace-B3leaOKl.js +0 -183
  875. package/dist/showcase/assets/lock-DLIcOBUd.js +0 -1
  876. package/dist/showcase/assets/lock-keyhole-DY6aV7Mq.js +0 -1
  877. package/dist/showcase/assets/mail-AES_tOd2.js +0 -1
  878. package/dist/showcase/assets/mail-check-dJTzg2bD.js +0 -1
  879. package/dist/showcase/assets/map-CZ2l0iGH.js +0 -124
  880. package/dist/showcase/assets/map-pin-0O7GD5Dz.js +0 -1
  881. package/dist/showcase/assets/media-library-CRllxSGQ.js +0 -695
  882. package/dist/showcase/assets/mention-inline-suggestions-Dx2Z1GHF.js +0 -1
  883. package/dist/showcase/assets/mentions-CDqqGCE4.js +0 -138
  884. package/dist/showcase/assets/menus-CDgE79I5.js +0 -165
  885. package/dist/showcase/assets/message-square-CBNI_sf8.js +0 -1
  886. package/dist/showcase/assets/metadata-list-BoEVt7cX.js +0 -1
  887. package/dist/showcase/assets/metadata-list-NtWuY9W8.js +0 -288
  888. package/dist/showcase/assets/metric-Bx_LWobe.js +0 -1
  889. package/dist/showcase/assets/metric-bar-BldYHNLQ.js +0 -1
  890. package/dist/showcase/assets/metric-grid-BDw7w7d2.js +0 -1
  891. package/dist/showcase/assets/metric-trend-chip-lSjDkUEo.js +0 -1
  892. package/dist/showcase/assets/metrics-analytics-bar-CCFhTmQZ.js +0 -44
  893. package/dist/showcase/assets/metrics-analytics-cards-C1AjZqJU.js +0 -50
  894. package/dist/showcase/assets/metrics-comparison-vEE6BtuW.js +0 -76
  895. package/dist/showcase/assets/metrics-heatmap-DKkz8ibX.js +0 -27
  896. package/dist/showcase/assets/metrics-inline-badge-CZmVnReB.js +0 -17
  897. package/dist/showcase/assets/metrics-kpi-row-s2FYIYB1.js +0 -31
  898. package/dist/showcase/assets/metrics-micro-grid-DDlCl9Ep.js +0 -42
  899. package/dist/showcase/assets/metrics-overview-BgliK2L1.js +0 -192
  900. package/dist/showcase/assets/metrics-stat-cards-Cn5sRZsB.js +0 -54
  901. package/dist/showcase/assets/minus-DByvcC8K.js +0 -1
  902. package/dist/showcase/assets/money-display-DG4IaEaA.js +0 -1
  903. package/dist/showcase/assets/month-year-picker-CVurc9L7.js +0 -1
  904. package/dist/showcase/assets/navigation-CHYgQTsY.js +0 -90
  905. package/dist/showcase/assets/navigation-C_6gS4FA.js +0 -230
  906. package/dist/showcase/assets/navigation-extras-CflOar2P.js +0 -43
  907. package/dist/showcase/assets/onboarding-checklist-CYiciKwv.js +0 -119
  908. package/dist/showcase/assets/overlays-HrH2wdTK.js +0 -408
  909. package/dist/showcase/assets/overlays-cp7VMq3b.js +0 -159
  910. package/dist/showcase/assets/package-CjcwDJKu.js +0 -1
  911. package/dist/showcase/assets/package-check-CCH3ax-x.js +0 -1
  912. package/dist/showcase/assets/page-action-button-Cn5j2_EP.js +0 -1
  913. package/dist/showcase/assets/page-header-CkvCF1MQ.js +0 -1
  914. package/dist/showcase/assets/pagination-DM5QGPo2.js +0 -42
  915. package/dist/showcase/assets/pagination-DUzHnhJ6.js +0 -1
  916. package/dist/showcase/assets/paperclip-DoqDQQVa.js +0 -1
  917. package/dist/showcase/assets/password-input-CfS4sfCl.js +0 -1
  918. package/dist/showcase/assets/pencil-C2OfFQMj.js +0 -1
  919. package/dist/showcase/assets/phone-CLvml_XI.js +0 -1
  920. package/dist/showcase/assets/plus-D5swsZCz.js +0 -1
  921. package/dist/showcase/assets/popover-menu-Bu9q96nE.js +0 -1
  922. package/dist/showcase/assets/popover-nCGXR4Yd.js +0 -1
  923. package/dist/showcase/assets/popover-xC8qczvP.js +0 -1
  924. package/dist/showcase/assets/products-BbSzEFvw.js +0 -407
  925. package/dist/showcase/assets/progress-DYfoy7pk.js +0 -1
  926. package/dist/showcase/assets/progress-ENNwjW3X.js +0 -18
  927. package/dist/showcase/assets/props-table-2pIZzGC-.js +0 -1
  928. package/dist/showcase/assets/props.generated-DggzG-JL.json +0 -38611
  929. package/dist/showcase/assets/quote-BO1bufuX.js +0 -1
  930. package/dist/showcase/assets/receipt-kIVP3kxJ.js +0 -1
  931. package/dist/showcase/assets/receipt-text-BDQIvI4l.js +0 -1
  932. package/dist/showcase/assets/refresh-cw-UdL93poQ.js +0 -1
  933. package/dist/showcase/assets/resolveValueLabel-DfiI3G4i.js +0 -1
  934. package/dist/showcase/assets/rich-text-editor-CNtfwLC2.js +0 -143
  935. package/dist/showcase/assets/rich-text-editor-DB4QWptQ.js +0 -124
  936. package/dist/showcase/assets/rotate-ccw-DQPoMfMY.js +0 -1
  937. package/dist/showcase/assets/save-Cd0ZM40i.js +0 -1
  938. package/dist/showcase/assets/schema-form-Cyc6vCVO.js +0 -325
  939. package/dist/showcase/assets/scroll-area-B5NZsDdi.js +0 -32
  940. package/dist/showcase/assets/scroll-area-BvTq99pz.js +0 -1
  941. package/dist/showcase/assets/select-BRbyPtx8.js +0 -1
  942. package/dist/showcase/assets/select-Dymyvyh6.js +0 -1
  943. package/dist/showcase/assets/send-BWzI7mwi.js +0 -1
  944. package/dist/showcase/assets/separator-BsYPzBlF.js +0 -1
  945. package/dist/showcase/assets/separator-Osp0OJ78.js +0 -28
  946. package/dist/showcase/assets/settings-DRmWJILI.js +0 -1
  947. package/dist/showcase/assets/sheet-BKsjMYMo.js +0 -1
  948. package/dist/showcase/assets/shield-D1EaWJMG.js +0 -1
  949. package/dist/showcase/assets/shield-alert-DWsbR2jn.js +0 -1
  950. package/dist/showcase/assets/shield-check-DUTAPADm.js +0 -1
  951. package/dist/showcase/assets/shopping-bag-XmeqUqk9.js +0 -1
  952. package/dist/showcase/assets/sidebar-B5uO9sUB.js +0 -1
  953. package/dist/showcase/assets/sidebar.context-CRjgeYJL.js +0 -1
  954. package/dist/showcase/assets/skeleton-BtiPkfxB.js +0 -1
  955. package/dist/showcase/assets/skeleton-DbybIpkV.js +0 -29
  956. package/dist/showcase/assets/slider-vuwVVBby.js +0 -1
  957. package/dist/showcase/assets/sliders-horizontal-BE_cwUn0.js +0 -1
  958. package/dist/showcase/assets/smart-card-Dhu_1A_u.js +0 -1
  959. package/dist/showcase/assets/sonner-DZB-G4q5.js +0 -22
  960. package/dist/showcase/assets/sortable.esm-YOwRw8Hr.js +0 -5
  961. package/dist/showcase/assets/sparkles-N8rqKQez.js +0 -1
  962. package/dist/showcase/assets/spinner-B5zKCNXu.js +0 -30
  963. package/dist/showcase/assets/spinner-BOjRziLu.js +0 -1
  964. package/dist/showcase/assets/spinner-PIr8y8av.js +0 -49
  965. package/dist/showcase/assets/square-pen-ImRrVwT8.js +0 -1
  966. package/dist/showcase/assets/stacked-avatars-DnIAc098.js +0 -1
  967. package/dist/showcase/assets/star-BaV-UTPq.js +0 -1
  968. package/dist/showcase/assets/startOfDay-CtTeiGV0.js +0 -1
  969. package/dist/showcase/assets/styles-Bv0pDLVi.js +0 -1
  970. package/dist/showcase/assets/suggestions-QnLPdgnG.js +0 -126
  971. package/dist/showcase/assets/switch-DwAS_TXx.js +0 -1
  972. package/dist/showcase/assets/switch-xzxCDtyg.js +0 -1
  973. package/dist/showcase/assets/sync-LeYxWAap.js +0 -107
  974. package/dist/showcase/assets/table-BbEFanNu.js +0 -1
  975. package/dist/showcase/assets/table-CVVHBty6.js +0 -382
  976. package/dist/showcase/assets/table-actions-DvI9U67L.js +0 -1
  977. package/dist/showcase/assets/tabs-CLcyGwLd.js +0 -1
  978. package/dist/showcase/assets/tabs-ck8y1Bjr.js +0 -19
  979. package/dist/showcase/assets/tags-input-DmBY2CKI.js +0 -1
  980. package/dist/showcase/assets/text-button-C54O1rZM.js +0 -1
  981. package/dist/showcase/assets/text-link-9_mZpq_f.js +0 -1
  982. package/dist/showcase/assets/textarea-CHvnWHWH.js +0 -1
  983. package/dist/showcase/assets/textarea-jexcMklP.js +0 -1
  984. package/dist/showcase/assets/timelines-uvFVjEQv.js +0 -200
  985. package/dist/showcase/assets/toggle-group-B3fORi8i.js +0 -1
  986. package/dist/showcase/assets/toggles-Cox6Yk2k.js +0 -71
  987. package/dist/showcase/assets/toggles-group-CSvSPqCB.js +0 -32
  988. package/dist/showcase/assets/trash-2-CE9bDw49.js +0 -1
  989. package/dist/showcase/assets/trending-up-0iJl0XvC.js +0 -1
  990. package/dist/showcase/assets/truck-DlhOPoCD.js +0 -1
  991. package/dist/showcase/assets/typography-BotOITw4.js +0 -223
  992. package/dist/showcase/assets/ui-badge-hfmO1K3-.js +0 -28
  993. package/dist/showcase/assets/ui-card-Aigzxhn3.js +0 -30
  994. package/dist/showcase/assets/ui-table-CKif9sNO.js +0 -42
  995. package/dist/showcase/assets/upload-tray-BnKDNrw9.js +0 -138
  996. package/dist/showcase/assets/use-layout-link-BQ6Y9z__.js +0 -1
  997. package/dist/showcase/assets/useAnchoredPopupScrollLock-CP1vkwD7.js +0 -1
  998. package/dist/showcase/assets/useAriaLabelledBy-J_Rvjwx3.js +0 -1
  999. package/dist/showcase/assets/useCollapsiblePanel-BwUOowW2.js +0 -1
  1000. package/dist/showcase/assets/useCompositeItem-D3XOIML-.js +0 -1
  1001. package/dist/showcase/assets/useCompositeListItem-BWfShNPP.js +0 -1
  1002. package/dist/showcase/assets/useLabelableId-DxorZ3YW.js +0 -1
  1003. package/dist/showcase/assets/useOpenInteractionType-DLUX6CcH.js +0 -1
  1004. package/dist/showcase/assets/useRender-B9zzqKA1.js +0 -1
  1005. package/dist/showcase/assets/useTriggerFocusGuards-BSvL8pKg.js +0 -1
  1006. package/dist/showcase/assets/useValueChanged-DSoTBFAJ.js +0 -1
  1007. package/dist/showcase/assets/user-BZog6aIh.js +0 -1
  1008. package/dist/showcase/assets/user-plus-CPxlPoxf.js +0 -1
  1009. package/dist/showcase/assets/users-BgXAp2UO.js +0 -1
  1010. package/dist/showcase/assets/vendor-profile-BLYiDIrO.js +0 -37
  1011. package/dist/showcase/assets/video-YBnCbmIb.js +0 -1
  1012. package/dist/showcase/assets/wrench-BFTavxzg.js +0 -1
  1013. package/dist/showcase/assets/x-D8UN9pOu.js +0 -1
  1014. package/dist/showcase/assets/zap-DIJUAJEb.js +0 -1
@@ -0,0 +1,118 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import { t } from "./badge-6WYAMJwA.js";
3
+ import * as n from "react";
4
+ import { useCallback as r, useEffect as i, useMemo as a } from "react";
5
+ import { jsx as o } from "react/jsx-runtime";
6
+ //#region src/components/layout/layout.types.tsx
7
+ var s = ({ href: e, children: t, disabled: n, external: r, rel: i, target: a, ...s }) => !e || n ? /* @__PURE__ */ o("span", {
8
+ ...s,
9
+ children: t
10
+ }) : /* @__PURE__ */ o("a", {
11
+ href: e,
12
+ target: a ?? (r ? "_blank" : void 0),
13
+ rel: i ?? (r ? "noopener noreferrer" : void 0),
14
+ ...s,
15
+ children: t
16
+ }), c = ({ children: e, ...t }) => /* @__PURE__ */ o("a", {
17
+ ...t,
18
+ children: e
19
+ });
20
+ function l({ renderLink: e, LinkComponent: t } = {}) {
21
+ return e || (t ? ({ active: e, disabled: n, external: r, children: i, ...a }) => n || !a.href ? /* @__PURE__ */ o("span", {
22
+ className: a.className,
23
+ children: i
24
+ }) : /* @__PURE__ */ o(t, {
25
+ ...a,
26
+ children: i
27
+ }) : s);
28
+ }
29
+ //#endregion
30
+ //#region src/components/layout/hooks/use-layout-link.tsx
31
+ function u({ renderLink: e, LinkComponent: t } = {}) {
32
+ return a(() => l({
33
+ renderLink: e,
34
+ LinkComponent: t
35
+ }), [e, t]);
36
+ }
37
+ //#endregion
38
+ //#region src/components/layout/sidebar/sidebar.utils.tsx
39
+ function d(e) {
40
+ if (e.startsWith("#/")) return e.slice(1).split("?")[0]?.split("#")[0] || "/";
41
+ try {
42
+ return new URL(e, "http://local.invalid").pathname;
43
+ } catch {
44
+ return e;
45
+ }
46
+ }
47
+ function f(e, t) {
48
+ let n = d(e);
49
+ return n === t || n.startsWith(t + "/") || n.startsWith(t + "?");
50
+ }
51
+ function p(e) {
52
+ return e.label ?? e.title ?? "";
53
+ }
54
+ function m(e, t) {
55
+ let n = p(e);
56
+ return e.handle ?? e.href ?? (typeof n == "string" || typeof n == "number" ? n : `nav-${t ?? 0}`);
57
+ }
58
+ function h({ value: n, size: r = "default" }) {
59
+ return /* @__PURE__ */ o(t, {
60
+ variant: "secondary",
61
+ className: e("ml-auto rounded-full tabular-nums text-sidebar-foreground", r === "small" ? "h-4 min-w-4 px-1.5" : "h-5 min-w-5 px-1.5"),
62
+ children: n
63
+ });
64
+ }
65
+ function g(e, t, n) {
66
+ return e && n && n[e] != null ? n[e] : t;
67
+ }
68
+ function _({ icon: t, iconMap: r = {}, size: i = 20, className: a = "size-4", ...s }) {
69
+ if (!t) return null;
70
+ if (typeof t == "string") {
71
+ let e = r[t];
72
+ return e ? /* @__PURE__ */ o(e, { className: a }) : null;
73
+ }
74
+ return n.isValidElement(t) ? n.cloneElement(t, {
75
+ className: e(a, t.props.className),
76
+ ...s
77
+ }) : typeof t == "function" || typeof t == "object" && t && "$$typeof" in t ? /* @__PURE__ */ o(t, {
78
+ className: a,
79
+ width: i,
80
+ height: i,
81
+ ...s
82
+ }) : null;
83
+ }
84
+ function v(e, t, n, r, i) {
85
+ return e({
86
+ href: t.href,
87
+ children: n,
88
+ className: r,
89
+ active: i,
90
+ disabled: t.disabled || !t.href,
91
+ external: t.external
92
+ });
93
+ }
94
+ //#endregion
95
+ //#region src/components/layout/hooks/use-active-path.ts
96
+ function y(e = "/") {
97
+ return r((t) => !!t && f(e, d(t)), [e]);
98
+ }
99
+ //#endregion
100
+ //#region src/components/layout/hooks/use-command-shortcut.ts
101
+ function b({ key: e, enabled: t = !0, onTrigger: n, preventDefault: r = !0 }) {
102
+ i(() => {
103
+ if (!t || !n || typeof document > "u") return;
104
+ let i = (t) => {
105
+ (t.metaKey || t.ctrlKey) && t.key.toLowerCase() === e.toLowerCase() && (r && t.preventDefault(), n());
106
+ };
107
+ return document.addEventListener("keydown", i), () => document.removeEventListener("keydown", i);
108
+ }, [
109
+ t,
110
+ e,
111
+ n,
112
+ r
113
+ ]);
114
+ }
115
+ //#endregion
116
+ export { m as a, v as c, u as d, c as f, h as i, g as l, l as m, y as n, p as o, s as p, _ as r, f as s, b as t, d as u };
117
+
118
+ //# sourceMappingURL=hooks-BkXvZ4py.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-BkXvZ4py.js","names":[],"sources":["../../src/components/layout/layout.types.tsx","../../src/components/layout/hooks/use-layout-link.tsx","../../src/components/layout/sidebar/sidebar.utils.tsx","../../src/components/layout/hooks/use-active-path.ts","../../src/components/layout/hooks/use-command-shortcut.ts"],"sourcesContent":[" \n/**\n * Shared layout types used across page, header, and sidebar.\n *\n * The layout layer is framework-agnostic by contract. It never imports a\n * router package. Navigation is delegated to the consumer through\n * `renderLink`, with a backwards-compatible `LinkComponent` bridge for older\n * call sites.\n */\nimport type { ComponentType, MouseEvent, ReactNode } from 'react';\n\nexport interface LayoutLinkRenderProps {\n\t/** Destination URL. When omitted, render non-interactive content. */\n\thref?: string;\n\tchildren: ReactNode;\n\tclassName?: string;\n\ttarget?: string;\n\trel?: string;\n\tonClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n\t'aria-label'?: string;\n\t/** Consumer hint for active styling; renderers may ignore it. */\n\tactive?: boolean;\n\t/** Consumer hint to render as muted/non-interactive. */\n\tdisabled?: boolean;\n\t/** Consumer hint for external-link behavior. */\n\texternal?: boolean;\n}\n\n/**\n * Primary navigation seam. Consumers can wire Inertia, Next, React Router,\n * TanStack Router, or a plain anchor without this package importing them.\n *\n * Example:\n * renderLink={({ href, children, className }) => (\n * <Link href={href ?? '#'} className={className}>{children}</Link>\n * )}\n */\nexport type LayoutLinkRenderer = (props: LayoutLinkRenderProps) => ReactNode;\n\n/** Backwards-compatible component style. Prefer `renderLink` for new code. */\nexport type LinkComponent = ComponentType<{\n\thref?: string;\n\tclassName?: string;\n\tchildren?: ReactNode;\n\ttarget?: string;\n\trel?: string;\n\tonClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n\t'aria-label'?: string;\n}>;\n\nexport interface LayoutNavigationAdapter {\n\t/** Preferred renderer for framework-native links. */\n\trenderLink?: LayoutLinkRenderer;\n\t/** Compatibility bridge for old call sites. Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\n/** Default link renderer — native anchor with disabled fallback. */\nexport const defaultRenderLink: LayoutLinkRenderer = ({\n\thref,\n\tchildren,\n\tdisabled,\n\texternal,\n\trel,\n\ttarget,\n\t...props\n}) => {\n\tif (!href || disabled) {\n\t\treturn <span {...props}>{children}</span>;\n\t}\n\n\tconst resolvedTarget = target ?? (external ? '_blank' : undefined);\n\tconst resolvedRel = rel ?? (external ? 'noopener noreferrer' : undefined);\n\n\treturn (\n\t\t<a href={href} target={resolvedTarget} rel={resolvedRel} {...props}>\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n\nexport const DefaultLinkComponent: LinkComponent = ({ children, ...props }) => (\n\t<a {...props}>{children}</a>\n);\n\n/** Resolve the final renderer while preserving `LinkComponent` compatibility. */\nexport function resolveLayoutLinkRenderer({\n\trenderLink,\n\tLinkComponent,\n}: LayoutNavigationAdapter = {}): LayoutLinkRenderer {\n\tif (renderLink) return renderLink;\n\tif (LinkComponent) {\n\t\treturn ({ active, disabled, external, children, ...props }) => {\n\t\t\tvoid active;\n\t\t\tvoid external;\n\t\t\tif (disabled || !props.href) return <span className={props.className}>{children}</span>;\n\t\t\treturn <LinkComponent {...props}>{children}</LinkComponent>;\n\t\t};\n\t}\n\treturn defaultRenderLink;\n}\n\n/** Plain navigation item used by sidebar / breadcrumbs / page header. */\nexport interface NavLink {\n\tlabel: ReactNode;\n\thref?: string;\n\thandle?: string;\n\tbadge?: string | number;\n\tdisabled?: boolean;\n\texternal?: boolean;\n}\n\n/** Hierarchical navigation item — extends `NavLink` with optional children. */\nexport interface NavItem extends NavLink {\n\ticon?: LayoutIconSource;\n\tchildren?: NavItem[];\n\tgroup?: string;\n}\n\n/** Breadcrumb entry. The last item with no `href` renders as the current page. */\nexport interface BreadcrumbItem {\n\tlabel: ReactNode;\n\thref?: string;\n\thandle?: string;\n}\n\nexport type LayoutIconSource =\n\t| ComponentType<{ className?: string }>\n\t| ComponentType<React.SVGProps<SVGSVGElement>>\n\t| ReactNode\n\t| string;\n\nexport interface LayoutUser {\n\tname: string;\n\temail?: string;\n\tavatar?: string;\n\trole?: string;\n}\n\nexport interface ExternalLinkItem {\n\tlabel: ReactNode;\n\turl: string;\n\ticon?: ComponentType<{ className?: string }>;\n}\n","import { useMemo } from 'react';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport function useLayoutLinkRenderer({\n\trenderLink,\n\tLinkComponent,\n}: LayoutNavigationAdapter = {}): LayoutLinkRenderer {\n\treturn useMemo(\n\t\t() => resolveLayoutLinkRenderer({ renderLink, LinkComponent }),\n\t\t[renderLink, LinkComponent],\n\t);\n}\n"," \n/** Sidebar utilities — pure path helpers, labels, icon rendering, badge pill. */\nimport * as React from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type { LayoutIconSource, LayoutLinkRenderer } from '../layout.types';\nimport type { SidebarNavItem } from './sidebar.types';\n\nexport function toPath(href: string): string {\n\tif (href.startsWith('#/')) {\n\t\treturn href.slice(1).split('?')[0]?.split('#')[0] || '/';\n\t}\n\n\ttry {\n\t\treturn new URL(href, 'http://local.invalid').pathname;\n\t} catch {\n\t\treturn href;\n\t}\n}\n\nexport function isPathMatch(currentUrl: string, path: string): boolean {\n\tconst currentPath = toPath(currentUrl);\n\treturn currentPath === path || currentPath.startsWith(path + '/') || currentPath.startsWith(path + '?');\n}\n\nexport function getNavLabel(item: Pick<SidebarNavItem, 'label' | 'title'>): React.ReactNode {\n\treturn item.label ?? item.title ?? '';\n}\n\nexport function getNavKey(item: SidebarNavItem, fallbackIndex?: number): React.Key {\n\tconst label = getNavLabel(item);\n\treturn item.handle ?? item.href ?? (typeof label === 'string' || typeof label === 'number' ? label : `nav-${fallbackIndex ?? 0}`);\n}\n\nexport function NavBadge({\n\tvalue,\n\tsize = 'default',\n}: {\n\tvalue: string | number;\n\tsize?: 'default' | 'small';\n}) {\n\treturn (\n\t\t<Badge\n\t\t\tvariant=\"secondary\"\n\t\t\tclassName={cn(\n\t\t\t\t'ml-auto rounded-full tabular-nums text-sidebar-foreground',\n\t\t\t\tsize === 'small' ? 'h-4 min-w-4 px-1.5' : 'h-5 min-w-5 px-1.5',\n\t\t\t)}\n\t\t>\n\t\t\t{value}\n\t\t</Badge>\n\t);\n}\n\nexport function resolveNavBadge(\n\thandle: string | undefined,\n\titemBadge: string | number | undefined,\n\tliveBadges: Record<string, string | number> | undefined,\n): string | number | undefined {\n\tif (handle && liveBadges && liveBadges[handle] != null) {\n\t\treturn liveBadges[handle];\n\t}\n\treturn itemBadge;\n}\n\nexport interface DynamicIconProps extends React.SVGProps<SVGSVGElement> {\n\ticon: LayoutIconSource;\n\ticonMap?: Record<string, React.ComponentType<{ className?: string }>>;\n\tsize?: number;\n\tclassName?: string;\n}\n\nexport function DynamicIcon({\n\ticon,\n\ticonMap = {},\n\tsize = 20,\n\tclassName = 'size-4',\n\t...props\n}: DynamicIconProps) {\n\tif (!icon) return null;\n\n\tif (typeof icon === 'string') {\n\t\tconst IconComponent = iconMap[icon];\n\t\treturn IconComponent ? <IconComponent className={className} /> : null;\n\t}\n\n\tif (React.isValidElement(icon)) {\n\t\treturn React.cloneElement(icon as React.ReactElement<React.SVGProps<SVGSVGElement>>, {\n\t\t\tclassName: cn(className, (icon.props as { className?: string }).className),\n\t\t\t...props,\n\t\t});\n\t}\n\n\tif (\n\t\ttypeof icon === 'function'\n\t\t|| (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\n\t) {\n\t\tconst IconComponent = icon as React.ElementType<React.SVGProps<SVGSVGElement>>;\n\t\treturn <IconComponent className={className} width={size} height={size} {...props} />;\n\t}\n\n\treturn null;\n}\n\nexport function renderSidebarLink(\n\trenderLink: LayoutLinkRenderer,\n\titem: SidebarNavItem,\n\tchildren: React.ReactNode,\n\tclassName?: string,\n\tactive?: boolean,\n) {\n\treturn renderLink({\n\t\thref: item.href,\n\t\tchildren,\n\t\tclassName,\n\t\tactive,\n\t\tdisabled: item.disabled || !item.href,\n\t\texternal: item.external,\n\t});\n}\n","import { useCallback } from 'react';\n\nimport { isPathMatch, toPath } from '../sidebar/sidebar.utils';\n\nexport function useActivePath(currentUrl = '/') {\n\treturn useCallback(\n\t\t(href?: string) => !!href && isPathMatch(currentUrl, toPath(href)),\n\t\t[currentUrl],\n\t);\n}\n","import { useEffect } from 'react';\n\nexport interface UseCommandShortcutOptions {\n\tkey: string;\n\tenabled?: boolean;\n\tonTrigger?: () => void;\n\tpreventDefault?: boolean;\n}\n\nexport function useCommandShortcut({\n\tkey,\n\tenabled = true,\n\tonTrigger,\n\tpreventDefault = true,\n}: UseCommandShortcutOptions) {\n\tuseEffect(() => {\n\t\tif (!enabled || !onTrigger || typeof document === 'undefined') return;\n\n\t\tconst handler = (event: KeyboardEvent) => {\n\t\t\tif (!(event.metaKey || event.ctrlKey)) return;\n\t\t\tif (event.key.toLowerCase() !== key.toLowerCase()) return;\n\t\t\tif (preventDefault) event.preventDefault();\n\t\t\tonTrigger();\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handler);\n\t\treturn () => document.removeEventListener('keydown', handler);\n\t}, [enabled, key, onTrigger, preventDefault]);\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/utils.cjs"),n=require("./badge-CBof1rbF.cjs");let r=require("react");r=e.t(r,1);let i=require("react/jsx-runtime");var a=({href:e,children:t,disabled:n,external:r,rel:a,target:o,...s})=>!e||n?(0,i.jsx)(`span`,{...s,children:t}):(0,i.jsx)(`a`,{href:e,target:o??(r?`_blank`:void 0),rel:a??(r?`noopener noreferrer`:void 0),...s,children:t}),o=({children:e,...t})=>(0,i.jsx)(`a`,{...t,children:e});function s({renderLink:e,LinkComponent:t}={}){return e||(t?({active:e,disabled:n,external:r,children:a,...o})=>n||!o.href?(0,i.jsx)(`span`,{className:o.className,children:a}):(0,i.jsx)(t,{...o,children:a}):a)}function c({renderLink:e,LinkComponent:t}={}){return(0,r.useMemo)(()=>s({renderLink:e,LinkComponent:t}),[e,t])}function l(e){if(e.startsWith(`#/`))return e.slice(1).split(`?`)[0]?.split(`#`)[0]||`/`;try{return new URL(e,`http://local.invalid`).pathname}catch{return e}}function u(e,t){let n=l(e);return n===t||n.startsWith(t+`/`)||n.startsWith(t+`?`)}function d(e){return e.label??e.title??``}function f(e,t){let n=d(e);return e.handle??e.href??(typeof n==`string`||typeof n==`number`?n:`nav-${t??0}`)}function p({value:e,size:r=`default`}){return(0,i.jsx)(n.t,{variant:`secondary`,className:t.cn(`ml-auto rounded-full tabular-nums text-sidebar-foreground`,r===`small`?`h-4 min-w-4 px-1.5`:`h-5 min-w-5 px-1.5`),children:e})}function m(e,t,n){return e&&n&&n[e]!=null?n[e]:t}function h({icon:e,iconMap:n={},size:a=20,className:o=`size-4`,...s}){if(!e)return null;if(typeof e==`string`){let t=n[e];return t?(0,i.jsx)(t,{className:o}):null}return r.isValidElement(e)?r.cloneElement(e,{className:t.cn(o,e.props.className),...s}):typeof e==`function`||typeof e==`object`&&e&&`$$typeof`in e?(0,i.jsx)(e,{className:o,width:a,height:a,...s}):null}function g(e,t,n,r,i){return e({href:t.href,children:n,className:r,active:i,disabled:t.disabled||!t.href,external:t.external})}function _(e=`/`){return(0,r.useCallback)(t=>!!t&&u(e,l(t)),[e])}function v({key:e,enabled:t=!0,onTrigger:n,preventDefault:i=!0}){(0,r.useEffect)(()=>{if(!t||!n||typeof document>`u`)return;let r=t=>{(t.metaKey||t.ctrlKey)&&t.key.toLowerCase()===e.toLowerCase()&&(i&&t.preventDefault(),n())};return document.addEventListener(`keydown`,r),()=>document.removeEventListener(`keydown`,r)},[t,e,n,i])}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return l}});
2
+ //# sourceMappingURL=hooks-D3SbLBRk.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-D3SbLBRk.cjs","names":[],"sources":["../../src/components/layout/layout.types.tsx","../../src/components/layout/hooks/use-layout-link.tsx","../../src/components/layout/sidebar/sidebar.utils.tsx","../../src/components/layout/hooks/use-active-path.ts","../../src/components/layout/hooks/use-command-shortcut.ts"],"sourcesContent":[" \n/**\n * Shared layout types used across page, header, and sidebar.\n *\n * The layout layer is framework-agnostic by contract. It never imports a\n * router package. Navigation is delegated to the consumer through\n * `renderLink`, with a backwards-compatible `LinkComponent` bridge for older\n * call sites.\n */\nimport type { ComponentType, MouseEvent, ReactNode } from 'react';\n\nexport interface LayoutLinkRenderProps {\n\t/** Destination URL. When omitted, render non-interactive content. */\n\thref?: string;\n\tchildren: ReactNode;\n\tclassName?: string;\n\ttarget?: string;\n\trel?: string;\n\tonClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n\t'aria-label'?: string;\n\t/** Consumer hint for active styling; renderers may ignore it. */\n\tactive?: boolean;\n\t/** Consumer hint to render as muted/non-interactive. */\n\tdisabled?: boolean;\n\t/** Consumer hint for external-link behavior. */\n\texternal?: boolean;\n}\n\n/**\n * Primary navigation seam. Consumers can wire Inertia, Next, React Router,\n * TanStack Router, or a plain anchor without this package importing them.\n *\n * Example:\n * renderLink={({ href, children, className }) => (\n * <Link href={href ?? '#'} className={className}>{children}</Link>\n * )}\n */\nexport type LayoutLinkRenderer = (props: LayoutLinkRenderProps) => ReactNode;\n\n/** Backwards-compatible component style. Prefer `renderLink` for new code. */\nexport type LinkComponent = ComponentType<{\n\thref?: string;\n\tclassName?: string;\n\tchildren?: ReactNode;\n\ttarget?: string;\n\trel?: string;\n\tonClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n\t'aria-label'?: string;\n}>;\n\nexport interface LayoutNavigationAdapter {\n\t/** Preferred renderer for framework-native links. */\n\trenderLink?: LayoutLinkRenderer;\n\t/** Compatibility bridge for old call sites. Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\n/** Default link renderer — native anchor with disabled fallback. */\nexport const defaultRenderLink: LayoutLinkRenderer = ({\n\thref,\n\tchildren,\n\tdisabled,\n\texternal,\n\trel,\n\ttarget,\n\t...props\n}) => {\n\tif (!href || disabled) {\n\t\treturn <span {...props}>{children}</span>;\n\t}\n\n\tconst resolvedTarget = target ?? (external ? '_blank' : undefined);\n\tconst resolvedRel = rel ?? (external ? 'noopener noreferrer' : undefined);\n\n\treturn (\n\t\t<a href={href} target={resolvedTarget} rel={resolvedRel} {...props}>\n\t\t\t{children}\n\t\t</a>\n\t);\n};\n\nexport const DefaultLinkComponent: LinkComponent = ({ children, ...props }) => (\n\t<a {...props}>{children}</a>\n);\n\n/** Resolve the final renderer while preserving `LinkComponent` compatibility. */\nexport function resolveLayoutLinkRenderer({\n\trenderLink,\n\tLinkComponent,\n}: LayoutNavigationAdapter = {}): LayoutLinkRenderer {\n\tif (renderLink) return renderLink;\n\tif (LinkComponent) {\n\t\treturn ({ active, disabled, external, children, ...props }) => {\n\t\t\tvoid active;\n\t\t\tvoid external;\n\t\t\tif (disabled || !props.href) return <span className={props.className}>{children}</span>;\n\t\t\treturn <LinkComponent {...props}>{children}</LinkComponent>;\n\t\t};\n\t}\n\treturn defaultRenderLink;\n}\n\n/** Plain navigation item used by sidebar / breadcrumbs / page header. */\nexport interface NavLink {\n\tlabel: ReactNode;\n\thref?: string;\n\thandle?: string;\n\tbadge?: string | number;\n\tdisabled?: boolean;\n\texternal?: boolean;\n}\n\n/** Hierarchical navigation item — extends `NavLink` with optional children. */\nexport interface NavItem extends NavLink {\n\ticon?: LayoutIconSource;\n\tchildren?: NavItem[];\n\tgroup?: string;\n}\n\n/** Breadcrumb entry. The last item with no `href` renders as the current page. */\nexport interface BreadcrumbItem {\n\tlabel: ReactNode;\n\thref?: string;\n\thandle?: string;\n}\n\nexport type LayoutIconSource =\n\t| ComponentType<{ className?: string }>\n\t| ComponentType<React.SVGProps<SVGSVGElement>>\n\t| ReactNode\n\t| string;\n\nexport interface LayoutUser {\n\tname: string;\n\temail?: string;\n\tavatar?: string;\n\trole?: string;\n}\n\nexport interface ExternalLinkItem {\n\tlabel: ReactNode;\n\turl: string;\n\ticon?: ComponentType<{ className?: string }>;\n}\n","import { useMemo } from 'react';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport function useLayoutLinkRenderer({\n\trenderLink,\n\tLinkComponent,\n}: LayoutNavigationAdapter = {}): LayoutLinkRenderer {\n\treturn useMemo(\n\t\t() => resolveLayoutLinkRenderer({ renderLink, LinkComponent }),\n\t\t[renderLink, LinkComponent],\n\t);\n}\n"," \n/** Sidebar utilities — pure path helpers, labels, icon rendering, badge pill. */\nimport * as React from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type { LayoutIconSource, LayoutLinkRenderer } from '../layout.types';\nimport type { SidebarNavItem } from './sidebar.types';\n\nexport function toPath(href: string): string {\n\tif (href.startsWith('#/')) {\n\t\treturn href.slice(1).split('?')[0]?.split('#')[0] || '/';\n\t}\n\n\ttry {\n\t\treturn new URL(href, 'http://local.invalid').pathname;\n\t} catch {\n\t\treturn href;\n\t}\n}\n\nexport function isPathMatch(currentUrl: string, path: string): boolean {\n\tconst currentPath = toPath(currentUrl);\n\treturn currentPath === path || currentPath.startsWith(path + '/') || currentPath.startsWith(path + '?');\n}\n\nexport function getNavLabel(item: Pick<SidebarNavItem, 'label' | 'title'>): React.ReactNode {\n\treturn item.label ?? item.title ?? '';\n}\n\nexport function getNavKey(item: SidebarNavItem, fallbackIndex?: number): React.Key {\n\tconst label = getNavLabel(item);\n\treturn item.handle ?? item.href ?? (typeof label === 'string' || typeof label === 'number' ? label : `nav-${fallbackIndex ?? 0}`);\n}\n\nexport function NavBadge({\n\tvalue,\n\tsize = 'default',\n}: {\n\tvalue: string | number;\n\tsize?: 'default' | 'small';\n}) {\n\treturn (\n\t\t<Badge\n\t\t\tvariant=\"secondary\"\n\t\t\tclassName={cn(\n\t\t\t\t'ml-auto rounded-full tabular-nums text-sidebar-foreground',\n\t\t\t\tsize === 'small' ? 'h-4 min-w-4 px-1.5' : 'h-5 min-w-5 px-1.5',\n\t\t\t)}\n\t\t>\n\t\t\t{value}\n\t\t</Badge>\n\t);\n}\n\nexport function resolveNavBadge(\n\thandle: string | undefined,\n\titemBadge: string | number | undefined,\n\tliveBadges: Record<string, string | number> | undefined,\n): string | number | undefined {\n\tif (handle && liveBadges && liveBadges[handle] != null) {\n\t\treturn liveBadges[handle];\n\t}\n\treturn itemBadge;\n}\n\nexport interface DynamicIconProps extends React.SVGProps<SVGSVGElement> {\n\ticon: LayoutIconSource;\n\ticonMap?: Record<string, React.ComponentType<{ className?: string }>>;\n\tsize?: number;\n\tclassName?: string;\n}\n\nexport function DynamicIcon({\n\ticon,\n\ticonMap = {},\n\tsize = 20,\n\tclassName = 'size-4',\n\t...props\n}: DynamicIconProps) {\n\tif (!icon) return null;\n\n\tif (typeof icon === 'string') {\n\t\tconst IconComponent = iconMap[icon];\n\t\treturn IconComponent ? <IconComponent className={className} /> : null;\n\t}\n\n\tif (React.isValidElement(icon)) {\n\t\treturn React.cloneElement(icon as React.ReactElement<React.SVGProps<SVGSVGElement>>, {\n\t\t\tclassName: cn(className, (icon.props as { className?: string }).className),\n\t\t\t...props,\n\t\t});\n\t}\n\n\tif (\n\t\ttypeof icon === 'function'\n\t\t|| (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\n\t) {\n\t\tconst IconComponent = icon as React.ElementType<React.SVGProps<SVGSVGElement>>;\n\t\treturn <IconComponent className={className} width={size} height={size} {...props} />;\n\t}\n\n\treturn null;\n}\n\nexport function renderSidebarLink(\n\trenderLink: LayoutLinkRenderer,\n\titem: SidebarNavItem,\n\tchildren: React.ReactNode,\n\tclassName?: string,\n\tactive?: boolean,\n) {\n\treturn renderLink({\n\t\thref: item.href,\n\t\tchildren,\n\t\tclassName,\n\t\tactive,\n\t\tdisabled: item.disabled || !item.href,\n\t\texternal: item.external,\n\t});\n}\n","import { useCallback } from 'react';\n\nimport { isPathMatch, toPath } from '../sidebar/sidebar.utils';\n\nexport function useActivePath(currentUrl = '/') {\n\treturn useCallback(\n\t\t(href?: string) => !!href && isPathMatch(currentUrl, toPath(href)),\n\t\t[currentUrl],\n\t);\n}\n","import { useEffect } from 'react';\n\nexport interface UseCommandShortcutOptions {\n\tkey: string;\n\tenabled?: boolean;\n\tonTrigger?: () => void;\n\tpreventDefault?: boolean;\n}\n\nexport function useCommandShortcut({\n\tkey,\n\tenabled = true,\n\tonTrigger,\n\tpreventDefault = true,\n}: UseCommandShortcutOptions) {\n\tuseEffect(() => {\n\t\tif (!enabled || !onTrigger || typeof document === 'undefined') return;\n\n\t\tconst handler = (event: KeyboardEvent) => {\n\t\t\tif (!(event.metaKey || event.ctrlKey)) return;\n\t\t\tif (event.key.toLowerCase() !== key.toLowerCase()) return;\n\t\t\tif (preventDefault) event.preventDefault();\n\t\t\tonTrigger();\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handler);\n\t\treturn () => document.removeEventListener('keydown', handler);\n\t}, [enabled, key, onTrigger, preventDefault]);\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("../lib/strings.cjs"),t=require("../lib/utils.cjs"),n=require("./button-BI347RlM.cjs"),r=require("./heading-0DYCOrgC.cjs"),i=require("./badge-CBof1rbF.cjs"),a=require("./popover-CaHvG8Vj.cjs"),o=require("./command-DRIySU26.cjs"),s=require("./command-Bxe_FmGD.cjs");let c=require("react"),l=require("react/jsx-runtime"),u=require("lucide-react");function d(e={}){let{resources:t,onResourceSearch:n,initialMentions:r,debounceMs:i=200}=e,a=(0,c.useMemo)(()=>t?Object.keys(t):[],[t]),[o,s]=(0,c.useState)(()=>a[0]??null),[l,u]=(0,c.useState)(!1),[d,f]=(0,c.useState)(``),[p,m]=(0,c.useState)({}),[h,g]=(0,c.useState)(!1),[_,v]=(0,c.useState)(()=>r?[...r]:[]),y=(0,c.useRef)(0),b=(0,c.useRef)(null);(0,c.useEffect)(()=>{if(a.length===0){s(null);return}(!o||!a.includes(o))&&s(a[0])},[o,a]);let x=(0,c.useMemo)(()=>o&&t?t[o]??null:null,[o,t]),S=(0,c.useCallback)(async(e,r)=>{let i=t?.[e];if(i?.search)return(await i.search(r)).map(t=>({...t,kind:e}));if(i?.suggestions){let t=i.suggestions;return(r.trim().length===0?t:t.filter(e=>e.label.toLowerCase().includes(r.toLowerCase()))).map(t=>({...t,kind:e}))}return n?(await n(r,e)).map(t=>({...t,kind:e})):[]},[t,n]);(0,c.useEffect)(()=>{if(b.current&&clearTimeout(b.current),a.length===0){m({});return}let e=++y.current,t=async()=>{g(!0);try{let t=await Promise.all(a.map(async e=>{try{return[e,await S(e,d)]}catch{return[e,[]]}}));if(e!==y.current)return;let n={};for(let[e,r]of t)n[e]=r;m(n)}finally{e===y.current&&g(!1)}};return b.current=setTimeout(()=>{t()},i),()=>{b.current&&clearTimeout(b.current)}},[a,d,S,i]),(0,c.useEffect)(()=>{if(l||!o||(p[o]??[]).length>0)return;let e=a.find(e=>(p[e]?.length??0)>0);e&&e!==o&&s(e)},[o,a,l,p]);let C=(0,c.useCallback)(e=>{s(e)},[]),w=(0,c.useCallback)(e=>{f(e)},[]),T=(0,c.useCallback)(e=>{v(t=>t.some(t=>t.id===e.id)?t:[...t,e])},[]),E=(0,c.useCallback)(e=>{v(t=>t.filter(t=>t.id!==e))},[]),D=(0,c.useCallback)(e=>{v([...e])},[]),O=(0,c.useCallback)(()=>{v([]),f(``),u(!1),y.current++},[]),k=(0,c.useCallback)(e=>{let n=e.kind??o,r=`${n}:${e.id}`,i=t?.[n],a=e.href??i?.buildHref?.(e),s={id:r,kind:n,label:e.label,href:a,data:e.data};return T(s),s},[o,T,t]);return{kinds:a,activeKind:o,setActiveKind:C,activeResource:x,query:d,setQuery:w,suggestions:(0,c.useMemo)(()=>o?p[o]??[]:[],[o,p]),suggestionsByKind:p,isLoading:h,mentions:_,addMention:T,removeMention:E,setMentions:D,reset:O,selectSuggestion:k,manualKindOverride:l,setManualKindOverride:u}}function f(e,t){let n=String(e.label??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),r=String(e.id).replace(/"/g,`&quot;`),i=String(e.kind).replace(/"/g,`&quot;`),a=t?.tone?String(t.tone).replace(/"/g,`&quot;`):``,o=t?.triggerChar??(e.kind===`user`?`@`:``);return`<span class="rsc-mention" data-ref-id="${r}" data-ref-kind="${i}"${a?` data-ref-tone="${a}"`:``} contenteditable="false">${o}${n}</span>&nbsp;`}function p(e={}){let t=e.resources,n=e.onResourceSearch,r=d({...e,resources:t,onResourceSearch:n}),[i,a]=(0,c.useState)(!1),[o,s]=(0,c.useState)(!1),l=(0,c.useRef)(null),u=(0,c.useRef)(null),p=(0,c.useCallback)(e=>{a(e),e||(l.current=null,u.current=null,s(!1),r.setManualKindOverride(!1))},[r]),m=e.editorRef,h=(0,c.useCallback)(()=>{if(!t)return;let e={};for(let[n,r]of Object.entries(t)){let t=r?.trigger;typeof t==`string`&&t.length>0&&(e[t]=n)}if(Object.keys(e).length===0)return;let n=m?.current?.getCaretContext();if(!n){l.current&&(l.current=null,p(!1));return}let i=Object.keys(e).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(``),o=RegExp(`(?:^|\\s)([${i}])([\\p{L}\\p{N}_-]*)$`,`u`),c=n.textBefore.match(o);if(!c){l.current&&(l.current=null,p(!1));return}let d=c[1],f=c[2]??``,h=e[d];l.current={kind:h,triggerChar:d,consumedLength:d.length+f.length},s(!0),u.current!==d&&(r.activeKind!==h&&r.setActiveKind(h),r.setManualKindOverride(!1),u.current=d),r.query!==f&&r.setQuery(f),a(!0)},[m,t,r,p]),g=(0,c.useCallback)(e=>{let n=r.selectSuggestion(e),i=l.current,a=t?.[n.kind]?.tone,o=f(n,{triggerChar:i?.triggerChar,tone:a});return i&&i.consumedLength>0&&m?.current?(m.current.replaceBeforeCaret(i.consumedLength,o),l.current=null):m?.current&&m.current.insertHTML(o),p(!1),n},[m,t,r,p]);return{...r,pickerOpen:i,setPickerOpen:p,triggerActive:o,handleCaretChange:h,pickSuggestion:g}}var m={primary:`secondary`,success:`success`,warning:`warning`,destructive:`destructive`,info:`info`,secondary:`secondary`},h=({mention:e,resource:n,asLink:r=!0,onClick:a,trailing:o,className:s})=>{if(n?.renderChip)return(0,l.jsx)(l.Fragment,{children:n.renderChip(e)});let c=m[n?.tone??`secondary`]??m.secondary,u=n?.icon,d=(0,l.jsxs)(i.t,{variant:c,inline:!0,"data-ref-id":e.id,"data-ref-kind":e.kind,className:t.cn(`mention-chip--component`,`align-[-0.15em] cursor-default whitespace-nowrap`,s),children:[u?(0,l.jsx)(u,{className:`size-3 shrink-0`,"aria-hidden":!0}):null,(0,l.jsx)(`span`,{className:`truncate max-w-[14rem]`,children:e.label}),o]});return r&&e.href?(0,l.jsx)(`a`,{href:e.href,target:`_blank`,rel:`noreferrer noopener`,onClick:a,className:`inline align-baseline no-underline hover:opacity-90`,children:d}):a?(0,l.jsx)(`span`,{onClick:a,className:`inline align-baseline`,children:d}):d},g=/<(span|a)\b([^>]*?)data-ref-id\s*=\s*"([^"]+)"([^>]*)>([\s\S]*?)<\/\1>/gi;function _(e){if(!e)return[];let t=[],n=0,r;for(g.lastIndex=0;(r=g.exec(e))!==null;){let[i,,,a]=r,o=e.slice(n,r.index);o.length>0&&t.push({kind:`html`,value:o}),t.push({kind:`mention`,refId:a,fallback:i}),n=r.index+i.length}let i=e.slice(n);return i.length>0&&t.push({kind:`html`,value:i}),t}var v=`prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-a:text-primary prose-a:no-underline hover:prose-a:underline prose-strong:font-semibold prose-ul:my-0.5 prose-ol:my-0.5 prose-li:my-0.5 max-w-none`;function y(e){let{html:n,mentions:r,resources:i,renderMention:a,sanitizer:o,className:s,prose:u=!0}=e,d=i,f=o?o(n??``):n??``,p=new Map;for(let e of r??[])p.set(e.id,e);let m=p.size>0?_(f):[{kind:`html`,value:f}],g=e=>{if(a)return a(e);let t=d?.[e.kind];return(0,l.jsx)(h,{mention:e,resource:t})},y=m.map((e,t)=>{if(e.kind===`mention`){let n=p.get(e.refId);return n?(0,l.jsx)(c.Fragment,{children:g(n)},`ref-${t}-${e.refId}`):(0,l.jsx)(`span`,{dangerouslySetInnerHTML:{__html:e.fallback}},`fallback-${t}`)}return(0,l.jsx)(`span`,{dangerouslySetInnerHTML:{__html:e.value}},`html-${t}`)});return u?(0,l.jsx)(`div`,{className:t.cn(`mention-content--component`,v,s),children:y}):(0,l.jsx)(l.Fragment,{children:y})}var b=e=>(0,l.jsx)(y,{...e}),x={title:`Insert reference`,searchPlaceholder:`Search…`,empty:`No matches.`,loading:`Searching…`},S={title:`Insert reference`,empty:`No matches.`,loading:`Searching…`};function C({open:i,activeKind:c,setActiveKind:d,kinds:f,resources:p,query:m,setQuery:h,suggestions:g,isLoading:_,onSelect:v,strings:y,className:b}){let S=e.useStrings(x,y);return i?(0,l.jsxs)(a.t,{align:`start`,className:t.cn(`mention-picker--component`,`w-72 overflow-hidden p-0`,b),children:[(0,l.jsxs)(`div`,{className:`border-b border-border/60 px-3 py-2`,children:[(0,l.jsx)(r.n,{size:`xxs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wide`,children:S.title}),f.length>1&&(0,l.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:f.map(e=>{let r=p?.[e],i=r?.icon,a=e===c;return(0,l.jsxs)(n.t,{type:`button`,variant:a?`primary`:`secondary`,buttonStyle:a?`solid`:`ghost`,size:`xs`,onClick:()=>d(e),className:t.cn(`h-auto gap-1 rounded px-1.5 py-0.5 text-xxs font-medium ring-1 ring-inset transition-colors`,a?`bg-primary text-primary-foreground ring-primary`:`bg-muted text-muted-foreground ring-border/60 hover:bg-muted/80`),children:[i?(0,l.jsx)(i,{className:`size-3`}):null,(0,l.jsx)(`span`,{children:r?.label??String(e)})]},e)})})]}),(0,l.jsxs)(s.t,{shouldFilter:!1,children:[(0,l.jsx)(o.i,{placeholder:S.searchPlaceholder,value:m,onValueChange:h}),(0,l.jsxs)(s.a,{children:[_?(0,l.jsxs)(`div`,{className:`text-muted-foreground flex items-center justify-center gap-2 py-3`,children:[(0,l.jsx)(u.Loader2,{className:`size-3.5 animate-spin`,"aria-hidden":!0}),(0,l.jsx)(r.n,{tag:`span`,size:`xs`,type:`secondary`,children:S.loading})]}):null,(0,l.jsx)(s.n,{children:S.empty}),(0,l.jsx)(s.r,{children:g.map(e=>{let t=e.kind??c??``;return(0,l.jsx)(s.i,{value:`${t}:${e.id}`,onSelect:()=>v(e),children:(0,l.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col leading-tight`,children:[(0,l.jsx)(r.n,{tag:`span`,size:`xs`,weight:`medium`,className:`truncate`,children:e.label}),e.description?(0,l.jsx)(r.n,{tag:`span`,size:`xxs`,type:`secondary`,className:`mt-0.5 truncate`,children:e.description}):null]})},`${t}:${e.id}`)})})]})]})]}):null}function w({open:i,activeKind:a,setActiveKind:o,kinds:s,resources:c,suggestionsByKind:d,suggestions:f,isLoading:p,query:m,onManualKindChange:h,onSelect:g,strings:_,className:v}){let y=e.useStrings(S,_);return i?(0,l.jsxs)(`div`,{onMouseDown:e=>e.preventDefault(),className:t.cn(`mention-inline-suggestions--component`,`bg-popover text-popover-foreground absolute left-0 top-full z-40 mt-1 w-80 max-w-[min(theme(spacing.96),100%)]`,`border-border/60 rounded-md border shadow-md ring-1 ring-foreground/[0.04]`,`overflow-hidden`,v),children:[(0,l.jsxs)(`div`,{className:`border-b border-border/60 px-3 py-2`,children:[(0,l.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2`,children:[(0,l.jsx)(r.n,{size:`xxs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wide`,children:y.title}),m?(0,l.jsxs)(r.n,{tag:`span`,size:`xxs`,type:`secondary`,className:`truncate font-mono`,children:[`“`,m,`”`]}):null]}),s.length>1&&(0,l.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:s.map(e=>{let r=c?.[e],i=r?.icon,s=e===a,u=d?.[e]?.length??0;return(0,l.jsxs)(n.t,{type:`button`,variant:s?`primary`:`secondary`,buttonStyle:s?`solid`:`ghost`,size:`xs`,onClick:()=>{o(e),h?.()},className:t.cn(`h-auto gap-1 rounded px-1.5 py-0.5 text-xxs font-medium ring-1 ring-inset transition-colors`,s?`bg-primary text-primary-foreground ring-primary`:u>0?`bg-muted text-foreground ring-border/60 hover:bg-muted/80`:`bg-muted/40 text-muted-foreground ring-border/40 hover:bg-muted/60`),children:[i?(0,l.jsx)(i,{className:`size-3`}):null,(0,l.jsx)(`span`,{children:r?.label??String(e)}),u>0&&(0,l.jsx)(`span`,{className:t.cn(`tabular-nums`,s?`opacity-90`:`opacity-70`),children:u})]},e)})})]}),(0,l.jsxs)(`div`,{className:`max-h-72 overflow-y-auto py-1`,...f.length>0?{role:`listbox`,"aria-label":y.title}:{},children:[p?(0,l.jsxs)(`div`,{className:`text-muted-foreground flex items-center justify-center gap-2 py-3`,children:[(0,l.jsx)(u.Loader2,{className:`size-3.5 animate-spin`,"aria-hidden":!0}),(0,l.jsx)(r.n,{tag:`span`,size:`xs`,type:`secondary`,children:y.loading})]}):null,!p&&f.length===0?(0,l.jsx)(`div`,{className:`px-3 py-3`,children:(0,l.jsx)(r.n,{size:`xs`,type:`secondary`,children:y.empty})}):null,f.map(e=>{let i=e.kind??a??``;return(0,l.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`sm`,role:`option`,"data-ref-id":`${i}:${e.id}`,onClick:()=>g(e),className:t.cn(`h-auto w-full min-w-0 justify-start gap-2 rounded-none px-3 py-1.5 text-left`,`hover:bg-muted/60 focus-visible:bg-muted/60 transition-colors`),children:(0,l.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col leading-tight`,children:[(0,l.jsx)(r.n,{tag:`span`,size:`xs`,weight:`medium`,className:`truncate`,children:e.label}),e.description?(0,l.jsx)(r.n,{tag:`span`,size:`xxs`,type:`secondary`,className:`mt-0.5 truncate`,children:e.description}):null]})},`${i}:${e.id}`)})]})]}):null}var T=/<(?:span|a)\b[^>]*?data-ref-id\s*=\s*"([^"]+)"[^>]*?>([\s\S]*?)<\/(?:span|a)>/gi,E=/data-ref-kind\s*=\s*"([^"]+)"/i;function D(e){let t=[];if(!e)return t;let n=new Set,r;for(T.lastIndex=0;(r=T.exec(e))!==null;){let[e,i,a]=r;if(n.has(i))continue;n.add(i);let o=e.match(E)?.[1]??i.split(`:`)[0]??``,s=(a??``).replace(/<[^>]*>/g,``).replace(/&nbsp;/g,` `).replace(/^[@#$&%!~]\s*/,``).trim();t.push({id:i,kind:o,label:s})}return t}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return p}});
2
+ //# sourceMappingURL=mentions-CA1Ka_Bv.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentions-CA1Ka_Bv.cjs","names":[],"sources":["../../src/components/features/mentions/hooks/use-mentions-search.ts","../../src/components/features/mentions/utils/build-mention-html.ts","../../src/components/features/mentions/hooks/use-mentions.ts","../../src/components/features/mentions/partials/mention-chip.tsx","../../src/components/features/mentions/utils/split-html-by-mentions.ts","../../src/components/features/mentions/partials/mention-content.tsx","../../src/components/features/mentions/mentions.strings.ts","../../src/components/features/mentions/partials/mention-picker.tsx","../../src/components/features/mentions/partials/mention-inline-suggestions.tsx","../../src/components/features/mentions/utils/parse-mentions-from-html.ts"],"sourcesContent":["/**\n * useMentionsSearch — pure search state for the mention picker.\n *\n * Runs **all registered kinds in parallel** for the same needle so the\n * caller can render mixed results in tabs and the picker can auto-\n * switch when the active kind has zero matches but another does. The\n * caller still controls which kind is *active* (the one whose\n * suggestions render); manual switches are remembered and not\n * overridden by subsequent caret-driven re-detections.\n *\n * Suggestion lookup order per kind:\n * 1. `resources[kind].search(needle)` — per-kind callback\n * 2. `resources[kind].suggestions` — static catalogue\n * 3. global `onResourceSearch(needle, kind)` — fallback\n */\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n Mention,\n MentionResource,\n MentionSuggestion,\n MentionsResourceSearch,\n} from '../mentions.types';\n\nexport interface UseMentionsSearchOptions<TResource extends string = string> {\n resources?: Partial<Record<TResource, MentionResource<TResource>>>;\n onResourceSearch?: MentionsResourceSearch<TResource>;\n initialMentions?: ReadonlyArray<Mention<TResource>>;\n /** Debounce window for async search. Default: 200ms. */\n debounceMs?: number;\n}\n\nexport interface UseMentionsSearchReturn<TResource extends string = string> {\n kinds: ReadonlyArray<TResource>;\n activeKind: TResource | null;\n setActiveKind: (kind: TResource | null) => void;\n activeResource: MentionResource<TResource> | null;\n\n query: string;\n setQuery: (q: string) => void;\n\n /** Suggestions for the active kind (`suggestionsByKind[activeKind]`). */\n suggestions: ReadonlyArray<MentionSuggestion<TResource>>;\n /** Per-kind suggestion buckets — useful for cross-kind UIs. */\n suggestionsByKind: Readonly<Record<string, ReadonlyArray<MentionSuggestion<TResource>>>>;\n isLoading: boolean;\n\n mentions: ReadonlyArray<Mention<TResource>>;\n addMention: (mention: Mention<TResource>) => void;\n removeMention: (id: string) => void;\n setMentions: (next: ReadonlyArray<Mention<TResource>>) => void;\n reset: () => void;\n\n selectSuggestion: (\n suggestion: MentionSuggestion<TResource>,\n ) => Mention<TResource>;\n\n /** True if the consumer manually picked a tab. The trigger detector\n * checks this and refuses to override the active kind on next caret\n * change while it's true. Reset on `setManualKindOverride(false)` or\n * `reset()`. */\n manualKindOverride: boolean;\n setManualKindOverride: (override: boolean) => void;\n}\n\nexport function useMentionsSearch<TResource extends string = string>(\n options: UseMentionsSearchOptions<TResource> = {},\n): UseMentionsSearchReturn<TResource> {\n const { resources, onResourceSearch, initialMentions, debounceMs = 200 } = options;\n\n const kinds = useMemo<ReadonlyArray<TResource>>(\n () => (resources ? (Object.keys(resources) as TResource[]) : []),\n [resources],\n );\n\n const [activeKind, setActiveKindState] = useState<TResource | null>(\n () => kinds[0] ?? null,\n );\n const [manualKindOverride, setManualKindOverride] = useState(false);\n const [query, setQueryState] = useState('');\n const [suggestionsByKind, setSuggestionsByKind] = useState<\n Record<string, ReadonlyArray<MentionSuggestion<TResource>>>\n >({});\n const [isLoading, setIsLoading] = useState(false);\n const [mentions, setMentionsState] = useState<Mention<TResource>[]>(() =>\n initialMentions ? [...initialMentions] : [],\n );\n\n const requestIdRef = useRef(0);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (kinds.length === 0) {\n setActiveKindState(null);\n return;\n }\n if (!activeKind || !kinds.includes(activeKind)) {\n setActiveKindState(kinds[0]);\n }\n }, [activeKind, kinds]);\n\n const activeResource = useMemo(\n () => (activeKind && resources ? resources[activeKind] ?? null : null),\n [activeKind, resources],\n );\n\n /**\n * Search a single kind. Per-kind `search` wins, then static\n * `suggestions`, then the global `onResourceSearch` fallback.\n */\n const searchOneKind = useCallback(\n async (\n kind: TResource,\n q: string,\n ): Promise<ReadonlyArray<MentionSuggestion<TResource>>> => {\n const config = resources?.[kind];\n if (config?.search) {\n const result = await config.search(q);\n return result.map((s) => ({ ...s, kind }));\n }\n if (config?.suggestions) {\n const stat = config.suggestions;\n const filtered =\n q.trim().length === 0\n ? stat\n : stat.filter((s) =>\n s.label.toLowerCase().includes(q.toLowerCase()),\n );\n return filtered.map((s) => ({ ...s, kind }));\n }\n if (onResourceSearch) {\n const result = await onResourceSearch(q, kind);\n return result.map((s) => ({ ...s, kind }));\n }\n return [];\n },\n [resources, onResourceSearch],\n );\n\n // Debounced cross-kind search runner. Populates `suggestionsByKind`\n // for every registered kind in parallel.\n useEffect(() => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n if (kinds.length === 0) {\n setSuggestionsByKind({});\n return;\n }\n\n const requestId = ++requestIdRef.current;\n const run = async () => {\n setIsLoading(true);\n try {\n const entries = await Promise.all(\n kinds.map(async (kind) => {\n try {\n const list = await searchOneKind(kind, query);\n return [kind, list] as const;\n } catch {\n return [kind, []] as const;\n }\n }),\n );\n if (requestId !== requestIdRef.current) return;\n const next: Record<string, ReadonlyArray<MentionSuggestion<TResource>>> = {};\n for (const [kind, list] of entries) {\n next[kind] = list;\n }\n setSuggestionsByKind(next);\n } finally {\n if (requestId === requestIdRef.current) {\n setIsLoading(false);\n }\n }\n };\n\n debounceRef.current = setTimeout(() => {\n void run();\n }, debounceMs);\n\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, [kinds, query, searchOneKind, debounceMs]);\n\n /**\n * Auto-switch behaviour: when the active kind has zero results but\n * another kind has matches, jump to the first kind with results.\n * Skipped while `manualKindOverride` is true so the consumer's tab\n * choice sticks.\n */\n useEffect(() => {\n if (manualKindOverride) return;\n if (!activeKind) return;\n const activeList = suggestionsByKind[activeKind] ?? [];\n if (activeList.length > 0) return;\n const first = kinds.find((k) => (suggestionsByKind[k]?.length ?? 0) > 0);\n if (first && first !== activeKind) {\n setActiveKindState(first);\n }\n }, [activeKind, kinds, manualKindOverride, suggestionsByKind]);\n\n /**\n * Set the active kind. **Does not** toggle `manualKindOverride` —\n * the picker UI is responsible for calling\n * `setManualKindOverride(true)` when the user explicitly clicks a\n * tab so the auto-switch / auto-detect logic respects their choice.\n */\n const setActiveKind = useCallback((kind: TResource | null) => {\n setActiveKindState(kind);\n }, []);\n\n const setQuery = useCallback((q: string) => {\n setQueryState(q);\n }, []);\n\n const addMention = useCallback((mention: Mention<TResource>) => {\n setMentionsState((prev) => {\n if (prev.some((m) => m.id === mention.id)) return prev;\n return [...prev, mention];\n });\n }, []);\n\n const removeMention = useCallback((id: string) => {\n setMentionsState((prev) => prev.filter((m) => m.id !== id));\n }, []);\n\n const setMentions = useCallback(\n (next: ReadonlyArray<Mention<TResource>>) => {\n setMentionsState([...next]);\n },\n [],\n );\n\n const reset = useCallback(() => {\n setMentionsState([]);\n setQueryState('');\n setManualKindOverride(false);\n requestIdRef.current++;\n }, []);\n\n const selectSuggestion = useCallback(\n (suggestion: MentionSuggestion<TResource>) => {\n const kind = (suggestion.kind ?? activeKind) as TResource;\n const id = `${kind}:${suggestion.id}`;\n const cfg = resources?.[kind];\n const href = suggestion.href ?? cfg?.buildHref?.(suggestion);\n const mention: Mention<TResource> = {\n id,\n kind,\n label: suggestion.label,\n href,\n data: suggestion.data,\n };\n addMention(mention);\n return mention;\n },\n [activeKind, addMention, resources],\n );\n\n const suggestions = useMemo<ReadonlyArray<MentionSuggestion<TResource>>>(\n () => (activeKind ? suggestionsByKind[activeKind] ?? [] : []),\n [activeKind, suggestionsByKind],\n );\n\n return {\n kinds,\n activeKind,\n setActiveKind,\n activeResource,\n query,\n setQuery,\n suggestions,\n suggestionsByKind,\n isLoading,\n mentions,\n addMention,\n removeMention,\n setMentions,\n reset,\n selectSuggestion,\n manualKindOverride,\n setManualKindOverride,\n };\n}\n","import type { Mention, MentionTone } from '../mentions.types';\n\n/**\n * Serialize a `Mention` into the HTML span that gets inserted into a\n * rich-text body. The structure mirrors `<MentionChip>` so the editor\n * can style it via the `.rsc-mention` / `[data-ref-tone]` rules (see\n * mention-chip.css, co-located in this feature) and the read-time\n * renderer (`<MentionContent>`) can find it again.\n *\n * <span class=\"rsc-mention\" data-ref-id=\"kind:id\" data-ref-kind=\"kind\"\n * data-ref-tone=\"info\" contenteditable=\"false\">@Maria Petrova</span>&nbsp;\n *\n * `data-ref-tone` is what drives the badge colour in both the editor\n * (CSS-only, since contenteditable can't host React) and the read-time\n * renderer (which respects it as a hint when the resource registry\n * isn't available).\n *\n * `contenteditable=\"false\"` tells the browser to treat the chip as an\n * atomic glyph — backspace deletes the whole span, the cursor moves\n * past it, and the inner label can't be edited character-by-character.\n */\nexport function buildMentionHtml<TKind extends string = string>(\n mention: Mention<TKind>,\n options?: { triggerChar?: string; tone?: MentionTone },\n): string {\n const safeLabel = String(mention.label ?? '')\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n const id = String(mention.id).replace(/\"/g, '&quot;');\n const kind = String(mention.kind).replace(/\"/g, '&quot;');\n const tone = options?.tone ? String(options.tone).replace(/\"/g, '&quot;') : '';\n const trigger =\n options?.triggerChar ?? (mention.kind === 'user' ? '@' : '');\n const toneAttr = tone ? ` data-ref-tone=\"${tone}\"` : '';\n return (\n `<span class=\"rsc-mention\" data-ref-id=\"${id}\" data-ref-kind=\"${kind}\"${toneAttr} contenteditable=\"false\">` +\n `${trigger}${safeLabel}` +\n `</span>&nbsp;`\n );\n}\n","/**\n * useMentions — picker state + caret-trigger detection bound to an editor.\n *\n * Composes `useMentionsSearch` (suggestion state) with caret-watch\n * logic. The editor it binds to must implement the minimal handle\n * surface in `MentionEditorHandle` — `<RichTextEditor>` from\n * `features/rich-text-editor` already does. Other editors (Slate,\n * Lexical, ProseMirror, plain contenteditable, …) can be plugged in by\n * implementing the same four methods on their imperative handle.\n *\n * Behaviour summary:\n * - On every editor `onCaretChange`, the hook reads `getCaretContext()`\n * and looks for a registered trigger char (`@`, `#`, …) preceded by\n * start-of-line / whitespace and followed by `\\p{L}\\p{N}_-` chars.\n * - On match, the picker opens, `activeKind` is seeded from the\n * trigger char (only on a *fresh* trigger session — manual tab\n * switches survive subsequent keystrokes), and `query` syncs from\n * the typed needle.\n * - All registered kinds are searched in parallel; the active kind\n * auto-switches to the first kind with results when the current\n * active is empty (skipped if `manualKindOverride` is true).\n * - `pickSuggestion` deletes the trigger range and inserts the chip\n * atomically via `replaceBeforeCaret` — selection-extension means\n * no manual text mutation, no race between delete + insert.\n * - When opened via the manual button (no trigger detected), the\n * selection runs `insertHTML` instead — caret stays where it was.\n *\n * Returned API:\n * pickerOpen, setPickerOpen, triggerActive,\n * kinds, activeKind, setActiveKind, manualKindOverride, setManualKindOverride,\n * query, setQuery, suggestions, suggestionsByKind, isLoading,\n * mentions, addMention, removeMention, setMentions, reset,\n * handleCaretChange() — wire to the editor's `onCaretChange`\n * pickSuggestion(s) — convert suggestion → Mention + insert chip\n *\n * @example\n * const editorRef = useRef<RichTextEditorHandle>(null);\n * const mentions = useMentions<'user' | 'order'>({ editorRef });\n *\n * <RichTextEditor ref={editorRef} onCaretChange={mentions.handleCaretChange} />\n * <MentionInlineSuggestions\n * open={mentions.triggerActive && mentions.pickerOpen}\n * activeKind={mentions.activeKind}\n * setActiveKind={mentions.setActiveKind}\n * onManualKindChange={() => mentions.setManualKindOverride(true)}\n * {...mentions}\n * onSelect={mentions.pickSuggestion}\n * />\n */\nimport { useCallback, useRef, useState } from 'react';\nimport type { RefObject } from 'react';\n\nimport type {\n Mention,\n MentionResource,\n MentionSuggestion,\n MentionsResourceSearch,\n} from '../mentions.types';\nimport { buildMentionHtml } from '../utils/build-mention-html';\nimport {\n useMentionsSearch,\n type UseMentionsSearchOptions,\n type UseMentionsSearchReturn,\n} from './use-mentions-search';\n\n/**\n * Minimal editor handle the trigger detector needs. Compatible with the\n * library's `<RichTextEditor>` handle — implement these on any custom\n * editor to plug in.\n */\nexport interface MentionEditorHandle {\n getCaretContext(): { textBefore: string } | null;\n insertHTML(html: string): void;\n replaceBeforeCaret(length: number, html: string): void;\n focus(): void;\n}\n\nexport interface UseMentionsOptions<TResource extends string = string>\n extends UseMentionsSearchOptions<TResource> {\n /** Ref to the editor surface the trigger detector reads from. */\n editorRef?: RefObject<MentionEditorHandle | null>;\n}\n\nexport interface UseMentionsReturn<TResource extends string = string>\n extends UseMentionsSearchReturn<TResource> {\n pickerOpen: boolean;\n setPickerOpen: (open: boolean) => void;\n /** True while the picker is open from an inline `@`/`#` trigger. */\n triggerActive: boolean;\n /** Wire to the editor's `onCaretChange` to enable inline triggers. */\n handleCaretChange: () => void;\n /**\n * Convert a suggestion into a Mention, register it, insert the chip\n * into the editor (replacing the trigger range when one is active),\n * and close the picker. Returns the Mention.\n */\n pickSuggestion: (\n suggestion: MentionSuggestion<TResource>,\n ) => Mention<TResource>;\n}\n\ninterface TriggerState {\n kind: string;\n triggerChar: string;\n consumedLength: number;\n}\n\nexport function useMentions<TResource extends string = string>(\n options: UseMentionsOptions<TResource> = {},\n): UseMentionsReturn<TResource> {\n const resources = options.resources;\n const onResourceSearch: MentionsResourceSearch<TResource> | undefined =\n options.onResourceSearch;\n\n const search = useMentionsSearch<TResource>({\n ...options,\n resources,\n onResourceSearch,\n });\n\n const [pickerOpen, setPickerOpenState] = useState(false);\n const [triggerActive, setTriggerActive] = useState(false);\n const triggerStateRef = useRef<TriggerState | null>(null);\n /** Tracks the trigger char from the most recent detection — lets us\n * set the initial active kind on a fresh trigger without overriding\n * the user's manual tab switch on every subsequent keystroke. */\n const lastTriggerCharRef = useRef<string | null>(null);\n\n const setPickerOpen = useCallback((open: boolean) => {\n setPickerOpenState(open);\n if (!open) {\n triggerStateRef.current = null;\n lastTriggerCharRef.current = null;\n setTriggerActive(false);\n search.setManualKindOverride(false);\n }\n }, [search]);\n\n const editorRef = options.editorRef;\n\n const handleCaretChange = useCallback(() => {\n if (!resources) return;\n const triggerMap: Record<string, string> = {};\n for (const [kind, cfg] of Object.entries(resources)) {\n const trig = (cfg as MentionResource | undefined)?.trigger;\n if (typeof trig === 'string' && trig.length > 0) {\n triggerMap[trig] = kind;\n }\n }\n if (Object.keys(triggerMap).length === 0) return;\n\n const ctx = editorRef?.current?.getCaretContext();\n if (!ctx) {\n if (triggerStateRef.current) {\n triggerStateRef.current = null;\n setPickerOpen(false);\n }\n return;\n }\n const triggers = Object.keys(triggerMap)\n .map((c) => c.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n .join('');\n const re = new RegExp(`(?:^|\\\\s)([${triggers}])([\\\\p{L}\\\\p{N}_-]*)$`, 'u');\n const match = ctx.textBefore.match(re);\n if (!match) {\n if (triggerStateRef.current) {\n triggerStateRef.current = null;\n setPickerOpen(false);\n }\n return;\n }\n const triggerChar = match[1];\n const needle = match[2] ?? '';\n const kind = triggerMap[triggerChar];\n const consumedLength = triggerChar.length + needle.length;\n\n triggerStateRef.current = { kind, triggerChar, consumedLength };\n setTriggerActive(true);\n\n // Only seed the initial active kind on a *fresh* trigger session.\n // If the user has already picked a tab in the panel,\n // `manualKindOverride` is true and we skip — their choice sticks\n // even as they keep typing or deleting characters.\n const isNewTriggerSession = lastTriggerCharRef.current !== triggerChar;\n if (isNewTriggerSession) {\n if (search.activeKind !== kind) {\n search.setActiveKind(kind as TResource);\n }\n search.setManualKindOverride(false);\n lastTriggerCharRef.current = triggerChar;\n }\n\n if (search.query !== needle) {\n search.setQuery(needle);\n }\n setPickerOpenState(true);\n }, [editorRef, resources, search, setPickerOpen]);\n\n const pickSuggestion = useCallback(\n (suggestion: MentionSuggestion<TResource>) => {\n const mention = search.selectSuggestion(suggestion);\n const trigger = triggerStateRef.current;\n const tone = (resources?.[mention.kind] as MentionResource | undefined)?.tone;\n const html = buildMentionHtml(mention, {\n triggerChar: trigger?.triggerChar,\n tone,\n });\n\n if (trigger && trigger.consumedLength > 0 && editorRef?.current) {\n editorRef.current.replaceBeforeCaret(trigger.consumedLength, html);\n triggerStateRef.current = null;\n } else if (editorRef?.current) {\n editorRef.current.insertHTML(html);\n }\n setPickerOpen(false);\n return mention;\n },\n [editorRef, resources, search, setPickerOpen],\n );\n\n return {\n ...search,\n pickerOpen,\n setPickerOpen,\n triggerActive,\n handleCaretChange,\n pickSuggestion,\n };\n}\n","/**\n * MentionChip — default rendering for an inline mention/reference.\n *\n * Wraps the lib's `<Badge>` base component with the variant driven by\n * the resource registry's `tone` field. The mapping between the\n * mentions module's `MentionTone` and the badge's variant lives below\n * (`TONE_TO_VARIANT`) so consumers can rebrand by editing one table.\n *\n * Override paths:\n * - `renderMention` on `<MentionContent>` — full takeover\n * - `resources.<kind>.renderChip(mention)` — per-kind takeover\n * - `resources.<kind>.tone` — quickest \"just change the color\" override\n */\nimport type { FC, ReactNode } from 'react';\n\nimport { Badge, type ComposedBadgeVariant } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type {\n Mention,\n MentionResource,\n MentionTone,\n} from '../mentions.types';\n\nexport interface MentionChipProps {\n mention: Mention;\n resource?: MentionResource<string>;\n /** Force-disable the chip's link (useful inside the composer draft list). */\n asLink?: boolean;\n onClick?: () => void;\n /** Trailing slot — typically a remove button when shown in the composer. */\n trailing?: ReactNode;\n className?: string;\n}\n\n/**\n * Single source of truth for `MentionTone → Badge variant`. Edit here\n * to rebrand all chips library-wide; override per-kind via\n * `resources.<kind>.tone`.\n */\nconst TONE_TO_VARIANT: Record<MentionTone, ComposedBadgeVariant> = {\n primary: 'secondary', // calm primary — saturated `primary` overwhelms body copy\n success: 'success',\n warning: 'warning',\n destructive: 'destructive',\n info: 'info',\n secondary: 'secondary',\n};\n\nexport const MentionChip: FC<MentionChipProps> = ({\n mention,\n resource,\n asLink = true,\n onClick,\n trailing,\n className,\n}) => {\n if (resource?.renderChip) {\n return <>{resource.renderChip(mention)}</>;\n }\n\n const tone = resource?.tone ?? 'secondary';\n const variant = TONE_TO_VARIANT[tone] ?? TONE_TO_VARIANT.secondary;\n const Icon = resource?.icon;\n\n const inner = (\n <Badge\n variant={variant}\n inline\n data-ref-id={mention.id}\n data-ref-kind={mention.kind}\n className={cn(\n 'mention-chip--component',\n /* Inline-flow tweaks: align to the surrounding text baseline\n instead of the line's mid-point, which causes wobble next\n to text. Keep the badge as `inline-flex` (from `inline`),\n add a subtle vertical offset via translate so the icon\n sits on the cap-height. */\n 'align-[-0.15em] cursor-default whitespace-nowrap',\n className,\n )}\n >\n {Icon ? <Icon className=\"size-3 shrink-0\" aria-hidden /> : null}\n <span className=\"truncate max-w-[14rem]\">{mention.label}</span>\n {trailing}\n </Badge>\n );\n\n if (asLink && mention.href) {\n return (\n <a\n href={mention.href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n onClick={onClick}\n className=\"inline align-baseline no-underline hover:opacity-90\"\n >\n {inner}\n </a>\n );\n }\n\n if (onClick) {\n return (\n <span onClick={onClick} className=\"inline align-baseline\">\n {inner}\n </span>\n );\n }\n\n return inner;\n};\n","/**\n * Split an HTML string into a list of `html` chunks and `mention`\n * placeholders, keyed by the `data-ref-id` attribute the writer set.\n *\n * Used by `<MentionContent>` to render the body once with React chips\n * for the references and `dangerouslySetInnerHTML` for everything else.\n */\nexport type MentionHtmlSegment =\n | { kind: 'html'; value: string }\n | { kind: 'mention'; refId: string; fallback: string };\n\nconst MENTION_RE =\n /<(span|a)\\b([^>]*?)data-ref-id\\s*=\\s*\"([^\"]+)\"([^>]*)>([\\s\\S]*?)<\\/\\1>/gi;\n\nexport function splitHtmlByMentions(html: string): MentionHtmlSegment[] {\n if (!html) return [];\n\n const segments: MentionHtmlSegment[] = [];\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n MENTION_RE.lastIndex = 0;\n\n while ((match = MENTION_RE.exec(html)) !== null) {\n const [full, , , refId] = match;\n const before = html.slice(lastIndex, match.index);\n if (before.length > 0) {\n segments.push({ kind: 'html', value: before });\n }\n segments.push({\n kind: 'mention',\n refId,\n fallback: full,\n });\n lastIndex = match.index + full.length;\n }\n\n const tail = html.slice(lastIndex);\n if (tail.length > 0) {\n segments.push({ kind: 'html', value: tail });\n }\n\n return segments;\n}\n","/**\n * MentionContent — render an HTML body that may contain inline mention\n * spans (`<span data-ref-id=\"kind:id\">…</span>`) by swapping each ref\n * for a React `<MentionChip>` while leaving the rest of the HTML\n * untouched.\n *\n * Used by:\n * - `features/comments` — comment bodies\n * - `features/event-log` — event descriptions\n * - any other surface that renders rich-text with embedded refs\n *\n * Consumer can override per-mention rendering via `renderMention`, or\n * per-kind via the resource registry's `renderChip`.\n */\nimport { Fragment } from 'react';\nimport type { FC, ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport type {\n Mention,\n MentionResource,\n MentionsConfig,\n} from '../mentions.types';\nimport { splitHtmlByMentions } from '../utils/split-html-by-mentions';\nimport { MentionChip } from './mention-chip';\n\nexport interface MentionContentProps<TResource extends string = string> {\n /** HTML body to render. */\n html: string;\n /** Mentions resolved on the data — keyed by `data-ref-id`. */\n mentions?: ReadonlyArray<Mention<TResource>>;\n /** Resource registry — pass at the call site. */\n resources?: MentionsConfig<TResource>['resources'];\n /** Custom per-mention renderer — overrides resource.renderChip. */\n renderMention?: (mention: Mention<TResource>) => ReactNode;\n /** Optional sanitizer applied to HTML before rendering. */\n sanitizer?: (html: string) => string;\n /** Outer wrapper class. Defaults to a tight prose surface. */\n className?: string;\n /**\n * Set to `false` to skip the default prose wrapper — useful when\n * embedding inside an existing typed surface (e.g. timeline rows).\n */\n prose?: boolean;\n}\n\nconst DEFAULT_PROSE_CLASS =\n 'prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-a:text-primary prose-a:no-underline hover:prose-a:underline prose-strong:font-semibold prose-ul:my-0.5 prose-ol:my-0.5 prose-li:my-0.5 max-w-none';\n\nexport function MentionContent<TResource extends string = string>(\n props: MentionContentProps<TResource>,\n): ReactNode {\n const {\n html,\n mentions,\n resources: resourcesProp,\n renderMention,\n sanitizer,\n className,\n prose = true,\n } = props;\n\n const resources = resourcesProp;\n\n const sanitized = sanitizer ? sanitizer(html ?? '') : (html ?? '');\n\n const mentionsById = new Map<string, Mention<TResource>>();\n for (const m of mentions ?? []) mentionsById.set(m.id, m);\n\n const hasMentions = mentionsById.size > 0;\n const segments = hasMentions\n ? splitHtmlByMentions(sanitized)\n : [{ kind: 'html' as const, value: sanitized }];\n\n const renderRef = (mention: Mention<TResource>): ReactNode => {\n if (renderMention) return renderMention(mention);\n const resource = resources?.[mention.kind] as\n | MentionResource<string>\n | undefined;\n return <MentionChip mention={mention} resource={resource} />;\n };\n\n const body = segments.map((segment, index) => {\n if (segment.kind === 'mention') {\n const mention = mentionsById.get(segment.refId);\n if (!mention) {\n return (\n <span\n key={`fallback-${index}`}\n dangerouslySetInnerHTML={{ __html: segment.fallback }}\n />\n );\n }\n return (\n <Fragment key={`ref-${index}-${segment.refId}`}>\n {renderRef(mention)}\n </Fragment>\n );\n }\n // Render the HTML segment directly. The lib's `Text asHTML` escapes\n // via a strict sanitiser — bypass it for trusted editor output.\n // Consumers must pass `sanitizer` for untrusted content.\n return (\n <span\n key={`html-${index}`}\n dangerouslySetInnerHTML={{ __html: segment.value }}\n />\n );\n });\n\n if (!prose) {\n return <>{body}</>;\n }\n\n return (\n <div className={cn('mention-content--component', DEFAULT_PROSE_CLASS, className)}>{body}</div>\n );\n}\n\n/** FC alias for callsites that prefer the `<MentionContent>` element form. */\nexport const MentionContentComponent: FC<MentionContentProps> = (props) => (\n <MentionContent {...props} />\n);\n","/**\n * Default user-facing strings for the `features/mentions` partials.\n *\n * Both `<MentionPicker>` and `<MentionInlineSuggestions>` consume their\n * respective slice; `<MentionInlineSuggestions>` is a strict subset.\n * Consumers wire backend i18n at the call site:\n *\n * <MentionPicker strings={{ empty: t('mentions.empty') }} … />\n */\n\nexport interface MentionPickerStrings {\n\ttitle: string;\n\tsearchPlaceholder: string;\n\tempty: string;\n\tloading: string;\n}\n\nexport const defaultMentionPickerStrings: MentionPickerStrings = {\n\ttitle: 'Insert reference',\n\tsearchPlaceholder: 'Search…',\n\tempty: 'No matches.',\n\tloading: 'Searching…',\n};\n\nexport interface MentionInlineSuggestionsStrings {\n\ttitle: string;\n\tempty: string;\n\tloading: string;\n}\n\nexport const defaultMentionInlineSuggestionsStrings: MentionInlineSuggestionsStrings = {\n\ttitle: 'Insert reference',\n\tempty: 'No matches.',\n\tloading: 'Searching…',\n};\n","/**\n * MentionPicker — popover content for the mention/reference picker.\n *\n * Pure UI: takes the state from `useMentions` (or any equivalent hook)\n * and renders kind tabs + a cmdk search list. Wrapped in `<Popover>` by\n * the consumer:\n *\n * <Popover open={mentions.pickerOpen} onOpenChange={mentions.setPickerOpen}>\n * <PopoverTrigger ... />\n * <MentionPicker ... />\n * </Popover>\n */\nimport { Loader2 } from 'lucide-react';\n\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/base/command';\nimport { Button } from '@/components/base/buttons';\nimport { PopoverContent } from '@/components/base/popover';\nimport { Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultMentionPickerStrings,\n type MentionPickerStrings,\n} from '../mentions.strings';\nimport type {\n MentionResource,\n MentionSuggestion,\n} from '../mentions.types';\n\nexport type { MentionPickerStrings };\n\nexport interface MentionPickerProps<TResource extends string = string> {\n open: boolean;\n activeKind: TResource | null;\n setActiveKind: (kind: TResource | null) => void;\n kinds: ReadonlyArray<TResource>;\n resources?: Partial<Record<TResource, MentionResource<TResource>>>;\n query: string;\n setQuery: (query: string) => void;\n suggestions: ReadonlyArray<MentionSuggestion<TResource>>;\n isLoading: boolean;\n onSelect: (suggestion: MentionSuggestion<TResource>) => void;\n strings?: StringsProp<MentionPickerStrings>;\n className?: string;\n}\n\nexport function MentionPicker<TResource extends string = string>({\n open,\n activeKind,\n setActiveKind,\n kinds,\n resources,\n query,\n setQuery,\n suggestions,\n isLoading,\n onSelect,\n strings: stringsProp,\n className,\n}: MentionPickerProps<TResource>) {\n const strings = useStrings(defaultMentionPickerStrings, stringsProp);\n if (!open) return null;\n\n return (\n <PopoverContent\n align=\"start\"\n className={cn('mention-picker--component', 'w-72 overflow-hidden p-0', className)}\n >\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wide\"\n >\n {strings.title}\n </Text>\n {kinds.length > 1 && (\n <div className=\"mt-2 flex flex-wrap gap-1\">\n {kinds.map((kind) => {\n const cfg = resources?.[kind];\n const Icon = cfg?.icon;\n const active = kind === activeKind;\n return (\n <Button\n key={kind}\n type=\"button\"\n variant={active ? 'primary' : 'secondary'}\n buttonStyle={active ? 'solid' : 'ghost'}\n size=\"xs\"\n onClick={() => setActiveKind(kind)}\n className={cn(\n 'h-auto gap-1 rounded px-1.5 py-0.5 text-xxs font-medium ring-1 ring-inset transition-colors',\n active\n ? 'bg-primary text-primary-foreground ring-primary'\n : 'bg-muted text-muted-foreground ring-border/60 hover:bg-muted/80',\n )}\n >\n {Icon ? <Icon className=\"size-3\" /> : null}\n <span>{cfg?.label ?? String(kind)}</span>\n </Button>\n );\n })}\n </div>\n )}\n </div>\n\n <Command shouldFilter={false}>\n <CommandInput\n placeholder={strings.searchPlaceholder}\n value={query}\n onValueChange={setQuery}\n />\n <CommandList>\n {isLoading ? (\n <div className=\"text-muted-foreground flex items-center justify-center gap-2 py-3\">\n <Loader2 className=\"size-3.5 animate-spin\" aria-hidden />\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ) : null}\n <CommandEmpty>{strings.empty}</CommandEmpty>\n <CommandGroup>\n {suggestions.map((suggestion) => {\n const kind = suggestion.kind ?? activeKind ?? '';\n return (\n <CommandItem\n key={`${kind}:${suggestion.id}`}\n value={`${kind}:${suggestion.id}`}\n onSelect={() => onSelect(suggestion)}\n >\n <div className=\"flex min-w-0 flex-1 flex-col leading-tight\">\n <Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"truncate\">\n {suggestion.label}\n </Text>\n {suggestion.description ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 truncate\"\n >\n {suggestion.description}\n </Text>\n ) : null}\n </div>\n </CommandItem>\n );\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n );\n}\n","/**\n * MentionInlineSuggestions — non-focus-stealing suggestion list.\n *\n * Used in the *inline-trigger* flow (user typed `@` / `#` / …): the\n * editor stays focused while this panel renders below the surface and\n * updates live as the user keeps typing. No popover, no focus trap,\n * no CommandInput — the editor IS the input, we read the needle from\n * the caret context and stream results in.\n *\n * Position is \"anchored to a wrapping element\" — the consumer puts this\n * inside a `relative`-positioned wrapper around the editor and we\n * absolute-position ourselves below it.\n */\nimport { Loader2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultMentionInlineSuggestionsStrings,\n type MentionInlineSuggestionsStrings,\n} from '../mentions.strings';\nimport type {\n MentionResource,\n MentionSuggestion,\n} from '../mentions.types';\n\nexport type { MentionInlineSuggestionsStrings };\n\nexport interface MentionInlineSuggestionsProps<TResource extends string = string> {\n open: boolean;\n activeKind: TResource | null;\n setActiveKind: (kind: TResource | null) => void;\n kinds: ReadonlyArray<TResource>;\n resources?: Partial<Record<TResource, MentionResource<TResource>>>;\n /** Per-kind suggestion buckets — used to render result counts on tabs. */\n suggestionsByKind?: Readonly<Record<string, ReadonlyArray<MentionSuggestion<TResource>>>>;\n suggestions: ReadonlyArray<MentionSuggestion<TResource>>;\n isLoading: boolean;\n /** Live query the panel echoes in the header; the consumer owns the editor input. */\n query?: string;\n /**\n * Notifies the consumer that the user manually picked a tab, so it\n * can flip the `manualKindOverride` flag on `useMentionsSearch`.\n */\n onManualKindChange?: () => void;\n onSelect: (suggestion: MentionSuggestion<TResource>) => void;\n strings?: StringsProp<MentionInlineSuggestionsStrings>;\n className?: string;\n}\n\nexport function MentionInlineSuggestions<TResource extends string = string>({\n open,\n activeKind,\n setActiveKind,\n kinds,\n resources,\n suggestionsByKind,\n suggestions,\n isLoading,\n query,\n onManualKindChange,\n onSelect,\n strings: stringsProp,\n className,\n}: MentionInlineSuggestionsProps<TResource>) {\n const strings = useStrings(defaultMentionInlineSuggestionsStrings, stringsProp);\n if (!open) return null;\n\n return (\n <div\n // `mousedown.preventDefault` keeps focus in the editor when\n // the user clicks inside the panel — clicks still bubble to\n // the underlying button so selection works normally.\n onMouseDown={(e) => e.preventDefault()}\n className={cn(\n 'mention-inline-suggestions--component',\n 'bg-popover text-popover-foreground absolute left-0 top-full z-40 mt-1 w-80 max-w-[min(theme(spacing.96),100%)]',\n 'border-border/60 rounded-md border shadow-md ring-1 ring-foreground/[0.04]',\n 'overflow-hidden',\n className,\n )}\n >\n <div className=\"border-b border-border/60 px-3 py-2\">\n <div className=\"flex items-baseline justify-between gap-2\">\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wide\"\n >\n {strings.title}\n </Text>\n {query ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"truncate font-mono\"\n >\n “{query}”\n </Text>\n ) : null}\n </div>\n {kinds.length > 1 && (\n <div className=\"mt-2 flex flex-wrap gap-1\">\n {kinds.map((kind) => {\n const cfg = resources?.[kind];\n const Icon = cfg?.icon;\n const active = kind === activeKind;\n const count = suggestionsByKind?.[kind as string]?.length ?? 0;\n return (\n <Button\n key={kind}\n type=\"button\"\n variant={active ? 'primary' : 'secondary'}\n buttonStyle={active ? 'solid' : 'ghost'}\n size=\"xs\"\n onClick={() => {\n setActiveKind(kind);\n onManualKindChange?.();\n }}\n className={cn(\n 'h-auto gap-1 rounded px-1.5 py-0.5 text-xxs font-medium ring-1 ring-inset transition-colors',\n active\n ? 'bg-primary text-primary-foreground ring-primary'\n : count > 0\n ? 'bg-muted text-foreground ring-border/60 hover:bg-muted/80'\n : 'bg-muted/40 text-muted-foreground ring-border/40 hover:bg-muted/60',\n )}\n >\n {Icon ? <Icon className=\"size-3\" /> : null}\n <span>{cfg?.label ?? String(kind)}</span>\n {count > 0 && (\n <span\n className={cn(\n 'tabular-nums',\n active ? 'opacity-90' : 'opacity-70',\n )}\n >\n {count}\n </span>\n )}\n </Button>\n );\n })}\n </div>\n )}\n </div>\n\n <div\n className=\"max-h-72 overflow-y-auto py-1\"\n {...(suggestions.length > 0\n ? { role: 'listbox', 'aria-label': strings.title }\n : {})}\n >\n {isLoading ? (\n <div className=\"text-muted-foreground flex items-center justify-center gap-2 py-3\">\n <Loader2 className=\"size-3.5 animate-spin\" aria-hidden />\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ) : null}\n\n {!isLoading && suggestions.length === 0 ? (\n <div className=\"px-3 py-3\">\n <Text size=\"xs\" type=\"secondary\">\n {strings.empty}\n </Text>\n </div>\n ) : null}\n\n {suggestions.map((suggestion) => {\n const kind = suggestion.kind ?? activeKind ?? '';\n return (\n <Button\n key={`${kind}:${suggestion.id}`}\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"sm\"\n role=\"option\"\n data-ref-id={`${kind}:${suggestion.id}`}\n onClick={() => onSelect(suggestion)}\n className={cn(\n 'h-auto w-full min-w-0 justify-start gap-2 rounded-none px-3 py-1.5 text-left',\n 'hover:bg-muted/60 focus-visible:bg-muted/60 transition-colors',\n )}\n >\n <div className=\"flex min-w-0 flex-1 flex-col leading-tight\">\n <Text\n tag=\"span\"\n size=\"xs\"\n weight=\"medium\"\n className=\"truncate\"\n >\n {suggestion.label}\n </Text>\n {suggestion.description ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 truncate\"\n >\n {suggestion.description}\n </Text>\n ) : null}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n","/**\n * Walk an HTML string and extract `data-ref-id=\"kind:id\"` spans /\n * anchors as a list of `Mention` records. Used by the comment composer\n * to keep its `mentions` state in sync with what's actually present in\n * the editor — when the user backspaces a chip out of the body, the\n * draft's mentions list shrinks too.\n *\n * The output preserves first-occurrence order and deduplicates by id.\n * Caller can merge the resulting Mentions with previously known ones to\n * preserve `href` / `data` payloads that aren't expressible in HTML.\n */\nimport type { Mention } from '../mentions.types';\n\nconst REF_RE =\n /<(?:span|a)\\b[^>]*?data-ref-id\\s*=\\s*\"([^\"]+)\"[^>]*?>([\\s\\S]*?)<\\/(?:span|a)>/gi;\nconst KIND_ATTR_RE = /data-ref-kind\\s*=\\s*\"([^\"]+)\"/i;\n\nexport function parseMentionsFromHtml<TKind extends string = string>(\n html: string,\n): Array<Mention<TKind>> {\n const out: Mention<TKind>[] = [];\n if (!html) return out;\n\n const seen = new Set<string>();\n let match: RegExpExecArray | null;\n REF_RE.lastIndex = 0;\n\n while ((match = REF_RE.exec(html)) !== null) {\n const [tagText, id, inner] = match;\n if (seen.has(id)) continue;\n seen.add(id);\n\n const kindMatch = tagText.match(KIND_ATTR_RE);\n const kind = (kindMatch?.[1] ?? id.split(':')[0] ?? '') as TKind;\n const label = (inner ?? '')\n .replace(/<[^>]*>/g, '')\n .replace(/&nbsp;/g, ' ')\n .replace(/^[@#$&%!~]\\s*/, '')\n .trim();\n\n out.push({ id, kind, label });\n }\n\n return out;\n}\n"],"mappings":"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"}