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,123 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import { t } from "./input-CZxP5Xgj.js";
3
+ import "react";
4
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
+ import { CheckIcon as i, SearchIcon as a } from "lucide-react";
6
+ import { cva as o } from "class-variance-authority";
7
+ import { Command as s } from "cmdk";
8
+ //#region src/components/ui/input-group.tsx
9
+ function c({ className: t, ...r }) {
10
+ return /* @__PURE__ */ n("div", {
11
+ "data-slot": "input-group",
12
+ role: "group",
13
+ className: e("border-input has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-9 rounded-md border shadow-xs transition-[color,box-shadow] has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 [[data-slot=combobox-content]_&]:focus-within:border-inherit [[data-slot=combobox-content]_&]:focus-within:ring-0 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto", t),
14
+ ...r
15
+ });
16
+ }
17
+ var l = o("text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none", {
18
+ variants: { align: {
19
+ "inline-start": "pl-2 has-[>button]:ml-[-0.25rem] has-[>kbd]:ml-[-0.15rem] order-first",
20
+ "inline-end": "pr-2 has-[>button]:mr-[-0.25rem] has-[>kbd]:mr-[-0.15rem] order-last",
21
+ "block-start": "px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start",
22
+ "block-end": "px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start"
23
+ } },
24
+ defaultVariants: { align: "inline-start" }
25
+ });
26
+ function u({ className: t, align: r = "inline-start", ...i }) {
27
+ return /* @__PURE__ */ n("div", {
28
+ role: "group",
29
+ "data-slot": "input-group-addon",
30
+ "data-align": r,
31
+ className: e(l({ align: r }), t),
32
+ onClick: (e) => {
33
+ e.target.closest("button") || e.currentTarget.parentElement?.querySelector("input")?.focus();
34
+ },
35
+ ...i
36
+ });
37
+ }
38
+ o("gap-2 text-sm shadow-none flex items-center", {
39
+ variants: { size: {
40
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
41
+ sm: "",
42
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
43
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
44
+ } },
45
+ defaultVariants: { size: "xs" }
46
+ });
47
+ function d({ className: r, ...i }) {
48
+ return /* @__PURE__ */ n(t, {
49
+ "data-slot": "input-group-control",
50
+ className: e("rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 flex-1", r),
51
+ ...i
52
+ });
53
+ }
54
+ //#endregion
55
+ //#region src/components/ui/command.tsx
56
+ function f({ className: t, ...r }) {
57
+ return /* @__PURE__ */ n(s, {
58
+ "data-slot": "command",
59
+ className: e("bg-popover text-popover-foreground rounded-xl! p-1 flex size-full flex-col overflow-hidden", t),
60
+ ...r
61
+ });
62
+ }
63
+ function p({ className: t, ...i }) {
64
+ return /* @__PURE__ */ n("div", {
65
+ "data-slot": "command-input-wrapper",
66
+ className: "p-1 pb-0",
67
+ children: /* @__PURE__ */ r(c, {
68
+ className: "bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!",
69
+ children: [/* @__PURE__ */ n(s.Input, {
70
+ "data-slot": "command-input",
71
+ className: e("w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", t),
72
+ ...i
73
+ }), /* @__PURE__ */ n(u, { children: /* @__PURE__ */ n(a, { className: "size-4 shrink-0 opacity-50" }) })]
74
+ })
75
+ });
76
+ }
77
+ function m({ className: t, ...r }) {
78
+ return /* @__PURE__ */ n(s.List, {
79
+ "data-slot": "command-list",
80
+ className: e("no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto", t),
81
+ ...r
82
+ });
83
+ }
84
+ function h({ className: t, ...r }) {
85
+ return /* @__PURE__ */ n(s.Empty, {
86
+ "data-slot": "command-empty",
87
+ className: e("py-6 text-center text-sm", t),
88
+ ...r
89
+ });
90
+ }
91
+ function g({ className: t, ...r }) {
92
+ return /* @__PURE__ */ n(s.Group, {
93
+ "data-slot": "command-group",
94
+ className: e("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", t),
95
+ ...r
96
+ });
97
+ }
98
+ function _({ className: t, ...r }) {
99
+ return /* @__PURE__ */ n(s.Separator, {
100
+ "data-slot": "command-separator",
101
+ className: e("bg-border -mx-1 h-px w-auto", t),
102
+ ...r
103
+ });
104
+ }
105
+ function v({ className: t, children: a, ...o }) {
106
+ return /* @__PURE__ */ r(s.Item, {
107
+ "data-slot": "command-item",
108
+ className: e("data-[selected=true]:bg-muted data-[selected=true]:text-foreground data-[selected=true]:**:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none [&_svg:not([class*='size-'])]:size-4 [[data-slot=dialog-content]_&]:rounded-lg! group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", t),
109
+ ...o,
110
+ children: [a, /* @__PURE__ */ n(i, { className: "ml-auto opacity-0 group-has-[[data-slot=command-shortcut]]/command-item:hidden group-data-[checked=true]/command-item:opacity-100" })]
111
+ });
112
+ }
113
+ function y({ className: t, ...r }) {
114
+ return /* @__PURE__ */ n("span", {
115
+ "data-slot": "command-shortcut",
116
+ className: e("text-muted-foreground group-data-[selected=true]/command-item:text-foreground ml-auto text-xs tracking-widest", t),
117
+ ...r
118
+ });
119
+ }
120
+ //#endregion
121
+ export { v as a, y as c, d, p as i, c as l, h as n, m as o, g as r, _ as s, f as t, u };
122
+
123
+ //# sourceMappingURL=command-jKbwFRtS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-jKbwFRtS.js","names":[],"sources":["../../src/components/ui/input-group.tsx","../../src/components/ui/command.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { cn } from \"@/lib/utils\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"border-input has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-9 rounded-md border shadow-xs transition-[color,box-shadow] has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 [[data-slot=combobox-content]_&]:focus-within:border-inherit [[data-slot=combobox-content]_&]:focus-within:ring-0 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none\",\n {\n variants: {\n align: {\n \"inline-start\": \"pl-2 has-[>button]:ml-[-0.25rem] has-[>kbd]:ml-[-0.15rem] order-first\",\n \"inline-end\": \"pr-2 has-[>button]:mr-[-0.25rem] has-[>kbd]:mr-[-0.15rem] order-last\",\n \"block-start\":\n \"px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start\",\n \"block-end\":\n \"px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"gap-2 text-sm shadow-none flex items-center\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\" | \"type\"> &\n VariantProps<typeof inputGroupButtonVariants> & {\n type?: \"button\" | \"submit\" | \"reset\"\n }) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\"rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 flex-1\", className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\"rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 flex-1 resize-none\", className)}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n","\"use client\"\n\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon, CheckIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\nimport {\n InputGroup,\n InputGroupAddon,\n} from \"@/components/ui/input-group\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground rounded-xl! p-1 flex size-full flex-col overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = false,\n ...props\n}: Omit<React.ComponentProps<typeof Dialog>, \"children\"> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n children: React.ReactNode\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\n \"rounded-xl! top-1/3 translate-y-0 overflow-hidden p-0\",\n className\n )}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n <InputGroup className=\"bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!\">\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n <InputGroupAddon>\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn(\"py-6 text-center text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px w-auto\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-muted data-[selected=true]:text-foreground data-[selected=true]:**:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none [&_svg:not([class*='size-'])]:size-4 [[data-slot=dialog-content]_&]:rounded-lg! group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <CheckIcon className=\"ml-auto opacity-0 group-has-[[data-slot=command-shortcut]]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n </CommandPrimitive.Item>\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\"text-muted-foreground group-data-[selected=true]/command-item:text-foreground ml-auto text-xs tracking-widest\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n"],"mappings":";;;;;;;;AAQA,SAAS,EAAW,EAAE,cAAW,GAAG,KAAsC;AACxE,QACE,kBAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,WAAW,EACT,yhCACA,EACD;EACD,GAAI;EACJ,CAAA;;AAIN,IAAM,IAA0B,EAC9B,2PACA;CACE,UAAU,EACR,OAAO;EACL,gBAAgB;EAChB,cAAc;EACd,eACE;EACF,aACE;EACH,EACF;CACD,iBAAiB,EACf,OAAO,gBACR;CACF,CACF;AAED,SAAS,EAAgB,EACvB,cACA,WAAQ,gBACR,GAAG,KAC0E;AAC7E,QACE,kBAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,cAAY;EACZ,WAAW,EAAG,EAAwB,EAAE,UAAO,CAAC,EAAE,EAAU;EAC5D,UAAU,MAAM;AACT,KAAE,OAAuB,QAAQ,SAAS,IAG/C,EAAE,cAAc,eAAe,cAAc,QAAQ,EAAE,OAAO;;EAEhE,GAAI;EACJ,CAAA;;AAI2B,EAC/B,+CACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,WAAW;EACX,WAAW;EACZ,EACF;CACD,iBAAiB,EACf,MAAM,MACP;CACF,CACF;AAmCD,SAAS,EAAgB,EACvB,cACA,GAAG,KAC6B;AAChC,QACE,kBAAC,GAAD;EACE,aAAU;EACV,WAAW,EAAG,2GAA2G,EAAU;EACnI,GAAI;EACJ,CAAA;;;;ACvGN,SAAS,EAAQ,EACf,cACA,GAAG,KAC6C;AAChD,QACE,kBAAC,GAAD;EACE,aAAU;EACV,WAAW,EACT,8FACA,EACD;EACD,GAAI;EACJ,CAAA;;AAqCN,SAAS,EAAa,EACpB,cACA,GAAG,KACmD;AACtD,QACE,kBAAC,OAAD;EAAK,aAAU;EAAwB,WAAU;YAC/C,kBAAC,GAAD;GAAY,WAAU;aAAtB,CACE,kBAAC,EAAiB,OAAlB;IACE,aAAU;IACV,WAAW,EACT,iFACA,EACD;IACD,GAAI;IACJ,CAAA,EACF,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAY,WAAU,8BAA+B,CAAA,EACrC,CAAA,CACP;;EACT,CAAA;;AAIV,SAAS,EAAY,EACnB,cACA,GAAG,KACkD;AACrD,QACE,kBAAC,EAAiB,MAAlB;EACE,aAAU;EACV,WAAW,EACT,oFACA,EACD;EACD,GAAI;EACJ,CAAA;;AAIN,SAAS,EAAa,EACpB,cACA,GAAG,KACmD;AACtD,QACE,kBAAC,EAAiB,OAAlB;EACE,aAAU;EACV,WAAW,EAAG,4BAA4B,EAAU;EACpD,GAAI;EACJ,CAAA;;AAIN,SAAS,EAAa,EACpB,cACA,GAAG,KACmD;AACtD,QACE,kBAAC,EAAiB,OAAlB;EACE,aAAU;EACV,WAAW,EAAG,0NAA0N,EAAU;EAClP,GAAI;EACJ,CAAA;;AAIN,SAAS,EAAiB,EACxB,cACA,GAAG,KACuD;AAC1D,QACE,kBAAC,EAAiB,WAAlB;EACE,aAAU;EACV,WAAW,EAAG,+BAA+B,EAAU;EACvD,GAAI;EACJ,CAAA;;AAIN,SAAS,EAAY,EACnB,cACA,aACA,GAAG,KACkD;AACrD,QACE,kBAAC,EAAiB,MAAlB;EACE,aAAU;EACV,WAAW,EACT,ubACA,EACD;EACD,GAAI;YANN,CAQG,GACD,kBAAC,GAAD,EAAW,WAAU,qIAAsI,CAAA,CACrI;;;AAI5B,SAAS,EAAgB,EACvB,cACA,GAAG,KAC4B;AAC/B,QACE,kBAAC,QAAD;EACE,aAAU;EACV,WAAW,EAAG,iHAAiH,EAAU;EACzI,GAAI;EACJ,CAAA"}
@@ -0,0 +1,2 @@
1
+ require(`./chunk-D3uCBrYO.cjs`);const e=require(`./ui-provider-uiQgATj1.cjs`),t=require(`../lib/utils.cjs`),n=require(`./text-DBnY6fcL.cjs`),r=require(`./heading-mZc_jan1.cjs`),i=require(`./badge-C49SSz-6.cjs`),a=require(`./button-D0nF99a9.cjs`),o=require(`./tooltip-DyUi-Tac.cjs`),s=require(`./smart-card-Bm_VxYUG.cjs`),c=require(`./popover-B1f_EUQS.cjs`),l=require(`./avatar-dg20YFFs.cjs`),u=require(`./rich-text-editor-wTiARGuB.cjs`),d=require(`./mentions-D7gnP3Nf.cjs`);let f=require(`react`),p=require(`date-fns`),m=require(`react/jsx-runtime`),h=require(`lucide-react`);var g={title:`Comments`,subtitle:``,empty:`No comments yet.`,emptyHint:`Start the conversation — your team will see it instantly.`,composerPlaceholder:`Write a comment…`,composerSubmit:`Post comment`,composerSubmitting:`Posting…`,composerSave:`Save changes`,invalidContent:`Comment cannot be empty.`,composerCancel:`Cancel`,composerEditingEyebrow:`Editing comment`,composerReplyingEyebrow:`Replying to {{name}}`,composerAttachmentLabel:`Attach file`,composerReferenceLabel:`Mention or link`,composerReferenceMenuTitle:`Insert reference`,composerReferenceSearchPlaceholder:`Search…`,composerReferenceEmpty:`No matches.`,composerReferenceLoading:`Searching…`,fallbackAuthor:`Anonymous`,pinned:`Pinned`,edited:`edited`,deleteLabel:`Delete`,editLabel:`Edit`,replyLabel:`Reply`,pinLabel:`Pin`,unpinLabel:`Unpin`,moreActionsLabel:`More actions`,confirmDeleteLabel:`Delete comment`,attachmentFallback:`Attachment`,attachmentRemoveLabel:`Remove attachment`,attachmentUploadingLabel:`Uploading…`,attachmentFailedLabel:`Upload failed`,attachmentTooLargeError:`File is too large.`,attachmentTooManyError:`Too many attachments.`,attachmentRetryLabel:`Retry`,attachmentDownloadLabel:`Download`,addReactionLabel:`Add reaction`,showRepliesLabel:`Show replies`,hideRepliesLabel:`Hide replies`};function _(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>{let r=t[n];return r==null?``:String(r)})}function v(e){return(0,f.useMemo)(()=>({...g,...e??{}}),[e])}function y(t){let n=e.l(),r=e.a();return(0,f.useMemo)(()=>({getMediaUrl:t?.getMediaUrl??(e=>n.resolveUrl?.(e??{})),getMediaName:t?.getMediaName??(e=>n.resolveName?.(e??{})),getStatusLabel:t?.getStatusLabel,formatRelativeTime:t?.formatRelativeTime??r.formatRelativeTime}),[t,n,r.formatRelativeTime])}function b(e){return typeof e!=`number`||e<=0?null:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function x(e){return e.mimeType?.startsWith(`image/`)?h.Image:e.mimeType===`application/pdf`||e.mimeType?.startsWith(`text/`)?h.FileText:e.mimeType?h.File:h.Paperclip}var S=({attachment:e,editable:r=!1,onRemove:i,onRetry:a,accessors:o,strings:s,compact:c=!1,className:l})=>{let u={...g,...s},d=o?.getMediaUrl?.(e)??e.url,f=o?.getMediaName?.(e)??e.name??u.attachmentFallback,p=x(e),_=e.status===`uploading`,v=e.status===`failed`,y=b(e.size),S=_?u.attachmentUploadingLabel+(typeof e.progress==`number`?` ${Math.round(e.progress)}%`:``):v?e.error??u.attachmentFailedLabel:y,C=t.cn(`relative inline-flex min-w-0 max-w-[20rem] items-center gap-1.5 rounded-md`,`ring-1 ring-inset transition-colors`,c?`px-2 py-1 text-xs`:`px-2.5 py-1 text-xs`,v?`bg-destructive/[0.04] ring-destructive/30 hover:bg-destructive/[0.08]`:`bg-foreground/[0.03] ring-border/60 hover:bg-foreground/[0.06]`,l),w=_?(0,m.jsx)(h.Loader2,{className:t.cn(`shrink-0 animate-spin text-muted-foreground`,`size-3.5`),"aria-hidden":!0}):(0,m.jsx)(p,{className:t.cn(`shrink-0`,`size-3.5`,v?`text-destructive`:`text-muted-foreground`),"aria-hidden":!0}),T=(0,m.jsxs)(`span`,{className:`inline-flex min-w-0 items-baseline gap-1.5`,children:[(0,m.jsx)(n.t,{tag:`span`,size:`xs`,weight:`medium`,className:t.cn(`truncate`,v&&`text-destructive`),children:f}),S?(0,m.jsx)(n.t,{tag:`span`,size:`xxs`,type:`secondary`,className:`shrink-0 tabular-nums`,children:S}):null]});return(0,m.jsxs)(`div`,{className:C,children:[w,d&&!_&&!v?(0,m.jsx)(`a`,{href:d,target:`_blank`,rel:`noreferrer noopener`,className:`inline-flex min-w-0 flex-1 items-baseline gap-1.5 hover:underline`,"aria-label":u.attachmentDownloadLabel,children:T}):T,_&&typeof e.progress==`number`&&(0,m.jsx)(`div`,{className:`bg-primary/15 absolute bottom-0 left-2 right-2 h-px overflow-hidden rounded-full`,children:(0,m.jsx)(`div`,{className:`bg-primary h-full transition-[width]`,style:{width:`${Math.min(100,Math.max(0,e.progress))}%`}})}),v&&a&&(0,m.jsx)(`button`,{type:`button`,onClick:()=>a(e.id),className:`text-destructive ring-destructive/30 hover:ring-destructive/60 shrink-0 rounded px-1.5 py-px text-xxs font-medium ring-1 ring-inset transition-colors`,children:u.attachmentRetryLabel}),r&&i&&(0,m.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),className:`text-muted-foreground hover:bg-foreground/10 hover:text-foreground -mr-0.5 inline-flex size-4 shrink-0 items-center justify-center rounded transition-colors focus-visible:ring-2 focus-visible:ring-ring/40`,"aria-label":u.attachmentRemoveLabel,title:u.attachmentRemoveLabel,children:(0,m.jsx)(h.X,{className:`size-3`})})]})};function C(e={}){let{onUpload:t,maxSize:n,maxFiles:r,disabled:i,initialAttachments:a,onChange:o,onError:s}=e,[c,l]=(0,f.useState)(()=>a?[...a]:[]),u=(0,f.useRef)(new Map),d=(0,f.useRef)(new Map),p=(0,f.useRef)(o);p.current=o;let m=(0,f.useCallback)((e,t)=>{l(n=>n.map(n=>n.id===e?{...n,...t}:n))},[]),h=(0,f.useCallback)(e=>{l([...e])},[]),g=(0,f.useCallback)((e,n)=>{if(!t)return;let r=new AbortController;u.current.set(e,{controller:r}),m(e,{status:`uploading`,progress:0,error:void 0}),t({file:n,onProgress:t=>{m(e,{progress:t})},signal:r.signal}).then(t=>{u.current.delete(e),m(e,{...t,id:e,status:`uploaded`,progress:100,error:void 0})}).catch(t=>{if(u.current.delete(e),r.signal.aborted)return;let n=t instanceof Error?t.message:`Upload failed`;m(e,{status:`failed`,error:n}),s?.(n)})},[s,t,m]),_=(0,f.useCallback)(e=>{if(i||!t)return;let a=Array.from(e);a.length!==0&&l(e=>{let t=[...e];for(let e of a){if(typeof r==`number`&&t.length>=r){s?.(`Too many attachments.`);break}if(typeof n==`number`&&e.size>n){s?.(`File is too large.`);continue}let i=typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`att-${Date.now()}-${Math.random().toString(36).slice(2)}`;d.current.set(i,e),t.push({id:i,name:e.name,size:e.size,mimeType:e.type,status:`uploading`,progress:0}),queueMicrotask(()=>g(i,e))}return t})},[g,i,r,n,s,t]),v=(0,f.useCallback)(e=>{let t=u.current.get(e);t&&(t.controller.abort(),u.current.delete(e)),d.current.delete(e),l(t=>t.filter(t=>t.id!==e))},[]),y=(0,f.useCallback)(e=>{let t=d.current.get(e);t&&g(e,t)},[g]),b=(0,f.useCallback)(()=>{for(let e of u.current.values())e.controller.abort();u.current.clear(),d.current.clear(),l([])},[]);return(0,f.useEffect)(()=>{p.current?.(c)},[c]),(0,f.useEffect)(()=>{let e=u.current;return()=>{for(let t of e.values())t.controller.abort()}},[]),{attachments:c,uploadedAttachments:(0,f.useMemo)(()=>c.filter(e=>e.status===`uploaded`||!e.status),[c]),isUploading:(0,f.useMemo)(()=>c.some(e=>e.status===`uploading`),[c]),addFiles:_,removeAttachment:v,retryAttachment:y,setAttachments:h,reset:b}}function w(e){return!e||typeof e!=`string`?!1:e.replace(/<[^>]*>/g,``).trim().length>0}var T=(0,f.forwardRef)(function({context:e,canComment:t=!0,isSubmitting:r=!1,errors:i,resetKey:o=0,onSubmit:s,onCancel:l,editingComment:p,strings:g,resources:_,onResourceSearch:y,attachments:b,initialValues:x,autoFocus:T=!1,inlineSubmit:D=!0,placeholder:O},k){let A=v(g),j=_,M=y,N=b,P=(0,f.useRef)(null),[F,I]=(0,f.useState)(()=>x?.content??p?.content??``),[L,R]=(0,f.useState)(null),z=d.u({resources:j,onResourceSearch:M,editorRef:P,initialMentions:x?.references??p?.references}),B=C({...N,initialAttachments:x?.attachments??void 0});(0,f.useImperativeHandle)(k,()=>({focus:()=>P.current?.focus(),clear:()=>{P.current?.clear(),z.reset(),B.reset(),R(null)},setBody:e=>{P.current?.setHTML(e)}}),[B,z]),(0,f.useEffect)(()=>{P.current?.setHTML(x?.content??``),z.setMentions(x?.references??[]),B.setAttachments(x?.attachments??[]),R(null)},[e.id,e.type,o]),(0,f.useEffect)(()=>{if(!p)return;P.current?.setHTML(p.content??``),z.setMentions(p.references??[]);let e=(p.attachments??p.media??[]).filter(e=>!!e);B.setAttachments(e)},[p?.id]),(0,f.useEffect)(()=>{i?.content&&R(i.content)},[i]);let V=t=>{t?.preventDefault();let n=P.current?.getHTML()??F;if(!w(n)){R(A.invalidContent);return}R(null),s({content:n,commentableId:e.id,commentableType:e.type,contentType:`html`,references:z.mentions,attachments:B.uploadedAttachments,editingId:p?.id})},H=(0,f.useRef)(null),U=()=>H.current?.click(),W=e=>{e&&B.addFiles(e)},G=B.attachments.length>0,K=!!p,q=r?A.composerSubmitting:K?A.composerSave:A.composerSubmit,J=K?(0,m.jsx)(E,{label:A.composerEditingEyebrow,closeLabel:A.composerCancel,onClose:l}):null,Y=(0,f.useMemo)(()=>{let e=[];return j&&Object.keys(j).length>0&&e.push({id:`reference`,icon:h.AtSign,label:A.composerReferenceLabel,onClick:()=>z.setPickerOpen(!0)}),N?.onUpload&&!N.disabled&&e.push({id:`attachment`,icon:h.Paperclip,label:A.composerAttachmentLabel,onClick:U}),e},[j,N?.onUpload,N?.disabled,A.composerReferenceLabel,A.composerAttachmentLabel]);if(!t)return null;let X=(0,m.jsx)(a.t,{type:`button`,onClick:()=>V(),disabled:r||B.isUploading,icon:r?h.Loader2:h.Send,children:q}),Z=K||l?(0,m.jsx)(a.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:l,disabled:r,children:A.composerCancel}):null,Q=G?(0,m.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:B.attachments.map(e=>(0,m.jsx)(S,{attachment:e,editable:!0,onRemove:B.removeAttachment,onRetry:B.retryAttachment,strings:g},e.id))}):null,$=G?Q:null,ee=D===!1?null:X,te=D===!1||K;return(0,m.jsxs)(`form`,{onSubmit:V,className:`space-y-2`,children:[J,(0,m.jsx)(`input`,{ref:H,type:`file`,multiple:!0,hidden:!0,accept:N?.accept,onChange:e=>{W(e.target.files),e.target.value=``}}),!z.triggerActive&&(0,m.jsxs)(c.n,{open:z.pickerOpen,onOpenChange:z.setPickerOpen,children:[(0,m.jsx)(c.s,{render:(0,m.jsx)(`button`,{type:`button`,className:`sr-only`,tabIndex:-1}),children:A.composerReferenceLabel}),(0,m.jsx)(d.r,{open:z.pickerOpen,activeKind:z.activeKind,setActiveKind:z.setActiveKind,kinds:z.kinds,resources:j,query:z.query,setQuery:z.setQuery,suggestions:z.suggestions,isLoading:z.isLoading,onSelect:z.pickSuggestion,strings:{title:A.composerReferenceMenuTitle,searchPlaceholder:A.composerReferenceSearchPlaceholder,empty:A.composerReferenceEmpty,loading:A.composerReferenceLoading}})]}),(0,m.jsxs)(`div`,{className:`relative`,children:[(0,m.jsx)(u.t,{ref:P,value:F,onChange:e=>{I(e);let t=d.t(e),n=z.mentions;if(n.map(e=>e.id).join(`|`)!==t.map(e=>e.id).join(`|`)){let e=new Map(n.map(e=>[e.id,e])),r=t.map(t=>e.get(t.id)??t);z.setMentions(r)}},placeholder:O??A.composerPlaceholder,minHeight:`3rem`,autoFocus:T||K,extraToolbarItems:Y,toolbarTrailing:ee,footerSlot:$,onCaretChange:z.handleCaretChange}),(0,m.jsx)(d.n,{open:z.triggerActive&&z.pickerOpen,activeKind:z.activeKind,setActiveKind:z.setActiveKind,onManualKindChange:()=>z.setManualKindOverride(!0),kinds:z.kinds,resources:j,query:z.query,suggestions:z.suggestions,suggestionsByKind:z.suggestionsByKind,isLoading:z.isLoading,onSelect:z.pickSuggestion,strings:{title:A.composerReferenceMenuTitle,empty:A.composerReferenceEmpty,loading:A.composerReferenceLoading}})]}),L&&(0,m.jsx)(n.t,{size:`xs`,type:`error`,children:L}),te&&(0,m.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[Z,X]})]})});function E({label:e,closeLabel:t,onClose:r}){return(0,m.jsxs)(`div`,{className:`bg-muted/40 ring-border/60 flex items-center justify-between rounded px-2.5 py-1.5 ring-1 ring-inset`,children:[(0,m.jsx)(n.t,{size:`xxs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wide`,children:e}),r?(0,m.jsx)(`button`,{type:`button`,onClick:r,className:`text-muted-foreground hover:text-foreground inline-flex size-4 items-center justify-center rounded transition-colors`,"aria-label":t,children:(0,m.jsx)(h.X,{className:`size-3`})}):null]})}function D(e,t){return _(e,{name:t??``})}var O=({strings:e,icon:r,className:i})=>{let a=v(e);return(0,m.jsxs)(`div`,{className:t.cn(`flex flex-col items-center justify-center py-8 text-center`,i),children:[(0,m.jsx)(`div`,{className:`bg-muted/50 mb-3 flex h-12 w-12 items-center justify-center rounded-full`,children:r??(0,m.jsx)(h.MessageCircle,{className:`text-muted-foreground/60 h-5 w-5`})}),(0,m.jsx)(n.t,{weight:`medium`,children:a.empty}),a.emptyHint?(0,m.jsx)(n.t,{size:`xs`,type:`secondary`,className:`mt-1 max-w-[28ch]`,children:a.emptyHint}):null]})};function k(e){return(0,m.jsx)(A,{comment:e})}function A(e){let{comment:t,resources:r,renderReference:i,sanitizer:a}=e,o=t.contentType??t.content_type??`text`;return o===`rich`?j(t.content):o===`html`?(0,m.jsx)(d.o,{html:t.content??``,mentions:t.references,resources:r,renderMention:i,sanitizer:a}):(0,m.jsx)(n.t,{className:`whitespace-pre-line`,children:P(t.content??``)})}function j(e){if(!e)return null;try{let t=JSON.parse(e);return!t||!Array.isArray(t.blocks)||t.blocks.length===0?null:(0,m.jsx)(`div`,{className:`prose prose-sm prose-p:my-0.5 prose-headings:my-1 prose-a:text-primary prose-a:no-underline hover:prose-a:underline max-w-none space-y-1`,children:t.blocks.map((e,t)=>(0,m.jsx)(f.Fragment,{children:M(e)},e.id??`${e.type}-${t}`))})}catch{return(0,m.jsx)(n.t,{className:`whitespace-pre-line`,children:P(e)})}}function M(e){let t=e.data??{};switch(e.type){case`paragraph`:{let e=String(t.text??``).trim();return e?(0,m.jsx)(n.t,{asHTML:!0,content:e}):null}case`header`:{let e=N(String(t.text??``)),n=Number(t.level??3);return e?(0,f.createElement)(r.t,{tag:`h${Math.min(Math.max(n,1),6)}`},e):null}case`list`:{let e=(Array.isArray(t.items)?t.items:[]).map(e=>N(String(e??``))).filter(e=>e.length>0);return e.length===0?null:t.style===`ordered`?(0,m.jsx)(`ol`,{className:`ml-6 list-decimal space-y-1 text-sm`,children:e.map((e,t)=>(0,m.jsx)(`li`,{children:e},`${e}-${t}`))}):(0,m.jsx)(`ul`,{className:`ml-6 list-disc space-y-1 text-sm`,children:e.map(e=>(0,m.jsx)(`li`,{children:e},e))})}case`quote`:{let e=String(t.text??``).trim();if(!e)return null;let r=N(String(t.caption??``));return(0,m.jsxs)(`blockquote`,{className:`border-muted text-muted-foreground border-l-2 pl-3 text-sm italic`,children:[(0,m.jsx)(n.t,{asHTML:!0,content:e}),r.length>0&&(0,m.jsxs)(`cite`,{className:`text-muted-foreground/80 mt-1 block text-xs not-italic`,children:[`— `,r]})]})}case`delimiter`:return(0,m.jsx)(`div`,{className:`border-muted my-4 border-b border-dashed`,"aria-hidden":`true`});default:{let e=N(String(t.text??``));return e?(0,m.jsx)(n.t,{className:`whitespace-pre-line`,children:e}):null}}}function N(e){return e.replace(/<[^>]*>/g,``).trim()}function P(e){if(typeof e!=`string`)return``;let t=e.trim();if(t===``)return``;if(t.startsWith(`{`)||t.startsWith(`[`))return t;try{let e=JSON.parse(t);if(typeof e==`string`)return e}catch{}return t.startsWith(`"`)&&t.endsWith(`"`)?t.slice(1,-1):t}var F=`?`,I=e=>e?.url,L=e=>e?.name,R=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/_/g,` `),z=e=>{try{return(0,p.formatDistanceToNow)(new Date(e),{addSuffix:!0})}catch{return`—`}},B=(0,f.memo)(function({comment:e,canModerate:r,onDelete:s,onPinToggle:c,onReact:u,onReply:d,strings:p,getMediaUrl:g,getMediaName:_,getStatusLabel:b,formatRelativeTime:x,resources:C,renderAttachment:w,renderReference:T}){let E=v(p),D=y({getMediaUrl:g,getMediaName:_,getStatusLabel:b,formatRelativeTime:x}),O=D.getMediaUrl??I,k=D.getMediaName??L,j=D.getStatusLabel??R,M=D.formatRelativeTime??z,N=e.user?.name??E.fallbackAuthor,P=e.user?.avatar??void 0,B=(0,f.useMemo)(()=>e.createdAt?M(e.createdAt):`—`,[e.createdAt,M]),V=(0,f.useMemo)(()=>{if(!N)return F;let e=N.trim();return e===``?F:e.charAt(0).toUpperCase()},[N]),H=(0,f.useMemo)(()=>Array.isArray(e.tagsArray)?e.tagsArray.filter(e=>typeof e==`string`):e.tagsArray&&typeof e.tagsArray==`object`?Object.values(e.tagsArray).filter(e=>typeof e==`string`):[],[e.tagsArray]),U=(0,f.useMemo)(()=>(e.attachments??e.media??[]).filter(e=>!!e&&typeof e==`object`),[e.attachments,e.media]),W=e.reactions??[],G=e.isPinned===!0,K=e.isEdited===!0,q=e.status&&e.status!==`active`,J=q&&e.status?j(e.status):null,Y=e.canDelete===!0||r===!0,X=e.canEdit===!0||r===!0,Z=U.length>0;return(0,m.jsx)(`article`,{className:t.cn(`group relative overflow-hidden rounded-lg border transition-colors`,`border-border/60 bg-card hover:bg-muted/30 px-3 py-2.5`),"data-comment-id":e.id,children:(0,m.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,m.jsxs)(l.t,{className:`mt-0.5 h-8 w-8 shrink-0`,children:[!!P&&(0,m.jsx)(l.o,{src:P,alt:N}),(0,m.jsx)(l.r,{className:`bg-muted text-muted-foreground text-xs font-medium`,children:V})]}),(0,m.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,m.jsx)(n.t,{tag:`span`,weight:`semibold`,className:`truncate`,children:N}),!!G&&(0,m.jsx)(o.r,{delayDuration:0,children:(0,m.jsxs)(o.t,{children:[(0,m.jsx)(o.i,{render:(0,m.jsx)(`span`,{className:`inline-flex shrink-0 self-center`}),children:(0,m.jsx)(h.Pin,{className:`text-warning size-3`,"aria-hidden":!0})}),(0,m.jsx)(o.n,{side:`top`,className:`text-xs`,children:E.pinned})]})}),(0,m.jsx)(n.t,{tag:`span`,size:`xs`,type:`secondary`,className:`shrink-0 tabular-nums`,children:B}),!!K&&(0,m.jsx)(n.t,{tag:`span`,size:`xs`,type:`secondary`,className:`shrink-0`,children:E.edited}),!!q&&!!J&&(0,m.jsx)(i.t,{variant:`secondary`,className:`self-center uppercase tracking-wide`,children:J})]}),(0,m.jsx)(`div`,{className:`mt-1 text-sm leading-relaxed`,children:(0,m.jsx)(A,{comment:e,resources:C,renderReference:T})}),H.length>0&&(0,m.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:H.map(e=>(0,m.jsx)(i.t,{variant:`secondary`,className:`uppercase tracking-wide`,children:e},e))}),Z&&(0,m.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:U.map(e=>w?(0,m.jsx)(`div`,{children:w(e)},e.id??e.name):(0,m.jsx)(S,{attachment:e,accessors:{getMediaUrl:O,getMediaName:k},strings:p},e.id??e.name))}),W.length>0&&(0,m.jsx)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1`,children:W.map(t=>(0,m.jsx)(`button`,{type:`button`,onClick:()=>u&&e.id?u(e.id,t.emoji):void 0,title:t.users?.join(`, `),className:`rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,children:(0,m.jsxs)(i.t,{variant:t.mine?`primary`:`secondary`,className:`cursor-pointer transition-colors hover:opacity-90`,children:[(0,m.jsx)(`span`,{"aria-hidden":!0,className:`leading-none`,children:t.emoji}),(0,m.jsx)(`span`,{className:`tabular-nums`,children:t.count})]})},t.emoji))})]}),(0,m.jsxs)(`div`,{className:t.cn(`shrink-0 self-start opacity-0 transition-opacity`,`group-hover:opacity-100 focus-within:opacity-100`,`-mr-1 inline-flex items-center gap-0.5`),children:[!!d&&(0,m.jsx)(a.t,{type:`button`,size:`icon-xs`,variant:`secondary`,buttonStyle:`ghost`,onClick:()=>e.id&&d(e.id),title:E.replyLabel,"aria-label":E.replyLabel,children:(0,m.jsx)(h.CornerDownRight,{className:`size-3.5`})}),!!u&&(0,m.jsx)(a.t,{type:`button`,size:`icon-xs`,variant:`secondary`,buttonStyle:`ghost`,onClick:()=>e.id&&u(e.id,`👍`),title:E.addReactionLabel,"aria-label":E.addReactionLabel,children:(0,m.jsx)(h.Smile,{className:`size-3.5`})}),!!c&&r&&(0,m.jsx)(a.t,{type:`button`,size:`icon-xs`,variant:`secondary`,buttonStyle:`ghost`,onClick:()=>c(e),title:G?E.unpinLabel:E.pinLabel,"aria-label":G?E.unpinLabel:E.pinLabel,children:(0,m.jsx)(h.Pin,{className:t.cn(`size-3.5`,G&&`text-warning`)})}),!!X&&!!e.id&&(0,m.jsx)(a.t,{type:`button`,size:`icon-xs`,variant:`secondary`,buttonStyle:`ghost`,title:E.editLabel,"aria-label":E.editLabel,children:(0,m.jsx)(h.Pencil,{className:`size-3.5`})}),!!Y&&!!s&&!!e.id&&(0,m.jsx)(a.t,{type:`button`,size:`icon-xs`,variant:`secondary`,buttonStyle:`ghost`,className:`hover:bg-destructive/10 hover:text-destructive`,onClick:()=>s(e.id),title:E.deleteLabel,"aria-label":E.deleteLabel,children:(0,m.jsx)(h.Trash2,{className:`size-3.5`})})]})]})})}),V=function({comments:e,canModerate:t,onDelete:n,onPinToggle:r,onReact:i,onReply:a,strings:o,getMediaUrl:s,getMediaName:c,getStatusLabel:l,formatRelativeTime:u,resources:d,renderItem:f,renderAttachment:p,renderReference:h,emptySlot:g}){return e.length?(0,m.jsx)(`div`,{className:`flex flex-col gap-2`,children:e.map((e,g)=>{let _=(0,m.jsx)(B,{comment:e,canModerate:t,onDelete:n,onPinToggle:r,onReact:i,onReply:a,strings:o,getMediaUrl:s,getMediaName:c,getStatusLabel:l,formatRelativeTime:u,resources:d,renderAttachment:p,renderReference:h});return f?(0,m.jsx)(`div`,{children:f({comment:e,canModerate:t??!1,onDelete:n,defaultItem:_})},e.id??`comment-${g}`):(0,m.jsx)(`div`,{children:_},e.id??`comment-${g}`)})}):(0,m.jsx)(m.Fragment,{children:g??(0,m.jsx)(O,{strings:o})})};function H(n){let r=e.i(),i=n.composerPosition??r.composerPosition??`top`,a=n.canComment??!1,o=n.canModerate??!1,c=n.onSubmit,l=n.onDelete,u=n.onPinToggle,d=n.onReact,p=n.onReply,h=n.resources,g=n.attachments,_=v(n.strings),y=n.title===void 0?_.title:n.title,[b,x]=(0,f.useState)({}),[S,C]=(0,f.useState)(!1),[w,E]=(0,f.useState)(0),D={setErrors:e=>x(e),reset:()=>{E(e=>e+1),x({}),C(!1)},setSubmitting:C},k=(0,f.useCallback)(e=>{c&&(C(!0),x({}),c(e,D))},[c]),A=n.composerSlot??(a?(0,m.jsx)(T,{context:n.context,canComment:a,isSubmitting:S,errors:b,resetKey:w,onSubmit:k,strings:n.strings,resources:h,attachments:g}):null),j=(0,m.jsx)(V,{comments:n.comments,canModerate:o,onDelete:l,onPinToggle:u,onReact:d,onReply:p,strings:n.strings,getMediaUrl:n.getMediaUrl,getMediaName:n.getMediaName,getStatusLabel:n.getStatusLabel,formatRelativeTime:n.formatRelativeTime,resources:h,renderItem:n.renderItem,renderAttachment:n.renderAttachment,renderReference:n.renderReference,emptySlot:n.emptySlot??(0,m.jsx)(O,{strings:n.strings})}),M=A?(0,m.jsx)(`div`,{children:A}):null,N=(0,m.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[n.headerSlot,i===`top`&&M,j,i===`bottom`&&M,n.footerSlot]});return n.bare?N:(0,m.jsx)(s.t,{title:y===!1?void 0:y,description:_.subtitle||void 0,padding:`sm`,className:t.cn(`comments--component`,n.className),children:N})}var U=H;function W(e={}){let{onSubmit:t,onUpdate:n,onDelete:r}=e,[i,a]=(0,f.useState)({kind:`idle`}),[o,s]=(0,f.useState)(!1),[c,l]=(0,f.useState)({}),[u,d]=(0,f.useState)(0),p={setErrors:e=>l(e),reset:()=>{d(e=>e+1),a({kind:`idle`}),l({})},setSubmitting:s};return{composerMode:i,isSubmitting:o,formErrors:c,resetKey:u,startReply:(0,f.useCallback)(e=>{a({kind:`replying`,commentId:e.id??``,authorName:e.user?.name})},[]),startEdit:(0,f.useCallback)(e=>{a({kind:`editing`,comment:e})},[]),cancelComposerMode:(0,f.useCallback)(()=>{a({kind:`idle`}),l({})},[]),submit:(0,f.useCallback)(e=>{if(s(!0),l({}),i.kind===`editing`&&i.comment.id){if(!n){s(!1);return}n(i.comment.id,e,p);return}if(!t){s(!1);return}t(i.kind===`replying`?{...e,replyToId:i.commentId}:e,p)},[i,t,n]),deleteComment:(0,f.useCallback)(e=>{!r||!e||r(e)},[r]),resetComposer:(0,f.useCallback)(()=>{d(e=>e+1),a({kind:`idle`}),l({})},[]),helpers:p}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return D}});
2
+ //# sourceMappingURL=comments-CNUsdwGW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments-CNUsdwGW.cjs","names":[],"sources":["../../src/components/features/comments/comments.strings.ts","../../src/components/features/comments/comments-provider.tsx","../../src/components/features/comments/partials/comment-attachment-chip.tsx","../../src/components/features/comments/hooks/use-attachment-upload.ts","../../src/components/features/comments/partials/comment-composer.tsx","../../src/components/features/comments/partials/comment-empty.tsx","../../src/components/features/comments/partials/comment-content.tsx","../../src/components/features/comments/partials/comment-item.tsx","../../src/components/features/comments/partials/comment-timeline.tsx","../../src/components/features/comments/comments.tsx","../../src/components/features/comments/hooks/use-comments.ts"],"sourcesContent":["/**\n * Strings for the Comments feature. Consumers override via the `strings`\n * prop on `<Comments>` / `<CommentsCard>` / sub-components — values are\n * deep-merged over these defaults.\n */\nexport interface CommentsStrings {\n /** Card title — usually \"Comments\". Set to \"\" to hide. */\n title: string;\n /** Subtitle under the card title — optional. */\n subtitle: string;\n /** Empty-state copy for the timeline. */\n empty: string;\n /** Empty-state secondary copy. */\n emptyHint: string;\n\n // Composer ---------------------------------------------------------\n /** Composer rich-text placeholder. */\n composerPlaceholder: string;\n /** Submit label for new comments. */\n composerSubmit: string;\n /** Submit label while pending. */\n composerSubmitting: string;\n /** Submit label when editing. */\n composerSave: string;\n /** Required-content error. */\n invalidContent: string;\n /** Cancel/dismiss draft. */\n composerCancel: string;\n /** \"Edit comment\" eyebrow shown above the composer in edit mode. */\n composerEditingEyebrow: string;\n /** \"Reply to {{name}}\" eyebrow shown above the composer in reply mode. */\n composerReplyingEyebrow: string;\n\n // Toolbar buttons --------------------------------------------------\n composerAttachmentLabel: string;\n composerReferenceLabel: string;\n composerReferenceMenuTitle: string;\n composerReferenceSearchPlaceholder: string;\n composerReferenceEmpty: string;\n composerReferenceLoading: string;\n\n // Item -------------------------------------------------------------\n fallbackAuthor: string;\n pinned: string;\n edited: string;\n /** Trash button aria-label / tooltip. */\n deleteLabel: string;\n /** Edit button label. */\n editLabel: string;\n /** Reply button label. */\n replyLabel: string;\n /** Pin/unpin button label. */\n pinLabel: string;\n unpinLabel: string;\n /** \"More actions\" trigger aria-label. */\n moreActionsLabel: string;\n /** Confirm-delete button label inside the action menu. */\n confirmDeleteLabel: string;\n\n // Attachments ------------------------------------------------------\n attachmentFallback: string;\n attachmentRemoveLabel: string;\n attachmentUploadingLabel: string;\n attachmentFailedLabel: string;\n attachmentTooLargeError: string;\n attachmentTooManyError: string;\n attachmentRetryLabel: string;\n attachmentDownloadLabel: string;\n\n // Reactions --------------------------------------------------------\n addReactionLabel: string;\n\n // Misc -------------------------------------------------------------\n showRepliesLabel: string;\n hideRepliesLabel: string;\n}\n\nexport const defaultCommentsStrings: CommentsStrings = {\n title: 'Comments',\n subtitle: '',\n empty: 'No comments yet.',\n emptyHint: 'Start the conversation — your team will see it instantly.',\n\n composerPlaceholder: 'Write a comment…',\n composerSubmit: 'Post comment',\n composerSubmitting: 'Posting…',\n composerSave: 'Save changes',\n invalidContent: 'Comment cannot be empty.',\n composerCancel: 'Cancel',\n composerEditingEyebrow: 'Editing comment',\n composerReplyingEyebrow: 'Replying to {{name}}',\n\n composerAttachmentLabel: 'Attach file',\n composerReferenceLabel: 'Mention or link',\n composerReferenceMenuTitle: 'Insert reference',\n composerReferenceSearchPlaceholder: 'Search…',\n composerReferenceEmpty: 'No matches.',\n composerReferenceLoading: 'Searching…',\n\n fallbackAuthor: 'Anonymous',\n pinned: 'Pinned',\n edited: 'edited',\n deleteLabel: 'Delete',\n editLabel: 'Edit',\n replyLabel: 'Reply',\n pinLabel: 'Pin',\n unpinLabel: 'Unpin',\n moreActionsLabel: 'More actions',\n confirmDeleteLabel: 'Delete comment',\n\n attachmentFallback: 'Attachment',\n attachmentRemoveLabel: 'Remove attachment',\n attachmentUploadingLabel: 'Uploading…',\n attachmentFailedLabel: 'Upload failed',\n attachmentTooLargeError: 'File is too large.',\n attachmentTooManyError: 'Too many attachments.',\n attachmentRetryLabel: 'Retry',\n attachmentDownloadLabel: 'Download',\n\n addReactionLabel: 'Add reaction',\n\n showRepliesLabel: 'Show replies',\n hideRepliesLabel: 'Hide replies',\n};\n\n/**\n * Tiny `{{token}}` interpolator used by templated strings like\n * `composerReplyingEyebrow`. No HTML escaping — treat values as plain text.\n */\nexport function interpolateString(\n template: string,\n values: Record<string, string | number | undefined>,\n): string {\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key: string) => {\n const value = values[key];\n return value === undefined || value === null ? '' : String(value);\n });\n}\n","/**\n * Comments — internal helper hooks for resolving strings and accessors.\n *\n * Rationale: the previous `<CommentsProvider>` is gone. Library-wide\n * defaults now live in `<UIProvider>` (`useMediaConfig` / `useDatesConfig`).\n * Per-mount overrides flow as direct props on `<Comments>` and its\n * partials. These helpers just centralize the merge order.\n *\n * Resolution order everywhere:\n *\n * props.strings ← deep-merged over `defaultCommentsStrings`\n * props.accessor.X ← falls back to UIProvider's media/dates resolvers,\n * then to a built-in default at the call site.\n */\nimport { useMemo } from 'react';\n\nimport { useDatesConfig, useMediaConfig } from '@/lib/ui-provider';\n\nimport {\n defaultCommentsStrings,\n type CommentsStrings,\n} from './comments.strings';\nimport type { CommentAttachment, CommentsAccessors } from './comments.types';\n\n/**\n * Resolve final strings by merging defaults → component prop. Stable\n * identity when the prop reference is unchanged.\n */\nexport function useResolvedStrings(\n propStrings?: Partial<CommentsStrings>,\n): CommentsStrings {\n return useMemo(\n () => ({\n ...defaultCommentsStrings,\n ...(propStrings ?? {}),\n }),\n [propStrings],\n );\n}\n\n/**\n * Resolve accessors. Order:\n * 1. explicit prop accessor\n * 2. matching UIProvider slot (`useMediaConfig().resolveUrl`, etc.)\n * 3. caller's own fallback when neither is present (handled at call site)\n */\nexport function useResolvedAccessors(\n propAccessors?: CommentsAccessors,\n): CommentsAccessors {\n const media = useMediaConfig();\n const dates = useDatesConfig();\n return useMemo<CommentsAccessors>(\n () => ({\n getMediaUrl:\n propAccessors?.getMediaUrl ??\n ((m: CommentAttachment | null | undefined) =>\n media.resolveUrl?.((m ?? {}) as { url?: string; key?: string })),\n getMediaName:\n propAccessors?.getMediaName ??\n ((m: CommentAttachment | null | undefined) =>\n media.resolveName?.((m ?? {}) as { name?: string })),\n getStatusLabel: propAccessors?.getStatusLabel,\n formatRelativeTime:\n propAccessors?.formatRelativeTime ?? dates.formatRelativeTime,\n }),\n [propAccessors, media, dates.formatRelativeTime],\n );\n}\n","/**\n * CommentAttachmentChip — small attachment pill used in the composer draft\n * and the timeline. Single inline row: icon + name · size, with progress /\n * error states overlaid on the same line. Editable mode reveals a remove\n * button; failed uploads expose a retry pill.\n */\nimport { File, FileText, Image as ImageIcon, Loader2, Paperclip, X } from 'lucide-react';\nimport type { FC } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n CommentAttachment,\n CommentsAccessors,\n} from '../comments.types';\nimport {\n defaultCommentsStrings,\n type CommentsStrings,\n} from '../comments.strings';\n\nexport interface CommentAttachmentChipProps {\n attachment: CommentAttachment;\n /** Editable mode shows a remove button. */\n editable?: boolean;\n onRemove?: (id: string) => void;\n onRetry?: (id: string) => void;\n accessors?: CommentsAccessors;\n strings?: Partial<CommentsStrings>;\n /** Compact chips have smaller text and tighter padding. */\n compact?: boolean;\n className?: string;\n}\n\nfunction formatBytes(bytes?: number): string | null {\n if (typeof bytes !== 'number' || bytes <= 0) return null;\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction pickIcon(att: CommentAttachment) {\n if (att.mimeType?.startsWith('image/')) return ImageIcon;\n if (att.mimeType === 'application/pdf') return FileText;\n if (att.mimeType?.startsWith('text/')) return FileText;\n if (att.mimeType) return File;\n return Paperclip;\n}\n\nexport const CommentAttachmentChip: FC<CommentAttachmentChipProps> = ({\n attachment,\n editable = false,\n onRemove,\n onRetry,\n accessors,\n strings: stringsProp,\n compact = false,\n className,\n}) => {\n const strings: CommentsStrings = {\n ...defaultCommentsStrings,\n ...stringsProp,\n };\n\n const url = accessors?.getMediaUrl?.(attachment) ?? attachment.url;\n const name =\n accessors?.getMediaName?.(attachment) ??\n attachment.name ??\n strings.attachmentFallback;\n const Icon = pickIcon(attachment);\n\n const isUploading = attachment.status === 'uploading';\n const isFailed = attachment.status === 'failed';\n const sizeLabel = formatBytes(attachment.size);\n\n const meta = isUploading\n ? strings.attachmentUploadingLabel +\n (typeof attachment.progress === 'number'\n ? ` ${Math.round(attachment.progress)}%`\n : '')\n : isFailed\n ? attachment.error ?? strings.attachmentFailedLabel\n : sizeLabel;\n\n const surface = cn(\n 'relative inline-flex min-w-0 max-w-[20rem] items-center gap-1.5 rounded-md',\n 'ring-1 ring-inset transition-colors',\n compact ? 'px-2 py-1 text-xs' : 'px-2.5 py-1 text-xs',\n isFailed\n ? 'bg-destructive/[0.04] ring-destructive/30 hover:bg-destructive/[0.08]'\n : 'bg-foreground/[0.03] ring-border/60 hover:bg-foreground/[0.06]',\n className,\n );\n\n const iconNode = isUploading ? (\n <Loader2\n className={cn('shrink-0 animate-spin text-muted-foreground', 'size-3.5')}\n aria-hidden\n />\n ) : (\n <Icon\n className={cn(\n 'shrink-0',\n 'size-3.5',\n isFailed ? 'text-destructive' : 'text-muted-foreground',\n )}\n aria-hidden\n />\n );\n\n const labelRow = (\n <span className=\"inline-flex min-w-0 items-baseline gap-1.5\">\n <Text\n tag=\"span\"\n size=\"xs\"\n weight=\"medium\"\n className={cn('truncate', isFailed && 'text-destructive')}\n >\n {name}\n </Text>\n {meta ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"shrink-0 tabular-nums\"\n >\n {meta}\n </Text>\n ) : null}\n </span>\n );\n\n const isInteractive = !!url && !isUploading && !isFailed;\n\n return (\n <div className={surface}>\n {iconNode}\n {isInteractive ? (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n className=\"inline-flex min-w-0 flex-1 items-baseline gap-1.5 hover:underline\"\n aria-label={strings.attachmentDownloadLabel}\n >\n {labelRow}\n </a>\n ) : (\n labelRow\n )}\n\n {isUploading && typeof attachment.progress === 'number' && (\n <div className=\"bg-primary/15 absolute bottom-0 left-2 right-2 h-px overflow-hidden rounded-full\">\n <div\n className=\"bg-primary h-full transition-[width]\"\n style={{\n width: `${Math.min(100, Math.max(0, attachment.progress))}%`,\n }}\n />\n </div>\n )}\n\n {isFailed && onRetry && (\n <button\n type=\"button\"\n onClick={() => onRetry(attachment.id)}\n className=\"text-destructive ring-destructive/30 hover:ring-destructive/60 shrink-0 rounded px-1.5 py-px text-xxs font-medium ring-1 ring-inset transition-colors\"\n >\n {strings.attachmentRetryLabel}\n </button>\n )}\n\n {editable && onRemove && (\n <button\n type=\"button\"\n onClick={() => onRemove(attachment.id)}\n className=\"text-muted-foreground hover:bg-foreground/10 hover:text-foreground -mr-0.5 inline-flex size-4 shrink-0 items-center justify-center rounded transition-colors focus-visible:ring-2 focus-visible:ring-ring/40\"\n aria-label={strings.attachmentRemoveLabel}\n title={strings.attachmentRemoveLabel}\n >\n <X className=\"size-3\" />\n </button>\n )}\n </div>\n );\n};\n","/**\n * useAttachmentUpload — manages a list of in-flight + uploaded\n * `CommentAttachment`s for a comment composer.\n *\n * Pass the consumer-supplied `onUpload` callback directly via the\n * `attachments` prop on `<Comments>` (or `<CommentComposer>`). Aborts\n * in-flight uploads when an attachment is removed.\n */\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n CommentAttachment,\n CommentsAttachmentsConfig,\n} from '../comments.types';\n\ninterface InFlightEntry {\n controller: AbortController;\n}\n\nexport interface UseAttachmentUploadOptions extends CommentsAttachmentsConfig {\n /** Initial attachments — useful when editing an existing comment. */\n initialAttachments?: ReadonlyArray<CommentAttachment>;\n /** Fires when the list of uploaded attachments changes. */\n onChange?: (attachments: ReadonlyArray<CommentAttachment>) => void;\n /** Fires when a validation or upload error happens. */\n onError?: (error: string) => void;\n}\n\nexport interface UseAttachmentUploadReturn {\n /** All attachments — uploading + uploaded + failed. */\n attachments: ReadonlyArray<CommentAttachment>;\n /** Subset of attachments that finished uploading. Use this in the form payload. */\n uploadedAttachments: ReadonlyArray<CommentAttachment>;\n /** True while at least one upload is in flight. */\n isUploading: boolean;\n /** Add files. Validates against `maxSize` / `maxFiles` first. */\n addFiles: (files: ReadonlyArray<File> | FileList) => void;\n /** Remove an attachment by id (aborts in-flight uploads). */\n removeAttachment: (id: string) => void;\n /** Retry a failed upload. */\n retryAttachment: (id: string) => void;\n /** Replace the list (used when editing or after submit). */\n setAttachments: (attachments: ReadonlyArray<CommentAttachment>) => void;\n /** Clear the list and abort everything in flight. */\n reset: () => void;\n}\n\nexport function useAttachmentUpload(\n options: UseAttachmentUploadOptions = {},\n): UseAttachmentUploadReturn {\n const {\n onUpload,\n maxSize,\n maxFiles,\n // `accept` is consumed by the surrounding `<input type=\"file\"\n // accept>` element, not here — destructuring is intentional\n // even though we don't reference it inside the hook.\n disabled,\n initialAttachments,\n onChange,\n onError,\n } = options;\n\n const [attachments, setAttachmentsState] = useState<CommentAttachment[]>(() =>\n initialAttachments ? [...initialAttachments] : [],\n );\n const inFlightRef = useRef<Map<string, InFlightEntry>>(new Map());\n const fileCacheRef = useRef<Map<string, File>>(new Map());\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const updateAttachment = useCallback(\n (id: string, patch: Partial<CommentAttachment>) => {\n setAttachmentsState((prev) =>\n prev.map((a) => (a.id === id ? { ...a, ...patch } : a)),\n );\n },\n [],\n );\n\n const setAttachments = useCallback(\n (next: ReadonlyArray<CommentAttachment>) => {\n setAttachmentsState([...next]);\n },\n [],\n );\n\n const beginUpload = useCallback(\n (id: string, file: File) => {\n if (!onUpload) return;\n const controller = new AbortController();\n inFlightRef.current.set(id, { controller });\n\n updateAttachment(id, {\n status: 'uploading',\n progress: 0,\n error: undefined,\n });\n\n const onProgress = (progress: number) => {\n updateAttachment(id, { progress });\n };\n\n onUpload({ file, onProgress, signal: controller.signal })\n .then((uploaded) => {\n inFlightRef.current.delete(id);\n updateAttachment(id, {\n ...uploaded,\n id,\n status: 'uploaded',\n progress: 100,\n error: undefined,\n });\n })\n .catch((err: unknown) => {\n inFlightRef.current.delete(id);\n if (controller.signal.aborted) {\n return;\n }\n const message =\n err instanceof Error ? err.message : 'Upload failed';\n updateAttachment(id, {\n status: 'failed',\n error: message,\n });\n onError?.(message);\n });\n },\n [onError, onUpload, updateAttachment],\n );\n\n const addFiles = useCallback(\n (filesInput: ReadonlyArray<File> | FileList) => {\n if (disabled || !onUpload) return;\n const files = Array.from(filesInput);\n if (files.length === 0) return;\n\n setAttachmentsState((prev) => {\n const next = [...prev];\n for (const file of files) {\n if (\n typeof maxFiles === 'number' &&\n next.length >= maxFiles\n ) {\n onError?.('Too many attachments.');\n break;\n }\n if (\n typeof maxSize === 'number' &&\n file.size > maxSize\n ) {\n onError?.('File is too large.');\n continue;\n }\n\n const id =\n typeof crypto !== 'undefined' && 'randomUUID' in crypto\n ? crypto.randomUUID()\n : `att-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n\n fileCacheRef.current.set(id, file);\n\n next.push({\n id,\n name: file.name,\n size: file.size,\n mimeType: file.type,\n status: 'uploading',\n progress: 0,\n });\n\n queueMicrotask(() => beginUpload(id, file));\n }\n return next;\n });\n },\n [beginUpload, disabled, maxFiles, maxSize, onError, onUpload],\n );\n\n const removeAttachment = useCallback((id: string) => {\n const entry = inFlightRef.current.get(id);\n if (entry) {\n entry.controller.abort();\n inFlightRef.current.delete(id);\n }\n fileCacheRef.current.delete(id);\n setAttachmentsState((prev) => prev.filter((a) => a.id !== id));\n }, []);\n\n const retryAttachment = useCallback(\n (id: string) => {\n const file = fileCacheRef.current.get(id);\n if (!file) return;\n beginUpload(id, file);\n },\n [beginUpload],\n );\n\n const reset = useCallback(() => {\n for (const entry of inFlightRef.current.values()) {\n entry.controller.abort();\n }\n inFlightRef.current.clear();\n fileCacheRef.current.clear();\n setAttachmentsState([]);\n }, []);\n\n useEffect(() => {\n onChangeRef.current?.(attachments);\n }, [attachments]);\n\n useEffect(() => {\n const inFlight = inFlightRef.current;\n return () => {\n for (const entry of inFlight.values()) {\n entry.controller.abort();\n }\n };\n }, []);\n\n const uploadedAttachments = useMemo(\n () => attachments.filter((a) => a.status === 'uploaded' || !a.status),\n [attachments],\n );\n\n const isUploading = useMemo(\n () => attachments.some((a) => a.status === 'uploading'),\n [attachments],\n );\n\n return {\n attachments,\n uploadedAttachments,\n isUploading,\n addFiles,\n removeAttachment,\n retryAttachment,\n setAttachments,\n reset,\n };\n}\n","/**\n * CommentComposer — TipTap-backed rich text editor with inline reference\n * picker and attachment uploader. Default composer for `<Comments>`.\n *\n * Mention/reference handling is delegated to the shared\n * `features/mentions` module: `useMentions` drives picker state +\n * caret-trigger detection, `<MentionPicker>` renders the popover, and\n * `<MentionChip>` renders draft-list chips. The same primitives power\n * inline references in `features/event-log`.\n */\nimport { AtSign, Loader2, Paperclip, Send, X } from 'lucide-react';\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Popover, PopoverTrigger } from '@/components/base/popover';\nimport { Text } from '@/components/typography';\nimport {\n RichTextEditor,\n type RichTextEditorHandle,\n type RichTextEditorToolbarItem,\n} from '@/components/features/rich-text-editor/rich-text-editor';\nimport {\n MentionInlineSuggestions,\n MentionPicker,\n parseMentionsFromHtml,\n useMentions,\n} from '@/components/features/mentions';\nimport { useResolvedStrings } from '../comments-provider';\nimport { interpolateString } from '../comments.strings';\nimport type {\n CommentComposerProps,\n CommentFormValues,\n} from '../comments.types';\nimport { CommentAttachmentChip } from './comment-attachment-chip';\nimport { useAttachmentUpload } from '../hooks/use-attachment-upload';\n\nexport interface CommentComposerHandle {\n focus(): void;\n clear(): void;\n /** Imperatively set the draft body. */\n setBody(html: string): void;\n}\n\nfunction hasMeaningfulContent(html: string): boolean {\n if (!html || typeof html !== 'string') return false;\n const text = html.replace(/<[^>]*>/g, '').trim();\n return text.length > 0;\n}\n\nexport const CommentComposer = forwardRef<\n CommentComposerHandle,\n CommentComposerProps\n>(function CommentComposer(\n {\n context,\n canComment = true,\n isSubmitting = false,\n errors,\n resetKey = 0,\n onSubmit,\n onCancel,\n editingComment,\n strings: stringsProp,\n resources: resourcesProp,\n onResourceSearch: onResourceSearchProp,\n attachments: attachmentsProp,\n initialValues,\n autoFocus = false,\n inlineSubmit = true,\n placeholder,\n },\n ref,\n) {\n const strings = useResolvedStrings(stringsProp);\n\n const resources = resourcesProp;\n const onResourceSearch = onResourceSearchProp;\n const attachmentsConfig = attachmentsProp;\n\n const editorRef = useRef<RichTextEditorHandle>(null);\n const [body, setBody] = useState<string>(\n () => initialValues?.content ?? editingComment?.content ?? '',\n );\n const [contentError, setContentError] = useState<string | null>(null);\n\n /**\n * Mentions state — picker + caret-trigger detection. The hook reads\n * the editor handle via the ref we pass; on suggestion select it\n * inserts the chip and replaces the trigger range automatically.\n */\n const mentions = useMentions({\n resources,\n onResourceSearch,\n editorRef,\n initialMentions:\n initialValues?.references ?? editingComment?.references,\n });\n\n const attachmentUpload = useAttachmentUpload({\n ...attachmentsConfig,\n initialAttachments: initialValues?.attachments ?? undefined,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => editorRef.current?.focus(),\n clear: () => {\n editorRef.current?.clear();\n mentions.reset();\n attachmentUpload.reset();\n setContentError(null);\n },\n setBody: (html) => {\n editorRef.current?.setHTML(html);\n },\n }),\n [attachmentUpload, mentions],\n );\n\n // Reset on context change / resetKey bump\n useEffect(() => {\n editorRef.current?.setHTML(initialValues?.content ?? '');\n mentions.setMentions(initialValues?.references ?? []);\n attachmentUpload.setAttachments(initialValues?.attachments ?? []);\n setContentError(null);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [context.id, context.type, resetKey]);\n\n // Sync editing comment payload\n useEffect(() => {\n if (!editingComment) return;\n editorRef.current?.setHTML(editingComment.content ?? '');\n mentions.setMentions(editingComment.references ?? []);\n const list = (editingComment.attachments ?? editingComment.media ?? []).filter(\n (a): a is NonNullable<typeof a> => !!a,\n );\n attachmentUpload.setAttachments(list);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editingComment?.id]);\n\n // Surface server-side errors\n useEffect(() => {\n if (errors?.content) {\n setContentError(errors.content);\n }\n }, [errors]);\n\n const handleSubmit = (event?: React.FormEvent) => {\n event?.preventDefault();\n const html = editorRef.current?.getHTML() ?? body;\n if (!hasMeaningfulContent(html)) {\n setContentError(strings.invalidContent);\n return;\n }\n setContentError(null);\n\n const values: CommentFormValues = {\n content: html,\n commentableId: context.id,\n commentableType: context.type,\n contentType: 'html',\n references: mentions.mentions,\n attachments: attachmentUpload.uploadedAttachments,\n editingId: editingComment?.id,\n };\n\n onSubmit(values);\n };\n\n const fileInputRef = useRef<HTMLInputElement>(null);\n const handleAttachmentClick = () => fileInputRef.current?.click();\n const handleFiles = (files: FileList | null) => {\n if (!files) return;\n attachmentUpload.addFiles(files);\n };\n\n const hasAttachments = attachmentUpload.attachments.length > 0;\n const isEditing = !!editingComment;\n\n const submitLabel = isSubmitting\n ? strings.composerSubmitting\n : isEditing\n ? strings.composerSave\n : strings.composerSubmit;\n\n const eyebrow: ReactNode = isEditing ? (\n <ComposerEyebrow\n label={strings.composerEditingEyebrow}\n closeLabel={strings.composerCancel}\n onClose={onCancel}\n />\n ) : null;\n\n const extraToolbarItems = useMemo<ReadonlyArray<RichTextEditorToolbarItem>>(() => {\n const items: RichTextEditorToolbarItem[] = [];\n if (resources && Object.keys(resources).length > 0) {\n items.push({\n id: 'reference',\n icon: AtSign,\n label: strings.composerReferenceLabel,\n onClick: () => mentions.setPickerOpen(true),\n });\n }\n if (attachmentsConfig?.onUpload && !attachmentsConfig.disabled) {\n items.push({\n id: 'attachment',\n icon: Paperclip,\n label: strings.composerAttachmentLabel,\n onClick: handleAttachmentClick,\n });\n }\n return items;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n resources,\n attachmentsConfig?.onUpload,\n attachmentsConfig?.disabled,\n strings.composerReferenceLabel,\n strings.composerAttachmentLabel,\n ]);\n\n if (!canComment) return null;\n\n const submitButton = (\n <Button\n type=\"button\"\n onClick={() => handleSubmit()}\n disabled={isSubmitting || attachmentUpload.isUploading}\n icon={isSubmitting ? Loader2 : Send}\n >\n {submitLabel}\n </Button>\n );\n\n const cancelButton = (isEditing || onCancel) ? (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n onClick={onCancel}\n disabled={isSubmitting}\n >\n {strings.composerCancel}\n </Button>\n ) : null;\n\n // Mentions live as inline `<span class=\"rsc-mention\" contenteditable=\"false\">`\n // chips inside the editor body — they're visible, dismissible (single\n // backspace deletes the whole span), and the HTML→mentions sync keeps\n // `mentions.mentions` aligned automatically. Rendering them again as a\n // chip-list below the editor was redundant and confusing.\n\n const attachmentChips = hasAttachments ? (\n <div className=\"flex flex-wrap items-center gap-1.5\">\n {attachmentUpload.attachments.map((attachment) => (\n <CommentAttachmentChip\n key={attachment.id}\n attachment={attachment}\n editable\n onRemove={attachmentUpload.removeAttachment}\n onRetry={attachmentUpload.retryAttachment}\n strings={stringsProp}\n />\n ))}\n </div>\n ) : null;\n\n const footerSlot = hasAttachments ? attachmentChips : null;\n\n const trailingSubmit = inlineSubmit !== false ? submitButton : null;\n const showFooterRow = inlineSubmit === false || isEditing;\n\n return (\n <form onSubmit={handleSubmit} className=\"space-y-2\">\n {eyebrow}\n\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n hidden\n accept={attachmentsConfig?.accept}\n onChange={(e) => {\n handleFiles(e.target.files);\n e.target.value = '';\n }}\n />\n\n {/* Manual button-click flow: regular popover anchored to the\n hidden trigger. The inline-trigger flow uses the panel\n rendered below — no focus stealing while the user types. */}\n {!mentions.triggerActive && (\n <Popover open={mentions.pickerOpen} onOpenChange={mentions.setPickerOpen}>\n <PopoverTrigger\n render={\n <button\n type=\"button\"\n className=\"sr-only\"\n tabIndex={-1}\n />\n }\n >\n {strings.composerReferenceLabel}\n </PopoverTrigger>\n <MentionPicker\n open={mentions.pickerOpen}\n activeKind={mentions.activeKind}\n setActiveKind={mentions.setActiveKind}\n kinds={mentions.kinds}\n resources={resources}\n query={mentions.query}\n setQuery={mentions.setQuery}\n suggestions={mentions.suggestions}\n isLoading={mentions.isLoading}\n onSelect={mentions.pickSuggestion}\n strings={{\n title: strings.composerReferenceMenuTitle,\n searchPlaceholder: strings.composerReferenceSearchPlaceholder,\n empty: strings.composerReferenceEmpty,\n loading: strings.composerReferenceLoading,\n }}\n />\n </Popover>\n )}\n\n <div className=\"relative\">\n <RichTextEditor\n ref={editorRef}\n value={body}\n onChange={(html) => {\n setBody(html);\n // Sync the draft's mentions list with what's\n // actually present in the HTML — when the user\n // backspaces a chip span out of the body, the\n // chip-list below shrinks too. We merge with\n // the previously-known list so consumer-supplied\n // `href` / `data` payloads survive parsing.\n const parsed = parseMentionsFromHtml<string>(html);\n const previous = mentions.mentions;\n const previousIds = previous.map((m) => m.id).join('|');\n const currentIds = parsed.map((m) => m.id).join('|');\n if (previousIds !== currentIds) {\n const byId = new Map(previous.map((m) => [m.id, m]));\n const merged = parsed.map(\n (p) => byId.get(p.id) ?? p,\n );\n mentions.setMentions(merged);\n }\n }}\n placeholder={placeholder ?? strings.composerPlaceholder}\n minHeight=\"3rem\"\n autoFocus={autoFocus || isEditing}\n extraToolbarItems={extraToolbarItems}\n toolbarTrailing={trailingSubmit}\n footerSlot={footerSlot}\n onCaretChange={mentions.handleCaretChange}\n />\n\n <MentionInlineSuggestions\n open={mentions.triggerActive && mentions.pickerOpen}\n activeKind={mentions.activeKind}\n setActiveKind={mentions.setActiveKind}\n onManualKindChange={() => mentions.setManualKindOverride(true)}\n kinds={mentions.kinds}\n resources={resources}\n query={mentions.query}\n suggestions={mentions.suggestions}\n suggestionsByKind={mentions.suggestionsByKind}\n isLoading={mentions.isLoading}\n onSelect={mentions.pickSuggestion}\n strings={{\n title: strings.composerReferenceMenuTitle,\n empty: strings.composerReferenceEmpty,\n loading: strings.composerReferenceLoading,\n }}\n />\n </div>\n\n {contentError && (\n <Text size=\"xs\" type=\"error\">\n {contentError}\n </Text>\n )}\n\n {showFooterRow && (\n <div className=\"flex items-center justify-end gap-2\">\n {cancelButton}\n {submitButton}\n </div>\n )}\n </form>\n );\n});\n\n/* ------------------------------------------------------------------ */\n/* ComposerEyebrow */\n/* ------------------------------------------------------------------ */\n\nfunction ComposerEyebrow({\n label,\n closeLabel,\n onClose,\n}: {\n label: string;\n closeLabel: string;\n onClose?: () => void;\n}) {\n return (\n <div className=\"bg-muted/40 ring-border/60 flex items-center justify-between rounded px-2.5 py-1.5 ring-1 ring-inset\">\n <Text size=\"xxs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wide\">\n {label}\n </Text>\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"text-muted-foreground hover:text-foreground inline-flex size-4 items-center justify-center rounded transition-colors\"\n aria-label={closeLabel}\n >\n <X className=\"size-3\" />\n </button>\n ) : null}\n </div>\n );\n}\n\n/** Helper export for templated reply eyebrow. */\nexport function makeReplyEyebrow(template: string, name?: string): string {\n return interpolateString(template, { name: name ?? '' });\n}\n","/**\n * CommentEmpty — default empty state for the timeline. Replaceable via\n * the `emptySlot` prop on `<Comments>` / `<CommentTimeline>`.\n */\nimport { MessageCircle } from 'lucide-react';\nimport type { FC, ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useResolvedStrings } from '../comments-provider';\nimport type { CommentsStrings } from '../comments.strings';\n\nexport interface CommentEmptyProps {\n strings?: Partial<CommentsStrings>;\n icon?: ReactNode;\n className?: string;\n}\n\nexport const CommentEmpty: FC<CommentEmptyProps> = ({\n strings: stringsProp,\n icon,\n className,\n}) => {\n const strings = useResolvedStrings(stringsProp);\n\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center py-8 text-center',\n className,\n )}\n >\n <div className=\"bg-muted/50 mb-3 flex h-12 w-12 items-center justify-center rounded-full\">\n {icon ?? (\n <MessageCircle className=\"text-muted-foreground/60 h-5 w-5\" />\n )}\n </div>\n <Text weight=\"medium\">\n {strings.empty}\n </Text>\n {strings.emptyHint ? (\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1 max-w-[28ch]\">\n {strings.emptyHint}\n </Text>\n ) : null}\n </div>\n );\n};\n","import type { ReactNode } from 'react';\nimport { Fragment, createElement } from 'react';\n\nimport { Heading, Text } from '@/components/typography';\nimport type { HeadingProps } from '@/components/typography';\nimport { MentionContent } from '@/components/features/mentions';\n\nimport type {\n CommentData,\n CommentUser,\n CommentsConfig,\n CommentsSlots,\n} from '../comments.types';\n\ninterface CommentContentProps<TResource extends string = string> {\n comment: CommentData<CommentUser, unknown, TResource>;\n /** Resource registry — passed through to `<MentionContent>`. */\n resources?: CommentsConfig<CommentUser, unknown, TResource>['resources'];\n renderReference?: CommentsSlots<\n CommentUser,\n unknown,\n TResource\n >['renderReference'];\n /** Optional sanitizer applied to HTML before rendering. */\n sanitizer?: (html: string) => string;\n}\n\n/**\n * `renderCommentContent` — backwards-compatible export that renders only\n * the comment body text (no references resolution). Use the\n * `<CommentContent>` component below for the full feature surface.\n */\nexport function renderCommentContent<TResource extends string = string>(\n comment: CommentData<CommentUser, unknown, TResource>,\n): ReactNode {\n return <CommentContent comment={comment} />;\n}\n\nexport function CommentContent<TResource extends string = string>(\n props: CommentContentProps<TResource>,\n): ReactNode {\n const { comment, resources, renderReference, sanitizer } = props;\n const contentType =\n comment.contentType ??\n (comment as Record<string, unknown>).content_type ??\n 'text';\n\n if (contentType === 'rich') {\n return renderRichContent(comment.content);\n }\n\n if (contentType === 'html') {\n return (\n <MentionContent<TResource>\n html={comment.content ?? ''}\n mentions={comment.references}\n resources={resources}\n renderMention={renderReference}\n sanitizer={sanitizer}\n />\n );\n }\n\n const plainContent = decodeQuotedString(comment.content ?? '');\n\n return (\n <Text className=\"whitespace-pre-line\">\n {plainContent}\n </Text>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Rich-block renderer (legacy \"rich\" content type) */\n/* ------------------------------------------------------------------ */\n\nfunction renderRichContent(rawContent: string | null | undefined): ReactNode {\n if (!rawContent) return null;\n\n try {\n const parsed = JSON.parse(rawContent) as {\n blocks?: Array<{ id?: string; type: string; data?: Record<string, unknown> }>;\n };\n\n if (!parsed || !Array.isArray(parsed.blocks) || parsed.blocks.length === 0) {\n return null;\n }\n\n return (\n <div className=\"prose prose-sm prose-p:my-0.5 prose-headings:my-1 prose-a:text-primary prose-a:no-underline hover:prose-a:underline max-w-none space-y-1\">\n {parsed.blocks.map((block, index) => (\n <Fragment key={block.id ?? `${block.type}-${index}`}>\n {renderRichBlock(block)}\n </Fragment>\n ))}\n </div>\n );\n } catch {\n const decoded = decodeQuotedString(rawContent);\n return (\n <Text className=\"whitespace-pre-line\">\n {decoded}\n </Text>\n );\n }\n}\n\nfunction renderRichBlock(block: { type: string; data?: Record<string, unknown> }): ReactNode {\n const data = block.data ?? {};\n\n switch (block.type) {\n case 'paragraph': {\n const raw = String(data.text ?? '').trim();\n if (!raw) return null;\n return <Text asHTML content={raw} />;\n }\n case 'header': {\n const text = stripHtml(String(data.text ?? ''));\n const level = Number(data.level ?? 3);\n if (!text) return null;\n const safeLevel = Math.min(Math.max(level, 1), 6);\n return createElement(\n Heading,\n { tag: `h${safeLevel}` as HeadingProps['tag'] },\n text,\n );\n }\n case 'list': {\n const items = Array.isArray(data.items) ? data.items : [];\n const sanitizedItems = items\n .map((item) => stripHtml(String(item ?? '')))\n .filter((item) => item.length > 0);\n\n if (sanitizedItems.length === 0) return null;\n\n if (data.style === 'ordered') {\n return (\n <ol className=\"ml-6 list-decimal space-y-1 text-sm\">\n {sanitizedItems.map((item, index) => (\n <li key={`${item}-${index}`}>{item}</li>\n ))}\n </ol>\n );\n }\n\n return (\n <ul className=\"ml-6 list-disc space-y-1 text-sm\">\n {sanitizedItems.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n );\n }\n case 'quote': {\n const text = String(data.text ?? '').trim();\n if (!text) return null;\n const caption = stripHtml(String(data.caption ?? ''));\n return (\n <blockquote className=\"border-muted text-muted-foreground border-l-2 pl-3 text-sm italic\">\n <Text asHTML content={text} />\n {caption.length > 0 && (\n <cite className=\"text-muted-foreground/80 mt-1 block text-xs not-italic\">\n — {caption}\n </cite>\n )}\n </blockquote>\n );\n }\n case 'delimiter':\n return (\n <div\n className=\"border-muted my-4 border-b border-dashed\"\n aria-hidden=\"true\"\n />\n );\n default: {\n const text = stripHtml(String(data.text ?? ''));\n if (!text) return null;\n return (\n <Text className=\"whitespace-pre-line\">\n {text}\n </Text>\n );\n }\n }\n}\n\nfunction stripHtml(value: string): string {\n return value.replace(/<[^>]*>/g, '').trim();\n}\n\nfunction decodeQuotedString(value: string | null | undefined): string {\n if (typeof value !== 'string') return '';\n const trimmed = value.trim();\n if (trimmed === '') return '';\n if (trimmed.startsWith('{') || trimmed.startsWith('[')) return trimmed;\n try {\n const parsed = JSON.parse(trimmed);\n if (typeof parsed === 'string') return parsed;\n } catch {\n // ignore\n }\n if (trimmed.startsWith('\"') && trimmed.endsWith('\"')) {\n return trimmed.slice(1, -1);\n }\n return trimmed;\n}\n","import { formatDistanceToNow } from 'date-fns';\nimport {\n CornerDownRight,\n Pencil,\n Pin,\n Smile,\n Trash2,\n} from 'lucide-react';\nimport type { FC } from 'react';\nimport { memo, useMemo } from 'react';\n\nimport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n} from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/base/display/tooltip';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport {\n useResolvedAccessors,\n useResolvedStrings,\n} from '../comments-provider';\nimport type {\n CommentAttachment,\n CommentItemProps,\n} from '../comments.types';\nimport { CommentAttachmentChip } from './comment-attachment-chip';\nimport { CommentContent } from './comment-content';\n\nconst FALLBACK_INITIAL = '?';\n\nconst defaultGetMediaUrl = (m: CommentAttachment | null | undefined) => m?.url;\nconst defaultGetMediaName = (m: CommentAttachment | null | undefined) => m?.name;\nconst defaultGetStatusLabel = (s: string) =>\n s.charAt(0).toUpperCase() + s.slice(1).replace(/_/g, ' ');\nconst defaultFormatRelativeTime = (iso: string) => {\n try {\n return formatDistanceToNow(new Date(iso), { addSuffix: true });\n } catch {\n return '—';\n }\n};\n\nexport const CommentItem = memo(function CommentItem<TResource extends string = string>({\n comment,\n canModerate,\n onDelete,\n onPinToggle,\n onReact,\n onReply,\n strings: stringsProp,\n getMediaUrl,\n getMediaName,\n getStatusLabel,\n formatRelativeTime,\n resources,\n renderAttachment,\n renderReference,\n}: CommentItemProps<import('../comments.types').CommentUser, unknown, TResource>) {\n const strings = useResolvedStrings(stringsProp);\n const accessors = useResolvedAccessors({\n getMediaUrl,\n getMediaName,\n getStatusLabel,\n formatRelativeTime,\n });\n\n const resolvedGetMediaUrl = accessors.getMediaUrl ?? defaultGetMediaUrl;\n const resolvedGetMediaName = accessors.getMediaName ?? defaultGetMediaName;\n const resolvedGetStatusLabel =\n accessors.getStatusLabel ?? defaultGetStatusLabel;\n const resolvedFormatRelativeTime =\n accessors.formatRelativeTime ?? defaultFormatRelativeTime;\n\n const authorName = comment.user?.name ?? strings.fallbackAuthor;\n const avatarUrl = comment.user?.avatar ?? undefined;\n\n const relativeTime = useMemo(() => {\n if (!comment.createdAt) return '—';\n return resolvedFormatRelativeTime(comment.createdAt);\n }, [comment.createdAt, resolvedFormatRelativeTime]);\n\n const fallbackInitial = useMemo(() => {\n if (!authorName) return FALLBACK_INITIAL;\n const trimmed = authorName.trim();\n return trimmed === ''\n ? FALLBACK_INITIAL\n : trimmed.charAt(0).toUpperCase();\n }, [authorName]);\n\n const tagList = useMemo(() => {\n if (Array.isArray(comment.tagsArray)) {\n return comment.tagsArray.filter(\n (tag): tag is string => typeof tag === 'string',\n );\n }\n if (comment.tagsArray && typeof comment.tagsArray === 'object') {\n return Object.values(comment.tagsArray).filter(\n (value): value is string => typeof value === 'string',\n );\n }\n return [];\n }, [comment.tagsArray]);\n\n const attachments = useMemo(() => {\n const list = comment.attachments ?? comment.media ?? [];\n return list.filter(\n (a): a is CommentAttachment => !!a && typeof a === 'object',\n );\n }, [comment.attachments, comment.media]);\n\n const reactions = comment.reactions ?? [];\n\n const isPinned = comment.isPinned === true;\n const isEdited = comment.isEdited === true;\n const showStatus = comment.status && comment.status !== 'active';\n const statusLabel =\n showStatus && comment.status ? resolvedGetStatusLabel(comment.status) : null;\n const canDeleteComment =\n comment.canDelete === true || canModerate === true;\n const canEditComment = comment.canEdit === true || canModerate === true;\n\n const hasAttachments = attachments.length > 0;\n\n return (\n <article\n className={cn(\n 'group relative overflow-hidden rounded-lg border transition-colors',\n 'border-border/60 bg-card hover:bg-muted/30 px-3 py-2.5',\n )}\n data-comment-id={comment.id}\n >\n <div className=\"flex items-start gap-3\">\n <Avatar className=\"mt-0.5 h-8 w-8 shrink-0\">\n {!!avatarUrl && (\n <AvatarImage src={avatarUrl} alt={authorName} />\n )}\n <AvatarFallback className=\"bg-muted text-muted-foreground text-xs font-medium\">\n {fallbackInitial}\n </AvatarFallback>\n </Avatar>\n\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex min-w-0 items-baseline gap-2\">\n <Text\n tag=\"span\"\n weight=\"semibold\"\n className=\"truncate\"\n >\n {authorName}\n </Text>\n\n {!!isPinned && (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger render={<span className=\"inline-flex shrink-0 self-center\" />}>\n <Pin className=\"text-warning size-3\" aria-hidden />\n </TooltipTrigger>\n <TooltipContent\n side=\"top\"\n className=\"text-xs\"\n >\n {strings.pinned}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n\n <Text\n tag=\"span\"\n size=\"xs\"\n type=\"secondary\"\n className=\"shrink-0 tabular-nums\"\n >\n {relativeTime}\n </Text>\n\n {!!isEdited && (\n <Text\n tag=\"span\"\n size=\"xs\"\n type=\"secondary\"\n className=\"shrink-0\"\n >\n {strings.edited}\n </Text>\n )}\n\n {!!showStatus && !!statusLabel && (\n <Badge variant=\"secondary\" className=\"self-center uppercase tracking-wide\">\n {statusLabel}\n </Badge>\n )}\n </div>\n\n <div className=\"mt-1 text-sm leading-relaxed\">\n <CommentContent\n comment={comment}\n resources={resources}\n renderReference={renderReference}\n />\n </div>\n\n {tagList.length > 0 && (\n <div className=\"mt-2 flex flex-wrap gap-1.5\">\n {tagList.map((tag) => (\n <Badge key={tag} variant=\"secondary\" className=\"uppercase tracking-wide\">\n {tag}\n </Badge>\n ))}\n </div>\n )}\n\n {hasAttachments && (\n <div className=\"mt-2 flex flex-wrap gap-1.5\">\n {attachments.map((attachment) => {\n if (renderAttachment) {\n return (\n <div key={attachment.id ?? attachment.name}>\n {renderAttachment(attachment)}\n </div>\n );\n }\n return (\n <CommentAttachmentChip\n key={attachment.id ?? attachment.name}\n attachment={attachment}\n accessors={{\n getMediaUrl: resolvedGetMediaUrl,\n getMediaName: resolvedGetMediaName,\n }}\n strings={stringsProp}\n />\n );\n })}\n </div>\n )}\n\n {reactions.length > 0 && (\n <div className=\"mt-2 flex flex-wrap items-center gap-1\">\n {reactions.map((reaction) => (\n <button\n key={reaction.emoji}\n type=\"button\"\n onClick={() =>\n onReact && comment.id\n ? onReact(comment.id, reaction.emoji)\n : undefined\n }\n title={reaction.users?.join(', ')}\n className=\"rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40\"\n >\n <Badge\n variant={reaction.mine ? 'primary' : 'secondary'}\n className=\"cursor-pointer transition-colors hover:opacity-90\"\n >\n <span aria-hidden className=\"leading-none\">\n {reaction.emoji}\n </span>\n <span className=\"tabular-nums\">{reaction.count}</span>\n </Badge>\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Trailing action cluster — single low-contrast group, hover/focus revealed. */}\n <div\n className={cn(\n 'shrink-0 self-start opacity-0 transition-opacity',\n 'group-hover:opacity-100 focus-within:opacity-100',\n '-mr-1 inline-flex items-center gap-0.5',\n )}\n >\n {!!onReply && (\n <Button\n type=\"button\"\n size=\"icon-xs\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n onClick={() =>\n comment.id && onReply(comment.id)\n }\n title={strings.replyLabel}\n aria-label={strings.replyLabel}\n >\n <CornerDownRight className=\"size-3.5\" />\n </Button>\n )}\n {!!onReact && (\n <Button\n type=\"button\"\n size=\"icon-xs\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n onClick={() =>\n comment.id && onReact(comment.id, '👍')\n }\n title={strings.addReactionLabel}\n aria-label={strings.addReactionLabel}\n >\n <Smile className=\"size-3.5\" />\n </Button>\n )}\n {!!onPinToggle && canModerate && (\n <Button\n type=\"button\"\n size=\"icon-xs\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n onClick={() => onPinToggle(comment)}\n title={isPinned ? strings.unpinLabel : strings.pinLabel}\n aria-label={isPinned ? strings.unpinLabel : strings.pinLabel}\n >\n <Pin\n className={cn(\n 'size-3.5',\n isPinned && 'text-warning',\n )}\n />\n </Button>\n )}\n {!!canEditComment && !!comment.id && (\n <Button\n type=\"button\"\n size=\"icon-xs\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n title={strings.editLabel}\n aria-label={strings.editLabel}\n >\n <Pencil className=\"size-3.5\" />\n </Button>\n )}\n {!!canDeleteComment &&\n !!onDelete &&\n !!comment.id && (\n <Button\n type=\"button\"\n size=\"icon-xs\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n className=\"hover:bg-destructive/10 hover:text-destructive\"\n onClick={() =>\n onDelete(comment.id as string)\n }\n title={strings.deleteLabel}\n aria-label={strings.deleteLabel}\n >\n <Trash2 className=\"size-3.5\" />\n </Button>\n )}\n </div>\n </div>\n </article>\n );\n}) as <TResource extends string = string>(\n props: CommentItemProps<import('../comments.types').CommentUser, unknown, TResource>,\n) => ReturnType<FC>;\n","import type { FC } from 'react';\n\nimport type { CommentTimelineProps, CommentUser } from '../comments.types';\nimport { CommentEmpty } from './comment-empty';\nimport { CommentItem } from './comment-item';\n\nexport const CommentTimeline = function CommentTimeline<\n TResource extends string = string,\n>({\n comments,\n canModerate,\n onDelete,\n onPinToggle,\n onReact,\n onReply,\n strings: stringsProp,\n getMediaUrl,\n getMediaName,\n getStatusLabel,\n formatRelativeTime,\n resources,\n renderItem,\n renderAttachment,\n renderReference,\n emptySlot,\n}: CommentTimelineProps<CommentUser, unknown, TResource>) {\n if (!comments.length) {\n return (\n <>\n {emptySlot ?? <CommentEmpty strings={stringsProp} />}\n </>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n {comments.map((comment, index) => {\n const defaultItem = (\n <CommentItem\n comment={comment}\n canModerate={canModerate}\n onDelete={onDelete}\n onPinToggle={onPinToggle}\n onReact={onReact}\n onReply={onReply}\n strings={stringsProp}\n getMediaUrl={getMediaUrl}\n getMediaName={getMediaName}\n getStatusLabel={getStatusLabel}\n formatRelativeTime={formatRelativeTime}\n resources={resources}\n renderAttachment={renderAttachment}\n renderReference={renderReference}\n />\n );\n\n if (renderItem) {\n return (\n <div key={comment.id ?? `comment-${index}`}>\n {renderItem({\n comment,\n canModerate: canModerate ?? false,\n onDelete,\n defaultItem,\n })}\n </div>\n );\n }\n\n return (\n <div key={comment.id ?? `comment-${index}`}>\n {defaultItem}\n </div>\n );\n })}\n </div>\n );\n} as <TResource extends string = string>(\n props: CommentTimelineProps<CommentUser, unknown, TResource>,\n) => ReturnType<FC>;\n","/**\n * Comments — top-level entry for the Comments feature.\n *\n * Composes the composer + timeline + empty state behind a single API.\n * Generic in `<TUser, TMeta, TResource>` so consumers can type their\n * domain (user shape, custom meta payload, resource-kind union).\n *\n * Per-mount wiring (callbacks, resources, accessors) flows as direct\n * props. Library-wide display defaults (composer position, etc.) come\n * from `<UIProvider>` — see `@/lib/ui-provider`. Slots, render-props,\n * and the headless `useComments()` hook cover the composability\n * spectrum.\n *\n * `CommentsCard` is exported as a back-compat alias for the previous\n * name; the API shape is identical.\n */\nimport { useCallback, useState } from 'react';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { useCommentsConfig as useCommentsUIDefaults } from '@/lib/ui-provider';\n\nimport { useResolvedStrings } from './comments-provider';\nimport type {\n CommentData,\n CommentFormValues,\n CommentSubmitHelpers,\n CommentUser,\n CommentsProps,\n} from './comments.types';\nimport { CommentComposer } from './partials/comment-composer';\nimport { CommentEmpty } from './partials/comment-empty';\nimport { CommentTimeline } from './partials/comment-timeline';\n\nimport { cn } from '@/lib/utils';\nexport function Comments<\n TUser extends CommentUser = CommentUser,\n TMeta = unknown,\n TResource extends string = string,\n>(props: CommentsProps<TUser, TMeta, TResource>) {\n const ui = useCommentsUIDefaults();\n\n const composerPosition =\n props.composerPosition ?? ui.composerPosition ?? 'top';\n\n const canComment = props.canComment ?? false;\n const canModerate = props.canModerate ?? false;\n\n const onSubmit = props.onSubmit;\n const onDelete = props.onDelete;\n const onPinToggle = props.onPinToggle;\n const onReact = props.onReact;\n const onReply = props.onReply;\n\n const resources = props.resources;\n const attachments = props.attachments;\n\n const strings = useResolvedStrings(props.strings);\n const cardTitle = props.title === undefined ? strings.title : props.title;\n\n const [formErrors, setFormErrors] = useState<Record<string, string>>({});\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [resetKey, setResetKey] = useState(0);\n\n const submitHelpers: CommentSubmitHelpers = {\n setErrors: (errors) => setFormErrors(errors),\n reset: () => {\n setResetKey((k) => k + 1);\n setFormErrors({});\n setIsSubmitting(false);\n },\n setSubmitting: setIsSubmitting,\n };\n\n const handleSubmit = useCallback(\n (values: CommentFormValues<TResource>) => {\n if (!onSubmit) return;\n setIsSubmitting(true);\n setFormErrors({});\n onSubmit(values, submitHelpers);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onSubmit],\n );\n\n const composer = props.composerSlot ?? (\n canComment ? (\n <CommentComposer\n context={props.context}\n canComment={canComment}\n isSubmitting={isSubmitting}\n errors={formErrors}\n resetKey={resetKey}\n /*\n * Generic-erasure boundary: `<Comments<TResource>>` is\n * generic but `<CommentComposer>` types its props\n * against the default-string kind. Shapes are\n * structurally identical — only the kind union differs.\n */\n onSubmit={\n handleSubmit as (values: CommentFormValues) => void\n }\n strings={props.strings}\n resources={resources as never}\n attachments={attachments}\n />\n ) : null\n );\n\n /*\n * Same generic-erasure boundary as the composer block above:\n * `<Comments<TUser, TMeta, TResource>>` is generic, but\n * `<CommentTimeline>` types its `comments` and `onPinToggle` props\n * against `CommentData<CommentUser, unknown, TResource>` (default\n * `TUser`/`TMeta`). The shapes are structurally identical — `TUser`\n * narrows the author union and `TMeta` narrows the metadata payload,\n * neither of which the timeline reads — so the widening cast is\n * safe. Keep the cast localised here; do not propagate into the\n * timeline body.\n */\n const timeline = (\n <CommentTimeline\n comments={props.comments as ReadonlyArray<CommentData<CommentUser, unknown, TResource>>}\n canModerate={canModerate}\n onDelete={onDelete}\n onPinToggle={onPinToggle as (c: CommentData<CommentUser, unknown, TResource>) => void}\n onReact={onReact}\n onReply={onReply}\n strings={props.strings}\n getMediaUrl={props.getMediaUrl}\n getMediaName={props.getMediaName}\n getStatusLabel={props.getStatusLabel}\n formatRelativeTime={props.formatRelativeTime}\n resources={resources}\n // `renderItem` is generic over the consumer's `<TUser, TMeta,\n // TResource>` triple; `<CommentTimeline>` types it against\n // the default `CommentUser, unknown, string` triple. The\n // structural signature is the same — boundary cast only.\n renderItem={props.renderItem as never}\n renderAttachment={props.renderAttachment}\n renderReference={props.renderReference}\n emptySlot={\n props.emptySlot ?? <CommentEmpty strings={props.strings} />\n }\n />\n );\n\n const composerBlock = composer ? <div>{composer}</div> : null;\n\n const inner = (\n <div className=\"flex flex-col gap-4\">\n {props.headerSlot}\n {composerPosition === 'top' && composerBlock}\n {timeline}\n {composerPosition === 'bottom' && composerBlock}\n {props.footerSlot}\n </div>\n );\n\n if (props.bare) {\n return inner;\n }\n\n return (\n <SmartCard\n title={cardTitle === false ? undefined : cardTitle}\n description={strings.subtitle || undefined}\n padding=\"sm\"\n className={cn('comments--component', props.className)}\n >\n {inner}\n </SmartCard>\n );\n}\n\n/** Back-compat alias — `CommentsCard` was the previous primary export. */\nexport const CommentsCard = Comments;\n","/**\n * useComments — headless state machine for the Comments feature.\n *\n * Tracks composer mode (idle | replying | editing), submit/delete\n * helpers, error state, and resetKey bumping. The default `<Comments>`\n * component composes this hook; consumers building a fully custom UI\n * can use it directly.\n */\nimport { useCallback, useState } from 'react';\n\nimport type {\n CommentData,\n CommentFormValues,\n CommentSubmitHelpers,\n CommentUser,\n CommentsConfig,\n} from '../comments.types';\n\nexport type ComposerMode<TResource extends string = string> =\n | { kind: 'idle' }\n | { kind: 'editing'; comment: CommentData<CommentUser, unknown, TResource> }\n | { kind: 'replying'; commentId: string; authorName?: string };\n\nexport interface UseCommentsOptions<\n TUser extends CommentUser = CommentUser,\n TMeta = unknown,\n TResource extends string = string,\n> {\n onSubmit?: CommentsConfig<TUser, TMeta, TResource>['onSubmit'];\n onUpdate?: CommentsConfig<TUser, TMeta, TResource>['onUpdate'];\n onDelete?: CommentsConfig<TUser, TMeta, TResource>['onDelete'];\n}\n\nexport interface UseCommentsReturn<\n TUser extends CommentUser = CommentUser,\n TMeta = unknown,\n TResource extends string = string,\n> {\n composerMode: ComposerMode<TResource>;\n isSubmitting: boolean;\n formErrors: Record<string, string>;\n resetKey: number;\n\n startReply: (comment: CommentData<TUser, TMeta, TResource>) => void;\n startEdit: (comment: CommentData<TUser, TMeta, TResource>) => void;\n cancelComposerMode: () => void;\n\n submit: (values: CommentFormValues<TResource>) => void;\n deleteComment: (id: string) => void;\n\n /** Imperative reset — bumps `resetKey` so the composer clears itself. */\n resetComposer: () => void;\n /** Helpers exposed to onSubmit/onUpdate. */\n helpers: CommentSubmitHelpers;\n}\n\nexport function useComments<\n TUser extends CommentUser = CommentUser,\n TMeta = unknown,\n TResource extends string = string,\n>(\n options: UseCommentsOptions<TUser, TMeta, TResource> = {},\n): UseCommentsReturn<TUser, TMeta, TResource> {\n const { onSubmit, onUpdate, onDelete } = options;\n\n const [composerMode, setComposerMode] = useState<ComposerMode<TResource>>({\n kind: 'idle',\n });\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formErrors, setFormErrors] = useState<Record<string, string>>({});\n const [resetKey, setResetKey] = useState(0);\n\n const helpers: CommentSubmitHelpers = {\n setErrors: (errors) => setFormErrors(errors),\n reset: () => {\n setResetKey((k) => k + 1);\n setComposerMode({ kind: 'idle' });\n setFormErrors({});\n },\n setSubmitting: setIsSubmitting,\n };\n\n const startReply = useCallback(\n (comment: CommentData<TUser, TMeta, TResource>) => {\n setComposerMode({\n kind: 'replying',\n commentId: comment.id ?? '',\n authorName: comment.user?.name,\n });\n },\n [],\n );\n\n const startEdit = useCallback(\n (comment: CommentData<TUser, TMeta, TResource>) => {\n setComposerMode({ kind: 'editing', comment });\n },\n [],\n );\n\n const cancelComposerMode = useCallback(() => {\n setComposerMode({ kind: 'idle' });\n setFormErrors({});\n }, []);\n\n const submit = useCallback(\n (values: CommentFormValues<TResource>) => {\n setIsSubmitting(true);\n setFormErrors({});\n\n if (composerMode.kind === 'editing' && composerMode.comment.id) {\n if (!onUpdate) {\n setIsSubmitting(false);\n return;\n }\n onUpdate(composerMode.comment.id, values, helpers);\n return;\n }\n\n if (!onSubmit) {\n setIsSubmitting(false);\n return;\n }\n\n const payload: CommentFormValues<TResource> =\n composerMode.kind === 'replying'\n ? { ...values, replyToId: composerMode.commentId }\n : values;\n\n onSubmit(payload, helpers);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [composerMode, onSubmit, onUpdate],\n );\n\n const deleteComment = useCallback(\n (id: string) => {\n if (!onDelete || !id) return;\n onDelete(id);\n },\n [onDelete],\n );\n\n const resetComposer = useCallback(() => {\n setResetKey((k) => k + 1);\n setComposerMode({ kind: 'idle' });\n setFormErrors({});\n }, []);\n\n return {\n composerMode,\n isSubmitting,\n formErrors,\n resetKey,\n startReply,\n startEdit,\n cancelComposerMode,\n submit,\n deleteComment,\n resetComposer,\n helpers,\n };\n}\n"],"mappings":"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"}