admin-ui-starter-kit 0.1.0 → 0.1.2

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 (1121) hide show
  1. package/.agents/skills/component-library-rules/SKILL.md +24 -0
  2. package/.agents/skills/component-library-rules/references/components/base__metadata-list.md +2 -2
  3. package/.agents/skills/component-library-rules/references/import-paths.md +27 -0
  4. package/AGENTS.md +8 -3
  5. package/INTEGRATION.md +33 -2
  6. package/PUBLISHING.md +3 -1
  7. package/README.md +33 -6
  8. package/dist/_shared/accordion-CztqyaIN.js +130 -0
  9. package/dist/_shared/accordion-CztqyaIN.js.map +1 -0
  10. package/dist/_shared/accordion-D5uTCLCB.cjs +2 -0
  11. package/dist/_shared/accordion-D5uTCLCB.cjs.map +1 -0
  12. package/dist/_shared/action-menu-Yrj6VzFS.js +96 -0
  13. package/dist/_shared/action-menu-Yrj6VzFS.js.map +1 -0
  14. package/dist/_shared/action-menu-eVP8GGlv.cjs +2 -0
  15. package/dist/_shared/action-menu-eVP8GGlv.cjs.map +1 -0
  16. package/dist/_shared/ai-artifact-DaHXJTKg.cjs +3 -0
  17. package/dist/_shared/ai-artifact-DaHXJTKg.cjs.map +1 -0
  18. package/dist/_shared/ai-artifact-DyLn3JAs.js +1068 -0
  19. package/dist/_shared/ai-artifact-DyLn3JAs.js.map +1 -0
  20. package/dist/_shared/alert-BVw4Mq6H.js +48 -0
  21. package/dist/_shared/alert-BVw4Mq6H.js.map +1 -0
  22. package/dist/_shared/alert-DXSlR9ja.cjs +2 -0
  23. package/dist/_shared/alert-DXSlR9ja.cjs.map +1 -0
  24. package/dist/_shared/avatar-CpBz9pTv.js +52 -0
  25. package/dist/_shared/avatar-CpBz9pTv.js.map +1 -0
  26. package/dist/_shared/avatar-dg20YFFs.cjs +2 -0
  27. package/dist/_shared/avatar-dg20YFFs.cjs.map +1 -0
  28. package/dist/_shared/badge-BVCh_hfL.js +108 -0
  29. package/dist/_shared/badge-BVCh_hfL.js.map +1 -0
  30. package/dist/_shared/badge-C49SSz-6.cjs +2 -0
  31. package/dist/_shared/badge-C49SSz-6.cjs.map +1 -0
  32. package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs +2 -0
  33. package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs.map +1 -0
  34. package/dist/_shared/breadcrumbs-Dc93fqqE.js +111 -0
  35. package/dist/_shared/breadcrumbs-Dc93fqqE.js.map +1 -0
  36. package/dist/_shared/button-2xglT7yf.cjs +2 -0
  37. package/dist/_shared/button-2xglT7yf.cjs.map +1 -0
  38. package/dist/_shared/button-ChCkwoOD.js +176 -0
  39. package/dist/_shared/button-ChCkwoOD.js.map +1 -0
  40. package/dist/_shared/button-D0nF99a9.cjs +2 -0
  41. package/dist/_shared/button-D0nF99a9.cjs.map +1 -0
  42. package/dist/_shared/button-DBR4QI9E.js +46 -0
  43. package/dist/_shared/button-DBR4QI9E.js.map +1 -0
  44. package/dist/_shared/buttons-Bcnt1md_.js +143 -0
  45. package/dist/_shared/buttons-Bcnt1md_.js.map +1 -0
  46. package/dist/_shared/buttons-km9xqXJv.cjs +2 -0
  47. package/dist/_shared/buttons-km9xqXJv.cjs.map +1 -0
  48. package/dist/_shared/card-radio-group-BGH93O5-.js +158 -0
  49. package/dist/_shared/card-radio-group-BGH93O5-.js.map +1 -0
  50. package/dist/_shared/card-radio-group-Vq741uhL.cjs +2 -0
  51. package/dist/_shared/card-radio-group-Vq741uhL.cjs.map +1 -0
  52. package/dist/_shared/combobox-BgXAxjU2.js +746 -0
  53. package/dist/_shared/combobox-BgXAxjU2.js.map +1 -0
  54. package/dist/_shared/combobox-DuIyh3xJ.cjs +2 -0
  55. package/dist/_shared/combobox-DuIyh3xJ.cjs.map +1 -0
  56. package/dist/_shared/command-BbiijN61.js +39 -0
  57. package/dist/_shared/command-BbiijN61.js.map +1 -0
  58. package/dist/_shared/command-D7zTvyBJ.cjs +2 -0
  59. package/dist/_shared/command-D7zTvyBJ.cjs.map +1 -0
  60. package/dist/_shared/command-DGNtTI-V.cjs +2 -0
  61. package/dist/_shared/command-DGNtTI-V.cjs.map +1 -0
  62. package/dist/_shared/command-jKbwFRtS.js +123 -0
  63. package/dist/_shared/command-jKbwFRtS.js.map +1 -0
  64. package/dist/_shared/comments-CNUsdwGW.cjs +2 -0
  65. package/dist/_shared/comments-CNUsdwGW.cjs.map +1 -0
  66. package/dist/_shared/comments-CvmS7zG3.js +945 -0
  67. package/dist/_shared/comments-CvmS7zG3.js.map +1 -0
  68. package/dist/_shared/containers-BFDv7cCV.cjs +2 -0
  69. package/dist/_shared/containers-BFDv7cCV.cjs.map +1 -0
  70. package/dist/_shared/containers-C1-A_2PT.js +19 -0
  71. package/dist/_shared/containers-C1-A_2PT.js.map +1 -0
  72. package/dist/_shared/content-container-CwqFnaI0.cjs +2 -0
  73. package/dist/_shared/content-container-CwqFnaI0.cjs.map +1 -0
  74. package/dist/_shared/content-container-D_3JGBSc.js +33 -0
  75. package/dist/_shared/content-container-D_3JGBSc.js.map +1 -0
  76. package/dist/_shared/copyable-CHhCGMfW.js +38 -0
  77. package/dist/_shared/copyable-CHhCGMfW.js.map +1 -0
  78. package/dist/_shared/copyable-ndaiocYq.cjs +2 -0
  79. package/dist/_shared/copyable-ndaiocYq.cjs.map +1 -0
  80. package/dist/_shared/date-picker-B8O_qbik.js +1353 -0
  81. package/dist/_shared/date-picker-B8O_qbik.js.map +1 -0
  82. package/dist/_shared/date-picker-BnOjyuKS.cjs +2 -0
  83. package/dist/_shared/date-picker-BnOjyuKS.cjs.map +1 -0
  84. package/dist/_shared/date-pickers-Cas9cPlj.js +330 -0
  85. package/dist/_shared/date-pickers-Cas9cPlj.js.map +1 -0
  86. package/dist/_shared/date-pickers-Dk-G3RMy.cjs +2 -0
  87. package/dist/_shared/date-pickers-Dk-G3RMy.cjs.map +1 -0
  88. package/dist/_shared/dialog-67GmkMLC.js +101 -0
  89. package/dist/_shared/dialog-67GmkMLC.js.map +1 -0
  90. package/dist/_shared/dialog-BF_4uAhE.cjs +2 -0
  91. package/dist/_shared/dialog-BF_4uAhE.cjs.map +1 -0
  92. package/dist/_shared/display-B9xVWboG.cjs +8 -0
  93. package/dist/_shared/display-B9xVWboG.cjs.map +1 -0
  94. package/dist/_shared/display-BM_GxDAo.js +1237 -0
  95. package/dist/_shared/display-BM_GxDAo.js.map +1 -0
  96. package/dist/_shared/dropdown-menu-4nxEBMnd.js +147 -0
  97. package/dist/_shared/dropdown-menu-4nxEBMnd.js.map +1 -0
  98. package/dist/_shared/dropdown-menu-DZlWHqWS.cjs +2 -0
  99. package/dist/_shared/dropdown-menu-DZlWHqWS.cjs.map +1 -0
  100. package/dist/_shared/form-field-BQlki-8s.js +319 -0
  101. package/dist/_shared/form-field-BQlki-8s.js.map +1 -0
  102. package/dist/_shared/form-field-DzpwVS99.cjs +2 -0
  103. package/dist/_shared/form-field-DzpwVS99.cjs.map +1 -0
  104. package/dist/_shared/form-sizing-CcbB-OHF.js +21 -0
  105. package/dist/_shared/form-sizing-CcbB-OHF.js.map +1 -0
  106. package/dist/_shared/form-sizing-Cw12UeI6.cjs +2 -0
  107. package/dist/_shared/form-sizing-Cw12UeI6.cjs.map +1 -0
  108. package/dist/_shared/format-B2AdSQVn.cjs +2 -0
  109. package/dist/_shared/format-B2AdSQVn.cjs.map +1 -0
  110. package/dist/_shared/format-CP65h1vK.js +48 -0
  111. package/dist/_shared/format-CP65h1vK.js.map +1 -0
  112. package/dist/_shared/forms-B8aaNG44.cjs +2 -0
  113. package/dist/_shared/forms-B8aaNG44.cjs.map +1 -0
  114. package/dist/_shared/forms-BusuTZZ2.js +3374 -0
  115. package/dist/_shared/forms-BusuTZZ2.js.map +1 -0
  116. package/dist/_shared/header-DWfOUjFL.cjs +2 -0
  117. package/dist/_shared/header-DWfOUjFL.cjs.map +1 -0
  118. package/dist/_shared/header-KpdoLtP9.js +369 -0
  119. package/dist/_shared/header-KpdoLtP9.js.map +1 -0
  120. package/dist/_shared/heading-BprqyzDs.js +39 -0
  121. package/dist/_shared/heading-BprqyzDs.js.map +1 -0
  122. package/dist/_shared/heading-mZc_jan1.cjs +2 -0
  123. package/dist/_shared/heading-mZc_jan1.cjs.map +1 -0
  124. package/dist/_shared/hooks-C-uWoRq5.cjs +2 -0
  125. package/dist/_shared/hooks-C-uWoRq5.cjs.map +1 -0
  126. package/dist/_shared/hooks-D5HJtvvP.js +118 -0
  127. package/dist/_shared/hooks-D5HJtvvP.js.map +1 -0
  128. package/dist/_shared/icon-badge-BBqDyAUz.cjs +2 -0
  129. package/dist/_shared/icon-badge-BBqDyAUz.cjs.map +1 -0
  130. package/dist/_shared/icon-badge-Bi63T-bj.js +52 -0
  131. package/dist/_shared/icon-badge-Bi63T-bj.js.map +1 -0
  132. package/dist/_shared/input-B2YXTHqz.cjs +2 -0
  133. package/dist/_shared/input-B2YXTHqz.cjs.map +1 -0
  134. package/dist/_shared/input-BJb10xb9.cjs +2 -0
  135. package/dist/_shared/input-BJb10xb9.cjs.map +1 -0
  136. package/dist/_shared/input-CZxP5Xgj.js +17 -0
  137. package/dist/_shared/input-CZxP5Xgj.js.map +1 -0
  138. package/dist/_shared/input-DQahu2sm.js +182 -0
  139. package/dist/_shared/input-DQahu2sm.js.map +1 -0
  140. package/dist/_shared/item-Cu5JbZyZ.js +224 -0
  141. package/dist/_shared/item-Cu5JbZyZ.js.map +1 -0
  142. package/dist/_shared/item-Cx_7QZ2o.cjs +2 -0
  143. package/dist/_shared/item-Cx_7QZ2o.cjs.map +1 -0
  144. package/dist/_shared/mentions-CS3rIhze.js +493 -0
  145. package/dist/_shared/mentions-CS3rIhze.js.map +1 -0
  146. package/dist/_shared/mentions-D7gnP3Nf.cjs +2 -0
  147. package/dist/_shared/mentions-D7gnP3Nf.cjs.map +1 -0
  148. package/dist/_shared/metadata-CRsVWE8Y.cjs +2 -0
  149. package/dist/_shared/metadata-CRsVWE8Y.cjs.map +1 -0
  150. package/dist/_shared/metadata-CfG0FdFZ.js +236 -0
  151. package/dist/_shared/metadata-CfG0FdFZ.js.map +1 -0
  152. package/dist/_shared/money-display-Bd0rkjc9.js +198 -0
  153. package/dist/_shared/money-display-Bd0rkjc9.js.map +1 -0
  154. package/dist/_shared/money-display-DSFft9Mi.cjs +2 -0
  155. package/dist/_shared/money-display-DSFft9Mi.cjs.map +1 -0
  156. package/dist/_shared/navigation-Do9k5Xh1.js +420 -0
  157. package/dist/_shared/navigation-Do9k5Xh1.js.map +1 -0
  158. package/dist/_shared/navigation-QAAD3HJd.cjs +2 -0
  159. package/dist/_shared/navigation-QAAD3HJd.cjs.map +1 -0
  160. package/dist/_shared/overlays-B8AH8fNv.js +633 -0
  161. package/dist/_shared/overlays-B8AH8fNv.js.map +1 -0
  162. package/dist/_shared/overlays-DOcoRy8k.cjs +2 -0
  163. package/dist/_shared/overlays-DOcoRy8k.cjs.map +1 -0
  164. package/dist/_shared/page-BPCeKX9X.js +263 -0
  165. package/dist/_shared/page-BPCeKX9X.js.map +1 -0
  166. package/dist/_shared/page-DMM32sxi.cjs +2 -0
  167. package/dist/_shared/page-DMM32sxi.cjs.map +1 -0
  168. package/dist/_shared/popover-B1f_EUQS.cjs +2 -0
  169. package/dist/_shared/popover-B1f_EUQS.cjs.map +1 -0
  170. package/dist/_shared/popover-CgRGcFk9.js +83 -0
  171. package/dist/_shared/popover-CgRGcFk9.js.map +1 -0
  172. package/dist/_shared/popover-menu-BEKIT3LR.cjs +2 -0
  173. package/dist/_shared/popover-menu-BEKIT3LR.cjs.map +1 -0
  174. package/dist/_shared/popover-menu-BHdHLEVL.js +95 -0
  175. package/dist/_shared/popover-menu-BHdHLEVL.js.map +1 -0
  176. package/dist/_shared/rich-text-editor-0uoIoYXU.js +608 -0
  177. package/dist/_shared/rich-text-editor-0uoIoYXU.js.map +1 -0
  178. package/dist/_shared/rich-text-editor-wTiARGuB.cjs +2 -0
  179. package/dist/_shared/rich-text-editor-wTiARGuB.cjs.map +1 -0
  180. package/dist/_shared/scroll-area-Bo17wtZD.cjs +2 -0
  181. package/dist/_shared/scroll-area-Bo17wtZD.cjs.map +1 -0
  182. package/dist/_shared/scroll-area-Cj-hmB5D.js +41 -0
  183. package/dist/_shared/scroll-area-Cj-hmB5D.js.map +1 -0
  184. package/dist/_shared/select-07RRiTWc.js +85 -0
  185. package/dist/_shared/select-07RRiTWc.js.map +1 -0
  186. package/dist/_shared/select-BfiU7a4n.cjs +2 -0
  187. package/dist/_shared/select-BfiU7a4n.cjs.map +1 -0
  188. package/dist/_shared/separator-CN9zAJfs.cjs +2 -0
  189. package/dist/_shared/separator-CN9zAJfs.cjs.map +1 -0
  190. package/dist/_shared/separator-DR0uUMKa.js +16 -0
  191. package/dist/_shared/separator-DR0uUMKa.js.map +1 -0
  192. package/dist/_shared/sheet-B5FoGJAZ.cjs +2 -0
  193. package/dist/_shared/sheet-B5FoGJAZ.cjs.map +1 -0
  194. package/dist/_shared/sheet-cUI8cypP.js +100 -0
  195. package/dist/_shared/sheet-cUI8cypP.js.map +1 -0
  196. package/dist/_shared/sidebar-Bq7yKLrG.cjs +2 -0
  197. package/dist/_shared/sidebar-Bq7yKLrG.cjs.map +1 -0
  198. package/dist/_shared/sidebar-Da20tCUc.cjs +2 -0
  199. package/dist/_shared/sidebar-Da20tCUc.cjs.map +1 -0
  200. package/dist/_shared/sidebar-Q6TYE8Ux.js +371 -0
  201. package/dist/_shared/sidebar-Q6TYE8Ux.js.map +1 -0
  202. package/dist/_shared/sidebar-WmnQ55YY.js +537 -0
  203. package/dist/_shared/sidebar-WmnQ55YY.js.map +1 -0
  204. package/dist/_shared/skeleton-B3HWEc6G.js +14 -0
  205. package/dist/_shared/skeleton-B3HWEc6G.js.map +1 -0
  206. package/dist/_shared/skeleton-Cz_l8-fc.cjs +2 -0
  207. package/dist/_shared/skeleton-Cz_l8-fc.cjs.map +1 -0
  208. package/dist/_shared/slot-BgnZtKR5.js +18 -0
  209. package/dist/_shared/slot-BgnZtKR5.js.map +1 -0
  210. package/dist/_shared/slot-Dac1ipUC.cjs +2 -0
  211. package/dist/_shared/slot-Dac1ipUC.cjs.map +1 -0
  212. package/dist/_shared/smart-card-Bm_VxYUG.cjs +2 -0
  213. package/dist/_shared/smart-card-Bm_VxYUG.cjs.map +1 -0
  214. package/dist/_shared/smart-card-MT6JjkoI.js +360 -0
  215. package/dist/_shared/smart-card-MT6JjkoI.js.map +1 -0
  216. package/dist/_shared/spinner-BQjxJ_Kx.js +67 -0
  217. package/dist/_shared/spinner-BQjxJ_Kx.js.map +1 -0
  218. package/dist/_shared/spinner-Dvaa6GUm.cjs +2 -0
  219. package/dist/_shared/spinner-Dvaa6GUm.cjs.map +1 -0
  220. package/dist/_shared/switch-C0yyhsXZ.js +51 -0
  221. package/dist/_shared/switch-C0yyhsXZ.js.map +1 -0
  222. package/dist/_shared/switch-DozkSQNn.cjs +2 -0
  223. package/dist/_shared/switch-DozkSQNn.cjs.map +1 -0
  224. package/dist/_shared/textarea-Cgl-FPwu.js +119 -0
  225. package/dist/_shared/textarea-Cgl-FPwu.js.map +1 -0
  226. package/dist/_shared/textarea-D8wC0XlZ.cjs +2 -0
  227. package/dist/_shared/textarea-D8wC0XlZ.cjs.map +1 -0
  228. package/dist/_shared/tooltip-Cws4BiPT.js +49 -0
  229. package/dist/_shared/tooltip-Cws4BiPT.js.map +1 -0
  230. package/dist/_shared/tooltip-DyUi-Tac.cjs +2 -0
  231. package/dist/_shared/tooltip-DyUi-Tac.cjs.map +1 -0
  232. package/dist/_shared/typography-BW7iZBx7.cjs +2 -0
  233. package/dist/_shared/typography-BW7iZBx7.cjs.map +1 -0
  234. package/dist/_shared/typography-a3hydyvI.js +102 -0
  235. package/dist/_shared/typography-a3hydyvI.js.map +1 -0
  236. package/dist/components/base/accordion/index.cjs +1 -1
  237. package/dist/components/base/accordion/index.js +1 -1
  238. package/dist/components/base/badge/index.cjs +1 -1
  239. package/dist/components/base/badge/index.js +1 -1
  240. package/dist/components/base/buttons/index.cjs +1 -1
  241. package/dist/components/base/buttons/index.js +2 -2
  242. package/dist/components/base/cards/index.cjs +1 -1
  243. package/dist/components/base/cards/index.js +1 -1
  244. package/dist/components/base/combobox/index.cjs +1 -1
  245. package/dist/components/base/combobox/index.js +1 -1
  246. package/dist/components/base/command/index.cjs +1 -1
  247. package/dist/components/base/command/index.js +2 -2
  248. package/dist/components/base/copyable/index.cjs +1 -1
  249. package/dist/components/base/copyable/index.js +1 -1
  250. package/dist/components/base/currency/index.cjs +1 -1
  251. package/dist/components/base/currency/index.js +1 -1
  252. package/dist/components/base/date-pickers/index.cjs +1 -1
  253. package/dist/components/base/date-pickers/index.js +2 -2
  254. package/dist/components/base/display/index.cjs +1 -1
  255. package/dist/components/base/display/index.js +12 -11
  256. package/dist/components/base/display/metadata/index.cjs +1 -0
  257. package/dist/components/base/display/metadata/index.js +2 -0
  258. package/dist/components/base/event-calendar/index.cjs +1 -1
  259. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  260. package/dist/components/base/event-calendar/index.js +4 -4
  261. package/dist/components/base/forms/index.cjs +1 -1
  262. package/dist/components/base/forms/index.js +6 -6
  263. package/dist/components/base/item/index.cjs +1 -1
  264. package/dist/components/base/item/index.js +1 -1
  265. package/dist/components/base/map/index.cjs +1 -1
  266. package/dist/components/base/map/index.js +3 -3
  267. package/dist/components/base/navigation/index.cjs +1 -1
  268. package/dist/components/base/navigation/index.js +4 -4
  269. package/dist/components/base/popover/index.cjs +1 -1
  270. package/dist/components/base/popover/index.js +1 -1
  271. package/dist/components/base/popover-menu/index.cjs +1 -1
  272. package/dist/components/base/popover-menu/index.js +1 -1
  273. package/dist/components/base/sheet/index.cjs +1 -1
  274. package/dist/components/base/sheet/index.js +1 -1
  275. package/dist/components/base/sidebar/index.cjs +1 -1
  276. package/dist/components/base/sidebar/index.js +1 -1
  277. package/dist/components/base/spinner/index.cjs +1 -1
  278. package/dist/components/base/spinner/index.js +1 -1
  279. package/dist/components/base/table/index.cjs +1 -1
  280. package/dist/components/base/table/index.js +7 -7
  281. package/dist/components/composed/admin/index.cjs +1 -1
  282. package/dist/components/composed/admin/index.cjs.map +1 -1
  283. package/dist/components/composed/admin/index.js +12 -12
  284. package/dist/components/composed/ai/index.cjs +1 -1
  285. package/dist/components/composed/ai/index.js +9 -9
  286. package/dist/components/composed/analytics/index.cjs +1 -1
  287. package/dist/components/composed/analytics/index.cjs.map +1 -1
  288. package/dist/components/composed/analytics/index.js +4 -4
  289. package/dist/components/composed/cards/index.cjs +1 -1
  290. package/dist/components/composed/cards/index.cjs.map +1 -1
  291. package/dist/components/composed/cards/index.js +8 -8
  292. package/dist/components/composed/commerce/index.cjs +1 -1
  293. package/dist/components/composed/commerce/index.cjs.map +1 -1
  294. package/dist/components/composed/commerce/index.js +9 -9
  295. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  296. package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
  297. package/dist/components/composed/dark-surfaces/index.js +6 -6
  298. package/dist/components/composed/data-display/index.cjs +1 -1
  299. package/dist/components/composed/data-display/index.cjs.map +1 -1
  300. package/dist/components/composed/data-display/index.js +7 -7
  301. package/dist/components/composed/navigation/index.cjs +1 -1
  302. package/dist/components/composed/navigation/index.js +4 -4
  303. package/dist/components/composed/onboarding/index.cjs +1 -1
  304. package/dist/components/composed/onboarding/index.js +2 -2
  305. package/dist/components/composed/timelines/index.cjs +1 -1
  306. package/dist/components/composed/timelines/index.js +2 -2
  307. package/dist/components/features/activities/index.cjs +1 -1
  308. package/dist/components/features/activities/index.js +4 -4
  309. package/dist/components/features/ai-chat/index.cjs +1 -1
  310. package/dist/components/features/ai-chat/index.cjs.map +1 -1
  311. package/dist/components/features/ai-chat/index.js +6 -6
  312. package/dist/components/features/card/index.cjs +1 -1
  313. package/dist/components/features/card/index.js +3 -3
  314. package/dist/components/features/comments/index.cjs +1 -1
  315. package/dist/components/features/comments/index.js +2 -2
  316. package/dist/components/features/event-log/index.cjs +1 -1
  317. package/dist/components/features/event-log/index.js +3 -3
  318. package/dist/components/features/filters/index.cjs +1 -1
  319. package/dist/components/features/filters/index.js +9 -9
  320. package/dist/components/features/global-search/index.cjs +1 -1
  321. package/dist/components/features/global-search/index.js +2 -2
  322. package/dist/components/features/kanban/index.cjs +1 -1
  323. package/dist/components/features/kanban/index.js +1 -1
  324. package/dist/components/features/mentions/index.cjs +1 -1
  325. package/dist/components/features/mentions/index.js +1 -1
  326. package/dist/components/features/overlays/index.cjs +1 -1
  327. package/dist/components/features/overlays/index.js +1 -1
  328. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  329. package/dist/components/features/rich-text-editor/index.js +1 -1
  330. package/dist/components/features/suggestions/index.cjs +1 -1
  331. package/dist/components/features/suggestions/index.js +1 -1
  332. package/dist/components/features/sync/index.cjs +1 -1
  333. package/dist/components/features/sync/index.js +2 -2
  334. package/dist/components/layout/containers/index.cjs +1 -1
  335. package/dist/components/layout/containers/index.js +2 -2
  336. package/dist/components/layout/header/index.cjs +1 -1
  337. package/dist/components/layout/header/index.js +1 -1
  338. package/dist/components/layout/hooks/index.cjs +1 -1
  339. package/dist/components/layout/hooks/index.js +1 -1
  340. package/dist/components/layout/index.cjs +1 -1
  341. package/dist/components/layout/index.js +6 -6
  342. package/dist/components/layout/page/index.cjs +1 -1
  343. package/dist/components/layout/page/index.js +1 -1
  344. package/dist/components/layout/sidebar/index.cjs +1 -1
  345. package/dist/components/layout/sidebar/index.js +2 -2
  346. package/dist/components/typography/index.cjs +1 -1
  347. package/dist/components/typography/index.js +3 -2
  348. package/dist/showcase/assets/AreaChart-CJ57G5Ub.js +6 -0
  349. package/dist/showcase/assets/CSPContext-BA7DfnCI.js +1 -0
  350. package/dist/showcase/assets/CompositeItem-PwzgE4va.js +1 -0
  351. package/dist/showcase/assets/CompositeRoot-Du4CMlK7.js +1 -0
  352. package/dist/showcase/assets/DialogTrigger-FkENgwo6.js +1 -0
  353. package/dist/showcase/assets/FormContext-ChygLayp.js +1 -0
  354. package/dist/showcase/assets/PreviewLayout-z6vpJJGt.js +1 -0
  355. package/dist/showcase/assets/RadioGroup-CcDmbxOw.js +1 -0
  356. package/dist/showcase/assets/Separator-Dk4eN76U.js +1 -0
  357. package/dist/showcase/assets/ToolbarRootContext-D_KAA5hZ.js +1 -0
  358. package/dist/showcase/assets/accordion-dQszzfmw.js +172 -0
  359. package/dist/showcase/assets/accordion-variants-Dp4wxic-.js +1 -0
  360. package/dist/showcase/assets/action-menu-CBi2Eiy0.js +1 -0
  361. package/dist/showcase/assets/activities-DoXsgP4G.js +501 -0
  362. package/dist/showcase/assets/activities-feed-card-xz5FtkOm.js +1 -0
  363. package/dist/showcase/assets/admin-CxklUqAG.js +80 -0
  364. package/dist/showcase/assets/ai-artifact-DkhUdEbM.js +2 -0
  365. package/dist/showcase/assets/ai-chat-B6PuqkEu.js +568 -0
  366. package/dist/showcase/assets/ai-elements-D_rpj_ds.js +379 -0
  367. package/dist/showcase/assets/ai-new-CUPrAbOK.js +167 -0
  368. package/dist/showcase/assets/ai-tool-call-CEr-dGVx.js +1 -0
  369. package/dist/showcase/assets/ai-zxF_msJF.js +41 -0
  370. package/dist/showcase/assets/alert-771BE3Ny.js +59 -0
  371. package/dist/showcase/assets/alert-CG42DAlX.js +1 -0
  372. package/dist/showcase/assets/api-key-list-D6jUN7Fq.js +73 -0
  373. package/dist/showcase/assets/arrow-down-CUoXUyN1.js +1 -0
  374. package/dist/showcase/assets/arrow-left-Cdq69X6h.js +1 -0
  375. package/dist/showcase/assets/arrow-right-i25q9L2H.js +1 -0
  376. package/dist/showcase/assets/arrow-up-pnezegnF.js +1 -0
  377. package/dist/showcase/assets/arrow-up-right-CK3XnMah.js +1 -0
  378. package/dist/showcase/assets/avatar-LPmQqZQv.js +1 -0
  379. package/dist/showcase/assets/avatar-ZVFIQouy.js +57 -0
  380. package/dist/showcase/assets/badge-DK4bsgZC.js +28 -0
  381. package/dist/showcase/assets/badge-check-Cw5gkVcG.js +1 -0
  382. package/dist/showcase/assets/bell-BvJELoaV.js +1 -0
  383. package/dist/showcase/assets/bot-DRj6sdSR.js +1 -0
  384. package/dist/showcase/assets/box-BNND3M2m.js +1 -0
  385. package/dist/showcase/assets/brain-Cy3o-12l.js +1 -0
  386. package/dist/showcase/assets/brand-DvipEpFn.js +40 -0
  387. package/dist/showcase/assets/breadcrumb-B-LNuOyv.js +1 -0
  388. package/dist/showcase/assets/breadcrumb-Lzpc0yo4.js +52 -0
  389. package/dist/showcase/assets/breadcrumbs-DD6msKFZ.js +1 -0
  390. package/dist/showcase/assets/briefcase-LcAwoEmu.js +1 -0
  391. package/dist/showcase/assets/button-CuwcGzk1.js +44 -0
  392. package/dist/showcase/assets/button-group-CAImjDrl.js +1 -0
  393. package/dist/showcase/assets/buttons-DTjNHCMl.js +259 -0
  394. package/dist/showcase/assets/calendar-B1zW0q6I.js +1 -0
  395. package/dist/showcase/assets/calendar-Dlv72ytt.js +1 -0
  396. package/dist/showcase/assets/calendar-ls2A08Pn.js +16 -0
  397. package/dist/showcase/assets/card-BhtkM1BT.js +1 -0
  398. package/dist/showcase/assets/cards-BRpRXzGk.js +328 -0
  399. package/dist/showcase/assets/chart-column-BpQkEi1H.js +1 -0
  400. package/dist/showcase/assets/chevron-down-DyObdfSb.js +1 -0
  401. package/dist/showcase/assets/chevron-left-T7dHNxYM.js +1 -0
  402. package/dist/showcase/assets/chevron-right-D_EcqHpT.js +1 -0
  403. package/dist/showcase/assets/chevron-up-B38ivdGO.js +1 -0
  404. package/dist/showcase/assets/chevrons-up-down-SdRARzoq.js +1 -0
  405. package/dist/showcase/assets/circle-BrCPAmDA.js +1 -0
  406. package/dist/showcase/assets/circle-alert-DdhzLPY_.js +1 -0
  407. package/dist/showcase/assets/circle-check-DlA6zidQ.js +1 -0
  408. package/dist/showcase/assets/circle-check-big-DFGJANQF.js +1 -0
  409. package/dist/showcase/assets/circle-dot-BKmnVUqM.js +1 -0
  410. package/dist/showcase/assets/circle-question-mark-BNREvgVC.js +1 -0
  411. package/dist/showcase/assets/circle-x-C45QjHEs.js +1 -0
  412. package/dist/showcase/assets/clock-D1nKQzQo.js +1 -0
  413. package/dist/showcase/assets/code-xml-B8N3GRSu.js +1 -0
  414. package/dist/showcase/assets/collapsible-4TfcWyNs.js +1 -0
  415. package/dist/showcase/assets/collapsible-CKbZtvTj.js +27 -0
  416. package/dist/showcase/assets/combobox-DTdGPaU0.js +622 -0
  417. package/dist/showcase/assets/command-DymTXwL1.js +1 -0
  418. package/dist/showcase/assets/command-ksVIHQKJ.js +45 -0
  419. package/dist/showcase/assets/comment-composer-DC9oS1Yy.js +1 -0
  420. package/dist/showcase/assets/comment-item-CAmKnJa7.js +1 -0
  421. package/dist/showcase/assets/comments-Benk-2mV.js +349 -0
  422. package/dist/showcase/assets/commerce-Qz-mq8mQ.js +78 -0
  423. package/dist/showcase/assets/commerce-extras-CQRc3Bna.js +179 -0
  424. package/dist/showcase/assets/composite-DBDXLPyz.js +1 -0
  425. package/dist/showcase/assets/contact-card-DkL2nI3r.js +65 -0
  426. package/dist/showcase/assets/content-container-mRm6oJEa.js +1 -0
  427. package/dist/showcase/assets/copyable-DmLlmwzy.js +96 -0
  428. package/dist/showcase/assets/course-card-CJJoeZj9.js +113 -0
  429. package/dist/showcase/assets/cpu-BXJnF2Xy.js +1 -0
  430. package/dist/showcase/assets/credit-card-BQK3KKb2.js +1 -0
  431. package/dist/showcase/assets/currency-DBPUh8ee.js +149 -0
  432. package/dist/showcase/assets/dark-surfaces-LpPuIeYy.js +90 -0
  433. package/dist/showcase/assets/database-BZerpzGE.js +1 -0
  434. package/dist/showcase/assets/date-block-iiHUpbNX.js +1 -0
  435. package/dist/showcase/assets/date-picker-BQeBGL7T.js +1 -0
  436. package/dist/showcase/assets/date-pickers-CKcUEMMF.js +110 -0
  437. package/dist/showcase/assets/dense-info-DATmxRU8.js +106 -0
  438. package/dist/showcase/assets/dialog-Bqu5KDYH.js +1 -0
  439. package/dist/showcase/assets/display-Bj7uPXD4.js +392 -0
  440. package/dist/showcase/assets/dist-QK7JxeYv.js +1 -0
  441. package/dist/showcase/assets/dollar-sign-DFZs6vfz.js +1 -0
  442. package/dist/showcase/assets/download-5oGw_WbW.js +1 -0
  443. package/dist/showcase/assets/dropdown-menu-1CJgYn0S.js +1 -0
  444. package/dist/showcase/assets/dropzone-Co1uhsDn.js +1 -0
  445. package/dist/showcase/assets/ellipsis-cKRcvuyL.js +1 -0
  446. package/dist/showcase/assets/ellipsis-vertical-B1RErEkj.js +1 -0
  447. package/dist/showcase/assets/empty-Y2-4nCBr.js +1 -0
  448. package/dist/showcase/assets/empty-item-USa6xcUv.js +49 -0
  449. package/dist/showcase/assets/empty-state-DfhZ9AT5.js +188 -0
  450. package/dist/showcase/assets/enhanced-activities-DmAPVUSu.js +359 -0
  451. package/dist/showcase/assets/esm-BeGQ_ZTM.js +2 -0
  452. package/dist/showcase/assets/event-calendar-D-jGrrZS.js +138 -0
  453. package/dist/showcase/assets/event-log-tA_i4eR9.js +326 -0
  454. package/dist/showcase/assets/example-6phCHGsN.js +1 -0
  455. package/dist/showcase/assets/external-link-BuVHkCy0.js +1 -0
  456. package/dist/showcase/assets/eye-DC5HfGm6.js +1 -0
  457. package/dist/showcase/assets/feature-announcement-DwvxLytd.js +34 -0
  458. package/dist/showcase/assets/file-D-xM4vLy.js +1 -0
  459. package/dist/showcase/assets/file-text-tmG5vNbr.js +1 -0
  460. package/dist/showcase/assets/filters-CrGRXmq6.js +78 -0
  461. package/dist/showcase/assets/flag-CWrEtkY5.js +1 -0
  462. package/dist/showcase/assets/folder-open-Br-x1pjP.js +1 -0
  463. package/dist/showcase/assets/form-sizing-Bb5hiM45.js +1 -0
  464. package/dist/showcase/assets/format-D_ETCyg4.js +1 -0
  465. package/dist/showcase/assets/forms-B_MkQ3rm.js +790 -0
  466. package/dist/showcase/assets/generic-CdmsyXV3.js +1 -0
  467. package/dist/showcase/assets/getPseudoElementBounds-CZnCbCFP.js +1 -0
  468. package/dist/showcase/assets/gift-NkuklfU2.js +1 -0
  469. package/dist/showcase/assets/giftcard-cards-BAvevZ0i.js +85 -0
  470. package/dist/showcase/assets/git-branch-B_CBqPeO.js +1 -0
  471. package/dist/showcase/assets/global-search-D9teAbPe.js +90 -0
  472. package/dist/showcase/assets/globe-gzw45GU2.js +1 -0
  473. package/dist/showcase/assets/gradient-card-Xk2r7R5H.js +58 -0
  474. package/dist/showcase/assets/header-notifications-_aZCpE5A.js +1 -0
  475. package/dist/showcase/assets/heart-CEMKbRaZ.js +1 -0
  476. package/dist/showcase/assets/house-BlGXAcMH.js +1 -0
  477. package/dist/showcase/assets/icon-badge-z6N9reH_.js +1 -0
  478. package/dist/showcase/assets/image-B8mzmVBr.js +1 -0
  479. package/dist/showcase/assets/inbox-qdSnP4UV.js +1 -0
  480. package/dist/showcase/assets/index-B4ubXfly.js +10 -0
  481. package/dist/showcase/assets/inertValue-D5Q8cLku.js +1 -0
  482. package/dist/showcase/assets/info-DBvvNjc_.js +1 -0
  483. package/dist/showcase/assets/inline-stat-Bm1zVT8D.js +1 -0
  484. package/dist/showcase/assets/input-CBQR0aeX.js +1 -0
  485. package/dist/showcase/assets/input-OrUzpI55.js +1 -0
  486. package/dist/showcase/assets/input-group-DhqOen2N.js +47 -0
  487. package/dist/showcase/assets/input-group-l8xa5nUq.js +1 -0
  488. package/dist/showcase/assets/inputs-DbiJ0qy2.js +49 -0
  489. package/dist/showcase/assets/invoice-header-C6youIbL.js +36 -0
  490. package/dist/showcase/assets/invoice-items-g6dgryF-.js +36 -0
  491. package/dist/showcase/assets/invoice-mini-0iWhufpt.js +14 -0
  492. package/dist/showcase/assets/invoice-table-Bvdh3rRq.js +30 -0
  493. package/dist/showcase/assets/isSameDay-BpZEtJe8.js +1 -0
  494. package/dist/showcase/assets/isToday-F0CS28oK.js +1 -0
  495. package/dist/showcase/assets/italic-CJOEwjdc.js +1 -0
  496. package/dist/showcase/assets/item-BiMm1PPB.js +1 -0
  497. package/dist/showcase/assets/item-CN0cwdj_.js +1 -0
  498. package/dist/showcase/assets/item-DNqEUYLT.js +117 -0
  499. package/dist/showcase/assets/kanban-DxePEUiQ.js +175 -0
  500. package/dist/showcase/assets/label-Dx4WO-fg.js +1 -0
  501. package/dist/showcase/assets/layout-containers-DDl8rG8S.js +96 -0
  502. package/dist/showcase/assets/layout-header-Bu6IcDWu.js +170 -0
  503. package/dist/showcase/assets/layout-page-D-88Qnoy.js +122 -0
  504. package/dist/showcase/assets/layout-sidebar-Ctft10pk.js +224 -0
  505. package/dist/showcase/assets/layout-users-DtbZduBG.js +104 -0
  506. package/dist/showcase/assets/lib-D9BoOYUd.js +1 -0
  507. package/dist/showcase/assets/lock-CHurDI0n.js +1 -0
  508. package/dist/showcase/assets/mail-DZ1o1RLW.js +1 -0
  509. package/dist/showcase/assets/map-C8xiyT9X.js +124 -0
  510. package/dist/showcase/assets/map-pin-CAKaoYod.js +1 -0
  511. package/dist/showcase/assets/menus-C6mnp636.js +89 -0
  512. package/dist/showcase/assets/message-square-Zo5J_zU1.js +1 -0
  513. package/dist/showcase/assets/metadata-list-W83-UMhc.js +278 -0
  514. package/dist/showcase/assets/metric-BSvxidIX.js +1 -0
  515. package/dist/showcase/assets/metric-grid-Dtqx_3Lg.js +1 -0
  516. package/dist/showcase/assets/metric-trend-chip-mtvcJ_M9.js +1 -0
  517. package/dist/showcase/assets/metrics-analytics-bar-DQbyss7i.js +44 -0
  518. package/dist/showcase/assets/metrics-analytics-cards-CEBu5Uw0.js +77 -0
  519. package/dist/showcase/assets/metrics-comparison-Bs-R6v4y.js +76 -0
  520. package/dist/showcase/assets/metrics-heatmap-BKHWH8sM.js +27 -0
  521. package/dist/showcase/assets/metrics-inline-badge-BxVn0Y2p.js +17 -0
  522. package/dist/showcase/assets/metrics-kpi-row-DtACYEds.js +31 -0
  523. package/dist/showcase/assets/metrics-micro-grid-BkwUGOUR.js +42 -0
  524. package/dist/showcase/assets/metrics-overview-BAtrlzsI.js +192 -0
  525. package/dist/showcase/assets/metrics-stat-cards-iCRCNyHY.js +54 -0
  526. package/dist/showcase/assets/minus-C6eBW-2t.js +1 -0
  527. package/dist/showcase/assets/money-display-DjGRJ16l.js +1 -0
  528. package/dist/showcase/assets/month-year-picker-DTDebPqf.js +1 -0
  529. package/dist/showcase/assets/navigation-BrG8Chig.js +86 -0
  530. package/dist/showcase/assets/navigation-CfXQJbyM.js +230 -0
  531. package/dist/showcase/assets/navigation-extras-D_gzLlZ5.js +43 -0
  532. package/dist/showcase/assets/onboarding-checklist-1EerUwAo.js +119 -0
  533. package/dist/showcase/assets/overlays-2AB9-S1Z.js +88 -0
  534. package/dist/showcase/assets/overlays-CYt9o3Xq.js +393 -0
  535. package/dist/showcase/assets/package-BJMP-Fcr.js +1 -0
  536. package/dist/showcase/assets/page-action-button-BZxJ0X1j.js +1 -0
  537. package/dist/showcase/assets/page-header-B_rqHJhe.js +1 -0
  538. package/dist/showcase/assets/pagination-BHiQvvka.js +1 -0
  539. package/dist/showcase/assets/pagination-Dq0GruQd.js +42 -0
  540. package/dist/showcase/assets/paperclip-BMYKrUQo.js +1 -0
  541. package/dist/showcase/assets/pencil-BJ3VS_FO.js +1 -0
  542. package/dist/showcase/assets/phone-CsRIyvep.js +1 -0
  543. package/dist/showcase/assets/plus-D2JuXYLg.js +1 -0
  544. package/dist/showcase/assets/popover-DNT9755r.js +1 -0
  545. package/dist/showcase/assets/popover-KvGgcPNg.js +1 -0
  546. package/dist/showcase/assets/popover-menu-CJx30R65.js +1 -0
  547. package/dist/showcase/assets/progress-B7WuXcJR.js +1 -0
  548. package/dist/showcase/assets/progress-CweCSAUv.js +18 -0
  549. package/dist/showcase/assets/props-table-uDY4eIzt.js +1 -0
  550. package/dist/showcase/assets/quote-DAyyfzQd.js +1 -0
  551. package/dist/showcase/assets/receipt-C0mMZGbF.js +1 -0
  552. package/dist/showcase/assets/refresh-cw-X06JbXb-.js +1 -0
  553. package/dist/showcase/assets/resolveValueLabel-Bks7UDko.js +1 -0
  554. package/dist/showcase/assets/rich-text-editor-QJsb-qIe.js +124 -0
  555. package/dist/showcase/assets/rich-text-editor-h07VBNI9.js +141 -0
  556. package/dist/showcase/assets/rotate-ccw-D84bdX_x.js +1 -0
  557. package/dist/showcase/assets/scroll-area-0rT06pXZ.js +1 -0
  558. package/dist/showcase/assets/scroll-area-YXwdzGpN.js +32 -0
  559. package/dist/showcase/assets/select-BoWQDtUf.js +1 -0
  560. package/dist/showcase/assets/send-DJsk3cr1.js +1 -0
  561. package/dist/showcase/assets/separator-CLSnRcJa.js +28 -0
  562. package/dist/showcase/assets/separator-DWv-twD-.js +1 -0
  563. package/dist/showcase/assets/settings-Cb2MsAmN.js +1 -0
  564. package/dist/showcase/assets/sheet-Dn1-MYus.js +1 -0
  565. package/dist/showcase/assets/shield-DwLjF5ch.js +1 -0
  566. package/dist/showcase/assets/shield-alert-D8i6gzMK.js +1 -0
  567. package/dist/showcase/assets/shield-check-D5YRSBIz.js +1 -0
  568. package/dist/showcase/assets/shopping-bag-BqlAP4vn.js +1 -0
  569. package/dist/showcase/assets/sidebar.context-BAp_pBEB.js +1 -0
  570. package/dist/showcase/assets/skeleton-CeNPp4hr.js +1 -0
  571. package/dist/showcase/assets/skeleton-QPsnM_NR.js +29 -0
  572. package/dist/showcase/assets/smart-card-BisUbLPt.js +1 -0
  573. package/dist/showcase/assets/sonner-B7GzbBK2.js +22 -0
  574. package/dist/showcase/assets/sortable.esm-BDcEOHT7.js +5 -0
  575. package/dist/showcase/assets/sparkles-CF9P5Tqh.js +1 -0
  576. package/dist/showcase/assets/spinner-BeamEyJd.js +49 -0
  577. package/dist/showcase/assets/spinner-DoYBfalR.js +1 -0
  578. package/dist/showcase/assets/spinner-UsLsOYzn.js +30 -0
  579. package/dist/showcase/assets/square-pen-BGTVdnt1.js +1 -0
  580. package/dist/showcase/assets/stacked-avatars-BWfVX1Ov.js +1 -0
  581. package/dist/showcase/assets/star-NsPNO9gR.js +1 -0
  582. package/dist/showcase/assets/startOfDay-zJBpxLuW.js +1 -0
  583. package/dist/showcase/assets/styles-DA7a7hVy.js +1 -0
  584. package/dist/showcase/assets/switch-C62S4U2o.js +1 -0
  585. package/dist/showcase/assets/switch-CYQcinJZ.js +1 -0
  586. package/dist/showcase/assets/table-w4IABkpa.js +1 -0
  587. package/dist/showcase/assets/table-xgB63UrY.js +390 -0
  588. package/dist/showcase/assets/tabs-BFTEaTXj.js +19 -0
  589. package/dist/showcase/assets/tabs-oMJn9Ujq.js +1 -0
  590. package/dist/showcase/assets/text-button-BgcutPuu.js +1 -0
  591. package/dist/showcase/assets/text-link-CS9thOWL.js +1 -0
  592. package/dist/showcase/assets/textarea-BOBx4EM6.js +1 -0
  593. package/dist/showcase/assets/textarea-CTzYZZqa.js +1 -0
  594. package/dist/showcase/assets/timelines-CK07mEBK.js +186 -0
  595. package/dist/showcase/assets/toggle-group-CSPdPT6G.js +1 -0
  596. package/dist/showcase/assets/toggles-DDSdl-gA.js +71 -0
  597. package/dist/showcase/assets/toggles-group-Y2BdKEFB.js +32 -0
  598. package/dist/showcase/assets/trash-2-C-FAptQP.js +1 -0
  599. package/dist/showcase/assets/trending-up-BmLhdF_w.js +1 -0
  600. package/dist/showcase/assets/truck-pZdUS_as.js +1 -0
  601. package/dist/showcase/assets/typography-CnBH2z7f.js +214 -0
  602. package/dist/showcase/assets/ui-badge-Cl6INRO5.js +28 -0
  603. package/dist/showcase/assets/ui-card-B5P-thNu.js +30 -0
  604. package/dist/showcase/assets/ui-table-B32RILKk.js +42 -0
  605. package/dist/showcase/assets/upload-tray-mu6bR2ZE.js +138 -0
  606. package/dist/showcase/assets/useAnchoredPopupScrollLock-CzDaXxmM.js +1 -0
  607. package/dist/showcase/assets/useCollapsiblePanel-B0DZvDFu.js +1 -0
  608. package/dist/showcase/assets/useCompositeItem-BVIVLT9X.js +1 -0
  609. package/dist/showcase/assets/useCompositeListItem-JEMeTFPx.js +1 -0
  610. package/dist/showcase/assets/useControlled-ZjqBfPCn.js +1 -0
  611. package/dist/showcase/assets/useLabelableId-D8CZq8Bm.js +1 -0
  612. package/dist/showcase/assets/useOpenInteractionType-CopGCf3q.js +1 -0
  613. package/dist/showcase/assets/useRender-zuKv6JQF.js +1 -0
  614. package/dist/showcase/assets/useRole-08KeyiD3.js +1 -0
  615. package/dist/showcase/assets/useTriggerFocusGuards-DEuz5CGe.js +1 -0
  616. package/dist/showcase/assets/useValueChanged-BxFi_qyj.js +1 -0
  617. package/dist/showcase/assets/user-Bgc2t2_e.js +1 -0
  618. package/dist/showcase/assets/user-plus-F_TfagnP.js +1 -0
  619. package/dist/showcase/assets/users-B7G4yTCR.js +1 -0
  620. package/dist/showcase/assets/vendor-profile-BTQmsKM6.js +37 -0
  621. package/dist/showcase/assets/wrench-BdzICmjR.js +1 -0
  622. package/dist/showcase/assets/x-B156Wr-5.js +1 -0
  623. package/dist/showcase/assets/zap-B3iByjNV.js +1 -0
  624. package/dist/showcase/index.html +1 -1
  625. package/package.json +254 -19
  626. package/dist/_shared/accordion-7rwpgJ1k.cjs +0 -2
  627. package/dist/_shared/accordion-7rwpgJ1k.cjs.map +0 -1
  628. package/dist/_shared/accordion-DcduCEIo.js +0 -130
  629. package/dist/_shared/accordion-DcduCEIo.js.map +0 -1
  630. package/dist/_shared/action-menu-D0u-q0q-.cjs +0 -2
  631. package/dist/_shared/action-menu-D0u-q0q-.cjs.map +0 -1
  632. package/dist/_shared/action-menu-DUBXdReV.js +0 -96
  633. package/dist/_shared/action-menu-DUBXdReV.js.map +0 -1
  634. package/dist/_shared/ai-artifact-C3R0god0.cjs +0 -3
  635. package/dist/_shared/ai-artifact-C3R0god0.cjs.map +0 -1
  636. package/dist/_shared/ai-artifact-DMjQv_Si.js +0 -1068
  637. package/dist/_shared/ai-artifact-DMjQv_Si.js.map +0 -1
  638. package/dist/_shared/alert-B2cuJGAA.cjs +0 -2
  639. package/dist/_shared/alert-B2cuJGAA.cjs.map +0 -1
  640. package/dist/_shared/alert-BKUmOI2e.js +0 -48
  641. package/dist/_shared/alert-BKUmOI2e.js.map +0 -1
  642. package/dist/_shared/avatar-BcYcRORH.cjs +0 -2
  643. package/dist/_shared/avatar-BcYcRORH.cjs.map +0 -1
  644. package/dist/_shared/avatar-CNzG6jSZ.js +0 -52
  645. package/dist/_shared/avatar-CNzG6jSZ.js.map +0 -1
  646. package/dist/_shared/badge-BbUN6W7E.js +0 -108
  647. package/dist/_shared/badge-BbUN6W7E.js.map +0 -1
  648. package/dist/_shared/badge-BjtDcU1M.cjs +0 -2
  649. package/dist/_shared/badge-BjtDcU1M.cjs.map +0 -1
  650. package/dist/_shared/breadcrumbs-DctwTld5.js +0 -111
  651. package/dist/_shared/breadcrumbs-DctwTld5.js.map +0 -1
  652. package/dist/_shared/breadcrumbs-m0-gCdNj.cjs +0 -2
  653. package/dist/_shared/breadcrumbs-m0-gCdNj.cjs.map +0 -1
  654. package/dist/_shared/button-BCABTFLE.js +0 -46
  655. package/dist/_shared/button-BCABTFLE.js.map +0 -1
  656. package/dist/_shared/button-Ck2qS42n.js +0 -176
  657. package/dist/_shared/button-Ck2qS42n.js.map +0 -1
  658. package/dist/_shared/button-DjJ-mDI1.cjs +0 -2
  659. package/dist/_shared/button-DjJ-mDI1.cjs.map +0 -1
  660. package/dist/_shared/button-DjacsNTg.cjs +0 -2
  661. package/dist/_shared/button-DjacsNTg.cjs.map +0 -1
  662. package/dist/_shared/buttons-BVnjQ-uE.js +0 -143
  663. package/dist/_shared/buttons-BVnjQ-uE.js.map +0 -1
  664. package/dist/_shared/buttons-BdY6igTr.cjs +0 -2
  665. package/dist/_shared/buttons-BdY6igTr.cjs.map +0 -1
  666. package/dist/_shared/card-radio-group--GP1xrz_.js +0 -158
  667. package/dist/_shared/card-radio-group--GP1xrz_.js.map +0 -1
  668. package/dist/_shared/card-radio-group-DnQsWozr.cjs +0 -2
  669. package/dist/_shared/card-radio-group-DnQsWozr.cjs.map +0 -1
  670. package/dist/_shared/combobox-DBrRE1Dr.cjs +0 -2
  671. package/dist/_shared/combobox-DBrRE1Dr.cjs.map +0 -1
  672. package/dist/_shared/combobox-DYztEJaw.js +0 -746
  673. package/dist/_shared/combobox-DYztEJaw.js.map +0 -1
  674. package/dist/_shared/command-COvgXQ8r.cjs +0 -2
  675. package/dist/_shared/command-COvgXQ8r.cjs.map +0 -1
  676. package/dist/_shared/command-CvZ6Emb8.js +0 -39
  677. package/dist/_shared/command-CvZ6Emb8.js.map +0 -1
  678. package/dist/_shared/command-DTFQIUVG.cjs +0 -2
  679. package/dist/_shared/command-DTFQIUVG.cjs.map +0 -1
  680. package/dist/_shared/command-Sq8XbHbA.js +0 -123
  681. package/dist/_shared/command-Sq8XbHbA.js.map +0 -1
  682. package/dist/_shared/comments-BOFU1GYY.js +0 -945
  683. package/dist/_shared/comments-BOFU1GYY.js.map +0 -1
  684. package/dist/_shared/comments-BbTYFzx6.cjs +0 -2
  685. package/dist/_shared/comments-BbTYFzx6.cjs.map +0 -1
  686. package/dist/_shared/containers-BthqdOhA.cjs +0 -2
  687. package/dist/_shared/containers-BthqdOhA.cjs.map +0 -1
  688. package/dist/_shared/containers-CD2xs1nk.js +0 -19
  689. package/dist/_shared/containers-CD2xs1nk.js.map +0 -1
  690. package/dist/_shared/content-container-CFfYbWoa.js +0 -33
  691. package/dist/_shared/content-container-CFfYbWoa.js.map +0 -1
  692. package/dist/_shared/content-container-CReiVugL.cjs +0 -2
  693. package/dist/_shared/content-container-CReiVugL.cjs.map +0 -1
  694. package/dist/_shared/copyable-CweQ72QI.cjs +0 -2
  695. package/dist/_shared/copyable-CweQ72QI.cjs.map +0 -1
  696. package/dist/_shared/copyable-JgsTp6ev.js +0 -38
  697. package/dist/_shared/copyable-JgsTp6ev.js.map +0 -1
  698. package/dist/_shared/date-picker-DI4b-SeE.cjs +0 -2
  699. package/dist/_shared/date-picker-DI4b-SeE.cjs.map +0 -1
  700. package/dist/_shared/date-picker-DTazvODY.js +0 -1352
  701. package/dist/_shared/date-picker-DTazvODY.js.map +0 -1
  702. package/dist/_shared/date-pickers-CLzuzmuc.cjs +0 -2
  703. package/dist/_shared/date-pickers-CLzuzmuc.cjs.map +0 -1
  704. package/dist/_shared/date-pickers-CWPxP3zy.js +0 -330
  705. package/dist/_shared/date-pickers-CWPxP3zy.js.map +0 -1
  706. package/dist/_shared/dialog-2MJmaj_d.js +0 -101
  707. package/dist/_shared/dialog-2MJmaj_d.js.map +0 -1
  708. package/dist/_shared/dialog-KKD0i1T8.cjs +0 -2
  709. package/dist/_shared/dialog-KKD0i1T8.cjs.map +0 -1
  710. package/dist/_shared/display-BCy1Ti7T.cjs +0 -8
  711. package/dist/_shared/display-BCy1Ti7T.cjs.map +0 -1
  712. package/dist/_shared/display-DUpkE2aS.js +0 -1462
  713. package/dist/_shared/display-DUpkE2aS.js.map +0 -1
  714. package/dist/_shared/dropdown-menu-BebBffUH.cjs +0 -2
  715. package/dist/_shared/dropdown-menu-BebBffUH.cjs.map +0 -1
  716. package/dist/_shared/dropdown-menu-xdGEynC8.js +0 -147
  717. package/dist/_shared/dropdown-menu-xdGEynC8.js.map +0 -1
  718. package/dist/_shared/form-field-rOj3cm6C.js +0 -319
  719. package/dist/_shared/form-field-rOj3cm6C.js.map +0 -1
  720. package/dist/_shared/form-field-rcyIIHjR.cjs +0 -2
  721. package/dist/_shared/form-field-rcyIIHjR.cjs.map +0 -1
  722. package/dist/_shared/form-sizing--bs_xPe2.cjs +0 -2
  723. package/dist/_shared/form-sizing--bs_xPe2.cjs.map +0 -1
  724. package/dist/_shared/form-sizing-CkKcs5fi.js +0 -21
  725. package/dist/_shared/form-sizing-CkKcs5fi.js.map +0 -1
  726. package/dist/_shared/format-BlVEsPyT.js +0 -48
  727. package/dist/_shared/format-BlVEsPyT.js.map +0 -1
  728. package/dist/_shared/format-DYVtSA2I.cjs +0 -2
  729. package/dist/_shared/format-DYVtSA2I.cjs.map +0 -1
  730. package/dist/_shared/forms-BAVsxxRk.js +0 -3374
  731. package/dist/_shared/forms-BAVsxxRk.js.map +0 -1
  732. package/dist/_shared/forms-DaZ3LsYc.cjs +0 -2
  733. package/dist/_shared/forms-DaZ3LsYc.cjs.map +0 -1
  734. package/dist/_shared/header-BtTMsQ5P.cjs +0 -2
  735. package/dist/_shared/header-BtTMsQ5P.cjs.map +0 -1
  736. package/dist/_shared/header-DpW4UWV6.js +0 -369
  737. package/dist/_shared/header-DpW4UWV6.js.map +0 -1
  738. package/dist/_shared/hooks-Bsm917yh.cjs +0 -2
  739. package/dist/_shared/hooks-Bsm917yh.cjs.map +0 -1
  740. package/dist/_shared/hooks-CX-SICd4.js +0 -118
  741. package/dist/_shared/hooks-CX-SICd4.js.map +0 -1
  742. package/dist/_shared/icon-badge-DGKpbo9_.cjs +0 -2
  743. package/dist/_shared/icon-badge-DGKpbo9_.cjs.map +0 -1
  744. package/dist/_shared/icon-badge-DoClA_9q.js +0 -52
  745. package/dist/_shared/icon-badge-DoClA_9q.js.map +0 -1
  746. package/dist/_shared/input-BXt-YtVs.cjs +0 -2
  747. package/dist/_shared/input-BXt-YtVs.cjs.map +0 -1
  748. package/dist/_shared/input-Bx4LeLhn.js +0 -17
  749. package/dist/_shared/input-Bx4LeLhn.js.map +0 -1
  750. package/dist/_shared/input-ChZGIhtS.cjs +0 -2
  751. package/dist/_shared/input-ChZGIhtS.cjs.map +0 -1
  752. package/dist/_shared/input-Cwv1-5jt.js +0 -182
  753. package/dist/_shared/input-Cwv1-5jt.js.map +0 -1
  754. package/dist/_shared/item-BmTYKzEb.js +0 -224
  755. package/dist/_shared/item-BmTYKzEb.js.map +0 -1
  756. package/dist/_shared/item-BtR-bz96.cjs +0 -2
  757. package/dist/_shared/item-BtR-bz96.cjs.map +0 -1
  758. package/dist/_shared/mentions-DVCjaO_z.cjs +0 -2
  759. package/dist/_shared/mentions-DVCjaO_z.cjs.map +0 -1
  760. package/dist/_shared/mentions-DzG8mX5H.js +0 -493
  761. package/dist/_shared/mentions-DzG8mX5H.js.map +0 -1
  762. package/dist/_shared/money-display-B5oxCs_0.cjs +0 -2
  763. package/dist/_shared/money-display-B5oxCs_0.cjs.map +0 -1
  764. package/dist/_shared/money-display-C0wI02ou.js +0 -198
  765. package/dist/_shared/money-display-C0wI02ou.js.map +0 -1
  766. package/dist/_shared/navigation-BA2nsTgU.cjs +0 -2
  767. package/dist/_shared/navigation-BA2nsTgU.cjs.map +0 -1
  768. package/dist/_shared/navigation-DHyaf-RZ.js +0 -420
  769. package/dist/_shared/navigation-DHyaf-RZ.js.map +0 -1
  770. package/dist/_shared/overlays-Kl6Gp6WR.js +0 -633
  771. package/dist/_shared/overlays-Kl6Gp6WR.js.map +0 -1
  772. package/dist/_shared/overlays-W6j-Pe1L.cjs +0 -2
  773. package/dist/_shared/overlays-W6j-Pe1L.cjs.map +0 -1
  774. package/dist/_shared/page-DROZhtWT.js +0 -263
  775. package/dist/_shared/page-DROZhtWT.js.map +0 -1
  776. package/dist/_shared/page-lh9Rcx_d.cjs +0 -2
  777. package/dist/_shared/page-lh9Rcx_d.cjs.map +0 -1
  778. package/dist/_shared/popover-BTEwjJZS.cjs +0 -2
  779. package/dist/_shared/popover-BTEwjJZS.cjs.map +0 -1
  780. package/dist/_shared/popover-CF9VWt-l.js +0 -83
  781. package/dist/_shared/popover-CF9VWt-l.js.map +0 -1
  782. package/dist/_shared/popover-menu-BYesl29w.js +0 -95
  783. package/dist/_shared/popover-menu-BYesl29w.js.map +0 -1
  784. package/dist/_shared/popover-menu-DF9sWz61.cjs +0 -2
  785. package/dist/_shared/popover-menu-DF9sWz61.cjs.map +0 -1
  786. package/dist/_shared/rich-text-editor-UZghkgsh.cjs +0 -2
  787. package/dist/_shared/rich-text-editor-UZghkgsh.cjs.map +0 -1
  788. package/dist/_shared/rich-text-editor-fUeuK-rY.js +0 -608
  789. package/dist/_shared/rich-text-editor-fUeuK-rY.js.map +0 -1
  790. package/dist/_shared/scroll-area-XJLcCczs.js +0 -41
  791. package/dist/_shared/scroll-area-XJLcCczs.js.map +0 -1
  792. package/dist/_shared/scroll-area-y8ZJoS97.cjs +0 -2
  793. package/dist/_shared/scroll-area-y8ZJoS97.cjs.map +0 -1
  794. package/dist/_shared/select-D8MYF4f7.js +0 -85
  795. package/dist/_shared/select-D8MYF4f7.js.map +0 -1
  796. package/dist/_shared/select-DxAiUfpM.cjs +0 -2
  797. package/dist/_shared/select-DxAiUfpM.cjs.map +0 -1
  798. package/dist/_shared/separator-BazqiQ9s.js +0 -16
  799. package/dist/_shared/separator-BazqiQ9s.js.map +0 -1
  800. package/dist/_shared/separator-DSkXMOXq.cjs +0 -2
  801. package/dist/_shared/separator-DSkXMOXq.cjs.map +0 -1
  802. package/dist/_shared/sheet-7iHOs-IU.js +0 -100
  803. package/dist/_shared/sheet-7iHOs-IU.js.map +0 -1
  804. package/dist/_shared/sheet-qKtoyxgi.cjs +0 -2
  805. package/dist/_shared/sheet-qKtoyxgi.cjs.map +0 -1
  806. package/dist/_shared/sidebar-CaTUJ3t-.js +0 -537
  807. package/dist/_shared/sidebar-CaTUJ3t-.js.map +0 -1
  808. package/dist/_shared/sidebar-DVjfsm-f.cjs +0 -2
  809. package/dist/_shared/sidebar-DVjfsm-f.cjs.map +0 -1
  810. package/dist/_shared/sidebar-aV5DVAVg.js +0 -371
  811. package/dist/_shared/sidebar-aV5DVAVg.js.map +0 -1
  812. package/dist/_shared/sidebar-mL0jSJ8u.cjs +0 -2
  813. package/dist/_shared/sidebar-mL0jSJ8u.cjs.map +0 -1
  814. package/dist/_shared/skeleton-Bwv_j9jJ.cjs +0 -2
  815. package/dist/_shared/skeleton-Bwv_j9jJ.cjs.map +0 -1
  816. package/dist/_shared/skeleton-DyKa-Ed-.js +0 -14
  817. package/dist/_shared/skeleton-DyKa-Ed-.js.map +0 -1
  818. package/dist/_shared/slot-ClIPTht1.cjs +0 -2
  819. package/dist/_shared/slot-ClIPTht1.cjs.map +0 -1
  820. package/dist/_shared/slot-CrS_VEVl.js +0 -18
  821. package/dist/_shared/slot-CrS_VEVl.js.map +0 -1
  822. package/dist/_shared/smart-card-Ddsjvf7r.cjs +0 -2
  823. package/dist/_shared/smart-card-Ddsjvf7r.cjs.map +0 -1
  824. package/dist/_shared/smart-card-hJ01usWt.js +0 -360
  825. package/dist/_shared/smart-card-hJ01usWt.js.map +0 -1
  826. package/dist/_shared/spinner-D-pcMBt1.js +0 -67
  827. package/dist/_shared/spinner-D-pcMBt1.js.map +0 -1
  828. package/dist/_shared/spinner-zbmhn0vE.cjs +0 -2
  829. package/dist/_shared/spinner-zbmhn0vE.cjs.map +0 -1
  830. package/dist/_shared/switch-C5J37LMI.cjs +0 -2
  831. package/dist/_shared/switch-C5J37LMI.cjs.map +0 -1
  832. package/dist/_shared/switch-ClGgHcEb.js +0 -51
  833. package/dist/_shared/switch-ClGgHcEb.js.map +0 -1
  834. package/dist/_shared/textarea-DeISZfHw.js +0 -119
  835. package/dist/_shared/textarea-DeISZfHw.js.map +0 -1
  836. package/dist/_shared/textarea-iR9txrty.cjs +0 -2
  837. package/dist/_shared/textarea-iR9txrty.cjs.map +0 -1
  838. package/dist/_shared/tooltip-CEqxHWxQ.js +0 -49
  839. package/dist/_shared/tooltip-CEqxHWxQ.js.map +0 -1
  840. package/dist/_shared/tooltip-DPv0LGr9.cjs +0 -2
  841. package/dist/_shared/tooltip-DPv0LGr9.cjs.map +0 -1
  842. package/dist/_shared/typography-BtPQBvSm.js +0 -135
  843. package/dist/_shared/typography-BtPQBvSm.js.map +0 -1
  844. package/dist/_shared/typography-DClleVWi.cjs +0 -2
  845. package/dist/_shared/typography-DClleVWi.cjs.map +0 -1
  846. package/dist/showcase/assets/AreaChart-D-RqNtqG.js +0 -6
  847. package/dist/showcase/assets/CSPContext-t69BXyB7.js +0 -1
  848. package/dist/showcase/assets/CompositeItem-DHNLgEeV.js +0 -1
  849. package/dist/showcase/assets/CompositeRoot-xq_0ZFev.js +0 -1
  850. package/dist/showcase/assets/DialogTrigger-Cl7n_3xX.js +0 -1
  851. package/dist/showcase/assets/FormContext-CXdwDz7F.js +0 -1
  852. package/dist/showcase/assets/PreviewLayout-BHemtKEf.js +0 -1
  853. package/dist/showcase/assets/RadioGroup-DXAt4VZN.js +0 -1
  854. package/dist/showcase/assets/Separator-C9vXwWmZ.js +0 -1
  855. package/dist/showcase/assets/ToolbarRootContext-iF4ctnIz.js +0 -1
  856. package/dist/showcase/assets/accordion-DzkNgNcB.js +0 -172
  857. package/dist/showcase/assets/accordion-variants-DP5-oxLe.js +0 -1
  858. package/dist/showcase/assets/action-menu-CyA2e9TF.js +0 -1
  859. package/dist/showcase/assets/activities-Dt-dO5ew.js +0 -501
  860. package/dist/showcase/assets/activities-feed-card-DZdFekXl.js +0 -1
  861. package/dist/showcase/assets/admin-C2SeJmE7.js +0 -80
  862. package/dist/showcase/assets/ai-Cwo0h_Xn.js +0 -41
  863. package/dist/showcase/assets/ai-artifact-3UJofyU5.js +0 -2
  864. package/dist/showcase/assets/ai-chat-CrFtG_Vg.js +0 -568
  865. package/dist/showcase/assets/ai-elements-iJ15Y7pS.js +0 -379
  866. package/dist/showcase/assets/ai-new-DuznZydd.js +0 -167
  867. package/dist/showcase/assets/ai-tool-call-CTcGGAQU.js +0 -1
  868. package/dist/showcase/assets/alert-CUGGckOX.js +0 -1
  869. package/dist/showcase/assets/alert-tWped3Sw.js +0 -59
  870. package/dist/showcase/assets/api-key-list-Q5LAqzMn.js +0 -73
  871. package/dist/showcase/assets/arrow-down-CfwCPcHL.js +0 -1
  872. package/dist/showcase/assets/arrow-left-BKx9qNX6.js +0 -1
  873. package/dist/showcase/assets/arrow-right-DlEpbqEk.js +0 -1
  874. package/dist/showcase/assets/arrow-up-BYQ4F9L1.js +0 -1
  875. package/dist/showcase/assets/arrow-up-right-C8r6vYfE.js +0 -1
  876. package/dist/showcase/assets/avatar-BuZ3zTbH.js +0 -57
  877. package/dist/showcase/assets/avatar-DR2mqPpY.js +0 -1
  878. package/dist/showcase/assets/badge-D1HLfP93.js +0 -28
  879. package/dist/showcase/assets/badge-check-oP2z_95u.js +0 -1
  880. package/dist/showcase/assets/bell-BTX2D-ES.js +0 -1
  881. package/dist/showcase/assets/bot-CKh5XgUG.js +0 -1
  882. package/dist/showcase/assets/box-F1uaZ6iw.js +0 -1
  883. package/dist/showcase/assets/brain-dD_ppLUa.js +0 -1
  884. package/dist/showcase/assets/brand-zisZOFKf.js +0 -40
  885. package/dist/showcase/assets/breadcrumb-C7vv0L8K.js +0 -52
  886. package/dist/showcase/assets/breadcrumb-fay5sLba.js +0 -1
  887. package/dist/showcase/assets/breadcrumbs-DklRXepp.js +0 -1
  888. package/dist/showcase/assets/briefcase-D9M4aNmi.js +0 -1
  889. package/dist/showcase/assets/button-DbhXfR1N.js +0 -44
  890. package/dist/showcase/assets/button-group-BpdhyMif.js +0 -1
  891. package/dist/showcase/assets/buttons-XexbmUtN.js +0 -259
  892. package/dist/showcase/assets/calendar-BADJgjpI.js +0 -16
  893. package/dist/showcase/assets/calendar-Djh3xLVx.js +0 -1
  894. package/dist/showcase/assets/calendar-dWZ2-0gU.js +0 -1
  895. package/dist/showcase/assets/card-BUSAPPkx.js +0 -1
  896. package/dist/showcase/assets/cards-DHBPe01w.js +0 -328
  897. package/dist/showcase/assets/chart-column-6l5wIZ0h.js +0 -1
  898. package/dist/showcase/assets/chevron-down-at2vrt1V.js +0 -1
  899. package/dist/showcase/assets/chevron-left-DIs3WYNO.js +0 -1
  900. package/dist/showcase/assets/chevron-right-BNy0Or0x.js +0 -1
  901. package/dist/showcase/assets/chevron-up-CX7619BJ.js +0 -1
  902. package/dist/showcase/assets/chevrons-up-down-Be6eciau.js +0 -1
  903. package/dist/showcase/assets/circle-C0Yd1DDS.js +0 -1
  904. package/dist/showcase/assets/circle-alert-DfQp_X3_.js +0 -1
  905. package/dist/showcase/assets/circle-check-BkqQe1tv.js +0 -1
  906. package/dist/showcase/assets/circle-check-big-BXxHUhuc.js +0 -1
  907. package/dist/showcase/assets/circle-dot-HeRgxZxN.js +0 -1
  908. package/dist/showcase/assets/circle-question-mark-BgS4fb6N.js +0 -1
  909. package/dist/showcase/assets/circle-x-CMzwDsaf.js +0 -1
  910. package/dist/showcase/assets/clock-ynCzs_rR.js +0 -1
  911. package/dist/showcase/assets/code-xml-B8aVstrJ.js +0 -1
  912. package/dist/showcase/assets/collapsible-C8CKdiRn.js +0 -27
  913. package/dist/showcase/assets/collapsible-u43HxDHB.js +0 -1
  914. package/dist/showcase/assets/combobox-D-6ff0VG.js +0 -622
  915. package/dist/showcase/assets/command-BsHudlBe.js +0 -1
  916. package/dist/showcase/assets/command-DZqmBolX.js +0 -45
  917. package/dist/showcase/assets/comment-composer-OnxlkC5y.js +0 -1
  918. package/dist/showcase/assets/comment-item-DmZ1AJ2Y.js +0 -1
  919. package/dist/showcase/assets/comments-BjIVksjE.js +0 -349
  920. package/dist/showcase/assets/commerce-3T1GxvrA.js +0 -78
  921. package/dist/showcase/assets/commerce-extras-CYv_uRQR.js +0 -179
  922. package/dist/showcase/assets/composite-mol0-2zZ.js +0 -1
  923. package/dist/showcase/assets/contact-card-CWAANJqn.js +0 -65
  924. package/dist/showcase/assets/content-container-D3Phw6h8.js +0 -1
  925. package/dist/showcase/assets/copyable-BdzUH3U3.js +0 -96
  926. package/dist/showcase/assets/course-card-Cb6Y2vJ6.js +0 -113
  927. package/dist/showcase/assets/cpu-CRrekbGQ.js +0 -1
  928. package/dist/showcase/assets/credit-card--5vg7bQy.js +0 -1
  929. package/dist/showcase/assets/currency-VuqnKj_Y.js +0 -149
  930. package/dist/showcase/assets/dark-surfaces-DEyBimFz.js +0 -90
  931. package/dist/showcase/assets/database-Bnvw0wVV.js +0 -1
  932. package/dist/showcase/assets/date-block-IhoCVl_d.js +0 -1
  933. package/dist/showcase/assets/date-picker-DnJpsnaF.js +0 -1
  934. package/dist/showcase/assets/date-pickers-CEbieq-R.js +0 -110
  935. package/dist/showcase/assets/dense-info-B04QmrOd.js +0 -106
  936. package/dist/showcase/assets/dialog-DotEO3IO.js +0 -1
  937. package/dist/showcase/assets/display-hK7Dtm-B.js +0 -392
  938. package/dist/showcase/assets/dist-DQgGKvzA.js +0 -1
  939. package/dist/showcase/assets/dollar-sign-gJtl-XaL.js +0 -1
  940. package/dist/showcase/assets/download-CMrNgeil.js +0 -1
  941. package/dist/showcase/assets/dropdown-menu-Cqv6D7Sb.js +0 -1
  942. package/dist/showcase/assets/dropzone-v69fWHZJ.js +0 -1
  943. package/dist/showcase/assets/ellipsis-CgqPlt6Z.js +0 -1
  944. package/dist/showcase/assets/ellipsis-vertical-CiJqC0n2.js +0 -1
  945. package/dist/showcase/assets/empty-DYHzk-Gb.js +0 -1
  946. package/dist/showcase/assets/empty-item-CTwvC_3M.js +0 -49
  947. package/dist/showcase/assets/empty-state-eUgJ4h41.js +0 -188
  948. package/dist/showcase/assets/enhanced-activities-XU2u5gO6.js +0 -359
  949. package/dist/showcase/assets/esm-B7xAMXnv.js +0 -2
  950. package/dist/showcase/assets/event-calendar-D2rjpzq1.js +0 -138
  951. package/dist/showcase/assets/event-log-BxER62Ds.js +0 -326
  952. package/dist/showcase/assets/example-DPfw-R7_.js +0 -1
  953. package/dist/showcase/assets/external-link-DJNGkjZ0.js +0 -1
  954. package/dist/showcase/assets/eye-BQU3UqWi.js +0 -1
  955. package/dist/showcase/assets/feature-announcement-CjGQEODB.js +0 -34
  956. package/dist/showcase/assets/file-DBpbC8g-.js +0 -1
  957. package/dist/showcase/assets/file-text-DokBif5V.js +0 -1
  958. package/dist/showcase/assets/filters-DM2olMKy.js +0 -78
  959. package/dist/showcase/assets/flag-hAuZbHU1.js +0 -1
  960. package/dist/showcase/assets/folder-open-DqubQ0ts.js +0 -1
  961. package/dist/showcase/assets/form-sizing-CfbZF8Ja.js +0 -1
  962. package/dist/showcase/assets/format-gCABLair.js +0 -1
  963. package/dist/showcase/assets/forms-FsAT0C-I.js +0 -790
  964. package/dist/showcase/assets/generic-BUuo7j09.js +0 -1
  965. package/dist/showcase/assets/getPseudoElementBounds-l8uxcPNL.js +0 -1
  966. package/dist/showcase/assets/gift-CS7Tg3kD.js +0 -1
  967. package/dist/showcase/assets/giftcard-cards-h1ffLs9F.js +0 -85
  968. package/dist/showcase/assets/git-branch-D4-6vv6t.js +0 -1
  969. package/dist/showcase/assets/global-search-BUyhhsQv.js +0 -90
  970. package/dist/showcase/assets/globe-CqLYhUfl.js +0 -1
  971. package/dist/showcase/assets/gradient-card-Bwr9OLIL.js +0 -58
  972. package/dist/showcase/assets/header-notifications-BWla1yhM.js +0 -1
  973. package/dist/showcase/assets/heart-DfZtXfIP.js +0 -1
  974. package/dist/showcase/assets/house-DhIReDt8.js +0 -1
  975. package/dist/showcase/assets/icon-badge-BgRFYZEc.js +0 -1
  976. package/dist/showcase/assets/image-D_eNEZWQ.js +0 -1
  977. package/dist/showcase/assets/inbox-5sFkO7gC.js +0 -1
  978. package/dist/showcase/assets/index-B-Z7p0So.js +0 -10
  979. package/dist/showcase/assets/inertValue-NU_Amr-x.js +0 -1
  980. package/dist/showcase/assets/info-DyB6KH3Z.js +0 -1
  981. package/dist/showcase/assets/inline-stat-D2aaM1Vt.js +0 -1
  982. package/dist/showcase/assets/input-BS64kyoq.js +0 -1
  983. package/dist/showcase/assets/input-DWLyniGt.js +0 -1
  984. package/dist/showcase/assets/input-group-BS8j5Eek.js +0 -47
  985. package/dist/showcase/assets/input-group-B_E_3EGS.js +0 -1
  986. package/dist/showcase/assets/inputs-DOQ2foig.js +0 -49
  987. package/dist/showcase/assets/invoice-header-C2-uQE_s.js +0 -36
  988. package/dist/showcase/assets/invoice-items-BUunRJqA.js +0 -36
  989. package/dist/showcase/assets/invoice-mini-BrLMrzN6.js +0 -14
  990. package/dist/showcase/assets/invoice-table-CaB9Z8jI.js +0 -30
  991. package/dist/showcase/assets/isSameDay-rwvIyLOL.js +0 -1
  992. package/dist/showcase/assets/isToday-CIAzBrb5.js +0 -1
  993. package/dist/showcase/assets/italic-B02a4PdD.js +0 -1
  994. package/dist/showcase/assets/item-C-0RObvI.js +0 -117
  995. package/dist/showcase/assets/item-CCu0Ufaq.js +0 -1
  996. package/dist/showcase/assets/item-DF4m_56j.js +0 -1
  997. package/dist/showcase/assets/kanban-BgW23a7P.js +0 -175
  998. package/dist/showcase/assets/label-MdV7pglj.js +0 -1
  999. package/dist/showcase/assets/layout-containers-nKVReEJB.js +0 -96
  1000. package/dist/showcase/assets/layout-header-CKyxHHPC.js +0 -170
  1001. package/dist/showcase/assets/layout-page-ClD2yMnK.js +0 -122
  1002. package/dist/showcase/assets/layout-sidebar-jdQnYDiT.js +0 -224
  1003. package/dist/showcase/assets/layout-users-Cv849xnU.js +0 -104
  1004. package/dist/showcase/assets/lib-BHW4JERQ.js +0 -1
  1005. package/dist/showcase/assets/lock-B8bfl9sZ.js +0 -1
  1006. package/dist/showcase/assets/mail-DmOBTX4I.js +0 -1
  1007. package/dist/showcase/assets/map-ButgRl8f.js +0 -124
  1008. package/dist/showcase/assets/map-pin-o3egisLq.js +0 -1
  1009. package/dist/showcase/assets/menus-DdXgYKVA.js +0 -89
  1010. package/dist/showcase/assets/message-square-Bl6P4TA0.js +0 -1
  1011. package/dist/showcase/assets/metadata-list-aXo96h_U.js +0 -278
  1012. package/dist/showcase/assets/metric-BLHKuZtE.js +0 -1
  1013. package/dist/showcase/assets/metric-grid-6Dpj5eV3.js +0 -1
  1014. package/dist/showcase/assets/metric-trend-chip-m389ipmG.js +0 -1
  1015. package/dist/showcase/assets/metrics-analytics-bar-B-1IUlHf.js +0 -44
  1016. package/dist/showcase/assets/metrics-analytics-cards-B8tvK_RB.js +0 -77
  1017. package/dist/showcase/assets/metrics-comparison-DKJ7Js3F.js +0 -76
  1018. package/dist/showcase/assets/metrics-heatmap-BlRnJoI0.js +0 -27
  1019. package/dist/showcase/assets/metrics-inline-badge-COI7f64X.js +0 -17
  1020. package/dist/showcase/assets/metrics-kpi-row-LRfmKhsy.js +0 -31
  1021. package/dist/showcase/assets/metrics-micro-grid-DmqIQVVR.js +0 -42
  1022. package/dist/showcase/assets/metrics-overview-Dbf5RM2k.js +0 -192
  1023. package/dist/showcase/assets/metrics-stat-cards-D5oevQvv.js +0 -54
  1024. package/dist/showcase/assets/minus-D-jmUi0G.js +0 -1
  1025. package/dist/showcase/assets/money-display-C__61373.js +0 -1
  1026. package/dist/showcase/assets/month-year-picker-BfBQePUY.js +0 -1
  1027. package/dist/showcase/assets/navigation-DUAe-sQV.js +0 -86
  1028. package/dist/showcase/assets/navigation-extras-itSAf6QT.js +0 -43
  1029. package/dist/showcase/assets/navigation-fAOvwIlP.js +0 -230
  1030. package/dist/showcase/assets/onboarding-checklist-1gmzk3_J.js +0 -119
  1031. package/dist/showcase/assets/overlays-BMTBOIEI.js +0 -88
  1032. package/dist/showcase/assets/overlays-Lu16yJWM.js +0 -393
  1033. package/dist/showcase/assets/package-BIa1hPVQ.js +0 -1
  1034. package/dist/showcase/assets/page-action-button-C5NiQHnP.js +0 -1
  1035. package/dist/showcase/assets/page-header-Cwf9DuhD.js +0 -1
  1036. package/dist/showcase/assets/pagination-9iSNmdCx.js +0 -1
  1037. package/dist/showcase/assets/pagination-MjniF-7j.js +0 -42
  1038. package/dist/showcase/assets/paperclip-CaNLUOIA.js +0 -1
  1039. package/dist/showcase/assets/pencil-DTLGPoc_.js +0 -1
  1040. package/dist/showcase/assets/phone-XvU6LndA.js +0 -1
  1041. package/dist/showcase/assets/plus-BDSCn8ol.js +0 -1
  1042. package/dist/showcase/assets/popover-CvhuubS6.js +0 -1
  1043. package/dist/showcase/assets/popover-DUQqLZN2.js +0 -1
  1044. package/dist/showcase/assets/popover-menu-DVGBuFpL.js +0 -1
  1045. package/dist/showcase/assets/progress-BQopCRpV.js +0 -1
  1046. package/dist/showcase/assets/progress-CvSUR260.js +0 -18
  1047. package/dist/showcase/assets/props-table-BzUnIcv-.js +0 -1
  1048. package/dist/showcase/assets/quote-D55lkoXn.js +0 -1
  1049. package/dist/showcase/assets/receipt-D3ilhl9U.js +0 -1
  1050. package/dist/showcase/assets/refresh-cw-Csl2LQ4l.js +0 -1
  1051. package/dist/showcase/assets/resolveValueLabel-CM5i142y.js +0 -1
  1052. package/dist/showcase/assets/rich-text-editor-Bz7jWvPv.js +0 -124
  1053. package/dist/showcase/assets/rich-text-editor-DWKFpgNI.js +0 -141
  1054. package/dist/showcase/assets/rotate-ccw-BnkpK7eq.js +0 -1
  1055. package/dist/showcase/assets/scroll-area-BTVLd58j.js +0 -1
  1056. package/dist/showcase/assets/scroll-area-CgFEDepJ.js +0 -32
  1057. package/dist/showcase/assets/select-B7-tZDlG.js +0 -1
  1058. package/dist/showcase/assets/send-BhjEdZ06.js +0 -1
  1059. package/dist/showcase/assets/separator-CJayjKGP.js +0 -28
  1060. package/dist/showcase/assets/separator-CZ_sPWQj.js +0 -1
  1061. package/dist/showcase/assets/settings-Duj7gAZe.js +0 -1
  1062. package/dist/showcase/assets/sheet-BMabZ_Gj.js +0 -1
  1063. package/dist/showcase/assets/shield-C22sWOf4.js +0 -1
  1064. package/dist/showcase/assets/shield-alert-DgZ6UO46.js +0 -1
  1065. package/dist/showcase/assets/shield-check-jGSgmijm.js +0 -1
  1066. package/dist/showcase/assets/shopping-bag-Cd09Ga6D.js +0 -1
  1067. package/dist/showcase/assets/sidebar.context-CXTHS3vn.js +0 -1
  1068. package/dist/showcase/assets/skeleton-Dmp4eC1A.js +0 -1
  1069. package/dist/showcase/assets/skeleton-FLNbc7QP.js +0 -29
  1070. package/dist/showcase/assets/smart-card-50WN9sCI.js +0 -1
  1071. package/dist/showcase/assets/sonner-DR_DYpqb.js +0 -22
  1072. package/dist/showcase/assets/sortable.esm-C_l8_Iqt.js +0 -5
  1073. package/dist/showcase/assets/sparkles-C-fyahzv.js +0 -1
  1074. package/dist/showcase/assets/spinner-B8jgVQNj.js +0 -30
  1075. package/dist/showcase/assets/spinner-C4zPRpI0.js +0 -49
  1076. package/dist/showcase/assets/spinner-DFjHsQlR.js +0 -1
  1077. package/dist/showcase/assets/square-pen-Dp7lCfI3.js +0 -1
  1078. package/dist/showcase/assets/stacked-avatars-CTckbUiW.js +0 -1
  1079. package/dist/showcase/assets/star-l00ivfkD.js +0 -1
  1080. package/dist/showcase/assets/startOfDay-Xmododib.js +0 -1
  1081. package/dist/showcase/assets/styles-zuwR0q1z.js +0 -1
  1082. package/dist/showcase/assets/switch-D3LrIrTQ.js +0 -1
  1083. package/dist/showcase/assets/switch-ylXVyh_N.js +0 -1
  1084. package/dist/showcase/assets/table-Cn3-19zb.js +0 -1
  1085. package/dist/showcase/assets/table-ao3IcAnF.js +0 -390
  1086. package/dist/showcase/assets/tabs-CTLQKtiu.js +0 -19
  1087. package/dist/showcase/assets/tabs-lc1fX94A.js +0 -1
  1088. package/dist/showcase/assets/text-button-Fu8UY1A8.js +0 -1
  1089. package/dist/showcase/assets/text-link--EyGasJN.js +0 -1
  1090. package/dist/showcase/assets/textarea-BdhnlNrF.js +0 -1
  1091. package/dist/showcase/assets/textarea-D1kG3a9B.js +0 -1
  1092. package/dist/showcase/assets/timelines-DF3tNgyG.js +0 -186
  1093. package/dist/showcase/assets/toggle-group-CfxuWsv9.js +0 -1
  1094. package/dist/showcase/assets/toggles-CacdBPlV.js +0 -71
  1095. package/dist/showcase/assets/toggles-group-CRhgTGmL.js +0 -32
  1096. package/dist/showcase/assets/trash-2-B0_GprQM.js +0 -1
  1097. package/dist/showcase/assets/trending-up-B202l1b6.js +0 -1
  1098. package/dist/showcase/assets/truck-Bl1pNrHi.js +0 -1
  1099. package/dist/showcase/assets/typography-DEtOxBlR.js +0 -214
  1100. package/dist/showcase/assets/ui-badge-n4RA0J5b.js +0 -28
  1101. package/dist/showcase/assets/ui-card-Ck-kzrTh.js +0 -30
  1102. package/dist/showcase/assets/ui-table-gzOp82pf.js +0 -42
  1103. package/dist/showcase/assets/upload-tray-VvKdTZSi.js +0 -138
  1104. package/dist/showcase/assets/useAnchoredPopupScrollLock-Cu2ZwN7Z.js +0 -1
  1105. package/dist/showcase/assets/useCollapsiblePanel-C6_cdQ7B.js +0 -1
  1106. package/dist/showcase/assets/useCompositeItem-BfUPqXoj.js +0 -1
  1107. package/dist/showcase/assets/useCompositeListItem-Cf2lpKB8.js +0 -1
  1108. package/dist/showcase/assets/useControlled-C6q3nmcf.js +0 -1
  1109. package/dist/showcase/assets/useLabelableId-CfPT16c1.js +0 -1
  1110. package/dist/showcase/assets/useOpenInteractionType-CGeqRuuY.js +0 -1
  1111. package/dist/showcase/assets/useRender-CoUlh0uZ.js +0 -1
  1112. package/dist/showcase/assets/useRole-DSPUSyVX.js +0 -1
  1113. package/dist/showcase/assets/useTriggerFocusGuards-BwZ1HD24.js +0 -1
  1114. package/dist/showcase/assets/useValueChanged-Dej794I1.js +0 -1
  1115. package/dist/showcase/assets/user-3L762Mec.js +0 -1
  1116. package/dist/showcase/assets/user-plus-9WRYjS04.js +0 -1
  1117. package/dist/showcase/assets/users-CxKZ7gt8.js +0 -1
  1118. package/dist/showcase/assets/vendor-profile-BaCptdMF.js +0 -37
  1119. package/dist/showcase/assets/wrench-Duh91tnW.js +0 -1
  1120. package/dist/showcase/assets/x-t42iKYpL.js +0 -1
  1121. package/dist/showcase/assets/zap-D0z3Tv_L.js +0 -1
@@ -0,0 +1,2 @@
1
+ require(`./chunk-D3uCBrYO.cjs`);const e=require(`../lib/strings.cjs`),t=require(`../lib/utils.cjs`),n=require(`./text-DBnY6fcL.cjs`),r=require(`./badge-C49SSz-6.cjs`),i=require(`./command-D7zTvyBJ.cjs`),a=require(`./command-DGNtTI-V.cjs`),o=require(`./popover-B1f_EUQS.cjs`);let s=require(`react`),c=require(`react/jsx-runtime`),l=require(`lucide-react`);function u(e={}){let{resources:t,onResourceSearch:n,initialMentions:r,debounceMs:i=200}=e,a=(0,s.useMemo)(()=>t?Object.keys(t):[],[t]),[o,c]=(0,s.useState)(()=>a[0]??null),[l,u]=(0,s.useState)(!1),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)({}),[h,g]=(0,s.useState)(!1),[_,v]=(0,s.useState)(()=>r?[...r]:[]),y=(0,s.useRef)(0),b=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(a.length===0){c(null);return}(!o||!a.includes(o))&&c(a[0])},[o,a]);let x=(0,s.useMemo)(()=>o&&t?t[o]??null:null,[o,t]),S=(0,s.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,s.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,s.useEffect)(()=>{if(l||!o||(p[o]??[]).length>0)return;let e=a.find(e=>(p[e]?.length??0)>0);e&&e!==o&&c(e)},[o,a,l,p]);let C=(0,s.useCallback)(e=>{c(e)},[]),w=(0,s.useCallback)(e=>{f(e)},[]),T=(0,s.useCallback)(e=>{v(t=>t.some(t=>t.id===e.id)?t:[...t,e])},[]),E=(0,s.useCallback)(e=>{v(t=>t.filter(t=>t.id!==e))},[]),D=(0,s.useCallback)(e=>{v([...e])},[]),O=(0,s.useCallback)(()=>{v([]),f(``),u(!1),y.current++},[]),k=(0,s.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,s.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 d(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 f(e={}){let t=e.resources,n=e.onResourceSearch,r=u({...e,resources:t,onResourceSearch:n}),[i,a]=(0,s.useState)(!1),[o,c]=(0,s.useState)(!1),l=(0,s.useRef)(null),f=(0,s.useRef)(null),p=(0,s.useCallback)(e=>{a(e),e||(l.current=null,f.current=null,c(!1),r.setManualKindOverride(!1))},[r]),m=e.editorRef,h=(0,s.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`),s=n.textBefore.match(o);if(!s){l.current&&(l.current=null,p(!1));return}let u=s[1],d=s[2]??``,h=e[u];l.current={kind:h,triggerChar:u,consumedLength:u.length+d.length},c(!0),f.current!==u&&(r.activeKind!==h&&r.setActiveKind(h),r.setManualKindOverride(!1),f.current=u),r.query!==d&&r.setQuery(d),a(!0)},[m,t,r,p]),g=(0,s.useCallback)(e=>{let n=r.selectSuggestion(e),i=l.current,a=t?.[n.kind]?.tone,o=d(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 p={primary:`secondary`,success:`success`,warning:`warning`,destructive:`destructive`,info:`info`,secondary:`secondary`},m=({mention:e,resource:n,asLink:i=!0,onClick:a,trailing:o,className:s})=>{if(n?.renderChip)return(0,c.jsx)(c.Fragment,{children:n.renderChip(e)});let l=p[n?.tone??`secondary`]??p.secondary,u=n?.icon,d=(0,c.jsxs)(r.t,{variant:l,inline:!0,"data-ref-id":e.id,"data-ref-kind":e.kind,className:t.cn(`align-[-0.15em] cursor-default whitespace-nowrap`,s),children:[u?(0,c.jsx)(u,{className:`size-3 shrink-0`,"aria-hidden":!0}):null,(0,c.jsx)(`span`,{className:`truncate max-w-[14rem]`,children:e.label}),o]});return i&&e.href?(0,c.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,c.jsx)(`span`,{onClick:a,className:`inline align-baseline`,children:d}):d},h=/<(span|a)\b([^>]*?)data-ref-id\s*=\s*"([^"]+)"([^>]*)>([\s\S]*?)<\/\1>/gi;function g(e){if(!e)return[];let t=[],n=0,r;for(h.lastIndex=0;(r=h.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 _=`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 v(e){let{html:n,mentions:r,resources:i,renderMention:a,sanitizer:o,className:l,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 h=p.size>0?g(f):[{kind:`html`,value:f}],v=e=>{if(a)return a(e);let t=d?.[e.kind];return(0,c.jsx)(m,{mention:e,resource:t})},y=h.map((e,t)=>{if(e.kind===`mention`){let n=p.get(e.refId);return n?(0,c.jsx)(s.Fragment,{children:v(n)},`ref-${t}-${e.refId}`):(0,c.jsx)(`span`,{dangerouslySetInnerHTML:{__html:e.fallback}},`fallback-${t}`)}return(0,c.jsx)(`span`,{dangerouslySetInnerHTML:{__html:e.value}},`html-${t}`)});return u?(0,c.jsx)(`div`,{className:t.cn(_,l),children:y}):(0,c.jsx)(c.Fragment,{children:y})}var y=e=>(0,c.jsx)(v,{...e}),b={title:`Insert reference`,searchPlaceholder:`Search…`,empty:`No matches.`,loading:`Searching…`},x={title:`Insert reference`,empty:`No matches.`,loading:`Searching…`};function S({open:r,activeKind:s,setActiveKind:u,kinds:d,resources:f,query:p,setQuery:m,suggestions:h,isLoading:g,onSelect:_,strings:v,className:y}){let x=e.useStrings(b,v);return r?(0,c.jsxs)(o.t,{align:`start`,className:t.cn(`w-72 overflow-hidden p-0`,y),children:[(0,c.jsxs)(`div`,{className:`border-b border-border/60 px-3 py-2`,children:[(0,c.jsx)(n.t,{size:`xxs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wide`,children:x.title}),d.length>1&&(0,c.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:d.map(e=>{let n=f?.[e],r=n?.icon;return(0,c.jsxs)(`button`,{type:`button`,onClick:()=>u(e),className:t.cn(`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xxs font-medium ring-1 ring-inset transition-colors`,e===s?`bg-primary text-primary-foreground ring-primary`:`bg-muted text-muted-foreground ring-border/60 hover:bg-muted/80`),children:[r?(0,c.jsx)(r,{className:`size-3`}):null,(0,c.jsx)(`span`,{children:n?.label??String(e)})]},e)})})]}),(0,c.jsxs)(a.t,{shouldFilter:!1,children:[(0,c.jsx)(i.i,{placeholder:x.searchPlaceholder,value:p,onValueChange:m}),(0,c.jsxs)(a.a,{children:[g?(0,c.jsxs)(`div`,{className:`text-muted-foreground flex items-center justify-center gap-2 py-3`,children:[(0,c.jsx)(l.Loader2,{className:`size-3.5 animate-spin`,"aria-hidden":!0}),(0,c.jsx)(n.t,{tag:`span`,size:`xs`,type:`secondary`,children:x.loading})]}):null,(0,c.jsx)(a.n,{children:x.empty}),(0,c.jsx)(a.r,{children:h.map(e=>{let t=e.kind??s??``;return(0,c.jsx)(a.i,{value:`${t}:${e.id}`,onSelect:()=>_(e),children:(0,c.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col leading-tight`,children:[(0,c.jsx)(n.t,{tag:`span`,size:`xs`,weight:`medium`,className:`truncate`,children:e.label}),e.description?(0,c.jsx)(n.t,{tag:`span`,size:`xxs`,type:`secondary`,className:`mt-0.5 truncate`,children:e.description}):null]})},`${t}:${e.id}`)})})]})]})]}):null}function C({open:r,activeKind:i,setActiveKind:a,kinds:o,resources:s,suggestionsByKind:u,suggestions:d,isLoading:f,query:p,onManualKindChange:m,onSelect:h,strings:g,className:_}){let v=e.useStrings(x,g);return r?(0,c.jsxs)(`div`,{onMouseDown:e=>e.preventDefault(),className:t.cn(`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`,_),role:`listbox`,children:[(0,c.jsxs)(`div`,{className:`border-b border-border/60 px-3 py-2`,children:[(0,c.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2`,children:[(0,c.jsx)(n.t,{size:`xxs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wide`,children:v.title}),p?(0,c.jsxs)(n.t,{tag:`span`,size:`xxs`,type:`secondary`,className:`truncate font-mono`,children:[`“`,p,`”`]}):null]}),o.length>1&&(0,c.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:o.map(e=>{let n=s?.[e],r=n?.icon,o=e===i,l=u?.[e]?.length??0;return(0,c.jsxs)(`button`,{type:`button`,onClick:()=>{a(e),m?.()},className:t.cn(`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xxs font-medium ring-1 ring-inset transition-colors`,o?`bg-primary text-primary-foreground ring-primary`:l>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:[r?(0,c.jsx)(r,{className:`size-3`}):null,(0,c.jsx)(`span`,{children:n?.label??String(e)}),l>0&&(0,c.jsx)(`span`,{className:t.cn(`tabular-nums`,o?`opacity-90`:`opacity-70`),children:l})]},e)})})]}),(0,c.jsxs)(`div`,{className:`max-h-72 overflow-y-auto py-1`,children:[f?(0,c.jsxs)(`div`,{className:`text-muted-foreground flex items-center justify-center gap-2 py-3`,children:[(0,c.jsx)(l.Loader2,{className:`size-3.5 animate-spin`,"aria-hidden":!0}),(0,c.jsx)(n.t,{tag:`span`,size:`xs`,type:`secondary`,children:v.loading})]}):null,!f&&d.length===0?(0,c.jsx)(`div`,{className:`px-3 py-3`,children:(0,c.jsx)(n.t,{size:`xs`,type:`secondary`,children:v.empty})}):null,d.map(e=>{let r=e.kind??i??``;return(0,c.jsx)(`button`,{type:`button`,role:`option`,"data-ref-id":`${r}:${e.id}`,onClick:()=>h(e),className:t.cn(`flex w-full min-w-0 items-start gap-2 px-3 py-1.5 text-left`,`hover:bg-muted/60 focus-visible:bg-muted/60 transition-colors`),children:(0,c.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col leading-tight`,children:[(0,c.jsx)(n.t,{tag:`span`,size:`xs`,weight:`medium`,className:`truncate`,children:e.label}),e.description?(0,c.jsx)(n.t,{tag:`span`,size:`xxs`,type:`secondary`,className:`mt-0.5 truncate`,children:e.description}):null]})},`${r}:${e.id}`)})]})]}):null}var w=/<(?:span|a)\b[^>]*?data-ref-id\s*=\s*"([^"]+)"[^>]*?>([\s\S]*?)<\/(?:span|a)>/gi,T=/data-ref-kind\s*=\s*"([^"]+)"/i;function E(e){let t=[];if(!e)return t;let n=new Set,r;for(w.lastIndex=0;(r=w.exec(e))!==null;){let[e,i,a]=r;if(n.has(i))continue;n.add(i);let o=e.match(T)?.[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 b}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return f}});
2
+ //# sourceMappingURL=mentions-D7gnP3Nf.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentions-D7gnP3Nf.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 `[data-ref-id]` selectors (see App.css `.ProseMirror\n * [data-ref-id]` rules) and the read-time renderer (`<MentionContent>`)\n * 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 /* 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(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 { 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('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 onClick={() => setActiveKind(kind)}\n className={cn(\n 'inline-flex items-center 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 { 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 '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 role=\"listbox\"\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 onClick={() => {\n setActiveKind(kind);\n onManualKindChange?.();\n }}\n className={cn(\n 'inline-flex items-center 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 className=\"max-h-72 overflow-y-auto py-1\">\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 role=\"option\"\n data-ref-id={`${kind}:${suggestion.id}`}\n onClick={() => onSelect(suggestion)}\n className={cn(\n 'flex w-full min-w-0 items-start gap-2 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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"}
@@ -0,0 +1,2 @@
1
+ const e=require(`./chunk-D3uCBrYO.cjs`),t=require(`../lib/strings.cjs`),n=require(`../lib/utils.cjs`),r=require(`./text-DBnY6fcL.cjs`),i=require(`./heading-mZc_jan1.cjs`),a=require(`./button-D0nF99a9.cjs`),o=require(`./tooltip-DyUi-Tac.cjs`),s=require(`./separator-CN9zAJfs.cjs`);let c=require(`react`);c=e.t(c,1);let l=require(`react/jsx-runtime`),u=require(`lucide-react`);var d={formatInfoAriaLabel:e=>`${e} info`,infoFallback:`Info`},f={1:`grid-cols-1`,2:`grid-cols-1 sm:grid-cols-2`,3:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3`,4:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4`},p={start:`justify-start`,end:`justify-end`,center:`justify-center`,between:`justify-between`,around:`justify-around`,evenly:`justify-evenly`},m={start:`items-start`,center:`items-center`,end:`items-end`,baseline:`items-baseline`},h=(e,t)=>e.id?e.id:`metadata-${typeof e.label==`string`?e.label:`${t}`}-${t}`;function g({items:e,columns:g=2,dense:_=!1,emptyLabel:v=`—`,title:y,titleSeparator:b=!1,className:x,gapClassName:S,labelClassName:C,valueClassName:w,descriptionClassName:T,layout:E=`vertical`,justify:D=`start`,align:O=`center`,separator:k=`: `,itemSeparator:A=!1,wrap:j=!0,strings:M}){let N=t.useStrings(d,M),P=c.default.useMemo(()=>e.filter(Boolean),[e]);if(c.default.useEffect(()=>{},[E,P]),P.length===0)return null;let F=f[g]??f[2],I=S??(_?`gap-4`:`gap-6`),L=_?`text-xxs`:`text-xs`,R=`text-sm`,z=y!=null,B=z&&b;if(E===`horizontal`){let e=p[D]??p.start,t=m[O]??m.center,d=typeof A==`string`?A:A?` | `:``,f=_?`gap-2`:`gap-3`,g=j?`flex-wrap`:`flex-nowrap`;return(0,l.jsxs)(`div`,{className:n.cn(`metadata-list--component`,`metadata-list-container space-y-3`,x),children:[!!z&&(0,l.jsx)(i.t,{tag:`h6`,className:`font-medium text-muted-foreground uppercase tracking-wide`,children:y}),!!B&&(0,l.jsx)(s.t,{className:`my-3`}),(0,l.jsx)(`div`,{className:n.cn(`flex`,g,e,t,f),children:P.map((e,t)=>{let i=h(e,t),s=e.emptyLabel??v,f=e.value??s,p=e.icon,m=e.tooltip!==null&&e.tooltip!==void 0,g=typeof e.render==`function`,y=d&&t<P.length-1;return(0,l.jsxs)(c.default.Fragment,{children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[!!p&&(0,l.jsx)(p,{className:n.cn(`flex-shrink-0`,_?`h-3 w-3`:`h-3.5 w-3.5`,`text-muted-foreground`)}),(0,l.jsx)(r.t,{size:`xs`,type:`secondary`,className:n.cn(`metadata--field tracking-wide whitespace-nowrap`,L,C),children:e.label}),!!m&&(0,l.jsxs)(o.t,{children:[(0,l.jsx)(o.i,{render:t=>(0,l.jsx)(a.t,{...t,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,className:n.cn(`inline-flex items-center`,t.className),"aria-label":typeof e.label==`string`?N.formatInfoAriaLabel(e.label):N.infoFallback,children:(0,l.jsx)(u.Info,{className:`h-3 w-3 text-muted-foreground cursor-help flex-shrink-0`})})}),(0,l.jsx)(o.n,{side:`top`,align:`start`,className:`max-w-xs`,children:(0,l.jsx)(r.t,{type:`inverse`,size:`xs`,children:e.tooltip})})]}),(0,l.jsx)(r.t,{size:`xs`,type:`secondary`,children:k}),g?e.render?.(e):(0,l.jsx)(r.t,{weight:`medium`,className:n.cn(R,w),children:f})]}),!!y&&(0,l.jsx)(r.t,{size:`xs`,type:`secondary`,children:d})]},i)})})]})}if(E===`rows`){let e=_?`py-1.5`:`py-2.5`;return(0,l.jsxs)(`div`,{className:n.cn(`metadata-list-container`,x),children:[!!z&&(0,l.jsx)(i.t,{tag:`h6`,className:`font-medium text-muted-foreground uppercase tracking-wide mb-2`,children:y}),!!B&&(0,l.jsx)(s.t,{className:`mb-2`}),(0,l.jsx)(`dl`,{className:`divide-y divide-border/50`,children:P.map((t,i)=>{let s=h(t,i),c=t.emptyLabel??v,d=t.value??c,f=t.icon,p=t.tooltip!==null&&t.tooltip!==void 0,m=typeof t.render==`function`;return(0,l.jsxs)(`div`,{className:n.cn(`grid items-baseline gap-x-4 gap-y-1 grid-cols-[minmax(120px,1fr)_2fr]`,e),children:[(0,l.jsxs)(`dt`,{className:`flex items-center gap-1.5 min-w-0`,children:[!!f&&(0,l.jsx)(f,{className:n.cn(`flex-shrink-0 text-muted-foreground`,_?`h-3 w-3`:`h-3.5 w-3.5`)}),(0,l.jsx)(r.t,{type:`secondary`,className:n.cn(`truncate`,C),children:t.label}),!!p&&(0,l.jsxs)(o.t,{children:[(0,l.jsx)(o.i,{render:e=>(0,l.jsx)(a.t,{...e,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,className:n.cn(`inline-flex items-center`,e.className),"aria-label":typeof t.label==`string`?N.formatInfoAriaLabel(t.label):N.infoFallback,children:(0,l.jsx)(u.Info,{className:`h-3 w-3 text-muted-foreground cursor-help flex-shrink-0`})})}),(0,l.jsx)(o.n,{side:`top`,align:`start`,className:`max-w-xs`,children:(0,l.jsx)(r.t,{type:`inverse`,size:`xs`,children:t.tooltip})})]})]}),(0,l.jsxs)(`dd`,{className:`min-w-0`,children:[m?t.render?.(t):(0,l.jsx)(r.t,{weight:`medium`,className:n.cn(`break-words`,w),children:d}),!!t.description&&(0,l.jsx)(r.t,{size:`xs`,type:`secondary`,className:n.cn(`mt-0.5`,T),children:t.description})]})]},s)})})]})}return(0,l.jsxs)(`div`,{className:n.cn(`metadata-list-container space-y-3`,x),children:[!!z&&(0,l.jsx)(i.t,{tag:`h6`,className:`font-medium text-muted-foreground uppercase tracking-wide`,children:y}),!!B&&(0,l.jsx)(s.t,{className:`my-3`}),(0,l.jsx)(`div`,{className:n.cn(`grid`,F,I),children:P.map((e,t)=>{let i=h(e,t),s=e.emptyLabel??v,c=e.value??s,d=e.icon,f=e.tooltip!==null&&e.tooltip!==void 0,p=typeof e.render==`function`;return(0,l.jsxs)(`div`,{className:`space-y-1`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[!!d&&(0,l.jsx)(d,{className:n.cn(`flex-shrink-0`,_?`h-3 w-3`:`h-3.5 w-3.5`,`text-muted-foreground`)}),(0,l.jsx)(r.t,{size:`xs`,type:`secondary`,className:n.cn(` tracking-wide`,L,C),children:e.label}),!!f&&(0,l.jsxs)(o.t,{children:[(0,l.jsx)(o.i,{render:t=>(0,l.jsx)(a.t,{...t,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,className:n.cn(`inline-flex items-center`,t.className),"aria-label":typeof e.label==`string`?N.formatInfoAriaLabel(e.label):N.infoFallback,children:(0,l.jsx)(u.Info,{className:`h-3 w-3 text-muted-foreground cursor-help flex-shrink-0`})})}),(0,l.jsx)(o.n,{side:`top`,align:`start`,className:`max-w-xs`,children:(0,l.jsx)(r.t,{type:`inverse`,size:`xs`,children:e.tooltip})})]})]}),p?e.render?.(e):(0,l.jsx)(r.t,{weight:`medium`,className:n.cn(R,w),children:c}),!!e.description&&(0,l.jsx)(r.t,{size:`xs`,type:`secondary`,className:n.cn(T),children:e.description})]},i)})})]})}g.displayName=`MetadataList`,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return g}});
2
+ //# sourceMappingURL=metadata-CRsVWE8Y.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-CRsVWE8Y.cjs","names":[],"sources":["../../src/components/base/display/metadata/metadata-list.strings.ts","../../src/components/base/display/metadata/metadata-list.tsx"],"sourcesContent":["/**\n * Default user-facing strings for `<MetadataList>`.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <MetadataList strings={{ infoFallback: t('metadata.info') }} … />\n */\n\nexport interface MetadataListStrings {\n\t/**\n\t * Suffix appended to the label when generating the tooltip-trigger\n\t * `aria-label` (\"<label> info\"). Receives the label as the first arg\n\t * so consumers can localise the full template.\n\t */\n\tformatInfoAriaLabel: (label: string) => string;\n\t/** Fallback `aria-label` used when the field label is not a plain string. */\n\tinfoFallback: string;\n}\n\nexport const defaultMetadataListStrings: MetadataListStrings = {\n\tformatInfoAriaLabel: (label) => `${label} info`,\n\tinfoFallback: 'Info',\n};\n","/**\n * MetadataList — flexible label/value list for entity metadata.\n *\n * Two layouts:\n * - `vertical` (default): grid of label-on-top, value-below cells, ideal for\n * entity detail screens. Honours `columns` (1–4) and `dense` mode.\n * - `horizontal`: inline label/separator/value pairs that wrap, suitable for\n * pill-style summaries (e.g. \"Created Jan 4 · By Alice · v3.2\").\n *\n * Each item supports an optional icon, tooltip, custom `render`, and\n * per-item `emptyLabel`. Falls back to the shared `EMPTY` when both are\n * missing. Returns `null` when the list is empty so callers can render\n * unconditionally.\n */\nimport { Info, type LucideIcon } from 'lucide-react';\nimport React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/base/display/tooltip';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { EMPTY } from '@/lib/format';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultMetadataListStrings,\n\ttype MetadataListStrings,\n} from './metadata-list.strings';\n\nexport type { MetadataListStrings };\nexport { defaultMetadataListStrings };\n\nexport type MetadataListItem = {\n\tid?: string;\n\tlabel: React.ReactNode;\n\tvalue?: React.ReactNode | null;\n\tdescription?: React.ReactNode | null;\n\ttooltip?: React.ReactNode;\n\ticon?: LucideIcon;\n\temptyLabel?: React.ReactNode;\n\trender?: (item: MetadataListItem) => React.ReactNode;\n};\n\nexport type MetadataListProps = {\n\titems: MetadataListItem[];\n\tcolumns?: 1 | 2 | 3 | 4;\n\tdense?: boolean;\n\temptyLabel?: React.ReactNode;\n\ttitle?: React.ReactNode;\n\ttitleSeparator?: boolean;\n\tclassName?: string;\n\tgapClassName?: string;\n\tlabelClassName?: string;\n\tvalueClassName?: string;\n\tdescriptionClassName?: string;\n\tlayout?: 'vertical' | 'horizontal' | 'rows';\n\tjustify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';\n\talign?: 'start' | 'center' | 'end' | 'baseline';\n\tseparator?: string;\n\titemSeparator?: boolean | string;\n\twrap?: boolean;\n\t/** Per-instance string overrides (deep-merged over `defaultMetadataListStrings`). */\n\tstrings?: StringsProp<MetadataListStrings>;\n};\n\nconst columnClassMap: Record<NonNullable<MetadataListProps['columns']>, string> = {\n\t1: 'grid-cols-1',\n\t2: 'grid-cols-1 sm:grid-cols-2',\n\t3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n\t4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\n};\n\nconst justifyClassMap: Record<NonNullable<MetadataListProps['justify']>, string> = {\n\tstart: 'justify-start',\n\tend: 'justify-end',\n\tcenter: 'justify-center',\n\tbetween: 'justify-between',\n\taround: 'justify-around',\n\tevenly: 'justify-evenly',\n};\n\nconst alignClassMap: Record<NonNullable<MetadataListProps['align']>, string> = {\n\tstart: 'items-start',\n\tcenter: 'items-center',\n\tend: 'items-end',\n\tbaseline: 'items-baseline',\n};\n\nconst resolveKey = (item: MetadataListItem, index: number): string => {\n\tif (item.id) {\n\t\treturn item.id;\n\t}\n\n\tconst rawLabel = typeof item.label === 'string' ? item.label : `${index}`;\n\treturn `metadata-${rawLabel}-${index}`;\n};\n\nexport function MetadataList({\n\titems,\n\tcolumns = 2,\n\tdense = false,\n\temptyLabel = EMPTY,\n\ttitle,\n\ttitleSeparator = false,\n\tclassName,\n\tgapClassName,\n\tlabelClassName,\n\tvalueClassName,\n\tdescriptionClassName,\n\tlayout = 'vertical',\n\tjustify = 'start',\n\talign = 'center',\n\tseparator = ': ',\n\titemSeparator = false,\n\twrap = true,\n\tstrings: stringsProp,\n}: MetadataListProps) {\n\tconst strings = useStrings(defaultMetadataListStrings, stringsProp);\n\tconst list = React.useMemo(() => items.filter(Boolean), [items]);\n\n\tReact.useEffect(() => {\n\t\tif (!import.meta.env.DEV) return;\n\t\tif (layout !== 'horizontal') return;\n\n\t\tconst itemsWithDescriptions = list.filter((item) => Boolean(item.description));\n\t\tif (itemsWithDescriptions.length > 0) {\n\t\t\tconsole.warn(\n\t\t\t\t'[MetadataList] Horizontal layout does not support descriptions. Items with descriptions will not display them.',\n\t\t\t\titemsWithDescriptions,\n\t\t\t);\n\t\t}\n\t}, [layout, list]);\n\n\tif (list.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst gridClass = columnClassMap[columns] ?? columnClassMap[2];\n\tconst gapClass = gapClassName ?? (dense ? 'gap-4' : 'gap-6');\n\tconst labelBase = dense ? 'text-xxs' : 'text-xs';\n\tconst valueBase = 'text-sm';\n\tconst hasTitle = title !== null && title !== undefined;\n\tconst shouldShowSeparator = hasTitle && titleSeparator;\n\n\tif (layout === 'horizontal') {\n\t\tconst justifyClass = justifyClassMap[justify] ?? justifyClassMap.start;\n\t\tconst alignClass = alignClassMap[align] ?? alignClassMap.center;\n\t\tconst itemSeparatorText =\n\t\t\ttypeof itemSeparator === 'string'\n\t\t\t\t? itemSeparator\n\t\t\t\t: itemSeparator\n\t\t\t\t\t? ' | '\n\t\t\t\t\t: '';\n\t\tconst horizontalGapClass = dense ? 'gap-2' : 'gap-3';\n\t\tconst wrapClass = wrap ? 'flex-wrap' : 'flex-nowrap';\n\n\t\treturn (\n\t\t\t<div className={cn('metadata-list--component', 'metadata-list-container space-y-3', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\t\tclassName=\"font-medium text-muted-foreground uppercase tracking-wide\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t)}\n\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"my-3\" />}\n\n\t\t\t\t<div className={cn('flex', wrapClass, justifyClass, alignClass, horizontalGapClass)}>\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\t\t\t\t\t\tconst showItemSeparator = itemSeparatorText && index < list.length - 1;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment key={key}>\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'flex-shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\tdense ? 'h-3 w-3' : 'h-3.5 w-3.5',\n\t\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'metadata--field tracking-wide whitespace-nowrap',\n\t\t\t\t\t\t\t\t\t\t\tlabelBase,\n\t\t\t\t\t\t\t\t\t\t\tlabelClassName,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'inline-flex items-center',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(triggerProps as { className?: string }).className,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(valueBase, valueClassName)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{!!showItemSeparator && (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{itemSeparatorText}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (layout === 'rows') {\n\t\tconst rowPaddingY = dense ? 'py-1.5' : 'py-2.5';\n\t\treturn (\n\t\t\t<div className={cn('metadata-list-container', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\t\tclassName=\"font-medium text-muted-foreground uppercase tracking-wide mb-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t)}\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"mb-2\" />}\n\t\t\t\t<dl className=\"divide-y divide-border/50\">\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={cn('grid items-baseline gap-x-4 gap-y-1 grid-cols-[minmax(120px,1fr)_2fr]', rowPaddingY)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<dt className=\"flex items-center gap-1.5 min-w-0\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon className={cn('flex-shrink-0 text-muted-foreground', dense ? 'h-3 w-3' : 'h-3.5 w-3.5')} />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<Text type=\"secondary\" className={cn('truncate', labelClassName)}>\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn('inline-flex items-center', (triggerProps as { className?: string }).className)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipContent side=\"top\" align=\"start\" className=\"max-w-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dt>\n\t\t\t\t\t\t\t\t<dd className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" className={cn('break-words', valueClassName)}>\n\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className={cn('mt-0.5', descriptionClassName)}>\n\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</dl>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('metadata-list-container space-y-3', className)}>\n\t\t\t{!!hasTitle && (\n\t\t\t\t<Heading\n\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\tclassName=\"font-medium text-muted-foreground uppercase tracking-wide\"\n\t\t\t\t>\n\t\t\t\t\t{title}\n\t\t\t\t</Heading>\n\t\t\t)}\n\n\t\t\t{!!shouldShowSeparator && <Separator className=\"my-3\" />}\n\n\t\t\t<div className={cn('grid', gridClass, gapClass)}>\n\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tclassName=\"space-y-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'flex-shrink-0',\n\t\t\t\t\t\t\t\t\t\t\tdense ? 'h-3 w-3' : 'h-3.5 w-3.5',\n\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName={cn(' tracking-wide', labelBase, labelClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'inline-flex items-center',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(triggerProps as { className?: string }).className,\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\tclassName={cn(valueBase, valueClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName={cn(descriptionClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nMetadataList.displayName = 'MetadataList';\n"],"mappings":"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"}
@@ -0,0 +1,236 @@
1
+ import { useStrings as e } from "../lib/strings.js";
2
+ import { cn as t } from "../lib/utils.js";
3
+ import { t as n } from "./text-DIxMTECE.js";
4
+ import { t as r } from "./heading-BprqyzDs.js";
5
+ import { t as i } from "./button-ChCkwoOD.js";
6
+ import { i as a, n as o, t as s } from "./tooltip-Cws4BiPT.js";
7
+ import { t as c } from "./separator-DR0uUMKa.js";
8
+ import l from "react";
9
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
10
+ import { Info as f } from "lucide-react";
11
+ //#region src/components/base/display/metadata/metadata-list.strings.ts
12
+ var p = {
13
+ formatInfoAriaLabel: (e) => `${e} info`,
14
+ infoFallback: "Info"
15
+ }, m = {
16
+ 1: "grid-cols-1",
17
+ 2: "grid-cols-1 sm:grid-cols-2",
18
+ 3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
19
+ 4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"
20
+ }, h = {
21
+ start: "justify-start",
22
+ end: "justify-end",
23
+ center: "justify-center",
24
+ between: "justify-between",
25
+ around: "justify-around",
26
+ evenly: "justify-evenly"
27
+ }, g = {
28
+ start: "items-start",
29
+ center: "items-center",
30
+ end: "items-end",
31
+ baseline: "items-baseline"
32
+ }, _ = (e, t) => e.id ? e.id : `metadata-${typeof e.label == "string" ? e.label : `${t}`}-${t}`;
33
+ function v({ items: v, columns: y = 2, dense: b = !1, emptyLabel: x = "—", title: S, titleSeparator: C = !1, className: w, gapClassName: T, labelClassName: E, valueClassName: D, descriptionClassName: O, layout: k = "vertical", justify: A = "start", align: j = "center", separator: M = ": ", itemSeparator: N = !1, wrap: P = !0, strings: F }) {
34
+ let I = e(p, F), L = l.useMemo(() => v.filter(Boolean), [v]);
35
+ if (l.useEffect(() => {}, [k, L]), L.length === 0) return null;
36
+ let R = m[y] ?? m[2], z = T ?? (b ? "gap-4" : "gap-6"), B = b ? "text-xxs" : "text-xs", V = "text-sm", H = S != null, U = H && C;
37
+ if (k === "horizontal") {
38
+ let e = h[A] ?? h.start, p = g[j] ?? g.center, m = typeof N == "string" ? N : N ? " | " : "", v = b ? "gap-2" : "gap-3", y = P ? "flex-wrap" : "flex-nowrap";
39
+ return /* @__PURE__ */ d("div", {
40
+ className: t("metadata-list--component", "metadata-list-container space-y-3", w),
41
+ children: [
42
+ !!H && /* @__PURE__ */ u(r, {
43
+ tag: "h6",
44
+ className: "font-medium text-muted-foreground uppercase tracking-wide",
45
+ children: S
46
+ }),
47
+ !!U && /* @__PURE__ */ u(c, { className: "my-3" }),
48
+ /* @__PURE__ */ u("div", {
49
+ className: t("flex", y, e, p, v),
50
+ children: L.map((e, r) => {
51
+ let c = _(e, r), p = e.emptyLabel ?? x, h = e.value ?? p, g = e.icon, v = e.tooltip !== null && e.tooltip !== void 0, y = typeof e.render == "function", S = m && r < L.length - 1;
52
+ return /* @__PURE__ */ d(l.Fragment, { children: [/* @__PURE__ */ d("div", {
53
+ className: "flex items-center gap-1.5",
54
+ children: [
55
+ !!g && /* @__PURE__ */ u(g, { className: t("flex-shrink-0", b ? "h-3 w-3" : "h-3.5 w-3.5", "text-muted-foreground") }),
56
+ /* @__PURE__ */ u(n, {
57
+ size: "xs",
58
+ type: "secondary",
59
+ className: t("metadata--field tracking-wide whitespace-nowrap", B, E),
60
+ children: e.label
61
+ }),
62
+ !!v && /* @__PURE__ */ d(s, { children: [/* @__PURE__ */ u(a, { render: (n) => /* @__PURE__ */ u(i, {
63
+ ...n,
64
+ type: "button",
65
+ variant: "secondary",
66
+ buttonStyle: "ghost",
67
+ size: "icon-xs",
68
+ className: t("inline-flex items-center", n.className),
69
+ "aria-label": typeof e.label == "string" ? I.formatInfoAriaLabel(e.label) : I.infoFallback,
70
+ children: /* @__PURE__ */ u(f, { className: "h-3 w-3 text-muted-foreground cursor-help flex-shrink-0" })
71
+ }) }), /* @__PURE__ */ u(o, {
72
+ side: "top",
73
+ align: "start",
74
+ className: "max-w-xs",
75
+ children: /* @__PURE__ */ u(n, {
76
+ type: "inverse",
77
+ size: "xs",
78
+ children: e.tooltip
79
+ })
80
+ })] }),
81
+ /* @__PURE__ */ u(n, {
82
+ size: "xs",
83
+ type: "secondary",
84
+ children: M
85
+ }),
86
+ y ? e.render?.(e) : /* @__PURE__ */ u(n, {
87
+ weight: "medium",
88
+ className: t(V, D),
89
+ children: h
90
+ })
91
+ ]
92
+ }), !!S && /* @__PURE__ */ u(n, {
93
+ size: "xs",
94
+ type: "secondary",
95
+ children: m
96
+ })] }, c);
97
+ })
98
+ })
99
+ ]
100
+ });
101
+ }
102
+ if (k === "rows") {
103
+ let e = b ? "py-1.5" : "py-2.5";
104
+ return /* @__PURE__ */ d("div", {
105
+ className: t("metadata-list-container", w),
106
+ children: [
107
+ !!H && /* @__PURE__ */ u(r, {
108
+ tag: "h6",
109
+ className: "font-medium text-muted-foreground uppercase tracking-wide mb-2",
110
+ children: S
111
+ }),
112
+ !!U && /* @__PURE__ */ u(c, { className: "mb-2" }),
113
+ /* @__PURE__ */ u("dl", {
114
+ className: "divide-y divide-border/50",
115
+ children: L.map((r, c) => {
116
+ let l = _(r, c), p = r.emptyLabel ?? x, m = r.value ?? p, h = r.icon, g = r.tooltip !== null && r.tooltip !== void 0, v = typeof r.render == "function";
117
+ return /* @__PURE__ */ d("div", {
118
+ className: t("grid items-baseline gap-x-4 gap-y-1 grid-cols-[minmax(120px,1fr)_2fr]", e),
119
+ children: [/* @__PURE__ */ d("dt", {
120
+ className: "flex items-center gap-1.5 min-w-0",
121
+ children: [
122
+ !!h && /* @__PURE__ */ u(h, { className: t("flex-shrink-0 text-muted-foreground", b ? "h-3 w-3" : "h-3.5 w-3.5") }),
123
+ /* @__PURE__ */ u(n, {
124
+ type: "secondary",
125
+ className: t("truncate", E),
126
+ children: r.label
127
+ }),
128
+ !!g && /* @__PURE__ */ d(s, { children: [/* @__PURE__ */ u(a, { render: (e) => /* @__PURE__ */ u(i, {
129
+ ...e,
130
+ type: "button",
131
+ variant: "secondary",
132
+ buttonStyle: "ghost",
133
+ size: "icon-xs",
134
+ className: t("inline-flex items-center", e.className),
135
+ "aria-label": typeof r.label == "string" ? I.formatInfoAriaLabel(r.label) : I.infoFallback,
136
+ children: /* @__PURE__ */ u(f, { className: "h-3 w-3 text-muted-foreground cursor-help flex-shrink-0" })
137
+ }) }), /* @__PURE__ */ u(o, {
138
+ side: "top",
139
+ align: "start",
140
+ className: "max-w-xs",
141
+ children: /* @__PURE__ */ u(n, {
142
+ type: "inverse",
143
+ size: "xs",
144
+ children: r.tooltip
145
+ })
146
+ })] })
147
+ ]
148
+ }), /* @__PURE__ */ d("dd", {
149
+ className: "min-w-0",
150
+ children: [v ? r.render?.(r) : /* @__PURE__ */ u(n, {
151
+ weight: "medium",
152
+ className: t("break-words", D),
153
+ children: m
154
+ }), !!r.description && /* @__PURE__ */ u(n, {
155
+ size: "xs",
156
+ type: "secondary",
157
+ className: t("mt-0.5", O),
158
+ children: r.description
159
+ })]
160
+ })]
161
+ }, l);
162
+ })
163
+ })
164
+ ]
165
+ });
166
+ }
167
+ return /* @__PURE__ */ d("div", {
168
+ className: t("metadata-list-container space-y-3", w),
169
+ children: [
170
+ !!H && /* @__PURE__ */ u(r, {
171
+ tag: "h6",
172
+ className: "font-medium text-muted-foreground uppercase tracking-wide",
173
+ children: S
174
+ }),
175
+ !!U && /* @__PURE__ */ u(c, { className: "my-3" }),
176
+ /* @__PURE__ */ u("div", {
177
+ className: t("grid", R, z),
178
+ children: L.map((e, r) => {
179
+ let c = _(e, r), l = e.emptyLabel ?? x, p = e.value ?? l, m = e.icon, h = e.tooltip !== null && e.tooltip !== void 0, g = typeof e.render == "function";
180
+ return /* @__PURE__ */ d("div", {
181
+ className: "space-y-1",
182
+ children: [
183
+ /* @__PURE__ */ d("div", {
184
+ className: "flex items-center gap-1.5",
185
+ children: [
186
+ !!m && /* @__PURE__ */ u(m, { className: t("flex-shrink-0", b ? "h-3 w-3" : "h-3.5 w-3.5", "text-muted-foreground") }),
187
+ /* @__PURE__ */ u(n, {
188
+ size: "xs",
189
+ type: "secondary",
190
+ className: t(" tracking-wide", B, E),
191
+ children: e.label
192
+ }),
193
+ !!h && /* @__PURE__ */ d(s, { children: [/* @__PURE__ */ u(a, { render: (n) => /* @__PURE__ */ u(i, {
194
+ ...n,
195
+ type: "button",
196
+ variant: "secondary",
197
+ buttonStyle: "ghost",
198
+ size: "icon-xs",
199
+ className: t("inline-flex items-center", n.className),
200
+ "aria-label": typeof e.label == "string" ? I.formatInfoAriaLabel(e.label) : I.infoFallback,
201
+ children: /* @__PURE__ */ u(f, { className: "h-3 w-3 text-muted-foreground cursor-help flex-shrink-0" })
202
+ }) }), /* @__PURE__ */ u(o, {
203
+ side: "top",
204
+ align: "start",
205
+ className: "max-w-xs",
206
+ children: /* @__PURE__ */ u(n, {
207
+ type: "inverse",
208
+ size: "xs",
209
+ children: e.tooltip
210
+ })
211
+ })] })
212
+ ]
213
+ }),
214
+ g ? e.render?.(e) : /* @__PURE__ */ u(n, {
215
+ weight: "medium",
216
+ className: t(V, D),
217
+ children: p
218
+ }),
219
+ !!e.description && /* @__PURE__ */ u(n, {
220
+ size: "xs",
221
+ type: "secondary",
222
+ className: t(O),
223
+ children: e.description
224
+ })
225
+ ]
226
+ }, c);
227
+ })
228
+ })
229
+ ]
230
+ });
231
+ }
232
+ v.displayName = "MetadataList";
233
+ //#endregion
234
+ export { v as t };
235
+
236
+ //# sourceMappingURL=metadata-CfG0FdFZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-CfG0FdFZ.js","names":[],"sources":["../../src/components/base/display/metadata/metadata-list.strings.ts","../../src/components/base/display/metadata/metadata-list.tsx"],"sourcesContent":["/**\n * Default user-facing strings for `<MetadataList>`.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <MetadataList strings={{ infoFallback: t('metadata.info') }} … />\n */\n\nexport interface MetadataListStrings {\n\t/**\n\t * Suffix appended to the label when generating the tooltip-trigger\n\t * `aria-label` (\"<label> info\"). Receives the label as the first arg\n\t * so consumers can localise the full template.\n\t */\n\tformatInfoAriaLabel: (label: string) => string;\n\t/** Fallback `aria-label` used when the field label is not a plain string. */\n\tinfoFallback: string;\n}\n\nexport const defaultMetadataListStrings: MetadataListStrings = {\n\tformatInfoAriaLabel: (label) => `${label} info`,\n\tinfoFallback: 'Info',\n};\n","/**\n * MetadataList — flexible label/value list for entity metadata.\n *\n * Two layouts:\n * - `vertical` (default): grid of label-on-top, value-below cells, ideal for\n * entity detail screens. Honours `columns` (1–4) and `dense` mode.\n * - `horizontal`: inline label/separator/value pairs that wrap, suitable for\n * pill-style summaries (e.g. \"Created Jan 4 · By Alice · v3.2\").\n *\n * Each item supports an optional icon, tooltip, custom `render`, and\n * per-item `emptyLabel`. Falls back to the shared `EMPTY` when both are\n * missing. Returns `null` when the list is empty so callers can render\n * unconditionally.\n */\nimport { Info, type LucideIcon } from 'lucide-react';\nimport React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/base/display/tooltip';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { EMPTY } from '@/lib/format';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultMetadataListStrings,\n\ttype MetadataListStrings,\n} from './metadata-list.strings';\n\nexport type { MetadataListStrings };\nexport { defaultMetadataListStrings };\n\nexport type MetadataListItem = {\n\tid?: string;\n\tlabel: React.ReactNode;\n\tvalue?: React.ReactNode | null;\n\tdescription?: React.ReactNode | null;\n\ttooltip?: React.ReactNode;\n\ticon?: LucideIcon;\n\temptyLabel?: React.ReactNode;\n\trender?: (item: MetadataListItem) => React.ReactNode;\n};\n\nexport type MetadataListProps = {\n\titems: MetadataListItem[];\n\tcolumns?: 1 | 2 | 3 | 4;\n\tdense?: boolean;\n\temptyLabel?: React.ReactNode;\n\ttitle?: React.ReactNode;\n\ttitleSeparator?: boolean;\n\tclassName?: string;\n\tgapClassName?: string;\n\tlabelClassName?: string;\n\tvalueClassName?: string;\n\tdescriptionClassName?: string;\n\tlayout?: 'vertical' | 'horizontal' | 'rows';\n\tjustify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';\n\talign?: 'start' | 'center' | 'end' | 'baseline';\n\tseparator?: string;\n\titemSeparator?: boolean | string;\n\twrap?: boolean;\n\t/** Per-instance string overrides (deep-merged over `defaultMetadataListStrings`). */\n\tstrings?: StringsProp<MetadataListStrings>;\n};\n\nconst columnClassMap: Record<NonNullable<MetadataListProps['columns']>, string> = {\n\t1: 'grid-cols-1',\n\t2: 'grid-cols-1 sm:grid-cols-2',\n\t3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n\t4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\n};\n\nconst justifyClassMap: Record<NonNullable<MetadataListProps['justify']>, string> = {\n\tstart: 'justify-start',\n\tend: 'justify-end',\n\tcenter: 'justify-center',\n\tbetween: 'justify-between',\n\taround: 'justify-around',\n\tevenly: 'justify-evenly',\n};\n\nconst alignClassMap: Record<NonNullable<MetadataListProps['align']>, string> = {\n\tstart: 'items-start',\n\tcenter: 'items-center',\n\tend: 'items-end',\n\tbaseline: 'items-baseline',\n};\n\nconst resolveKey = (item: MetadataListItem, index: number): string => {\n\tif (item.id) {\n\t\treturn item.id;\n\t}\n\n\tconst rawLabel = typeof item.label === 'string' ? item.label : `${index}`;\n\treturn `metadata-${rawLabel}-${index}`;\n};\n\nexport function MetadataList({\n\titems,\n\tcolumns = 2,\n\tdense = false,\n\temptyLabel = EMPTY,\n\ttitle,\n\ttitleSeparator = false,\n\tclassName,\n\tgapClassName,\n\tlabelClassName,\n\tvalueClassName,\n\tdescriptionClassName,\n\tlayout = 'vertical',\n\tjustify = 'start',\n\talign = 'center',\n\tseparator = ': ',\n\titemSeparator = false,\n\twrap = true,\n\tstrings: stringsProp,\n}: MetadataListProps) {\n\tconst strings = useStrings(defaultMetadataListStrings, stringsProp);\n\tconst list = React.useMemo(() => items.filter(Boolean), [items]);\n\n\tReact.useEffect(() => {\n\t\tif (!import.meta.env.DEV) return;\n\t\tif (layout !== 'horizontal') return;\n\n\t\tconst itemsWithDescriptions = list.filter((item) => Boolean(item.description));\n\t\tif (itemsWithDescriptions.length > 0) {\n\t\t\tconsole.warn(\n\t\t\t\t'[MetadataList] Horizontal layout does not support descriptions. Items with descriptions will not display them.',\n\t\t\t\titemsWithDescriptions,\n\t\t\t);\n\t\t}\n\t}, [layout, list]);\n\n\tif (list.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst gridClass = columnClassMap[columns] ?? columnClassMap[2];\n\tconst gapClass = gapClassName ?? (dense ? 'gap-4' : 'gap-6');\n\tconst labelBase = dense ? 'text-xxs' : 'text-xs';\n\tconst valueBase = 'text-sm';\n\tconst hasTitle = title !== null && title !== undefined;\n\tconst shouldShowSeparator = hasTitle && titleSeparator;\n\n\tif (layout === 'horizontal') {\n\t\tconst justifyClass = justifyClassMap[justify] ?? justifyClassMap.start;\n\t\tconst alignClass = alignClassMap[align] ?? alignClassMap.center;\n\t\tconst itemSeparatorText =\n\t\t\ttypeof itemSeparator === 'string'\n\t\t\t\t? itemSeparator\n\t\t\t\t: itemSeparator\n\t\t\t\t\t? ' | '\n\t\t\t\t\t: '';\n\t\tconst horizontalGapClass = dense ? 'gap-2' : 'gap-3';\n\t\tconst wrapClass = wrap ? 'flex-wrap' : 'flex-nowrap';\n\n\t\treturn (\n\t\t\t<div className={cn('metadata-list--component', 'metadata-list-container space-y-3', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\t\tclassName=\"font-medium text-muted-foreground uppercase tracking-wide\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t)}\n\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"my-3\" />}\n\n\t\t\t\t<div className={cn('flex', wrapClass, justifyClass, alignClass, horizontalGapClass)}>\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\t\t\t\t\t\tconst showItemSeparator = itemSeparatorText && index < list.length - 1;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment key={key}>\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'flex-shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\tdense ? 'h-3 w-3' : 'h-3.5 w-3.5',\n\t\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'metadata--field tracking-wide whitespace-nowrap',\n\t\t\t\t\t\t\t\t\t\t\tlabelBase,\n\t\t\t\t\t\t\t\t\t\t\tlabelClassName,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'inline-flex items-center',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(triggerProps as { className?: string }).className,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(valueBase, valueClassName)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{!!showItemSeparator && (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{itemSeparatorText}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (layout === 'rows') {\n\t\tconst rowPaddingY = dense ? 'py-1.5' : 'py-2.5';\n\t\treturn (\n\t\t\t<div className={cn('metadata-list-container', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\t\tclassName=\"font-medium text-muted-foreground uppercase tracking-wide mb-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t)}\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"mb-2\" />}\n\t\t\t\t<dl className=\"divide-y divide-border/50\">\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={cn('grid items-baseline gap-x-4 gap-y-1 grid-cols-[minmax(120px,1fr)_2fr]', rowPaddingY)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<dt className=\"flex items-center gap-1.5 min-w-0\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon className={cn('flex-shrink-0 text-muted-foreground', dense ? 'h-3 w-3' : 'h-3.5 w-3.5')} />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<Text type=\"secondary\" className={cn('truncate', labelClassName)}>\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn('inline-flex items-center', (triggerProps as { className?: string }).className)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipContent side=\"top\" align=\"start\" className=\"max-w-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dt>\n\t\t\t\t\t\t\t\t<dd className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" className={cn('break-words', valueClassName)}>\n\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className={cn('mt-0.5', descriptionClassName)}>\n\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</dl>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('metadata-list-container space-y-3', className)}>\n\t\t\t{!!hasTitle && (\n\t\t\t\t<Heading\n\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\tclassName=\"font-medium text-muted-foreground uppercase tracking-wide\"\n\t\t\t\t>\n\t\t\t\t\t{title}\n\t\t\t\t</Heading>\n\t\t\t)}\n\n\t\t\t{!!shouldShowSeparator && <Separator className=\"my-3\" />}\n\n\t\t\t<div className={cn('grid', gridClass, gapClass)}>\n\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tclassName=\"space-y-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'flex-shrink-0',\n\t\t\t\t\t\t\t\t\t\t\tdense ? 'h-3 w-3' : 'h-3.5 w-3.5',\n\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName={cn(' tracking-wide', labelBase, labelClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'inline-flex items-center',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(triggerProps as { className?: string }).className,\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\tclassName={cn(valueBase, valueClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName={cn(descriptionClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nMetadataList.displayName = 'MetadataList';\n"],"mappings":"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"}