admin-ui-starter-kit 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (983) hide show
  1. package/.agents/skills/admin-ui-consumer-migration/SKILL.md +26 -4
  2. package/.agents/skills/admin-ui-consumer-migration/references/actions-service.md +153 -2
  3. package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +52 -0
  4. package/.agents/skills/component-library-rules/references/components/INDEX.json +8 -7
  5. package/.agents/skills/component-library-rules/references/components/INDEX.md +1 -0
  6. package/.agents/skills/component-library-rules/references/components/base__combobox.md +37 -1
  7. package/.agents/skills/component-library-rules/references/components/base__forms.md +56 -1
  8. package/.agents/skills/component-library-rules/references/components/base__table.md +145 -3
  9. package/.agents/skills/component-library-rules/references/components/composed__admin.md +66 -0
  10. package/.agents/skills/component-library-rules/references/components/composed__resource-selector-card.md +85 -0
  11. package/.agents/skills/component-library-rules/references/components/features__filters.md +69 -0
  12. package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +35 -0
  13. package/.agents/skills/component-library-rules/references/components/layout__layout-page.md +170 -7
  14. package/CHANGELOG.md +30 -3
  15. package/COMPONENT_SELECTION.md +30 -3
  16. package/INTEGRATION.md +98 -3
  17. package/README.md +108 -14
  18. package/dist/_shared/ai-artifact--vEDQFvM.cjs +3 -0
  19. package/dist/_shared/ai-artifact--vEDQFvM.cjs.map +1 -0
  20. package/dist/_shared/ai-artifact-p45wDWWX.js +1099 -0
  21. package/dist/_shared/ai-artifact-p45wDWWX.js.map +1 -0
  22. package/dist/_shared/auth-1Fl_2u-c.js +643 -0
  23. package/dist/_shared/auth-1Fl_2u-c.js.map +1 -0
  24. package/dist/_shared/auth-CVDNwcge.cjs +2 -0
  25. package/dist/_shared/auth-CVDNwcge.cjs.map +1 -0
  26. package/dist/_shared/badge-A8wQRShC.js +108 -0
  27. package/dist/_shared/badge-A8wQRShC.js.map +1 -0
  28. package/dist/_shared/badge-D7A2LnSf.cjs +2 -0
  29. package/dist/_shared/badge-D7A2LnSf.cjs.map +1 -0
  30. package/dist/_shared/combobox-CEzH533Y.cjs +2 -0
  31. package/dist/_shared/combobox-CEzH533Y.cjs.map +1 -0
  32. package/dist/_shared/combobox-Dc4vaeGt.js +927 -0
  33. package/dist/_shared/combobox-Dc4vaeGt.js.map +1 -0
  34. package/dist/_shared/comments-BDnq4RPN.js +952 -0
  35. package/dist/_shared/comments-BDnq4RPN.js.map +1 -0
  36. package/dist/_shared/comments-C4djB-nG.cjs +2 -0
  37. package/dist/_shared/comments-C4djB-nG.cjs.map +1 -0
  38. package/dist/_shared/display-AtPyyUZc.cjs +2 -0
  39. package/dist/_shared/display-AtPyyUZc.cjs.map +1 -0
  40. package/dist/_shared/display-CL69dmsv.js +1471 -0
  41. package/dist/_shared/display-CL69dmsv.js.map +1 -0
  42. package/dist/_shared/forms-Bi5rUH3t.cjs +2 -0
  43. package/dist/_shared/forms-Bi5rUH3t.cjs.map +1 -0
  44. package/dist/_shared/forms-Yd0b-3MQ.js +3556 -0
  45. package/dist/_shared/forms-Yd0b-3MQ.js.map +1 -0
  46. package/dist/_shared/header-C4SvsbMn.cjs +2 -0
  47. package/dist/_shared/header-C4SvsbMn.cjs.map +1 -0
  48. package/dist/_shared/header-CcnW83Vs.js +447 -0
  49. package/dist/_shared/header-CcnW83Vs.js.map +1 -0
  50. package/dist/_shared/hooks-DsDGr8xz.cjs +2 -0
  51. package/dist/_shared/hooks-DsDGr8xz.cjs.map +1 -0
  52. package/dist/_shared/hooks-IEM3N4VG.js +95 -0
  53. package/dist/_shared/hooks-IEM3N4VG.js.map +1 -0
  54. package/dist/_shared/layout.types-CYuDZ_4h.cjs +2 -0
  55. package/dist/_shared/layout.types-CYuDZ_4h.cjs.map +1 -0
  56. package/dist/_shared/layout.types-j7zZAPtg.js +28 -0
  57. package/dist/_shared/layout.types-j7zZAPtg.js.map +1 -0
  58. package/dist/_shared/mentions-CqwT7pUL.cjs +2 -0
  59. package/dist/_shared/mentions-CqwT7pUL.cjs.map +1 -0
  60. package/dist/_shared/mentions-RxzSRAWE.js +506 -0
  61. package/dist/_shared/mentions-RxzSRAWE.js.map +1 -0
  62. package/dist/_shared/navigation-B-TE-HR-.cjs +2 -0
  63. package/dist/_shared/navigation-B-TE-HR-.cjs.map +1 -0
  64. package/dist/_shared/navigation-Cg0UqMDP.js +424 -0
  65. package/dist/_shared/navigation-Cg0UqMDP.js.map +1 -0
  66. package/dist/_shared/page-Bl_eSGLh.js +262 -0
  67. package/dist/_shared/page-Bl_eSGLh.js.map +1 -0
  68. package/dist/_shared/page-DTEqSyEK.cjs +2 -0
  69. package/dist/_shared/page-DTEqSyEK.cjs.map +1 -0
  70. package/dist/_shared/resource-Bb7dj-aj.cjs +2 -0
  71. package/dist/_shared/resource-Bb7dj-aj.cjs.map +1 -0
  72. package/dist/_shared/resource-DljsYA7W.js +243 -0
  73. package/dist/_shared/resource-DljsYA7W.js.map +1 -0
  74. package/dist/_shared/settings-BtNkFHl3.cjs +2 -0
  75. package/dist/_shared/settings-BtNkFHl3.cjs.map +1 -0
  76. package/dist/_shared/settings-Do6SuM-H.js +143 -0
  77. package/dist/_shared/settings-Do6SuM-H.js.map +1 -0
  78. package/dist/_shared/sidebar-BhcdQ9e9.cjs +2 -0
  79. package/dist/_shared/sidebar-BhcdQ9e9.cjs.map +1 -0
  80. package/dist/_shared/sidebar-CMoxtuSw.js +538 -0
  81. package/dist/_shared/sidebar-CMoxtuSw.js.map +1 -0
  82. package/dist/_shared/table-BgpL5Yt8.cjs +2 -0
  83. package/dist/_shared/table-BgpL5Yt8.cjs.map +1 -0
  84. package/dist/_shared/table-Ct3nl0lV.js +1381 -0
  85. package/dist/_shared/table-Ct3nl0lV.js.map +1 -0
  86. package/dist/_shared/workspace-BzTFBkmd.cjs +2 -0
  87. package/dist/_shared/workspace-BzTFBkmd.cjs.map +1 -0
  88. package/dist/_shared/workspace-CvUYln5V.js +357 -0
  89. package/dist/_shared/workspace-CvUYln5V.js.map +1 -0
  90. package/dist/components/base/badge/badge.d.ts.map +1 -1
  91. package/dist/components/base/badge/index.cjs +1 -1
  92. package/dist/components/base/badge/index.js +1 -1
  93. package/dist/components/base/combobox/async-resource-combobox.d.ts +41 -0
  94. package/dist/components/base/combobox/async-resource-combobox.d.ts.map +1 -0
  95. package/dist/components/base/combobox/index.cjs +1 -1
  96. package/dist/components/base/combobox/index.d.ts +1 -0
  97. package/dist/components/base/combobox/index.d.ts.map +1 -1
  98. package/dist/components/base/combobox/index.js +2 -2
  99. package/dist/components/base/data-view/data-view.d.ts +6 -0
  100. package/dist/components/base/data-view/data-view.d.ts.map +1 -0
  101. package/dist/components/base/data-view/data-view.strings.d.ts +7 -0
  102. package/dist/components/base/data-view/data-view.strings.d.ts.map +1 -0
  103. package/dist/components/base/data-view/data-view.types.d.ts +57 -0
  104. package/dist/components/base/data-view/data-view.types.d.ts.map +1 -0
  105. package/dist/components/base/data-view/index.cjs +2 -0
  106. package/dist/components/base/data-view/index.cjs.map +1 -0
  107. package/dist/components/base/data-view/index.d.ts +4 -0
  108. package/dist/components/base/data-view/index.d.ts.map +1 -0
  109. package/dist/components/base/data-view/index.js +146 -0
  110. package/dist/components/base/data-view/index.js.map +1 -0
  111. package/dist/components/base/display/index.cjs +1 -1
  112. package/dist/components/base/display/index.js +5 -5
  113. package/dist/components/base/forms/index.cjs +1 -1
  114. package/dist/components/base/forms/index.d.ts +1 -0
  115. package/dist/components/base/forms/index.d.ts.map +1 -1
  116. package/dist/components/base/forms/index.js +5 -6
  117. package/dist/components/base/forms/workflow.d.ts +47 -0
  118. package/dist/components/base/forms/workflow.d.ts.map +1 -0
  119. package/dist/components/base/navigation/index.cjs +1 -1
  120. package/dist/components/base/navigation/index.js +1 -1
  121. package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -1
  122. package/dist/components/base/table/data-table.d.ts +1 -1
  123. package/dist/components/base/table/data-table.d.ts.map +1 -1
  124. package/dist/components/base/table/index.cjs +1 -1
  125. package/dist/components/base/table/index.d.ts +1 -1
  126. package/dist/components/base/table/index.d.ts.map +1 -1
  127. package/dist/components/base/table/index.js +2 -2
  128. package/dist/components/base/table/partials/cell-renderers.d.ts +69 -0
  129. package/dist/components/base/table/partials/cell-renderers.d.ts.map +1 -1
  130. package/dist/components/base/table/table.strings.d.ts.map +1 -1
  131. package/dist/components/base/table/table.types.d.ts +22 -1
  132. package/dist/components/base/table/table.types.d.ts.map +1 -1
  133. package/dist/components/composed/admin/action-surfaces/index.d.ts +118 -0
  134. package/dist/components/composed/admin/action-surfaces/index.d.ts.map +1 -0
  135. package/dist/components/composed/admin/index.cjs +1 -1
  136. package/dist/components/composed/admin/index.cjs.map +1 -1
  137. package/dist/components/composed/admin/index.d.ts +1 -0
  138. package/dist/components/composed/admin/index.d.ts.map +1 -1
  139. package/dist/components/composed/admin/index.js +392 -131
  140. package/dist/components/composed/admin/index.js.map +1 -1
  141. package/dist/components/composed/ai/index.cjs +1 -1
  142. package/dist/components/composed/ai/index.js +17 -17
  143. package/dist/components/composed/cards/index.cjs +1 -1
  144. package/dist/components/composed/cards/index.js +2 -2
  145. package/dist/components/composed/commerce/index.cjs +1 -1
  146. package/dist/components/composed/commerce/index.cjs.map +1 -1
  147. package/dist/components/composed/commerce/index.js +43 -44
  148. package/dist/components/composed/commerce/index.js.map +1 -1
  149. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  150. package/dist/components/composed/dark-surfaces/index.js +17 -17
  151. package/dist/components/composed/data-display/index.cjs +1 -1
  152. package/dist/components/composed/data-display/index.cjs.map +1 -1
  153. package/dist/components/composed/data-display/index.d.ts +1 -0
  154. package/dist/components/composed/data-display/index.d.ts.map +1 -1
  155. package/dist/components/composed/data-display/index.js +355 -285
  156. package/dist/components/composed/data-display/index.js.map +1 -1
  157. package/dist/components/composed/data-display/resource-selector-card.d.ts +43 -0
  158. package/dist/components/composed/data-display/resource-selector-card.d.ts.map +1 -0
  159. package/dist/components/composed/navigation/index.cjs +1 -1
  160. package/dist/components/composed/navigation/index.js +1 -1
  161. package/dist/components/composed/timelines/index.cjs +1 -1
  162. package/dist/components/composed/timelines/index.js +1 -1
  163. package/dist/components/features/activities/index.cjs +1 -1
  164. package/dist/components/features/activities/index.js +1 -1
  165. package/dist/components/features/ai-chat/index.cjs +1 -1
  166. package/dist/components/features/ai-chat/index.js +2 -2
  167. package/dist/components/features/comments/index.cjs +1 -1
  168. package/dist/components/features/comments/index.js +2 -2
  169. package/dist/components/features/event-log/index.cjs +1 -1
  170. package/dist/components/features/event-log/index.js +2 -2
  171. package/dist/components/features/filters/filter-query.d.ts +22 -0
  172. package/dist/components/features/filters/filter-query.d.ts.map +1 -0
  173. package/dist/components/features/filters/index.cjs +1 -1
  174. package/dist/components/features/filters/index.cjs.map +1 -1
  175. package/dist/components/features/filters/index.d.ts +1 -0
  176. package/dist/components/features/filters/index.d.ts.map +1 -1
  177. package/dist/components/features/filters/index.js +105 -22
  178. package/dist/components/features/filters/index.js.map +1 -1
  179. package/dist/components/features/global-search/index.cjs +1 -1
  180. package/dist/components/features/global-search/index.js +1 -1
  181. package/dist/components/features/media-library/index.cjs +1 -1
  182. package/dist/components/features/media-library/index.cjs.map +1 -1
  183. package/dist/components/features/media-library/index.js +36 -37
  184. package/dist/components/features/media-library/index.js.map +1 -1
  185. package/dist/components/features/mentions/index.cjs +1 -1
  186. package/dist/components/features/mentions/index.js +1 -1
  187. package/dist/components/features/products/index.cjs +1 -1
  188. package/dist/components/features/products/index.cjs.map +1 -1
  189. package/dist/components/features/products/index.js +4 -5
  190. package/dist/components/features/products/index.js.map +1 -1
  191. package/dist/components/features/schema-form/index.cjs +1 -1
  192. package/dist/components/features/schema-form/index.cjs.map +1 -1
  193. package/dist/components/features/schema-form/index.js +20 -20
  194. package/dist/components/features/suggestions/index.cjs +1 -1
  195. package/dist/components/features/suggestions/index.js +1 -1
  196. package/dist/components/layout/app-shell/index.cjs +1 -1
  197. package/dist/components/layout/app-shell/index.d.ts +1 -0
  198. package/dist/components/layout/app-shell/index.d.ts.map +1 -1
  199. package/dist/components/layout/app-shell/index.js +1 -1
  200. package/dist/components/layout/auth/index.cjs +1 -1
  201. package/dist/components/layout/auth/index.js +1 -1
  202. package/dist/components/layout/header/header.types.d.ts +40 -4
  203. package/dist/components/layout/header/header.types.d.ts.map +1 -1
  204. package/dist/components/layout/header/index.cjs +1 -1
  205. package/dist/components/layout/header/index.d.ts +5 -1
  206. package/dist/components/layout/header/index.d.ts.map +1 -1
  207. package/dist/components/layout/header/index.js +2 -2
  208. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +3 -0
  209. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts.map +1 -0
  210. package/dist/components/layout/header/partials/header-notifications.d.ts.map +1 -1
  211. package/dist/components/layout/header/partials/header-search.d.ts.map +1 -1
  212. package/dist/components/layout/header/partials/header-tool-button.d.ts +5 -0
  213. package/dist/components/layout/header/partials/header-tool-button.d.ts.map +1 -0
  214. package/dist/components/layout/header/partials/header-tool-popover.d.ts +3 -0
  215. package/dist/components/layout/header/partials/header-tool-popover.d.ts.map +1 -0
  216. package/dist/components/layout/header/partials/header-user-menu.d.ts.map +1 -1
  217. package/dist/components/layout/hooks/index.cjs +1 -1
  218. package/dist/components/layout/hooks/index.js +1 -1
  219. package/dist/components/layout/index.cjs +1 -1
  220. package/dist/components/layout/index.d.ts +2 -0
  221. package/dist/components/layout/index.d.ts.map +1 -1
  222. package/dist/components/layout/index.js +13 -10
  223. package/dist/components/layout/page/index.cjs +1 -1
  224. package/dist/components/layout/page/index.js +1 -1
  225. package/dist/components/layout/resource/index.cjs +1 -0
  226. package/dist/components/layout/resource/index.d.ts +3 -0
  227. package/dist/components/layout/resource/index.d.ts.map +1 -0
  228. package/dist/components/layout/resource/index.js +2 -0
  229. package/dist/components/layout/resource/resource.d.ts +13 -0
  230. package/dist/components/layout/resource/resource.d.ts.map +1 -0
  231. package/dist/components/layout/resource/resource.types.d.ts +86 -0
  232. package/dist/components/layout/resource/resource.types.d.ts.map +1 -0
  233. package/dist/components/layout/settings/index.cjs +1 -0
  234. package/dist/components/layout/settings/index.d.ts +2 -0
  235. package/dist/components/layout/settings/index.d.ts.map +1 -0
  236. package/dist/components/layout/settings/index.js +2 -0
  237. package/dist/components/layout/settings/settings.d.ts +47 -0
  238. package/dist/components/layout/settings/settings.d.ts.map +1 -0
  239. package/dist/components/layout/sidebar/index.cjs +1 -1
  240. package/dist/components/layout/sidebar/index.d.ts +1 -0
  241. package/dist/components/layout/sidebar/index.d.ts.map +1 -1
  242. package/dist/components/layout/sidebar/index.js +3 -3
  243. package/dist/components/layout/workspace/index.cjs +1 -1
  244. package/dist/components/layout/workspace/index.js +1 -1
  245. package/dist/services/actions/action-adapters.d.ts +102 -0
  246. package/dist/services/actions/action-adapters.d.ts.map +1 -0
  247. package/dist/services/actions/action-provider.d.ts +1 -1
  248. package/dist/services/actions/action-provider.d.ts.map +1 -1
  249. package/dist/services/actions/action-store.d.ts +13 -1
  250. package/dist/services/actions/action-store.d.ts.map +1 -1
  251. package/dist/services/actions/actions.types.d.ts +86 -0
  252. package/dist/services/actions/actions.types.d.ts.map +1 -1
  253. package/dist/services/actions/hooks.d.ts +2 -1
  254. package/dist/services/actions/hooks.d.ts.map +1 -1
  255. package/dist/services/actions/index.cjs +1 -1
  256. package/dist/services/actions/index.cjs.map +1 -1
  257. package/dist/services/actions/index.d.ts +4 -3
  258. package/dist/services/actions/index.d.ts.map +1 -1
  259. package/dist/services/actions/index.js +412 -112
  260. package/dist/services/actions/index.js.map +1 -1
  261. package/dist/showcase/assets/AreaChart-CPs34Emq.js +6 -0
  262. package/dist/showcase/assets/CompositeItem-CRBdF4lY.js +1 -0
  263. package/dist/showcase/assets/CompositeRoot-BJL04x4e.js +1 -0
  264. package/dist/showcase/assets/DialogTrigger-DLTfNVyT.js +1 -0
  265. package/dist/showcase/assets/LabelableContext-DqxJotB_.js +1 -0
  266. package/dist/showcase/assets/PreviewLayout-DQIZaXaO.js +1 -0
  267. package/dist/showcase/assets/RadioGroup-Bd_Zncc1.js +1 -0
  268. package/dist/showcase/assets/Separator-BP98bGSM.js +1 -0
  269. package/dist/showcase/assets/ToolbarRootContext-CHQj8-IW.js +1 -0
  270. package/dist/showcase/assets/accordion-C-grh_FX.js +171 -0
  271. package/dist/showcase/assets/accordion-variants-xiD_mqaf.js +1 -0
  272. package/dist/showcase/assets/action-menu-BkBav9jX.js +1 -0
  273. package/dist/showcase/assets/activities-DWhVEoyf.js +501 -0
  274. package/dist/showcase/assets/activities-feed-card-BW5nKGmZ.js +1 -0
  275. package/dist/showcase/assets/activity-poGMMgYW.js +1 -0
  276. package/dist/showcase/assets/admin-Dd5rNbt8.js +140 -0
  277. package/dist/showcase/assets/ai-B-HxItKA.js +41 -0
  278. package/dist/showcase/assets/ai-artifact-CakosBY2.js +2 -0
  279. package/dist/showcase/assets/ai-chat-DdxooReQ.js +568 -0
  280. package/dist/showcase/assets/ai-elements-D1Vv9_Tw.js +387 -0
  281. package/dist/showcase/assets/ai-new-nIwh-IOk.js +167 -0
  282. package/dist/showcase/assets/ai-tool-call-D_D0wP5v.js +1 -0
  283. package/dist/showcase/assets/alert-BUcCtIUZ.js +1 -0
  284. package/dist/showcase/assets/alert-Dia0s7JO.js +62 -0
  285. package/dist/showcase/assets/alert-T1jitthq.js +93 -0
  286. package/dist/showcase/assets/api-key-list-BH7hCegB.js +1 -0
  287. package/dist/showcase/assets/api-key-list-DGw5v3TM.js +73 -0
  288. package/dist/showcase/assets/app-sidebar-C9tjHr7T.js +1 -0
  289. package/dist/showcase/assets/arrow-down-B6kyPDb5.js +1 -0
  290. package/dist/showcase/assets/arrow-left-D0CtgCZo.js +1 -0
  291. package/dist/showcase/assets/arrow-right-KBaOzj0x.js +1 -0
  292. package/dist/showcase/assets/arrow-up-C4Mo45qq.js +1 -0
  293. package/dist/showcase/assets/arrow-up-right-DP1T-yaT.js +1 -0
  294. package/dist/showcase/assets/avatar-D7SDbnVK.js +57 -0
  295. package/dist/showcase/assets/avatar-Dk78XyHT.js +1 -0
  296. package/dist/showcase/assets/badge-BynPmAU-.js +28 -0
  297. package/dist/showcase/assets/badge-check-BLKxMna6.js +1 -0
  298. package/dist/showcase/assets/bell-YYeVQNAQ.js +1 -0
  299. package/dist/showcase/assets/bot-DW1y5yQ-.js +1 -0
  300. package/dist/showcase/assets/box-xRYm3qua.js +1 -0
  301. package/dist/showcase/assets/brain-D_5EG0Lz.js +1 -0
  302. package/dist/showcase/assets/brand-Dyp6oyOk.js +36 -0
  303. package/dist/showcase/assets/breadcrumb-DXvRsHCJ.js +52 -0
  304. package/dist/showcase/assets/breadcrumb-IsBRcWTe.js +1 -0
  305. package/dist/showcase/assets/breadcrumbs-BU7Rgcpu.js +1 -0
  306. package/dist/showcase/assets/briefcase-DNJAkTSQ.js +1 -0
  307. package/dist/showcase/assets/building-2-ew23uhTO.js +1 -0
  308. package/dist/showcase/assets/button-Vw1Oyu_k.js +44 -0
  309. package/dist/showcase/assets/button-group-B-jDeq6X.js +1 -0
  310. package/dist/showcase/assets/buttons-C51ePl4d.js +270 -0
  311. package/dist/showcase/assets/calendar-B5HmDXFy.js +16 -0
  312. package/dist/showcase/assets/calendar-BcfonDWf.js +1 -0
  313. package/dist/showcase/assets/calendar-C30zoOBE.js +1 -0
  314. package/dist/showcase/assets/calendar-days-RYOuU9Cg.js +1 -0
  315. package/dist/showcase/assets/camera-CyHnOpqm.js +1 -0
  316. package/dist/showcase/assets/card-Btuv-VxD.js +188 -0
  317. package/dist/showcase/assets/card-BvOjmZEl.js +1 -0
  318. package/dist/showcase/assets/card-primitives-FJQ8zNnk.js +1 -0
  319. package/dist/showcase/assets/card-radio-group-CEX1QGZc.js +1 -0
  320. package/dist/showcase/assets/cards-CL6XfZ22.js +328 -0
  321. package/dist/showcase/assets/carousel-D9G8bQhs.js +449 -0
  322. package/dist/showcase/assets/cell-renderers-CFw3ElYS.js +1 -0
  323. package/dist/showcase/assets/chart-CXAM6h1e.js +358 -0
  324. package/dist/showcase/assets/chart-column-BAuLvocu.js +1 -0
  325. package/dist/showcase/assets/checkbox-Bu3lf4gm.js +1 -0
  326. package/dist/showcase/assets/chevron-down-BbbFJsFU.js +1 -0
  327. package/dist/showcase/assets/chevron-left-CmperXCk.js +1 -0
  328. package/dist/showcase/assets/chevron-right-0nQcAzMY.js +1 -0
  329. package/dist/showcase/assets/chevron-up-BXSFzrxh.js +1 -0
  330. package/dist/showcase/assets/chevrons-up-down-lvrM2T-O.js +1 -0
  331. package/dist/showcase/assets/circle-DswWOvJq.js +1 -0
  332. package/dist/showcase/assets/circle-alert-DM8Q0Da0.js +1 -0
  333. package/dist/showcase/assets/circle-check-BYi8zv0a.js +1 -0
  334. package/dist/showcase/assets/circle-check-big-WtxiRvrB.js +1 -0
  335. package/dist/showcase/assets/circle-dot-MfYw-Dij.js +1 -0
  336. package/dist/showcase/assets/circle-question-mark-CbXDG7RP.js +1 -0
  337. package/dist/showcase/assets/circle-x-DeZby2HN.js +1 -0
  338. package/dist/showcase/assets/clock-3-BxradwSg.js +1 -0
  339. package/dist/showcase/assets/clock-BBX3LCxu.js +1 -0
  340. package/dist/showcase/assets/code-xml-ldsBhjwS.js +1 -0
  341. package/dist/showcase/assets/collapsible-COxB1q4f.js +1 -0
  342. package/dist/showcase/assets/collapsible-D8iHSi7O.js +27 -0
  343. package/dist/showcase/assets/combobox-gNdpv0PU.js +726 -0
  344. package/dist/showcase/assets/command-BNVn6pYm.js +1 -0
  345. package/dist/showcase/assets/command-Bwp2eLDF.js +1 -0
  346. package/dist/showcase/assets/comment-composer-eU5HG1ZD.js +1 -0
  347. package/dist/showcase/assets/comment-item-AKJEHLvt.js +1 -0
  348. package/dist/showcase/assets/comments-hcLJicNU.js +357 -0
  349. package/dist/showcase/assets/commerce-C_RgOVxU.js +79 -0
  350. package/dist/showcase/assets/commerce-extras-CVVnDyB5.js +189 -0
  351. package/dist/showcase/assets/composite-BW91WkOo.js +1 -0
  352. package/dist/showcase/assets/contact-card-CE82BDxj.js +65 -0
  353. package/dist/showcase/assets/content-container-Cc8Vv5Wp.js +1 -0
  354. package/dist/showcase/assets/copyable-CD9f6sxk.js +96 -0
  355. package/dist/showcase/assets/copyable-DRvJ9iOu.js +1 -0
  356. package/dist/showcase/assets/course-card-DYzULN2A.js +77 -0
  357. package/dist/showcase/assets/cpu-Cc__BewW.js +1 -0
  358. package/dist/showcase/assets/credit-card-CoIW8_5L.js +1 -0
  359. package/dist/showcase/assets/currency-DEKUvlFU.js +149 -0
  360. package/dist/showcase/assets/dark-surfaces-D5WXaLLj.js +90 -0
  361. package/dist/showcase/assets/database-C8o4g1ov.js +1 -0
  362. package/dist/showcase/assets/date-block-Aw2riL52.js +1 -0
  363. package/dist/showcase/assets/date-picker-BrBCLxZ8.js +1 -0
  364. package/dist/showcase/assets/date-pickers-B84_YAGT.js +73 -0
  365. package/dist/showcase/assets/dense-info-BaI61NnP.js +106 -0
  366. package/dist/showcase/assets/dialog-CfKGB1qy.js +1 -0
  367. package/dist/showcase/assets/dialog-DpfYwJPk.js +1 -0
  368. package/dist/showcase/assets/display-ZDXpxNSP.js +403 -0
  369. package/dist/showcase/assets/dist-DRkwLUFP.js +45 -0
  370. package/dist/showcase/assets/dollar-sign-BTuul0J-.js +1 -0
  371. package/dist/showcase/assets/download-Nn6XkM9l.js +1 -0
  372. package/dist/showcase/assets/dropdown-menu-CrcweCup.js +1 -0
  373. package/dist/showcase/assets/dropzone-MajEhAfA.js +1 -0
  374. package/dist/showcase/assets/earth-Cv_-EtPW.js +1 -0
  375. package/dist/showcase/assets/ellipsis-D0y6rUzm.js +1 -0
  376. package/dist/showcase/assets/ellipsis-vertical-B6ICYsU2.js +1 -0
  377. package/dist/showcase/assets/empty-CWtvDL2Z.js +1 -0
  378. package/dist/showcase/assets/empty-item-CBdSL5K4.js +49 -0
  379. package/dist/showcase/assets/empty-state-DpAXXKE_.js +1 -0
  380. package/dist/showcase/assets/empty-state-x7W66Jff.js +188 -0
  381. package/dist/showcase/assets/enhanced-activities-BgQBDjph.js +361 -0
  382. package/dist/showcase/assets/enhanced-combobox-BT-d7sfw.js +1 -0
  383. package/dist/showcase/assets/event-calendar-Bl3N30L5.js +138 -0
  384. package/dist/showcase/assets/event-log-BI24HOvx.js +330 -0
  385. package/dist/showcase/assets/example-CbMg22fx.js +1 -0
  386. package/dist/showcase/assets/external-link-C4QW5KPr.js +1 -0
  387. package/dist/showcase/assets/eye-rvb4fYw0.js +1 -0
  388. package/dist/showcase/assets/feature-announcement-CChQvOnH.js +34 -0
  389. package/dist/showcase/assets/file-GOMuLez7.js +1 -0
  390. package/dist/showcase/assets/file-text-B21ZcL9w.js +1 -0
  391. package/dist/showcase/assets/filters-Crp5EI1q.js +139 -0
  392. package/dist/showcase/assets/flag-D1iXMqPC.js +1 -0
  393. package/dist/showcase/assets/folder-open-CjZE_PS8.js +1 -0
  394. package/dist/showcase/assets/form-field-Dtn_NArM.js +1 -0
  395. package/dist/showcase/assets/format-Cu09wP-k.js +1 -0
  396. package/dist/showcase/assets/forms-noSArwvn.js +911 -0
  397. package/dist/showcase/assets/frame-2DJdBXkw.js +167 -0
  398. package/dist/showcase/assets/getPseudoElementBounds-DxlN6Yut.js +1 -0
  399. package/dist/showcase/assets/gift-DBIsZsVg.js +1 -0
  400. package/dist/showcase/assets/giftcard-cards-B3ffDDjK.js +85 -0
  401. package/dist/showcase/assets/git-branch-6eIv9W2g.js +1 -0
  402. package/dist/showcase/assets/global-search-BelZn8mj.js +215 -0
  403. package/dist/showcase/assets/global-search-DSMNBBiZ.js +1 -0
  404. package/dist/showcase/assets/globe-B_Lqx3uz.js +1 -0
  405. package/dist/showcase/assets/gradient-card-D_2eaE6O.js +58 -0
  406. package/dist/showcase/assets/hash-BC0RnYwr.js +1 -0
  407. package/dist/showcase/assets/header-CMjgUhtM.js +1 -0
  408. package/dist/showcase/assets/header-notifications-fOFoqfCR.js +1 -0
  409. package/dist/showcase/assets/heart-BM6yPMXn.js +1 -0
  410. package/dist/showcase/assets/house-CnsMNKdQ.js +1 -0
  411. package/dist/showcase/assets/icon-badge-IP9B3lQm.js +1 -0
  412. package/dist/showcase/assets/image-B5jt_w43.js +1 -0
  413. package/dist/showcase/assets/inbox-BcbV9uGN.js +1 -0
  414. package/dist/showcase/assets/index-Bn8k0P7-.css +2 -0
  415. package/dist/showcase/assets/index-DNH0y0r-.js +10 -0
  416. package/dist/showcase/assets/inertValue-B82SGILi.js +1 -0
  417. package/dist/showcase/assets/info-DO5VmDSw.js +1 -0
  418. package/dist/showcase/assets/inline-stat-B2s_ozrX.js +1 -0
  419. package/dist/showcase/assets/input-BCxdburb.js +1 -0
  420. package/dist/showcase/assets/input-DcQuALxy.js +1 -0
  421. package/dist/showcase/assets/input-group-DZJrOGbm.js +1 -0
  422. package/dist/showcase/assets/input-group-PwfoPR94.js +47 -0
  423. package/dist/showcase/assets/inputs-DetnUcEp.js +155 -0
  424. package/dist/showcase/assets/invoice-header-BMWL_9sW.js +36 -0
  425. package/dist/showcase/assets/invoice-items-DLEQR54f.js +36 -0
  426. package/dist/showcase/assets/invoice-mini-BxO8W_p2.js +14 -0
  427. package/dist/showcase/assets/invoice-table-ClMTdfvZ.js +30 -0
  428. package/dist/showcase/assets/isSameDay-B9x5Mpln.js +1 -0
  429. package/dist/showcase/assets/isToday-CT4NGB5x.js +1 -0
  430. package/dist/showcase/assets/italic-BiQv-7DA.js +1 -0
  431. package/dist/showcase/assets/item-CdgzxWcL.js +1 -0
  432. package/dist/showcase/assets/item-JreKWzkR.js +134 -0
  433. package/dist/showcase/assets/item-a8FCQMvC.js +1 -0
  434. package/dist/showcase/assets/kanban-CekpGtlO.js +186 -0
  435. package/dist/showcase/assets/key-round-CpIUGlhG.js +1 -0
  436. package/dist/showcase/assets/label-BE1d_Rxi.js +1 -0
  437. package/dist/showcase/assets/languages-DaFWrOam.js +1 -0
  438. package/dist/showcase/assets/layers-DDIuTz4-.js +1 -0
  439. package/dist/showcase/assets/layout-app-shell-BkqOwNe9.js +608 -0
  440. package/dist/showcase/assets/layout-auth-Bng_0NM0.js +754 -0
  441. package/dist/showcase/assets/layout-containers-Bk_jSDWd.js +101 -0
  442. package/dist/showcase/assets/layout-header-CuJVU1Rx.js +203 -0
  443. package/dist/showcase/assets/layout-page-DHOPox5Z.js +278 -0
  444. package/dist/showcase/assets/layout-primitives-BnIgANs6.js +34 -0
  445. package/dist/showcase/assets/layout-sidebar-BUOjQm9-.js +224 -0
  446. package/dist/showcase/assets/layout-users-DFlJQAuB.js +117 -0
  447. package/dist/showcase/assets/layout-workspace-Cq63UWwT.js +183 -0
  448. package/dist/showcase/assets/lock-DTD3z5Vh.js +1 -0
  449. package/dist/showcase/assets/lock-keyhole-Bbs1Ry2S.js +1 -0
  450. package/dist/showcase/assets/mail-DAa8myka.js +1 -0
  451. package/dist/showcase/assets/mail-check-DrmYfqQb.js +1 -0
  452. package/dist/showcase/assets/map-DfYPJKDx.js +124 -0
  453. package/dist/showcase/assets/map-pin-Cf_uffQY.js +1 -0
  454. package/dist/showcase/assets/media-library-Duyf6M0c.js +695 -0
  455. package/dist/showcase/assets/mention-inline-suggestions-tOlG56Jr.js +1 -0
  456. package/dist/showcase/assets/mentions-LbZlN995.js +138 -0
  457. package/dist/showcase/assets/menus-Cs95R125.js +165 -0
  458. package/dist/showcase/assets/message-square-CjaeUwPc.js +1 -0
  459. package/dist/showcase/assets/metadata-list-Bcy5s1_q.js +1 -0
  460. package/dist/showcase/assets/metadata-list-C9L63gMM2.js +288 -0
  461. package/dist/showcase/assets/metric-D8bF87C1.js +1 -0
  462. package/dist/showcase/assets/metric-bar-DQF1jEsY.js +1 -0
  463. package/dist/showcase/assets/metric-grid-DJZjbFrm.js +1 -0
  464. package/dist/showcase/assets/metric-trend-chip-C9YeKxwe.js +1 -0
  465. package/dist/showcase/assets/metrics-analytics-bar-CfGjnKEG.js +44 -0
  466. package/dist/showcase/assets/metrics-analytics-cards-C4R2q2ia.js +50 -0
  467. package/dist/showcase/assets/metrics-comparison-B2FZ-rUG.js +76 -0
  468. package/dist/showcase/assets/metrics-heatmap-BS4EafAM.js +27 -0
  469. package/dist/showcase/assets/metrics-inline-badge-CyWA0Plw.js +17 -0
  470. package/dist/showcase/assets/metrics-kpi-row-CH_KTuo2.js +31 -0
  471. package/dist/showcase/assets/metrics-micro-grid-Dw1rbkBU.js +42 -0
  472. package/dist/showcase/assets/metrics-overview-BuLSn0GC.js +192 -0
  473. package/dist/showcase/assets/metrics-stat-cards-Zo4F0-y4.js +54 -0
  474. package/dist/showcase/assets/minus-COUx_vHQ.js +1 -0
  475. package/dist/showcase/assets/money-display-prumQLQ2.js +1 -0
  476. package/dist/showcase/assets/month-year-picker-BDTiuGOD.js +1 -0
  477. package/dist/showcase/assets/navigation-Bf_sgFei.js +90 -0
  478. package/dist/showcase/assets/navigation-Dnqq0un0.js +230 -0
  479. package/dist/showcase/assets/navigation-extras-ydwfzYfj.js +43 -0
  480. package/dist/showcase/assets/onboarding-checklist-DBLaUqhZ.js +119 -0
  481. package/dist/showcase/assets/overflow-tab-bar-UXs-T5Fq.js +1 -0
  482. package/dist/showcase/assets/overlays-C1ET_VvE.js +408 -0
  483. package/dist/showcase/assets/overlays-dMd0EOT1.js +159 -0
  484. package/dist/showcase/assets/package-C9EnWNEP.js +1 -0
  485. package/dist/showcase/assets/package-check-BGT72daQ.js +1 -0
  486. package/dist/showcase/assets/page-action-button-8faHdFOD.js +1 -0
  487. package/dist/showcase/assets/page-header-DoZnb9z9.js +1 -0
  488. package/dist/showcase/assets/pagination-BJ3wQQtL.js +42 -0
  489. package/dist/showcase/assets/pagination-DJnga08n.js +1 -0
  490. package/dist/showcase/assets/paperclip-DsQ_IPLp.js +1 -0
  491. package/dist/showcase/assets/password-input-CLxvZdDC.js +1 -0
  492. package/dist/showcase/assets/pencil-37DzPmX5.js +1 -0
  493. package/dist/showcase/assets/phone-CLDh9lYU.js +1 -0
  494. package/dist/showcase/assets/plus-PKSdX45c.js +1 -0
  495. package/dist/showcase/assets/popover-BWbBoxN0.js +1 -0
  496. package/dist/showcase/assets/popover-DoEhmJ7G.js +1 -0
  497. package/dist/showcase/assets/popover-menu-wt8kWbr1.js +1 -0
  498. package/dist/showcase/assets/products-Bvl2zRfb.js +407 -0
  499. package/dist/showcase/assets/progress-BeusdG_D.js +18 -0
  500. package/dist/showcase/assets/progress-CQr08MPz.js +1 -0
  501. package/dist/showcase/assets/props-table-DSdjPLVr.js +1 -0
  502. package/dist/showcase/assets/props.generated-AlskAQY9.json +41579 -0
  503. package/dist/showcase/assets/quote-D1DrZRcn.js +1 -0
  504. package/dist/showcase/assets/receipt-CxNJvyC5.js +1 -0
  505. package/dist/showcase/assets/receipt-text-2YwFjXVP.js +1 -0
  506. package/dist/showcase/assets/refresh-cw-DlkWEAjG.js +1 -0
  507. package/dist/showcase/assets/resolveValueLabel-Ctt-9xwK.js +1 -0
  508. package/dist/showcase/assets/resource-selector-card-C9zM67wN.js +39 -0
  509. package/dist/showcase/assets/rich-text-editor-DUWBkEdn.js +124 -0
  510. package/dist/showcase/assets/rich-text-editor-DjsgN-HX.js +143 -0
  511. package/dist/showcase/assets/rotate-ccw-ZkWMrEMJ.js +1 -0
  512. package/dist/showcase/assets/save-CQjTFBwm.js +1 -0
  513. package/dist/showcase/assets/schema-form-yfcV7ZHE.js +325 -0
  514. package/dist/showcase/assets/scroll-area-D73Zq5No.js +32 -0
  515. package/dist/showcase/assets/scroll-area-Toa6lE_G.js +1 -0
  516. package/dist/showcase/assets/select-BQWY3ndy.js +1 -0
  517. package/dist/showcase/assets/select-x02n3iNp.js +1 -0
  518. package/dist/showcase/assets/send-L-LNhDVx.js +1 -0
  519. package/dist/showcase/assets/separator-B57lhXSg.js +28 -0
  520. package/dist/showcase/assets/separator-kwh2KDqD.js +1 -0
  521. package/dist/showcase/assets/settings-Mbnp6hDe.js +1 -0
  522. package/dist/showcase/assets/sheet-DwYghriA.js +1 -0
  523. package/dist/showcase/assets/shield-D084AWSl.js +1 -0
  524. package/dist/showcase/assets/shield-alert-h6F2vnr-.js +1 -0
  525. package/dist/showcase/assets/shield-check-UiN6QwPl.js +1 -0
  526. package/dist/showcase/assets/shopping-bag-oxYbVKoz.js +1 -0
  527. package/dist/showcase/assets/sidebar-BWDrvFY1.js +1 -0
  528. package/dist/showcase/assets/sidebar.context-BhexAjPM.js +1 -0
  529. package/dist/showcase/assets/skeleton-BIS2X39p.js +29 -0
  530. package/dist/showcase/assets/skeleton-uyUucxJA.js +1 -0
  531. package/dist/showcase/assets/slider-DL--Jsf0.js +1 -0
  532. package/dist/showcase/assets/sliders-horizontal-C6SHwI9f.js +1 -0
  533. package/dist/showcase/assets/smart-card-DpvRHqI9.js +1 -0
  534. package/dist/showcase/assets/sonner-CvCutMP9.js +22 -0
  535. package/dist/showcase/assets/sortable.esm-COtQXiwU.js +5 -0
  536. package/dist/showcase/assets/sparkles-bMR7rbuC.js +1 -0
  537. package/dist/showcase/assets/spinner-CBXhPGyW.js +30 -0
  538. package/dist/showcase/assets/spinner-Dl2u80sI.js +49 -0
  539. package/dist/showcase/assets/spinner-ULnFdoGj.js +1 -0
  540. package/dist/showcase/assets/square-pen-3jbmTAqh.js +1 -0
  541. package/dist/showcase/assets/stacked-avatars-XKXaLCmk.js +1 -0
  542. package/dist/showcase/assets/star-0BUJBDj_.js +1 -0
  543. package/dist/showcase/assets/startOfDay-C8cGxdjJ.js +1 -0
  544. package/dist/showcase/assets/styles-Cl6qvIKS.js +1 -0
  545. package/dist/showcase/assets/suggestions-EB3TFZpP.js +126 -0
  546. package/dist/showcase/assets/switch-BbZ7_Rk-.js +1 -0
  547. package/dist/showcase/assets/switch-C0QtKm5H.js +1 -0
  548. package/dist/showcase/assets/sync-BAO20Naa.js +107 -0
  549. package/dist/showcase/assets/table-CnCYxSnD.js +509 -0
  550. package/dist/showcase/assets/table-DF7x4TGI.js +1 -0
  551. package/dist/showcase/assets/table-actions-CjaUIKQl.js +1 -0
  552. package/dist/showcase/assets/tabs-D3YHyrQ5.js +1 -0
  553. package/dist/showcase/assets/tabs-vUgN5IPn.js +19 -0
  554. package/dist/showcase/assets/tags-input-jtEAac1b.js +1 -0
  555. package/dist/showcase/assets/text-button-fiMDoWms.js +1 -0
  556. package/dist/showcase/assets/text-link-CSzy09hn.js +1 -0
  557. package/dist/showcase/assets/textarea-DnvQVkFU.js +1 -0
  558. package/dist/showcase/assets/textarea-mATRsiLJ.js +1 -0
  559. package/dist/showcase/assets/timelines-fQQIiGc4.js +200 -0
  560. package/dist/showcase/assets/toggle-group-B0hN7VRz.js +1 -0
  561. package/dist/showcase/assets/toggles-group-CXm2HDJ1.js +32 -0
  562. package/dist/showcase/assets/toggles-kwgQf4hQ.js +71 -0
  563. package/dist/showcase/assets/trash-2-xwHdvAn6.js +1 -0
  564. package/dist/showcase/assets/trending-up-CKnZUURN.js +1 -0
  565. package/dist/showcase/assets/truck-8P8-8rHh.js +1 -0
  566. package/dist/showcase/assets/typography-BP3SCf0c.js +223 -0
  567. package/dist/showcase/assets/ui-badge-eTC8uxVw.js +28 -0
  568. package/dist/showcase/assets/ui-card-AQkRKit0.js +30 -0
  569. package/dist/showcase/assets/ui-table-BTE7t50V.js +42 -0
  570. package/dist/showcase/assets/upload-tray-DpW8ZnxN.js +138 -0
  571. package/dist/showcase/assets/use-layout-link-DR4Apqbc.js +1 -0
  572. package/dist/showcase/assets/useAnchoredPopupScrollLock-CT1urU5D.js +1 -0
  573. package/dist/showcase/assets/useAriaLabelledBy-DiHf8Ou_.js +1 -0
  574. package/dist/showcase/assets/useCollapsiblePanel-NNLPWtyS.js +1 -0
  575. package/dist/showcase/assets/useCompositeItem-BE0Lg9Iz.js +1 -0
  576. package/dist/showcase/assets/useCompositeListItem-OwLLy0R3.js +1 -0
  577. package/dist/showcase/assets/useLabelableId-Y-6YW07q.js +1 -0
  578. package/dist/showcase/assets/useOpenInteractionType-CUTVNS1V.js +1 -0
  579. package/dist/showcase/assets/useRender-BiaVVD8L.js +1 -0
  580. package/dist/showcase/assets/useTriggerFocusGuards-DCMcmSgH.js +1 -0
  581. package/dist/showcase/assets/useValueChanged-kq4oH4So.js +1 -0
  582. package/dist/showcase/assets/user-BCzeUL5p.js +1 -0
  583. package/dist/showcase/assets/user-plus-CUbfQtkK.js +1 -0
  584. package/dist/showcase/assets/users-DOGJZmUN.js +1 -0
  585. package/dist/showcase/assets/vendor-profile-C7dXfVv_.js +37 -0
  586. package/dist/showcase/assets/video-DbaCGki8.js +1 -0
  587. package/dist/showcase/assets/wrench-TbDfItHQ.js +1 -0
  588. package/dist/showcase/assets/x-BpAEmld2.js +1 -0
  589. package/dist/showcase/assets/zap-E8G3kjwh.js +1 -0
  590. package/dist/showcase/index.html +2 -2
  591. package/dist/style.css +1 -1
  592. package/package.json +16 -1
  593. package/dist/_shared/ai-artifact-D4EjKoq6.cjs +0 -3
  594. package/dist/_shared/ai-artifact-D4EjKoq6.cjs.map +0 -1
  595. package/dist/_shared/ai-artifact-nlOrSeqT.js +0 -1099
  596. package/dist/_shared/ai-artifact-nlOrSeqT.js.map +0 -1
  597. package/dist/_shared/auth-C5HawWvp.cjs +0 -2
  598. package/dist/_shared/auth-C5HawWvp.cjs.map +0 -1
  599. package/dist/_shared/auth-DnMEJXP9.js +0 -643
  600. package/dist/_shared/auth-DnMEJXP9.js.map +0 -1
  601. package/dist/_shared/badge-6WYAMJwA.js +0 -108
  602. package/dist/_shared/badge-6WYAMJwA.js.map +0 -1
  603. package/dist/_shared/badge-CBof1rbF.cjs +0 -2
  604. package/dist/_shared/badge-CBof1rbF.cjs.map +0 -1
  605. package/dist/_shared/combobox-B4KmDZK0.cjs +0 -2
  606. package/dist/_shared/combobox-B4KmDZK0.cjs.map +0 -1
  607. package/dist/_shared/combobox-YUGi3xSc.js +0 -810
  608. package/dist/_shared/combobox-YUGi3xSc.js.map +0 -1
  609. package/dist/_shared/comments-GzXdwpq4.js +0 -952
  610. package/dist/_shared/comments-GzXdwpq4.js.map +0 -1
  611. package/dist/_shared/comments-Zj_foV1V.cjs +0 -2
  612. package/dist/_shared/comments-Zj_foV1V.cjs.map +0 -1
  613. package/dist/_shared/display-Dhy5ogxC.cjs +0 -2
  614. package/dist/_shared/display-Dhy5ogxC.cjs.map +0 -1
  615. package/dist/_shared/display-NBtWdAMl.js +0 -1154
  616. package/dist/_shared/display-NBtWdAMl.js.map +0 -1
  617. package/dist/_shared/form-field-B7taMVbC.js +0 -329
  618. package/dist/_shared/form-field-B7taMVbC.js.map +0 -1
  619. package/dist/_shared/form-field-rMGPvHFK.cjs +0 -2
  620. package/dist/_shared/form-field-rMGPvHFK.cjs.map +0 -1
  621. package/dist/_shared/forms-BweX9Lm8.cjs +0 -2
  622. package/dist/_shared/forms-BweX9Lm8.cjs.map +0 -1
  623. package/dist/_shared/forms-L1hyNKpZ.js +0 -3430
  624. package/dist/_shared/forms-L1hyNKpZ.js.map +0 -1
  625. package/dist/_shared/header-BSBPtGn4.cjs +0 -2
  626. package/dist/_shared/header-BSBPtGn4.cjs.map +0 -1
  627. package/dist/_shared/header-No6GSp4R.js +0 -360
  628. package/dist/_shared/header-No6GSp4R.js.map +0 -1
  629. package/dist/_shared/hooks-BkXvZ4py.js +0 -118
  630. package/dist/_shared/hooks-BkXvZ4py.js.map +0 -1
  631. package/dist/_shared/hooks-D3SbLBRk.cjs +0 -2
  632. package/dist/_shared/hooks-D3SbLBRk.cjs.map +0 -1
  633. package/dist/_shared/mentions-CA1Ka_Bv.cjs +0 -2
  634. package/dist/_shared/mentions-CA1Ka_Bv.cjs.map +0 -1
  635. package/dist/_shared/mentions-CdvvLGQG.js +0 -506
  636. package/dist/_shared/mentions-CdvvLGQG.js.map +0 -1
  637. package/dist/_shared/navigation-BemwPPC8.cjs +0 -2
  638. package/dist/_shared/navigation-BemwPPC8.cjs.map +0 -1
  639. package/dist/_shared/navigation-DY540HB0.js +0 -419
  640. package/dist/_shared/navigation-DY540HB0.js.map +0 -1
  641. package/dist/_shared/page-Cg_gNpyK.js +0 -262
  642. package/dist/_shared/page-Cg_gNpyK.js.map +0 -1
  643. package/dist/_shared/page-CpFWQuWU.cjs +0 -2
  644. package/dist/_shared/page-CpFWQuWU.cjs.map +0 -1
  645. package/dist/_shared/sidebar-BTFfxmNG.cjs +0 -2
  646. package/dist/_shared/sidebar-BTFfxmNG.cjs.map +0 -1
  647. package/dist/_shared/sidebar-wmztVpnO.js +0 -538
  648. package/dist/_shared/sidebar-wmztVpnO.js.map +0 -1
  649. package/dist/_shared/switch-BBP3u1z5.js +0 -55
  650. package/dist/_shared/switch-BBP3u1z5.js.map +0 -1
  651. package/dist/_shared/switch-zFZhhOEP.cjs +0 -2
  652. package/dist/_shared/switch-zFZhhOEP.cjs.map +0 -1
  653. package/dist/_shared/table-BItnJ8lG.cjs +0 -2
  654. package/dist/_shared/table-BItnJ8lG.cjs.map +0 -1
  655. package/dist/_shared/table-D3349b-v.js +0 -1189
  656. package/dist/_shared/table-D3349b-v.js.map +0 -1
  657. package/dist/_shared/workspace-BGVeTeJy.js +0 -357
  658. package/dist/_shared/workspace-BGVeTeJy.js.map +0 -1
  659. package/dist/_shared/workspace-CWyzTUmE.cjs +0 -2
  660. package/dist/_shared/workspace-CWyzTUmE.cjs.map +0 -1
  661. package/dist/showcase/assets/AreaChart-BYEewdc_.js +0 -6
  662. package/dist/showcase/assets/CompositeItem-Duekeg4m.js +0 -1
  663. package/dist/showcase/assets/CompositeRoot-BgNU3T7R.js +0 -1
  664. package/dist/showcase/assets/DialogTrigger-9xWmoeF5.js +0 -1
  665. package/dist/showcase/assets/LabelableContext-B3W_70Qk.js +0 -1
  666. package/dist/showcase/assets/PreviewLayout-nADJqRlP.js +0 -1
  667. package/dist/showcase/assets/RadioGroup-Bp1VCzxr.js +0 -1
  668. package/dist/showcase/assets/Separator-9PWX3shz.js +0 -1
  669. package/dist/showcase/assets/ToolbarRootContext-DwELw9xS.js +0 -1
  670. package/dist/showcase/assets/accordion-CfqHO9_z.js +0 -171
  671. package/dist/showcase/assets/accordion-variants-pkPHxkLW.js +0 -1
  672. package/dist/showcase/assets/action-menu-DFzSuDjI.js +0 -1
  673. package/dist/showcase/assets/activities-Bo97b2-I.js +0 -501
  674. package/dist/showcase/assets/activities-feed-card-D77gf27B.js +0 -1
  675. package/dist/showcase/assets/activity-BUlCWLI8.js +0 -1
  676. package/dist/showcase/assets/admin-CxTV4kZX.js +0 -80
  677. package/dist/showcase/assets/ai-Bym5H8bn.js +0 -41
  678. package/dist/showcase/assets/ai-artifact-DZVl1WmK.js +0 -2
  679. package/dist/showcase/assets/ai-chat-M3X5-PgT.js +0 -568
  680. package/dist/showcase/assets/ai-elements-DjppcMBD.js +0 -387
  681. package/dist/showcase/assets/ai-new-CXnrIi5S.js +0 -167
  682. package/dist/showcase/assets/ai-tool-call-DyMI8DqD.js +0 -1
  683. package/dist/showcase/assets/alert-D6Pygy2s.js +0 -62
  684. package/dist/showcase/assets/alert-DCrWLbEx.js +0 -93
  685. package/dist/showcase/assets/alert-qTNM0vld.js +0 -1
  686. package/dist/showcase/assets/api-key-list-CCpuHYHc.js +0 -73
  687. package/dist/showcase/assets/app-sidebar-CxTRNC5L.js +0 -1
  688. package/dist/showcase/assets/arrow-down--phuskCV.js +0 -1
  689. package/dist/showcase/assets/arrow-left-B__WWqyA.js +0 -1
  690. package/dist/showcase/assets/arrow-right-1-EvXxjB.js +0 -1
  691. package/dist/showcase/assets/arrow-up-lWotnmo7.js +0 -1
  692. package/dist/showcase/assets/arrow-up-right-IyQ3oeq0.js +0 -1
  693. package/dist/showcase/assets/avatar-gugtNx4D.js +0 -57
  694. package/dist/showcase/assets/avatar-n1nywTlx.js +0 -1
  695. package/dist/showcase/assets/badge-TuE-u3Hv.js +0 -28
  696. package/dist/showcase/assets/badge-check-CPDvpVzK.js +0 -1
  697. package/dist/showcase/assets/bell-DeCVddCA.js +0 -1
  698. package/dist/showcase/assets/bot-B_vzJEJH.js +0 -1
  699. package/dist/showcase/assets/box-z4O8t_K5.js +0 -1
  700. package/dist/showcase/assets/brain-DdKBE4Bh.js +0 -1
  701. package/dist/showcase/assets/brand-CfW7mgTY.js +0 -36
  702. package/dist/showcase/assets/breadcrumb-B4TBbKv3.js +0 -52
  703. package/dist/showcase/assets/breadcrumb-bF_sFVBL.js +0 -1
  704. package/dist/showcase/assets/breadcrumbs-CBv3EaMX.js +0 -1
  705. package/dist/showcase/assets/briefcase-ClqzeNt3.js +0 -1
  706. package/dist/showcase/assets/building-2-BQuWgjZj.js +0 -1
  707. package/dist/showcase/assets/button-CWKNCI82.js +0 -44
  708. package/dist/showcase/assets/button-group-BYhxtFwV.js +0 -1
  709. package/dist/showcase/assets/buttons-mBRyBw3Q.js +0 -270
  710. package/dist/showcase/assets/calendar-BgloJjlW.js +0 -1
  711. package/dist/showcase/assets/calendar-CJDWspzi.js +0 -1
  712. package/dist/showcase/assets/calendar-CgML2kJt.js +0 -16
  713. package/dist/showcase/assets/calendar-days-C0gTLVnY.js +0 -1
  714. package/dist/showcase/assets/camera-nIlaz4Sn.js +0 -1
  715. package/dist/showcase/assets/card-1ncRnRvq.js +0 -1
  716. package/dist/showcase/assets/card-CcgWzFB-.js +0 -188
  717. package/dist/showcase/assets/card-primitives-By4-RTuP.js +0 -1
  718. package/dist/showcase/assets/card-radio-group-DeX3qsRg.js +0 -1
  719. package/dist/showcase/assets/cards-DdqQr8rY.js +0 -328
  720. package/dist/showcase/assets/carousel-CV8ltDl8.js +0 -449
  721. package/dist/showcase/assets/chart-BNzHjskC.js +0 -358
  722. package/dist/showcase/assets/chart-column-CpTxRLEH.js +0 -1
  723. package/dist/showcase/assets/checkbox-CZTTm4Dv.js +0 -1
  724. package/dist/showcase/assets/chevron-down-LWBNHe9S.js +0 -1
  725. package/dist/showcase/assets/chevron-left-BsshO7nf.js +0 -1
  726. package/dist/showcase/assets/chevron-right-t68um2_G.js +0 -1
  727. package/dist/showcase/assets/chevron-up-DjhlESJB.js +0 -1
  728. package/dist/showcase/assets/chevrons-up-down-ZUo0Do59.js +0 -1
  729. package/dist/showcase/assets/circle-BL52dLr9.js +0 -1
  730. package/dist/showcase/assets/circle-alert-CXCt6zxc.js +0 -1
  731. package/dist/showcase/assets/circle-check-CbiRRw7s.js +0 -1
  732. package/dist/showcase/assets/circle-check-big-BSgn7lyt.js +0 -1
  733. package/dist/showcase/assets/circle-dot-WEOpGGJf.js +0 -1
  734. package/dist/showcase/assets/circle-question-mark-C9hLlsD7.js +0 -1
  735. package/dist/showcase/assets/circle-x-BT9TJbJC.js +0 -1
  736. package/dist/showcase/assets/clock-3-CfRK8ckc.js +0 -1
  737. package/dist/showcase/assets/clock-D-3zf0c1.js +0 -1
  738. package/dist/showcase/assets/code-xml-CQYKKuBU.js +0 -1
  739. package/dist/showcase/assets/collapsible-BC0hQvat.js +0 -27
  740. package/dist/showcase/assets/collapsible-CRVtVDCF.js +0 -1
  741. package/dist/showcase/assets/combobox-D4VYvYCT.js +0 -696
  742. package/dist/showcase/assets/command-CxeHT4lL.js +0 -1
  743. package/dist/showcase/assets/command-Do_t_Zou.js +0 -1
  744. package/dist/showcase/assets/comment-composer-DoFwvVlq.js +0 -1
  745. package/dist/showcase/assets/comment-item-CT8UbVeg.js +0 -1
  746. package/dist/showcase/assets/comments-CqdXrjUn.js +0 -357
  747. package/dist/showcase/assets/commerce-B9V2Wo_q.js +0 -79
  748. package/dist/showcase/assets/commerce-extras-CNT3QmAT.js +0 -189
  749. package/dist/showcase/assets/composite-BXLXcagx.js +0 -1
  750. package/dist/showcase/assets/contact-card-BLcAXepj.js +0 -65
  751. package/dist/showcase/assets/content-container-DJVD3ZmI.js +0 -1
  752. package/dist/showcase/assets/copyable-od17NrMu.js +0 -96
  753. package/dist/showcase/assets/course-card-CdZQr5yy.js +0 -77
  754. package/dist/showcase/assets/cpu-B8kRNR1R.js +0 -1
  755. package/dist/showcase/assets/credit-card-BYMQj03s.js +0 -1
  756. package/dist/showcase/assets/currency-Cxv3Cp6B.js +0 -149
  757. package/dist/showcase/assets/dark-surfaces-Cfp58iFb.js +0 -90
  758. package/dist/showcase/assets/database-DuUABvxU.js +0 -1
  759. package/dist/showcase/assets/date-block-E9qfY7W7.js +0 -1
  760. package/dist/showcase/assets/date-picker-I8BdaiiU.js +0 -1
  761. package/dist/showcase/assets/date-pickers-BLJaqhcS.js +0 -73
  762. package/dist/showcase/assets/dense-info-Bk1K_7Ww.js +0 -106
  763. package/dist/showcase/assets/dialog-BuatDnQ9.js +0 -1
  764. package/dist/showcase/assets/dialog-DCx-LydW.js +0 -1
  765. package/dist/showcase/assets/display-Bt7busw5.js +0 -403
  766. package/dist/showcase/assets/dist-BPyBHOXU.js +0 -45
  767. package/dist/showcase/assets/dollar-sign-qXQSS6Gh.js +0 -1
  768. package/dist/showcase/assets/download-B2JAmHmJ.js +0 -1
  769. package/dist/showcase/assets/dropdown-menu-DXT3BZLa.js +0 -1
  770. package/dist/showcase/assets/dropzone-BKIxDJNy.js +0 -1
  771. package/dist/showcase/assets/earth-7-Z3Gv2v.js +0 -1
  772. package/dist/showcase/assets/ellipsis-6Krb3RRW.js +0 -1
  773. package/dist/showcase/assets/ellipsis-vertical-DeOMIw1J.js +0 -1
  774. package/dist/showcase/assets/empty-BSYKaeXQ.js +0 -1
  775. package/dist/showcase/assets/empty-item-YElgv25f.js +0 -49
  776. package/dist/showcase/assets/empty-state-D-LrvnKF.js +0 -1
  777. package/dist/showcase/assets/empty-state-dNh1GtVU.js +0 -188
  778. package/dist/showcase/assets/enhanced-activities-Bw99ItYl.js +0 -361
  779. package/dist/showcase/assets/enhanced-combobox-CqLZmU3K.js +0 -1
  780. package/dist/showcase/assets/event-calendar-CcSi7g5A.js +0 -138
  781. package/dist/showcase/assets/event-log-2uq-eYxh.js +0 -330
  782. package/dist/showcase/assets/example-CTJ8AdNR.js +0 -1
  783. package/dist/showcase/assets/external-link-D0gqSa1q.js +0 -1
  784. package/dist/showcase/assets/eye-CDMCDLei.js +0 -1
  785. package/dist/showcase/assets/feature-announcement-BlyNck35.js +0 -34
  786. package/dist/showcase/assets/file-Y5EbzufX.js +0 -1
  787. package/dist/showcase/assets/file-text-DH1mBuPi.js +0 -1
  788. package/dist/showcase/assets/filters-BtHF4GSM.js +0 -78
  789. package/dist/showcase/assets/flag-CJ08LwLY.js +0 -1
  790. package/dist/showcase/assets/folder-open-DODo2pjy.js +0 -1
  791. package/dist/showcase/assets/form-field-CHY7jh1q.js +0 -1
  792. package/dist/showcase/assets/format-DYJqAuDM.js +0 -1
  793. package/dist/showcase/assets/forms-DgvQQXHO.js +0 -862
  794. package/dist/showcase/assets/frame-CdKicP4A.js +0 -167
  795. package/dist/showcase/assets/getPseudoElementBounds-D9-Hr3mO.js +0 -1
  796. package/dist/showcase/assets/gift-DD8O7cld.js +0 -1
  797. package/dist/showcase/assets/giftcard-cards-Dp9eYodY.js +0 -85
  798. package/dist/showcase/assets/git-branch-DZq1Vo2G.js +0 -1
  799. package/dist/showcase/assets/global-search-BqDotXql.js +0 -215
  800. package/dist/showcase/assets/global-search-PH6LXqZw.js +0 -1
  801. package/dist/showcase/assets/globe-mRTwrUxM.js +0 -1
  802. package/dist/showcase/assets/gradient-card-CaL88YKv.js +0 -58
  803. package/dist/showcase/assets/hash-DuqvHQHv.js +0 -1
  804. package/dist/showcase/assets/header-CiNgDop3.js +0 -1
  805. package/dist/showcase/assets/header-notifications-B9XMBsK_.js +0 -1
  806. package/dist/showcase/assets/heart-DsGJfnDx.js +0 -1
  807. package/dist/showcase/assets/house-B504aFIP.js +0 -1
  808. package/dist/showcase/assets/icon-badge-DMNu8xb5.js +0 -1
  809. package/dist/showcase/assets/image-C3DaMxmn.js +0 -1
  810. package/dist/showcase/assets/inbox-BWKQMLMx.js +0 -1
  811. package/dist/showcase/assets/index-DN3tqopz.css +0 -2
  812. package/dist/showcase/assets/index-DaYVSqKu.js +0 -10
  813. package/dist/showcase/assets/inertValue-DrtTkMGx.js +0 -1
  814. package/dist/showcase/assets/info-_FrGoCay.js +0 -1
  815. package/dist/showcase/assets/inline-stat-BYu-tiUU.js +0 -1
  816. package/dist/showcase/assets/input-C96HMHWR.js +0 -1
  817. package/dist/showcase/assets/input-fMPi7XxI.js +0 -1
  818. package/dist/showcase/assets/input-group-BZnSgFCn.js +0 -47
  819. package/dist/showcase/assets/input-group-CVONNP3T.js +0 -1
  820. package/dist/showcase/assets/inputs-Blh0LJ8-.js +0 -155
  821. package/dist/showcase/assets/invoice-header-Bpo4iwX3.js +0 -36
  822. package/dist/showcase/assets/invoice-items-OVIrbG0k.js +0 -36
  823. package/dist/showcase/assets/invoice-mini-CaOMTiUO.js +0 -14
  824. package/dist/showcase/assets/invoice-table-BXd_HhUg.js +0 -30
  825. package/dist/showcase/assets/isSameDay-NBVO9AKF.js +0 -1
  826. package/dist/showcase/assets/isToday-Bk5HMXWn.js +0 -1
  827. package/dist/showcase/assets/italic-BOv5bW4H.js +0 -1
  828. package/dist/showcase/assets/item-B4rdcVVp.js +0 -134
  829. package/dist/showcase/assets/item-BVt0zZ12.js +0 -1
  830. package/dist/showcase/assets/item-C4Xk3DC1.js +0 -1
  831. package/dist/showcase/assets/kanban-BXbelelR.js +0 -186
  832. package/dist/showcase/assets/label-Cv6wotdv.js +0 -1
  833. package/dist/showcase/assets/languages-BofyvcCF.js +0 -1
  834. package/dist/showcase/assets/layers-DJK0t5px.js +0 -1
  835. package/dist/showcase/assets/layout-app-shell-D_yMonSl.js +0 -608
  836. package/dist/showcase/assets/layout-auth-BTvSTwUz.js +0 -754
  837. package/dist/showcase/assets/layout-containers-PMuo__2O.js +0 -101
  838. package/dist/showcase/assets/layout-header-DQ3zeCHz.js +0 -170
  839. package/dist/showcase/assets/layout-page-CbvWdHrK.js +0 -122
  840. package/dist/showcase/assets/layout-primitives-6nsFFIdE.js +0 -34
  841. package/dist/showcase/assets/layout-sidebar-CKqeVCSY.js +0 -224
  842. package/dist/showcase/assets/layout-users-Cypq-42s.js +0 -117
  843. package/dist/showcase/assets/layout-workspace-DiRR8vDv.js +0 -183
  844. package/dist/showcase/assets/lock-DXmvLEEx.js +0 -1
  845. package/dist/showcase/assets/lock-keyhole-Cu6M-jjE.js +0 -1
  846. package/dist/showcase/assets/mail-CXVFHkzh.js +0 -1
  847. package/dist/showcase/assets/mail-check-BNEu3j2a.js +0 -1
  848. package/dist/showcase/assets/map-DnE1pFCQ.js +0 -124
  849. package/dist/showcase/assets/map-pin-CpOVa8IH.js +0 -1
  850. package/dist/showcase/assets/media-library-C-KfEvm4.js +0 -695
  851. package/dist/showcase/assets/mention-inline-suggestions-DlmslsfR.js +0 -1
  852. package/dist/showcase/assets/mentions-C8ZdNFuC.js +0 -138
  853. package/dist/showcase/assets/menus-B8yUL75K.js +0 -165
  854. package/dist/showcase/assets/message-square-DNOTaOFs.js +0 -1
  855. package/dist/showcase/assets/metadata-list-BQAanxM-.js +0 -1
  856. package/dist/showcase/assets/metadata-list-DL9qgDAp.js +0 -288
  857. package/dist/showcase/assets/metric-CYi09Ltx.js +0 -1
  858. package/dist/showcase/assets/metric-bar-CQH1z8T3.js +0 -1
  859. package/dist/showcase/assets/metric-grid-H1ixqMCI.js +0 -1
  860. package/dist/showcase/assets/metric-trend-chip-BBzWzFZ-.js +0 -1
  861. package/dist/showcase/assets/metrics-analytics-bar-C7Z2ITl4.js +0 -44
  862. package/dist/showcase/assets/metrics-analytics-cards-CZZSWiMn.js +0 -50
  863. package/dist/showcase/assets/metrics-comparison-BPqz8k30.js +0 -76
  864. package/dist/showcase/assets/metrics-heatmap-C3NYZAfx.js +0 -27
  865. package/dist/showcase/assets/metrics-inline-badge-RjHfm7um.js +0 -17
  866. package/dist/showcase/assets/metrics-kpi-row-DnBjyDH4.js +0 -31
  867. package/dist/showcase/assets/metrics-micro-grid-CKn405qb.js +0 -42
  868. package/dist/showcase/assets/metrics-overview-D8YGtdrh.js +0 -192
  869. package/dist/showcase/assets/metrics-stat-cards-Dxh6cAha.js +0 -54
  870. package/dist/showcase/assets/minus-20OTSSxf.js +0 -1
  871. package/dist/showcase/assets/money-display-BoiAMxH8.js +0 -1
  872. package/dist/showcase/assets/month-year-picker-Bl59Ygq9.js +0 -1
  873. package/dist/showcase/assets/navigation-B8d2CDU6.js +0 -90
  874. package/dist/showcase/assets/navigation-D16JX3kL.js +0 -230
  875. package/dist/showcase/assets/navigation-extras-Dm83uT6i.js +0 -43
  876. package/dist/showcase/assets/onboarding-checklist-DznDpP9M.js +0 -119
  877. package/dist/showcase/assets/overlays-CzlSqbFz.js +0 -408
  878. package/dist/showcase/assets/overlays-DUFqbkb9.js +0 -159
  879. package/dist/showcase/assets/package-BCXIwEPz.js +0 -1
  880. package/dist/showcase/assets/package-check-Ol-Cw3j-.js +0 -1
  881. package/dist/showcase/assets/page-action-button-DpzdSYvw.js +0 -1
  882. package/dist/showcase/assets/page-header-B_b7SqW8.js +0 -1
  883. package/dist/showcase/assets/pagination-BPDQo9Dl.js +0 -1
  884. package/dist/showcase/assets/pagination-PvkEX0qs.js +0 -42
  885. package/dist/showcase/assets/paperclip-CznEsmLN.js +0 -1
  886. package/dist/showcase/assets/password-input-CWMY5q3b.js +0 -1
  887. package/dist/showcase/assets/pencil-Cl9qi90g.js +0 -1
  888. package/dist/showcase/assets/phone-DbvK_QQJ.js +0 -1
  889. package/dist/showcase/assets/plus-CO8t66Yo.js +0 -1
  890. package/dist/showcase/assets/popover-3QIVx9lU.js +0 -1
  891. package/dist/showcase/assets/popover-Cyg9oYIU.js +0 -1
  892. package/dist/showcase/assets/popover-menu-DJPHeIL1.js +0 -1
  893. package/dist/showcase/assets/products-WsU-qdMz.js +0 -407
  894. package/dist/showcase/assets/progress-C61sf-qt.js +0 -1
  895. package/dist/showcase/assets/progress-PvTl8Fgf.js +0 -18
  896. package/dist/showcase/assets/props-table-C8la6vcG.js +0 -1
  897. package/dist/showcase/assets/props.generated-vFrhDrth.json +0 -38618
  898. package/dist/showcase/assets/quote-N1_lRDnX.js +0 -1
  899. package/dist/showcase/assets/receipt-C6a_WyLu.js +0 -1
  900. package/dist/showcase/assets/receipt-text-CDOh8FAv.js +0 -1
  901. package/dist/showcase/assets/refresh-cw-D4-ECZ1x.js +0 -1
  902. package/dist/showcase/assets/resolveValueLabel-DqAP3zJd.js +0 -1
  903. package/dist/showcase/assets/rich-text-editor-CU0IZpwV.js +0 -143
  904. package/dist/showcase/assets/rich-text-editor-DCU7mMoO.js +0 -124
  905. package/dist/showcase/assets/rotate-ccw-Dd5zEmr7.js +0 -1
  906. package/dist/showcase/assets/save-DDmFSQli.js +0 -1
  907. package/dist/showcase/assets/schema-form-B7naqMvv.js +0 -325
  908. package/dist/showcase/assets/scroll-area-CdaYm4UK.js +0 -32
  909. package/dist/showcase/assets/scroll-area-DwWSHYHB.js +0 -1
  910. package/dist/showcase/assets/select-CNzpb5ug.js +0 -1
  911. package/dist/showcase/assets/select-DBXZ_Wzf.js +0 -1
  912. package/dist/showcase/assets/send-eDm7YMmA.js +0 -1
  913. package/dist/showcase/assets/separator-4IC9ED7s.js +0 -1
  914. package/dist/showcase/assets/separator-DPGDsZpG.js +0 -28
  915. package/dist/showcase/assets/settings-IANZGo2i.js +0 -1
  916. package/dist/showcase/assets/sheet-2oCce5ae.js +0 -1
  917. package/dist/showcase/assets/shield-CDZhhvFW.js +0 -1
  918. package/dist/showcase/assets/shield-alert-5hL3sdf3.js +0 -1
  919. package/dist/showcase/assets/shield-check-CaO2dhVS.js +0 -1
  920. package/dist/showcase/assets/shopping-bag-Bt3iK-Bv.js +0 -1
  921. package/dist/showcase/assets/sidebar-Cds60-PS.js +0 -1
  922. package/dist/showcase/assets/sidebar.context-CdH_DH9M.js +0 -1
  923. package/dist/showcase/assets/skeleton-2HajJKO4.js +0 -29
  924. package/dist/showcase/assets/skeleton-CGEJwPdD.js +0 -1
  925. package/dist/showcase/assets/slider-BjQViBR0.js +0 -1
  926. package/dist/showcase/assets/sliders-horizontal-C3JH5WQu.js +0 -1
  927. package/dist/showcase/assets/smart-card-CHouYi8U.js +0 -1
  928. package/dist/showcase/assets/sonner-Cog559j7.js +0 -22
  929. package/dist/showcase/assets/sortable.esm-hUEKsxpQ.js +0 -5
  930. package/dist/showcase/assets/sparkles-B18eTHVN.js +0 -1
  931. package/dist/showcase/assets/spinner-BSI97i4D.js +0 -1
  932. package/dist/showcase/assets/spinner-D0WhVyye.js +0 -30
  933. package/dist/showcase/assets/spinner-DQmJ7k9y.js +0 -49
  934. package/dist/showcase/assets/square-pen-CLyDWdhj.js +0 -1
  935. package/dist/showcase/assets/stacked-avatars-ECnU27uV.js +0 -1
  936. package/dist/showcase/assets/star-C3mhkpSK.js +0 -1
  937. package/dist/showcase/assets/startOfDay-ECIxhJGC.js +0 -1
  938. package/dist/showcase/assets/styles-CDD7mDye.js +0 -1
  939. package/dist/showcase/assets/suggestions-DOW6NBJp.js +0 -126
  940. package/dist/showcase/assets/switch-D59YKmf6.js +0 -1
  941. package/dist/showcase/assets/switch-NICmdoPn.js +0 -1
  942. package/dist/showcase/assets/sync-B8nBZXQ9.js +0 -107
  943. package/dist/showcase/assets/table-CckompuR.js +0 -382
  944. package/dist/showcase/assets/table-DtA4-Q0p.js +0 -1
  945. package/dist/showcase/assets/table-actions-DdoPJTMy.js +0 -1
  946. package/dist/showcase/assets/tabs-BrC_HxL_.js +0 -1
  947. package/dist/showcase/assets/tabs-UVxr80vY.js +0 -19
  948. package/dist/showcase/assets/tags-input-iDfvhzZD.js +0 -1
  949. package/dist/showcase/assets/text-button-DHFCLCoc.js +0 -1
  950. package/dist/showcase/assets/text-link-nCLLDcS_.js +0 -1
  951. package/dist/showcase/assets/textarea-DsSuQHQY.js +0 -1
  952. package/dist/showcase/assets/textarea-DyGI3Kcn.js +0 -1
  953. package/dist/showcase/assets/timelines-JmMcH657.js +0 -200
  954. package/dist/showcase/assets/toggle-group-BZKzMmC8.js +0 -1
  955. package/dist/showcase/assets/toggles-BSJvy4Tw.js +0 -71
  956. package/dist/showcase/assets/toggles-group-Bsc6eaWw.js +0 -32
  957. package/dist/showcase/assets/trash-2-C9AC7Pcv.js +0 -1
  958. package/dist/showcase/assets/trending-up-CGaDZj0S.js +0 -1
  959. package/dist/showcase/assets/truck-Dq6heokm.js +0 -1
  960. package/dist/showcase/assets/typography-ByvwR6Kg.js +0 -223
  961. package/dist/showcase/assets/ui-badge-BYgJSE_w.js +0 -28
  962. package/dist/showcase/assets/ui-card-BdueUfow.js +0 -30
  963. package/dist/showcase/assets/ui-table-CxtCQUsg.js +0 -42
  964. package/dist/showcase/assets/upload-tray-DKJ8nFZp.js +0 -138
  965. package/dist/showcase/assets/use-layout-link-CGBQHZon.js +0 -1
  966. package/dist/showcase/assets/useAnchoredPopupScrollLock-CywAbxVB.js +0 -1
  967. package/dist/showcase/assets/useAriaLabelledBy-B2bZzE7D.js +0 -1
  968. package/dist/showcase/assets/useCollapsiblePanel-SLdY_s6S.js +0 -1
  969. package/dist/showcase/assets/useCompositeItem-g6aCBp84.js +0 -1
  970. package/dist/showcase/assets/useCompositeListItem-DK0Tpege.js +0 -1
  971. package/dist/showcase/assets/useLabelableId-hdKzFCp2.js +0 -1
  972. package/dist/showcase/assets/useOpenInteractionType-CnhifZ1E.js +0 -1
  973. package/dist/showcase/assets/useRender-QhawWhpb.js +0 -1
  974. package/dist/showcase/assets/useTriggerFocusGuards-Cht7Sa7e.js +0 -1
  975. package/dist/showcase/assets/useValueChanged-DURO1kfZ.js +0 -1
  976. package/dist/showcase/assets/user-plus-DbOuTfr7.js +0 -1
  977. package/dist/showcase/assets/user-u65Fo7k7.js +0 -1
  978. package/dist/showcase/assets/users-BUb7CmVp.js +0 -1
  979. package/dist/showcase/assets/vendor-profile-wfI3PBuO.js +0 -37
  980. package/dist/showcase/assets/video-e4hDbTQ2.js +0 -1
  981. package/dist/showcase/assets/wrench-CBUvtxdr.js +0 -1
  982. package/dist/showcase/assets/x-oVTJnCJn.js +0 -1
  983. package/dist/showcase/assets/zap-CzABYL3c.js +0 -1
@@ -1,118 +0,0 @@
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
@@ -1 +0,0 @@
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":";;;;;;AA0DA,IAAa,KAAyC,EACrD,SACA,aACA,aACA,aACA,QACA,WACA,GAAG,QAEC,CAAC,KAAQ,IACL,kBAAC,QAAD;CAAM,GAAI;CAAQ;AAAe,CAAA,IAOxC,kBAAC,KAAD;CAAS;CAAM,QAJO,MAAW,IAAW,WAAW,KAAA;CAIhB,KAHpB,MAAQ,IAAW,wBAAwB,KAAA;CAGL,GAAI;CAC3D;AACC,CAAA,GAIQ,KAAuC,EAAE,aAAU,GAAG,QAClE,kBAAC,KAAD;CAAG,GAAI;CAAQ;AAAY,CAAA;AAI5B,SAAgB,EAA0B,EACzC,eACA,qBAC4B,CAAC,GAAuB;CAUpD,OATI,MACA,KACK,EAAE,WAAQ,aAAU,aAAU,aAAU,GAAG,QAG9C,KAAY,CAAC,EAAM,OAAa,kBAAC,QAAD;EAAM,WAAW,EAAM;EAAY;CAAe,CAAA,IAC/E,kBAAC,GAAD;EAAe,GAAI;EAAQ;CAAwB,CAAA,IAGrD;AACR;;;AC5FA,SAAgB,EAAsB,EACrC,eACA,qBAC4B,CAAC,GAAuB;CACpD,OAAO,QACA,EAA0B;EAAE;EAAY;CAAc,CAAC,GAC7D,CAAC,GAAY,CAAa,CAC3B;AACD;;;ACNA,SAAgB,EAAO,GAAsB;CAC5C,IAAI,EAAK,WAAW,IAAI,GACvB,OAAO,EAAK,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,MAAM;CAGtD,IAAI;EACH,OAAO,IAAI,IAAI,GAAM,sBAAsB,EAAE;CAC9C,QAAQ;EACP,OAAO;CACR;AACD;AAEA,SAAgB,EAAY,GAAoB,GAAuB;CACtE,IAAM,IAAc,EAAO,CAAU;CACrC,OAAO,MAAgB,KAAQ,EAAY,WAAW,IAAO,GAAG,KAAK,EAAY,WAAW,IAAO,GAAG;AACvG;AAEA,SAAgB,EAAY,GAAgE;CAC3F,OAAO,EAAK,SAAS,EAAK,SAAS;AACpC;AAEA,SAAgB,EAAU,GAAsB,GAAmC;CAClF,IAAM,IAAQ,EAAY,CAAI;CAC9B,OAAO,EAAK,UAAU,EAAK,SAAS,OAAO,KAAU,YAAY,OAAO,KAAU,WAAW,IAAQ,OAAO,KAAiB;AAC9H;AAEA,SAAgB,EAAS,EACxB,UACA,UAAO,aAIL;CACF,OACC,kBAAC,GAAD;EACC,SAAQ;EACR,WAAW,EACV,6DACA,MAAS,UAAU,uBAAuB,oBAC3C;YAEC;CACK,CAAA;AAET;AAEA,SAAgB,EACf,GACA,GACA,GAC8B;CAI9B,OAHI,KAAU,KAAc,EAAW,MAAW,OAC1C,EAAW,KAEZ;AACR;AASA,SAAgB,EAAY,EAC3B,SACA,aAAU,CAAC,GACX,UAAO,IACP,eAAY,UACZ,GAAG,KACiB;CACpB,IAAI,CAAC,GAAM,OAAO;CAElB,IAAI,OAAO,KAAS,UAAU;EAC7B,IAAM,IAAgB,EAAQ;EAC9B,OAAO,IAAgB,kBAAC,GAAD,EAA0B,aAAY,CAAA,IAAI;CAClE;CAiBA,OAfI,EAAM,eAAe,CAAI,IACrB,EAAM,aAAa,GAA2D;EACpF,WAAW,EAAG,GAAY,EAAK,MAAiC,SAAS;EACzE,GAAG;CACJ,CAAC,IAID,OAAO,KAAS,cACZ,OAAO,KAAS,YAAY,KAAiB,cAAc,IAGxD,kBAAC,GAAD;EAA0B;EAAW,OAAO;EAAM,QAAQ;EAAM,GAAI;CAAQ,CAAA,IAG7E;AACR;AAEA,SAAgB,EACf,GACA,GACA,GACA,GACA,GACC;CACD,OAAO,EAAW;EACjB,MAAM,EAAK;EACX;EACA;EACA;EACA,UAAU,EAAK,YAAY,CAAC,EAAK;EACjC,UAAU,EAAK;CAChB,CAAC;AACF;;;ACrHA,SAAgB,EAAc,IAAa,KAAK;CAC/C,OAAO,GACL,MAAkB,CAAC,CAAC,KAAQ,EAAY,GAAY,EAAO,CAAI,CAAC,GACjE,CAAC,CAAU,CACZ;AACD;;;ACAA,SAAgB,EAAmB,EAClC,QACA,aAAU,IACV,cACA,oBAAiB,MACY;CAC7B,QAAgB;EACf,IAAI,CAAC,KAAW,CAAC,KAAa,OAAO,WAAa,KAAa;EAE/D,IAAM,KAAW,MAAyB;GACnC,GAAM,WAAW,EAAM,YACzB,EAAM,IAAI,YAAY,MAAM,EAAI,YAAY,MAC5C,KAAgB,EAAM,eAAe,GACzC,EAAU;EACX;EAGA,OADA,SAAS,iBAAiB,WAAW,CAAO,SAC/B,SAAS,oBAAoB,WAAW,CAAO;CAC7D,GAAG;EAAC;EAAS;EAAK;EAAW;CAAc,CAAC;AAC7C"}
@@ -1,2 +0,0 @@
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
@@ -1 +0,0 @@
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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"}
@@ -1,2 +0,0 @@
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
@@ -1 +0,0 @@
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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"}