admin-ui-starter-kit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2352) hide show
  1. package/.agents/skills/component-library-rules/SKILL.md +980 -0
  2. package/.agents/skills/component-library-rules/references/api-patterns.md +332 -0
  3. package/.agents/skills/component-library-rules/references/audit-followups.md +395 -0
  4. package/.agents/skills/component-library-rules/references/base-wrapper.md +132 -0
  5. package/.agents/skills/component-library-rules/references/components/INDEX.json +94 -0
  6. package/.agents/skills/component-library-rules/references/components/INDEX.md +116 -0
  7. package/.agents/skills/component-library-rules/references/components/README.md +9 -0
  8. package/.agents/skills/component-library-rules/references/components/base__accordion.md +229 -0
  9. package/.agents/skills/component-library-rules/references/components/base__badge.md +68 -0
  10. package/.agents/skills/component-library-rules/references/components/base__buttons.md +330 -0
  11. package/.agents/skills/component-library-rules/references/components/base__cards.md +390 -0
  12. package/.agents/skills/component-library-rules/references/components/base__combobox.md +697 -0
  13. package/.agents/skills/component-library-rules/references/components/base__copyable.md +143 -0
  14. package/.agents/skills/component-library-rules/references/components/base__currency.md +201 -0
  15. package/.agents/skills/component-library-rules/references/components/base__date-pickers.md +161 -0
  16. package/.agents/skills/component-library-rules/references/components/base__display.md +480 -0
  17. package/.agents/skills/component-library-rules/references/components/base__empty-state.md +244 -0
  18. package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +186 -0
  19. package/.agents/skills/component-library-rules/references/components/base__forms.md +892 -0
  20. package/.agents/skills/component-library-rules/references/components/base__item.md +155 -0
  21. package/.agents/skills/component-library-rules/references/components/base__map.md +111 -0
  22. package/.agents/skills/component-library-rules/references/components/base__metadata-list.md +338 -0
  23. package/.agents/skills/component-library-rules/references/components/base__navigation.md +293 -0
  24. package/.agents/skills/component-library-rules/references/components/base__spinner.md +89 -0
  25. package/.agents/skills/component-library-rules/references/components/base__table.md +449 -0
  26. package/.agents/skills/component-library-rules/references/components/base__typography.md +277 -0
  27. package/.agents/skills/component-library-rules/references/components/base__upload-tray.md +180 -0
  28. package/.agents/skills/component-library-rules/references/components/common__brand.md +81 -0
  29. package/.agents/skills/component-library-rules/references/components/composed__admin.md +128 -0
  30. package/.agents/skills/component-library-rules/references/components/composed__ai-elements.md +428 -0
  31. package/.agents/skills/component-library-rules/references/components/composed__ai-new.md +214 -0
  32. package/.agents/skills/component-library-rules/references/components/composed__ai.md +78 -0
  33. package/.agents/skills/component-library-rules/references/components/composed__api-key-list.md +114 -0
  34. package/.agents/skills/component-library-rules/references/components/composed__commerce-extras.md +230 -0
  35. package/.agents/skills/component-library-rules/references/components/composed__commerce.md +120 -0
  36. package/.agents/skills/component-library-rules/references/components/composed__contact-card.md +107 -0
  37. package/.agents/skills/component-library-rules/references/components/composed__course-card.md +157 -0
  38. package/.agents/skills/component-library-rules/references/components/composed__dark-surfaces.md +134 -0
  39. package/.agents/skills/component-library-rules/references/components/composed__dense-info.md +151 -0
  40. package/.agents/skills/component-library-rules/references/components/composed__feature-announcement.md +70 -0
  41. package/.agents/skills/component-library-rules/references/components/composed__giftcard-cards.md +129 -0
  42. package/.agents/skills/component-library-rules/references/components/composed__gradient-card.md +98 -0
  43. package/.agents/skills/component-library-rules/references/components/composed__invoice-header.md +75 -0
  44. package/.agents/skills/component-library-rules/references/components/composed__invoice-items.md +77 -0
  45. package/.agents/skills/component-library-rules/references/components/composed__invoice-mini.md +51 -0
  46. package/.agents/skills/component-library-rules/references/components/composed__invoice-table.md +69 -0
  47. package/.agents/skills/component-library-rules/references/components/composed__navigation-extras.md +80 -0
  48. package/.agents/skills/component-library-rules/references/components/composed__navigation.md +130 -0
  49. package/.agents/skills/component-library-rules/references/components/composed__onboarding-checklist.md +163 -0
  50. package/.agents/skills/component-library-rules/references/components/composed__timelines.md +233 -0
  51. package/.agents/skills/component-library-rules/references/components/composed__vendor-profile.md +75 -0
  52. package/.agents/skills/component-library-rules/references/components/features__activities.md +549 -0
  53. package/.agents/skills/component-library-rules/references/components/features__ai-chat.md +502 -0
  54. package/.agents/skills/component-library-rules/references/components/features__comments.md +394 -0
  55. package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +394 -0
  56. package/.agents/skills/component-library-rules/references/components/features__event-log.md +369 -0
  57. package/.agents/skills/component-library-rules/references/components/features__filters.md +109 -0
  58. package/.agents/skills/component-library-rules/references/components/features__global-search.md +125 -0
  59. package/.agents/skills/component-library-rules/references/components/features__kanban.md +214 -0
  60. package/.agents/skills/component-library-rules/references/components/features__metrics-analytics-bar.md +84 -0
  61. package/.agents/skills/component-library-rules/references/components/features__metrics-analytics-cards.md +86 -0
  62. package/.agents/skills/component-library-rules/references/components/features__metrics-comparison.md +118 -0
  63. package/.agents/skills/component-library-rules/references/components/features__metrics-heatmap.md +63 -0
  64. package/.agents/skills/component-library-rules/references/components/features__metrics-inline-badge.md +53 -0
  65. package/.agents/skills/component-library-rules/references/components/features__metrics-kpi-row.md +69 -0
  66. package/.agents/skills/component-library-rules/references/components/features__metrics-micro-grid.md +80 -0
  67. package/.agents/skills/component-library-rules/references/components/features__metrics-overview.md +249 -0
  68. package/.agents/skills/component-library-rules/references/components/features__metrics-stat-cards.md +92 -0
  69. package/.agents/skills/component-library-rules/references/components/features__overlays.md +437 -0
  70. package/.agents/skills/component-library-rules/references/components/features__rich-text-editor.md +159 -0
  71. package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +142 -0
  72. package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +217 -0
  73. package/.agents/skills/component-library-rules/references/components/layout__layout-page.md +165 -0
  74. package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +271 -0
  75. package/.agents/skills/component-library-rules/references/components/layout__layout-users.md +152 -0
  76. package/.agents/skills/component-library-rules/references/components/ui__alert.md +99 -0
  77. package/.agents/skills/component-library-rules/references/components/ui__avatar.md +100 -0
  78. package/.agents/skills/component-library-rules/references/components/ui__breadcrumb.md +90 -0
  79. package/.agents/skills/component-library-rules/references/components/ui__button.md +85 -0
  80. package/.agents/skills/component-library-rules/references/components/ui__calendar.md +52 -0
  81. package/.agents/skills/component-library-rules/references/components/ui__collapsible.md +64 -0
  82. package/.agents/skills/component-library-rules/references/components/ui__empty-item.md +89 -0
  83. package/.agents/skills/component-library-rules/references/components/ui__input-group.md +87 -0
  84. package/.agents/skills/component-library-rules/references/components/ui__inputs.md +90 -0
  85. package/.agents/skills/component-library-rules/references/components/ui__menus.md +131 -0
  86. package/.agents/skills/component-library-rules/references/components/ui__overlays.md +136 -0
  87. package/.agents/skills/component-library-rules/references/components/ui__pagination.md +77 -0
  88. package/.agents/skills/component-library-rules/references/components/ui__progress.md +55 -0
  89. package/.agents/skills/component-library-rules/references/components/ui__scroll-area.md +70 -0
  90. package/.agents/skills/component-library-rules/references/components/ui__separator.md +65 -0
  91. package/.agents/skills/component-library-rules/references/components/ui__skeleton.md +67 -0
  92. package/.agents/skills/component-library-rules/references/components/ui__sonner.md +58 -0
  93. package/.agents/skills/component-library-rules/references/components/ui__spinner.md +68 -0
  94. package/.agents/skills/component-library-rules/references/components/ui__tabs.md +55 -0
  95. package/.agents/skills/component-library-rules/references/components/ui__toggles-group.md +70 -0
  96. package/.agents/skills/component-library-rules/references/components/ui__toggles.md +115 -0
  97. package/.agents/skills/component-library-rules/references/components/ui__ui-badge.md +67 -0
  98. package/.agents/skills/component-library-rules/references/components/ui__ui-card.md +68 -0
  99. package/.agents/skills/component-library-rules/references/components/ui__ui-table.md +78 -0
  100. package/.agents/skills/component-library-rules/references/composed-domains.md +96 -0
  101. package/.agents/skills/component-library-rules/references/consumer-wiring.md +173 -0
  102. package/.agents/skills/component-library-rules/references/features-anatomy.md +287 -0
  103. package/.agents/skills/component-library-rules/references/form-field-pattern.md +161 -0
  104. package/.agents/skills/component-library-rules/references/history.md +502 -0
  105. package/.agents/skills/component-library-rules/references/import-paths.md +140 -0
  106. package/.agents/skills/component-library-rules/references/item-pattern.md +184 -0
  107. package/.agents/skills/component-library-rules/references/layout.md +120 -0
  108. package/.agents/skills/component-library-rules/references/new-feature.md +109 -0
  109. package/.agents/skills/component-library-rules/references/preview-pages.md +153 -0
  110. package/.agents/skills/component-library-rules/references/strings-pattern.md +123 -0
  111. package/.agents/skills/component-library-rules/references/testing.md +116 -0
  112. package/.agents/skills/component-library-rules/references/ui-provider.md +120 -0
  113. package/.agents/skills/component-library-rules/references/visual-eval.md +143 -0
  114. package/AGENTS.md +434 -0
  115. package/CHANGELOG.md +77 -0
  116. package/CLAUDE.md +41 -0
  117. package/CONTRIBUTING.md +91 -0
  118. package/INTEGRATION.md +115 -0
  119. package/LICENSE +21 -0
  120. package/PUBLISHING.md +129 -0
  121. package/README.md +379 -0
  122. package/dist/_shared/accordion-7rwpgJ1k.cjs +2 -0
  123. package/dist/_shared/accordion-7rwpgJ1k.cjs.map +1 -0
  124. package/dist/_shared/accordion-DcduCEIo.js +130 -0
  125. package/dist/_shared/accordion-DcduCEIo.js.map +1 -0
  126. package/dist/_shared/action-menu-D0u-q0q-.cjs +2 -0
  127. package/dist/_shared/action-menu-D0u-q0q-.cjs.map +1 -0
  128. package/dist/_shared/action-menu-DUBXdReV.js +96 -0
  129. package/dist/_shared/action-menu-DUBXdReV.js.map +1 -0
  130. package/dist/_shared/ai-artifact-C3R0god0.cjs +3 -0
  131. package/dist/_shared/ai-artifact-C3R0god0.cjs.map +1 -0
  132. package/dist/_shared/ai-artifact-DMjQv_Si.js +1068 -0
  133. package/dist/_shared/ai-artifact-DMjQv_Si.js.map +1 -0
  134. package/dist/_shared/alert-B2cuJGAA.cjs +2 -0
  135. package/dist/_shared/alert-B2cuJGAA.cjs.map +1 -0
  136. package/dist/_shared/alert-BKUmOI2e.js +48 -0
  137. package/dist/_shared/alert-BKUmOI2e.js.map +1 -0
  138. package/dist/_shared/avatar-BcYcRORH.cjs +2 -0
  139. package/dist/_shared/avatar-BcYcRORH.cjs.map +1 -0
  140. package/dist/_shared/avatar-CNzG6jSZ.js +52 -0
  141. package/dist/_shared/avatar-CNzG6jSZ.js.map +1 -0
  142. package/dist/_shared/badge-BbUN6W7E.js +108 -0
  143. package/dist/_shared/badge-BbUN6W7E.js.map +1 -0
  144. package/dist/_shared/badge-BjtDcU1M.cjs +2 -0
  145. package/dist/_shared/badge-BjtDcU1M.cjs.map +1 -0
  146. package/dist/_shared/breadcrumbs-DctwTld5.js +111 -0
  147. package/dist/_shared/breadcrumbs-DctwTld5.js.map +1 -0
  148. package/dist/_shared/breadcrumbs-m0-gCdNj.cjs +2 -0
  149. package/dist/_shared/breadcrumbs-m0-gCdNj.cjs.map +1 -0
  150. package/dist/_shared/button-BCABTFLE.js +46 -0
  151. package/dist/_shared/button-BCABTFLE.js.map +1 -0
  152. package/dist/_shared/button-Ck2qS42n.js +176 -0
  153. package/dist/_shared/button-Ck2qS42n.js.map +1 -0
  154. package/dist/_shared/button-DjJ-mDI1.cjs +2 -0
  155. package/dist/_shared/button-DjJ-mDI1.cjs.map +1 -0
  156. package/dist/_shared/button-DjacsNTg.cjs +2 -0
  157. package/dist/_shared/button-DjacsNTg.cjs.map +1 -0
  158. package/dist/_shared/buttons-BVnjQ-uE.js +143 -0
  159. package/dist/_shared/buttons-BVnjQ-uE.js.map +1 -0
  160. package/dist/_shared/buttons-BdY6igTr.cjs +2 -0
  161. package/dist/_shared/buttons-BdY6igTr.cjs.map +1 -0
  162. package/dist/_shared/card-radio-group--GP1xrz_.js +158 -0
  163. package/dist/_shared/card-radio-group--GP1xrz_.js.map +1 -0
  164. package/dist/_shared/card-radio-group-DnQsWozr.cjs +2 -0
  165. package/dist/_shared/card-radio-group-DnQsWozr.cjs.map +1 -0
  166. package/dist/_shared/chunk-D3uCBrYO.cjs +1 -0
  167. package/dist/_shared/combobox-DBrRE1Dr.cjs +2 -0
  168. package/dist/_shared/combobox-DBrRE1Dr.cjs.map +1 -0
  169. package/dist/_shared/combobox-DYztEJaw.js +746 -0
  170. package/dist/_shared/combobox-DYztEJaw.js.map +1 -0
  171. package/dist/_shared/command-COvgXQ8r.cjs +2 -0
  172. package/dist/_shared/command-COvgXQ8r.cjs.map +1 -0
  173. package/dist/_shared/command-CvZ6Emb8.js +39 -0
  174. package/dist/_shared/command-CvZ6Emb8.js.map +1 -0
  175. package/dist/_shared/command-DTFQIUVG.cjs +2 -0
  176. package/dist/_shared/command-DTFQIUVG.cjs.map +1 -0
  177. package/dist/_shared/command-Sq8XbHbA.js +123 -0
  178. package/dist/_shared/command-Sq8XbHbA.js.map +1 -0
  179. package/dist/_shared/comments-BOFU1GYY.js +945 -0
  180. package/dist/_shared/comments-BOFU1GYY.js.map +1 -0
  181. package/dist/_shared/comments-BbTYFzx6.cjs +2 -0
  182. package/dist/_shared/comments-BbTYFzx6.cjs.map +1 -0
  183. package/dist/_shared/containers-BthqdOhA.cjs +2 -0
  184. package/dist/_shared/containers-BthqdOhA.cjs.map +1 -0
  185. package/dist/_shared/containers-CD2xs1nk.js +19 -0
  186. package/dist/_shared/containers-CD2xs1nk.js.map +1 -0
  187. package/dist/_shared/content-container-CFfYbWoa.js +33 -0
  188. package/dist/_shared/content-container-CFfYbWoa.js.map +1 -0
  189. package/dist/_shared/content-container-CReiVugL.cjs +2 -0
  190. package/dist/_shared/content-container-CReiVugL.cjs.map +1 -0
  191. package/dist/_shared/copyable-CweQ72QI.cjs +2 -0
  192. package/dist/_shared/copyable-CweQ72QI.cjs.map +1 -0
  193. package/dist/_shared/copyable-JgsTp6ev.js +38 -0
  194. package/dist/_shared/copyable-JgsTp6ev.js.map +1 -0
  195. package/dist/_shared/date-picker-DI4b-SeE.cjs +2 -0
  196. package/dist/_shared/date-picker-DI4b-SeE.cjs.map +1 -0
  197. package/dist/_shared/date-picker-DTazvODY.js +1352 -0
  198. package/dist/_shared/date-picker-DTazvODY.js.map +1 -0
  199. package/dist/_shared/date-pickers-CLzuzmuc.cjs +2 -0
  200. package/dist/_shared/date-pickers-CLzuzmuc.cjs.map +1 -0
  201. package/dist/_shared/date-pickers-CWPxP3zy.js +330 -0
  202. package/dist/_shared/date-pickers-CWPxP3zy.js.map +1 -0
  203. package/dist/_shared/dialog-2MJmaj_d.js +101 -0
  204. package/dist/_shared/dialog-2MJmaj_d.js.map +1 -0
  205. package/dist/_shared/dialog-KKD0i1T8.cjs +2 -0
  206. package/dist/_shared/dialog-KKD0i1T8.cjs.map +1 -0
  207. package/dist/_shared/display-BCy1Ti7T.cjs +8 -0
  208. package/dist/_shared/display-BCy1Ti7T.cjs.map +1 -0
  209. package/dist/_shared/display-DUpkE2aS.js +1462 -0
  210. package/dist/_shared/display-DUpkE2aS.js.map +1 -0
  211. package/dist/_shared/dropdown-menu-BebBffUH.cjs +2 -0
  212. package/dist/_shared/dropdown-menu-BebBffUH.cjs.map +1 -0
  213. package/dist/_shared/dropdown-menu-xdGEynC8.js +147 -0
  214. package/dist/_shared/dropdown-menu-xdGEynC8.js.map +1 -0
  215. package/dist/_shared/form-field-rOj3cm6C.js +319 -0
  216. package/dist/_shared/form-field-rOj3cm6C.js.map +1 -0
  217. package/dist/_shared/form-field-rcyIIHjR.cjs +2 -0
  218. package/dist/_shared/form-field-rcyIIHjR.cjs.map +1 -0
  219. package/dist/_shared/form-sizing--bs_xPe2.cjs +2 -0
  220. package/dist/_shared/form-sizing--bs_xPe2.cjs.map +1 -0
  221. package/dist/_shared/form-sizing-CkKcs5fi.js +21 -0
  222. package/dist/_shared/form-sizing-CkKcs5fi.js.map +1 -0
  223. package/dist/_shared/format-BlVEsPyT.js +48 -0
  224. package/dist/_shared/format-BlVEsPyT.js.map +1 -0
  225. package/dist/_shared/format-DYVtSA2I.cjs +2 -0
  226. package/dist/_shared/format-DYVtSA2I.cjs.map +1 -0
  227. package/dist/_shared/forms-BAVsxxRk.js +3374 -0
  228. package/dist/_shared/forms-BAVsxxRk.js.map +1 -0
  229. package/dist/_shared/forms-DaZ3LsYc.cjs +2 -0
  230. package/dist/_shared/forms-DaZ3LsYc.cjs.map +1 -0
  231. package/dist/_shared/header-BtTMsQ5P.cjs +2 -0
  232. package/dist/_shared/header-BtTMsQ5P.cjs.map +1 -0
  233. package/dist/_shared/header-DpW4UWV6.js +369 -0
  234. package/dist/_shared/header-DpW4UWV6.js.map +1 -0
  235. package/dist/_shared/hooks-Bsm917yh.cjs +2 -0
  236. package/dist/_shared/hooks-Bsm917yh.cjs.map +1 -0
  237. package/dist/_shared/hooks-CX-SICd4.js +118 -0
  238. package/dist/_shared/hooks-CX-SICd4.js.map +1 -0
  239. package/dist/_shared/icon-badge-DGKpbo9_.cjs +2 -0
  240. package/dist/_shared/icon-badge-DGKpbo9_.cjs.map +1 -0
  241. package/dist/_shared/icon-badge-DoClA_9q.js +52 -0
  242. package/dist/_shared/icon-badge-DoClA_9q.js.map +1 -0
  243. package/dist/_shared/input-BXt-YtVs.cjs +2 -0
  244. package/dist/_shared/input-BXt-YtVs.cjs.map +1 -0
  245. package/dist/_shared/input-Bx4LeLhn.js +17 -0
  246. package/dist/_shared/input-Bx4LeLhn.js.map +1 -0
  247. package/dist/_shared/input-ChZGIhtS.cjs +2 -0
  248. package/dist/_shared/input-ChZGIhtS.cjs.map +1 -0
  249. package/dist/_shared/input-Cwv1-5jt.js +182 -0
  250. package/dist/_shared/input-Cwv1-5jt.js.map +1 -0
  251. package/dist/_shared/item-BmTYKzEb.js +224 -0
  252. package/dist/_shared/item-BmTYKzEb.js.map +1 -0
  253. package/dist/_shared/item-BtR-bz96.cjs +2 -0
  254. package/dist/_shared/item-BtR-bz96.cjs.map +1 -0
  255. package/dist/_shared/mentions-DVCjaO_z.cjs +2 -0
  256. package/dist/_shared/mentions-DVCjaO_z.cjs.map +1 -0
  257. package/dist/_shared/mentions-DzG8mX5H.js +493 -0
  258. package/dist/_shared/mentions-DzG8mX5H.js.map +1 -0
  259. package/dist/_shared/money-display-B5oxCs_0.cjs +2 -0
  260. package/dist/_shared/money-display-B5oxCs_0.cjs.map +1 -0
  261. package/dist/_shared/money-display-C0wI02ou.js +198 -0
  262. package/dist/_shared/money-display-C0wI02ou.js.map +1 -0
  263. package/dist/_shared/navigation-BA2nsTgU.cjs +2 -0
  264. package/dist/_shared/navigation-BA2nsTgU.cjs.map +1 -0
  265. package/dist/_shared/navigation-DHyaf-RZ.js +420 -0
  266. package/dist/_shared/navigation-DHyaf-RZ.js.map +1 -0
  267. package/dist/_shared/overlays-Kl6Gp6WR.js +633 -0
  268. package/dist/_shared/overlays-Kl6Gp6WR.js.map +1 -0
  269. package/dist/_shared/overlays-W6j-Pe1L.cjs +2 -0
  270. package/dist/_shared/overlays-W6j-Pe1L.cjs.map +1 -0
  271. package/dist/_shared/page-DROZhtWT.js +263 -0
  272. package/dist/_shared/page-DROZhtWT.js.map +1 -0
  273. package/dist/_shared/page-lh9Rcx_d.cjs +2 -0
  274. package/dist/_shared/page-lh9Rcx_d.cjs.map +1 -0
  275. package/dist/_shared/popover-BTEwjJZS.cjs +2 -0
  276. package/dist/_shared/popover-BTEwjJZS.cjs.map +1 -0
  277. package/dist/_shared/popover-CF9VWt-l.js +83 -0
  278. package/dist/_shared/popover-CF9VWt-l.js.map +1 -0
  279. package/dist/_shared/popover-menu-BYesl29w.js +95 -0
  280. package/dist/_shared/popover-menu-BYesl29w.js.map +1 -0
  281. package/dist/_shared/popover-menu-DF9sWz61.cjs +2 -0
  282. package/dist/_shared/popover-menu-DF9sWz61.cjs.map +1 -0
  283. package/dist/_shared/rich-text-editor-UZghkgsh.cjs +2 -0
  284. package/dist/_shared/rich-text-editor-UZghkgsh.cjs.map +1 -0
  285. package/dist/_shared/rich-text-editor-fUeuK-rY.js +608 -0
  286. package/dist/_shared/rich-text-editor-fUeuK-rY.js.map +1 -0
  287. package/dist/_shared/scroll-area-XJLcCczs.js +41 -0
  288. package/dist/_shared/scroll-area-XJLcCczs.js.map +1 -0
  289. package/dist/_shared/scroll-area-y8ZJoS97.cjs +2 -0
  290. package/dist/_shared/scroll-area-y8ZJoS97.cjs.map +1 -0
  291. package/dist/_shared/select-D8MYF4f7.js +85 -0
  292. package/dist/_shared/select-D8MYF4f7.js.map +1 -0
  293. package/dist/_shared/select-DxAiUfpM.cjs +2 -0
  294. package/dist/_shared/select-DxAiUfpM.cjs.map +1 -0
  295. package/dist/_shared/separator-BazqiQ9s.js +16 -0
  296. package/dist/_shared/separator-BazqiQ9s.js.map +1 -0
  297. package/dist/_shared/separator-DSkXMOXq.cjs +2 -0
  298. package/dist/_shared/separator-DSkXMOXq.cjs.map +1 -0
  299. package/dist/_shared/sheet-7iHOs-IU.js +100 -0
  300. package/dist/_shared/sheet-7iHOs-IU.js.map +1 -0
  301. package/dist/_shared/sheet-qKtoyxgi.cjs +2 -0
  302. package/dist/_shared/sheet-qKtoyxgi.cjs.map +1 -0
  303. package/dist/_shared/sidebar-CaTUJ3t-.js +537 -0
  304. package/dist/_shared/sidebar-CaTUJ3t-.js.map +1 -0
  305. package/dist/_shared/sidebar-DVjfsm-f.cjs +2 -0
  306. package/dist/_shared/sidebar-DVjfsm-f.cjs.map +1 -0
  307. package/dist/_shared/sidebar-aV5DVAVg.js +371 -0
  308. package/dist/_shared/sidebar-aV5DVAVg.js.map +1 -0
  309. package/dist/_shared/sidebar-mL0jSJ8u.cjs +2 -0
  310. package/dist/_shared/sidebar-mL0jSJ8u.cjs.map +1 -0
  311. package/dist/_shared/skeleton-Bwv_j9jJ.cjs +2 -0
  312. package/dist/_shared/skeleton-Bwv_j9jJ.cjs.map +1 -0
  313. package/dist/_shared/skeleton-DyKa-Ed-.js +14 -0
  314. package/dist/_shared/skeleton-DyKa-Ed-.js.map +1 -0
  315. package/dist/_shared/slot-ClIPTht1.cjs +2 -0
  316. package/dist/_shared/slot-ClIPTht1.cjs.map +1 -0
  317. package/dist/_shared/slot-CrS_VEVl.js +18 -0
  318. package/dist/_shared/slot-CrS_VEVl.js.map +1 -0
  319. package/dist/_shared/smart-card-Ddsjvf7r.cjs +2 -0
  320. package/dist/_shared/smart-card-Ddsjvf7r.cjs.map +1 -0
  321. package/dist/_shared/smart-card-hJ01usWt.js +360 -0
  322. package/dist/_shared/smart-card-hJ01usWt.js.map +1 -0
  323. package/dist/_shared/spinner-D-pcMBt1.js +67 -0
  324. package/dist/_shared/spinner-D-pcMBt1.js.map +1 -0
  325. package/dist/_shared/spinner-zbmhn0vE.cjs +2 -0
  326. package/dist/_shared/spinner-zbmhn0vE.cjs.map +1 -0
  327. package/dist/_shared/switch-C5J37LMI.cjs +2 -0
  328. package/dist/_shared/switch-C5J37LMI.cjs.map +1 -0
  329. package/dist/_shared/switch-ClGgHcEb.js +51 -0
  330. package/dist/_shared/switch-ClGgHcEb.js.map +1 -0
  331. package/dist/_shared/text-DBnY6fcL.cjs +2 -0
  332. package/dist/_shared/text-DBnY6fcL.cjs.map +1 -0
  333. package/dist/_shared/text-DIxMTECE.js +74 -0
  334. package/dist/_shared/text-DIxMTECE.js.map +1 -0
  335. package/dist/_shared/textarea-DeISZfHw.js +119 -0
  336. package/dist/_shared/textarea-DeISZfHw.js.map +1 -0
  337. package/dist/_shared/textarea-iR9txrty.cjs +2 -0
  338. package/dist/_shared/textarea-iR9txrty.cjs.map +1 -0
  339. package/dist/_shared/tooltip-CEqxHWxQ.js +49 -0
  340. package/dist/_shared/tooltip-CEqxHWxQ.js.map +1 -0
  341. package/dist/_shared/tooltip-DPv0LGr9.cjs +2 -0
  342. package/dist/_shared/tooltip-DPv0LGr9.cjs.map +1 -0
  343. package/dist/_shared/typography-BtPQBvSm.js +135 -0
  344. package/dist/_shared/typography-BtPQBvSm.js.map +1 -0
  345. package/dist/_shared/typography-DClleVWi.cjs +2 -0
  346. package/dist/_shared/typography-DClleVWi.cjs.map +1 -0
  347. package/dist/_shared/ui-provider-4qKSKMPd.js +85 -0
  348. package/dist/_shared/ui-provider-4qKSKMPd.js.map +1 -0
  349. package/dist/_shared/ui-provider-uiQgATj1.cjs +2 -0
  350. package/dist/_shared/ui-provider-uiQgATj1.cjs.map +1 -0
  351. package/dist/components/base/accordion/accordion-variants.d.ts +34 -0
  352. package/dist/components/base/accordion/accordion-variants.d.ts.map +1 -0
  353. package/dist/components/base/accordion/accordion.d.ts +20 -0
  354. package/dist/components/base/accordion/accordion.d.ts.map +1 -0
  355. package/dist/components/base/accordion/accordion.strings.d.ts +16 -0
  356. package/dist/components/base/accordion/accordion.strings.d.ts.map +1 -0
  357. package/dist/components/base/accordion/accordion.types.d.ts +68 -0
  358. package/dist/components/base/accordion/accordion.types.d.ts.map +1 -0
  359. package/dist/components/base/accordion/index.cjs +1 -0
  360. package/dist/components/base/accordion/index.d.ts +5 -0
  361. package/dist/components/base/accordion/index.d.ts.map +1 -0
  362. package/dist/components/base/accordion/index.js +2 -0
  363. package/dist/components/base/accordion/smart-accordion.d.ts +3 -0
  364. package/dist/components/base/accordion/smart-accordion.d.ts.map +1 -0
  365. package/dist/components/base/badge/badge.d.ts +24 -0
  366. package/dist/components/base/badge/badge.d.ts.map +1 -0
  367. package/dist/components/base/badge/index.cjs +1 -0
  368. package/dist/components/base/badge/index.d.ts +3 -0
  369. package/dist/components/base/badge/index.d.ts.map +1 -0
  370. package/dist/components/base/badge/index.js +2 -0
  371. package/dist/components/base/buttons/base-button.d.ts +21 -0
  372. package/dist/components/base/buttons/base-button.d.ts.map +1 -0
  373. package/dist/components/base/buttons/button.d.ts +19 -0
  374. package/dist/components/base/buttons/button.d.ts.map +1 -0
  375. package/dist/components/base/buttons/google-button.d.ts +7 -0
  376. package/dist/components/base/buttons/google-button.d.ts.map +1 -0
  377. package/dist/components/base/buttons/index.cjs +1 -0
  378. package/dist/components/base/buttons/index.d.ts +9 -0
  379. package/dist/components/base/buttons/index.d.ts.map +1 -0
  380. package/dist/components/base/buttons/index.js +3 -0
  381. package/dist/components/base/buttons/loader-button.d.ts +23 -0
  382. package/dist/components/base/buttons/loader-button.d.ts.map +1 -0
  383. package/dist/components/base/buttons/page-action-button.d.ts +14 -0
  384. package/dist/components/base/buttons/page-action-button.d.ts.map +1 -0
  385. package/dist/components/base/buttons/shopify-button.d.ts +20 -0
  386. package/dist/components/base/buttons/shopify-button.d.ts.map +1 -0
  387. package/dist/components/base/buttons/text-button.d.ts +21 -0
  388. package/dist/components/base/buttons/text-button.d.ts.map +1 -0
  389. package/dist/components/base/buttons/tooltip-button.d.ts +8 -0
  390. package/dist/components/base/buttons/tooltip-button.d.ts.map +1 -0
  391. package/dist/components/base/cards/index.cjs +1 -0
  392. package/dist/components/base/cards/index.d.ts +2 -0
  393. package/dist/components/base/cards/index.d.ts.map +1 -0
  394. package/dist/components/base/cards/index.js +2 -0
  395. package/dist/components/base/cards/partials/card-primitives.d.ts +8 -0
  396. package/dist/components/base/cards/partials/card-primitives.d.ts.map +1 -0
  397. package/dist/components/base/cards/partials/has-renderable-content.d.ts +9 -0
  398. package/dist/components/base/cards/partials/has-renderable-content.d.ts.map +1 -0
  399. package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts +8 -0
  400. package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts.map +1 -0
  401. package/dist/components/base/cards/partials/smart-card-alert.d.ts +11 -0
  402. package/dist/components/base/cards/partials/smart-card-alert.d.ts.map +1 -0
  403. package/dist/components/base/cards/partials/smart-card-header-row.d.ts +20 -0
  404. package/dist/components/base/cards/partials/smart-card-header-row.d.ts.map +1 -0
  405. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +11 -0
  406. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts.map +1 -0
  407. package/dist/components/base/cards/smart-card.d.ts +7 -0
  408. package/dist/components/base/cards/smart-card.d.ts.map +1 -0
  409. package/dist/components/base/cards/smart-card.strings.d.ts +12 -0
  410. package/dist/components/base/cards/smart-card.strings.d.ts.map +1 -0
  411. package/dist/components/base/cards/smart-card.tokens.d.ts +39 -0
  412. package/dist/components/base/cards/smart-card.tokens.d.ts.map +1 -0
  413. package/dist/components/base/cards/smart-card.types.d.ts +85 -0
  414. package/dist/components/base/cards/smart-card.types.d.ts.map +1 -0
  415. package/dist/components/base/combobox/combobox.strings.d.ts +4 -0
  416. package/dist/components/base/combobox/combobox.strings.d.ts.map +1 -0
  417. package/dist/components/base/combobox/components/combobox-dropdown.d.ts +40 -0
  418. package/dist/components/base/combobox/components/combobox-dropdown.d.ts.map +1 -0
  419. package/dist/components/base/combobox/components/error-message.d.ts +15 -0
  420. package/dist/components/base/combobox/components/error-message.d.ts.map +1 -0
  421. package/dist/components/base/combobox/components/highlighted-text.d.ts +14 -0
  422. package/dist/components/base/combobox/components/highlighted-text.d.ts.map +1 -0
  423. package/dist/components/base/combobox/components/index.d.ts +14 -0
  424. package/dist/components/base/combobox/components/index.d.ts.map +1 -0
  425. package/dist/components/base/combobox/components/loading-more.d.ts +14 -0
  426. package/dist/components/base/combobox/components/loading-more.d.ts.map +1 -0
  427. package/dist/components/base/combobox/components/status-content.d.ts +17 -0
  428. package/dist/components/base/combobox/components/status-content.d.ts.map +1 -0
  429. package/dist/components/base/combobox/constants.d.ts +22 -0
  430. package/dist/components/base/combobox/constants.d.ts.map +1 -0
  431. package/dist/components/base/combobox/enhanced-combobox.d.ts +25 -0
  432. package/dist/components/base/combobox/enhanced-combobox.d.ts.map +1 -0
  433. package/dist/components/base/combobox/hooks/index.d.ts +12 -0
  434. package/dist/components/base/combobox/hooks/index.d.ts.map +1 -0
  435. package/dist/components/base/combobox/hooks/use-debounced-search.d.ts +11 -0
  436. package/dist/components/base/combobox/hooks/use-debounced-search.d.ts.map +1 -0
  437. package/dist/components/base/combobox/hooks/use-enhanced-combobox-core.d.ts +31 -0
  438. package/dist/components/base/combobox/hooks/use-enhanced-combobox-core.d.ts.map +1 -0
  439. package/dist/components/base/combobox/hooks/use-grouped-items.d.ts +10 -0
  440. package/dist/components/base/combobox/hooks/use-grouped-items.d.ts.map +1 -0
  441. package/dist/components/base/combobox/hooks/use-load-more.d.ts +13 -0
  442. package/dist/components/base/combobox/hooks/use-load-more.d.ts.map +1 -0
  443. package/dist/components/base/combobox/index.cjs +1 -0
  444. package/dist/components/base/combobox/index.d.ts +15 -0
  445. package/dist/components/base/combobox/index.d.ts.map +1 -0
  446. package/dist/components/base/combobox/index.js +2 -0
  447. package/dist/components/base/combobox/types.d.ts +77 -0
  448. package/dist/components/base/combobox/types.d.ts.map +1 -0
  449. package/dist/components/base/command/command.d.ts +29 -0
  450. package/dist/components/base/command/command.d.ts.map +1 -0
  451. package/dist/components/base/command/index.cjs +1 -0
  452. package/dist/components/base/command/index.d.ts +2 -0
  453. package/dist/components/base/command/index.d.ts.map +1 -0
  454. package/dist/components/base/command/index.js +3 -0
  455. package/dist/components/base/copyable/copyable.d.ts +23 -0
  456. package/dist/components/base/copyable/copyable.d.ts.map +1 -0
  457. package/dist/components/base/copyable/index.cjs +1 -0
  458. package/dist/components/base/copyable/index.d.ts +2 -0
  459. package/dist/components/base/copyable/index.d.ts.map +1 -0
  460. package/dist/components/base/copyable/index.js +2 -0
  461. package/dist/components/base/currency/currency-pair-preview.d.ts +30 -0
  462. package/dist/components/base/currency/currency-pair-preview.d.ts.map +1 -0
  463. package/dist/components/base/currency/hooks/index.d.ts +3 -0
  464. package/dist/components/base/currency/hooks/index.d.ts.map +1 -0
  465. package/dist/components/base/currency/hooks/use-currency.d.ts +39 -0
  466. package/dist/components/base/currency/hooks/use-currency.d.ts.map +1 -0
  467. package/dist/components/base/currency/index.cjs +1 -0
  468. package/dist/components/base/currency/index.d.ts +3 -0
  469. package/dist/components/base/currency/index.d.ts.map +1 -0
  470. package/dist/components/base/currency/index.js +2 -0
  471. package/dist/components/base/date-pickers/date-picker-footer.d.ts +14 -0
  472. package/dist/components/base/date-pickers/date-picker-footer.d.ts.map +1 -0
  473. package/dist/components/base/date-pickers/date-picker-header.d.ts +11 -0
  474. package/dist/components/base/date-pickers/date-picker-header.d.ts.map +1 -0
  475. package/dist/components/base/date-pickers/date-picker-helpers.d.ts +84 -0
  476. package/dist/components/base/date-pickers/date-picker-helpers.d.ts.map +1 -0
  477. package/dist/components/base/date-pickers/date-picker.d.ts +25 -0
  478. package/dist/components/base/date-pickers/date-picker.d.ts.map +1 -0
  479. package/dist/components/base/date-pickers/date-pickers.strings.d.ts +4 -0
  480. package/dist/components/base/date-pickers/date-pickers.strings.d.ts.map +1 -0
  481. package/dist/components/base/date-pickers/date-range-picker.d.ts +8 -0
  482. package/dist/components/base/date-pickers/date-range-picker.d.ts.map +1 -0
  483. package/dist/components/base/date-pickers/datepicker.types.d.ts +186 -0
  484. package/dist/components/base/date-pickers/datepicker.types.d.ts.map +1 -0
  485. package/dist/components/base/date-pickers/index.cjs +1 -0
  486. package/dist/components/base/date-pickers/index.d.ts +10 -0
  487. package/dist/components/base/date-pickers/index.d.ts.map +1 -0
  488. package/dist/components/base/date-pickers/index.js +3 -0
  489. package/dist/components/base/date-pickers/month-year-picker.d.ts +7 -0
  490. package/dist/components/base/date-pickers/month-year-picker.d.ts.map +1 -0
  491. package/dist/components/base/date-pickers/segmented-time-input.d.ts +26 -0
  492. package/dist/components/base/date-pickers/segmented-time-input.d.ts.map +1 -0
  493. package/dist/components/base/display/alert.d.ts +2 -0
  494. package/dist/components/base/display/alert.d.ts.map +1 -0
  495. package/dist/components/base/display/avatar.d.ts +2 -0
  496. package/dist/components/base/display/avatar.d.ts.map +1 -0
  497. package/dist/components/base/display/boolean-indicator.d.ts +27 -0
  498. package/dist/components/base/display/boolean-indicator.d.ts.map +1 -0
  499. package/dist/components/base/display/chart.d.ts +2 -0
  500. package/dist/components/base/display/chart.d.ts.map +1 -0
  501. package/dist/components/base/display/collapsible.d.ts +2 -0
  502. package/dist/components/base/display/collapsible.d.ts.map +1 -0
  503. package/dist/components/base/display/date-block.d.ts +40 -0
  504. package/dist/components/base/display/date-block.d.ts.map +1 -0
  505. package/dist/components/base/display/dialog.d.ts +2 -0
  506. package/dist/components/base/display/dialog.d.ts.map +1 -0
  507. package/dist/components/base/display/empty-state/empty-state.d.ts +3 -0
  508. package/dist/components/base/display/empty-state/empty-state.d.ts.map +1 -0
  509. package/dist/components/base/display/empty-state/empty-state.strings.d.ts +18 -0
  510. package/dist/components/base/display/empty-state/empty-state.strings.d.ts.map +1 -0
  511. package/dist/components/base/display/empty-state/empty-state.types.d.ts +85 -0
  512. package/dist/components/base/display/empty-state/empty-state.types.d.ts.map +1 -0
  513. package/dist/components/base/display/empty-state/index.d.ts +5 -0
  514. package/dist/components/base/display/empty-state/index.d.ts.map +1 -0
  515. package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts +11 -0
  516. package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts.map +1 -0
  517. package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts +11 -0
  518. package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts.map +1 -0
  519. package/dist/components/base/display/empty-state/partials/illustrations/index.d.ts +25 -0
  520. package/dist/components/base/display/empty-state/partials/illustrations/index.d.ts.map +1 -0
  521. package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts +11 -0
  522. package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts.map +1 -0
  523. package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts +13 -0
  524. package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts.map +1 -0
  525. package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts +11 -0
  526. package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts.map +1 -0
  527. package/dist/components/base/display/fields/email-display.d.ts +22 -0
  528. package/dist/components/base/display/fields/email-display.d.ts.map +1 -0
  529. package/dist/components/base/display/fields/index.d.ts +4 -0
  530. package/dist/components/base/display/fields/index.d.ts.map +1 -0
  531. package/dist/components/base/display/fields/phone-display.d.ts +22 -0
  532. package/dist/components/base/display/fields/phone-display.d.ts.map +1 -0
  533. package/dist/components/base/display/fields/url-display.d.ts +28 -0
  534. package/dist/components/base/display/fields/url-display.d.ts.map +1 -0
  535. package/dist/components/base/display/icon-badge/icon-badge.d.ts +25 -0
  536. package/dist/components/base/display/icon-badge/icon-badge.d.ts.map +1 -0
  537. package/dist/components/base/display/icon-badge/index.d.ts +2 -0
  538. package/dist/components/base/display/icon-badge/index.d.ts.map +1 -0
  539. package/dist/components/base/display/index.cjs +1 -0
  540. package/dist/components/base/display/index.d.ts +31 -0
  541. package/dist/components/base/display/index.d.ts.map +1 -0
  542. package/dist/components/base/display/index.js +11 -0
  543. package/dist/components/base/display/inline-stat/index.d.ts +2 -0
  544. package/dist/components/base/display/inline-stat/index.d.ts.map +1 -0
  545. package/dist/components/base/display/inline-stat/inline-stat.d.ts +16 -0
  546. package/dist/components/base/display/inline-stat/inline-stat.d.ts.map +1 -0
  547. package/dist/components/base/display/metadata/index.d.ts +3 -0
  548. package/dist/components/base/display/metadata/index.d.ts.map +1 -0
  549. package/dist/components/base/display/metadata/metadata-list.d.ts +42 -0
  550. package/dist/components/base/display/metadata/metadata-list.d.ts.map +1 -0
  551. package/dist/components/base/display/metadata/metadata-list.strings.d.ts +19 -0
  552. package/dist/components/base/display/metadata/metadata-list.strings.d.ts.map +1 -0
  553. package/dist/components/base/display/money-display.d.ts +62 -0
  554. package/dist/components/base/display/money-display.d.ts.map +1 -0
  555. package/dist/components/base/display/money-input.d.ts +51 -0
  556. package/dist/components/base/display/money-input.d.ts.map +1 -0
  557. package/dist/components/base/display/notification-banner.d.ts +19 -0
  558. package/dist/components/base/display/notification-banner.d.ts.map +1 -0
  559. package/dist/components/base/display/numeric-value/index.d.ts +2 -0
  560. package/dist/components/base/display/numeric-value/index.d.ts.map +1 -0
  561. package/dist/components/base/display/numeric-value/numeric-value.d.ts +26 -0
  562. package/dist/components/base/display/numeric-value/numeric-value.d.ts.map +1 -0
  563. package/dist/components/base/display/placeholder-pattern.d.ts +8 -0
  564. package/dist/components/base/display/placeholder-pattern.d.ts.map +1 -0
  565. package/dist/components/base/display/progress.d.ts +2 -0
  566. package/dist/components/base/display/progress.d.ts.map +1 -0
  567. package/dist/components/base/display/qr-code.d.ts +13 -0
  568. package/dist/components/base/display/qr-code.d.ts.map +1 -0
  569. package/dist/components/base/display/scroll-area.d.ts +2 -0
  570. package/dist/components/base/display/scroll-area.d.ts.map +1 -0
  571. package/dist/components/base/display/section-header/index.d.ts +2 -0
  572. package/dist/components/base/display/section-header/index.d.ts.map +1 -0
  573. package/dist/components/base/display/section-header/section-header.d.ts +14 -0
  574. package/dist/components/base/display/section-header/section-header.d.ts.map +1 -0
  575. package/dist/components/base/display/separator.d.ts +2 -0
  576. package/dist/components/base/display/separator.d.ts.map +1 -0
  577. package/dist/components/base/display/show-if.d.ts +12 -0
  578. package/dist/components/base/display/show-if.d.ts.map +1 -0
  579. package/dist/components/base/display/skeleton.d.ts +2 -0
  580. package/dist/components/base/display/skeleton.d.ts.map +1 -0
  581. package/dist/components/base/display/stacked-avatars.d.ts +34 -0
  582. package/dist/components/base/display/stacked-avatars.d.ts.map +1 -0
  583. package/dist/components/base/display/throttle-alert.d.ts +17 -0
  584. package/dist/components/base/display/throttle-alert.d.ts.map +1 -0
  585. package/dist/components/base/display/tooltip.d.ts +2 -0
  586. package/dist/components/base/display/tooltip.d.ts.map +1 -0
  587. package/dist/components/base/display/user-cell/index.d.ts +2 -0
  588. package/dist/components/base/display/user-cell/index.d.ts.map +1 -0
  589. package/dist/components/base/display/user-cell/user-cell.d.ts +19 -0
  590. package/dist/components/base/display/user-cell/user-cell.d.ts.map +1 -0
  591. package/dist/components/base/display/visually-hidden.d.ts +15 -0
  592. package/dist/components/base/display/visually-hidden.d.ts.map +1 -0
  593. package/dist/components/base/event-calendar/colors.d.ts +19 -0
  594. package/dist/components/base/event-calendar/colors.d.ts.map +1 -0
  595. package/dist/components/base/event-calendar/event-calendar-day-cell.d.ts +6 -0
  596. package/dist/components/base/event-calendar/event-calendar-day-cell.d.ts.map +1 -0
  597. package/dist/components/base/event-calendar/event-calendar-event-badge.d.ts +6 -0
  598. package/dist/components/base/event-calendar/event-calendar-event-badge.d.ts.map +1 -0
  599. package/dist/components/base/event-calendar/event-calendar-event-card.d.ts +15 -0
  600. package/dist/components/base/event-calendar/event-calendar-event-card.d.ts.map +1 -0
  601. package/dist/components/base/event-calendar/event-calendar-header.d.ts +9 -0
  602. package/dist/components/base/event-calendar/event-calendar-header.d.ts.map +1 -0
  603. package/dist/components/base/event-calendar/event-calendar-legend.d.ts +6 -0
  604. package/dist/components/base/event-calendar/event-calendar-legend.d.ts.map +1 -0
  605. package/dist/components/base/event-calendar/event-calendar.d.ts +6 -0
  606. package/dist/components/base/event-calendar/event-calendar.d.ts.map +1 -0
  607. package/dist/components/base/event-calendar/event-calendar.types.d.ts +283 -0
  608. package/dist/components/base/event-calendar/event-calendar.types.d.ts.map +1 -0
  609. package/dist/components/base/event-calendar/index.cjs +2 -0
  610. package/dist/components/base/event-calendar/index.cjs.map +1 -0
  611. package/dist/components/base/event-calendar/index.d.ts +12 -0
  612. package/dist/components/base/event-calendar/index.d.ts.map +1 -0
  613. package/dist/components/base/event-calendar/index.js +700 -0
  614. package/dist/components/base/event-calendar/index.js.map +1 -0
  615. package/dist/components/base/event-calendar/use-event-calendar-data.d.ts +16 -0
  616. package/dist/components/base/event-calendar/use-event-calendar-data.d.ts.map +1 -0
  617. package/dist/components/base/event-calendar/use-event-calendar.d.ts +14 -0
  618. package/dist/components/base/event-calendar/use-event-calendar.d.ts.map +1 -0
  619. package/dist/components/base/forms/fields/avatar-upload.d.ts +25 -0
  620. package/dist/components/base/forms/fields/avatar-upload.d.ts.map +1 -0
  621. package/dist/components/base/forms/fields/card-checkbox-group.d.ts +20 -0
  622. package/dist/components/base/forms/fields/card-checkbox-group.d.ts.map +1 -0
  623. package/dist/components/base/forms/fields/card-radio-group.d.ts +19 -0
  624. package/dist/components/base/forms/fields/card-radio-group.d.ts.map +1 -0
  625. package/dist/components/base/forms/fields/checkbox.d.ts +2 -0
  626. package/dist/components/base/forms/fields/checkbox.d.ts.map +1 -0
  627. package/dist/components/base/forms/fields/choice-types.d.ts +42 -0
  628. package/dist/components/base/forms/fields/choice-types.d.ts.map +1 -0
  629. package/dist/components/base/forms/fields/coordinates-input.d.ts +60 -0
  630. package/dist/components/base/forms/fields/coordinates-input.d.ts.map +1 -0
  631. package/dist/components/base/forms/fields/currency-input.d.ts +37 -0
  632. package/dist/components/base/forms/fields/currency-input.d.ts.map +1 -0
  633. package/dist/components/base/forms/fields/date-time-input.d.ts +23 -0
  634. package/dist/components/base/forms/fields/date-time-input.d.ts.map +1 -0
  635. package/dist/components/base/forms/fields/decimal-input.d.ts +47 -0
  636. package/dist/components/base/forms/fields/decimal-input.d.ts.map +1 -0
  637. package/dist/components/base/forms/fields/dimensions-input.d.ts +81 -0
  638. package/dist/components/base/forms/fields/dimensions-input.d.ts.map +1 -0
  639. package/dist/components/base/forms/fields/dropzone.d.ts +25 -0
  640. package/dist/components/base/forms/fields/dropzone.d.ts.map +1 -0
  641. package/dist/components/base/forms/fields/file-upload.d.ts +30 -0
  642. package/dist/components/base/forms/fields/file-upload.d.ts.map +1 -0
  643. package/dist/components/base/forms/fields/hooks/index.d.ts +2 -0
  644. package/dist/components/base/forms/fields/hooks/index.d.ts.map +1 -0
  645. package/dist/components/base/forms/fields/hooks/use-form-field-state.d.ts +49 -0
  646. package/dist/components/base/forms/fields/hooks/use-form-field-state.d.ts.map +1 -0
  647. package/dist/components/base/forms/fields/image-upload.d.ts +45 -0
  648. package/dist/components/base/forms/fields/image-upload.d.ts.map +1 -0
  649. package/dist/components/base/forms/fields/index.d.ts +55 -0
  650. package/dist/components/base/forms/fields/index.d.ts.map +1 -0
  651. package/dist/components/base/forms/fields/input.d.ts +29 -0
  652. package/dist/components/base/forms/fields/input.d.ts.map +1 -0
  653. package/dist/components/base/forms/fields/key-value-editor.d.ts +38 -0
  654. package/dist/components/base/forms/fields/key-value-editor.d.ts.map +1 -0
  655. package/dist/components/base/forms/fields/list-radio-group.d.ts +14 -0
  656. package/dist/components/base/forms/fields/list-radio-group.d.ts.map +1 -0
  657. package/dist/components/base/forms/fields/list.d.ts +29 -0
  658. package/dist/components/base/forms/fields/list.d.ts.map +1 -0
  659. package/dist/components/base/forms/fields/localized-object-field.d.ts +36 -0
  660. package/dist/components/base/forms/fields/localized-object-field.d.ts.map +1 -0
  661. package/dist/components/base/forms/fields/localized-string-field.d.ts +26 -0
  662. package/dist/components/base/forms/fields/localized-string-field.d.ts.map +1 -0
  663. package/dist/components/base/forms/fields/localized-string-repeater.d.ts +35 -0
  664. package/dist/components/base/forms/fields/localized-string-repeater.d.ts.map +1 -0
  665. package/dist/components/base/forms/fields/media-gallery.d.ts +25 -0
  666. package/dist/components/base/forms/fields/media-gallery.d.ts.map +1 -0
  667. package/dist/components/base/forms/fields/money-input.d.ts +16 -0
  668. package/dist/components/base/forms/fields/money-input.d.ts.map +1 -0
  669. package/dist/components/base/forms/fields/object-repeater.d.ts +38 -0
  670. package/dist/components/base/forms/fields/object-repeater.d.ts.map +1 -0
  671. package/dist/components/base/forms/fields/percentage-input.d.ts +9 -0
  672. package/dist/components/base/forms/fields/percentage-input.d.ts.map +1 -0
  673. package/dist/components/base/forms/fields/phone-input.d.ts +47 -0
  674. package/dist/components/base/forms/fields/phone-input.d.ts.map +1 -0
  675. package/dist/components/base/forms/fields/pill-radio-group.d.ts +18 -0
  676. package/dist/components/base/forms/fields/pill-radio-group.d.ts.map +1 -0
  677. package/dist/components/base/forms/fields/repeater.d.ts +73 -0
  678. package/dist/components/base/forms/fields/repeater.d.ts.map +1 -0
  679. package/dist/components/base/forms/fields/repeaters.strings.d.ts +17 -0
  680. package/dist/components/base/forms/fields/repeaters.strings.d.ts.map +1 -0
  681. package/dist/components/base/forms/fields/rich-select.d.ts +53 -0
  682. package/dist/components/base/forms/fields/rich-select.d.ts.map +1 -0
  683. package/dist/components/base/forms/fields/rounding-mode-select.d.ts +16 -0
  684. package/dist/components/base/forms/fields/rounding-mode-select.d.ts.map +1 -0
  685. package/dist/components/base/forms/fields/select.d.ts +54 -0
  686. package/dist/components/base/forms/fields/select.d.ts.map +1 -0
  687. package/dist/components/base/forms/fields/slider.d.ts +46 -0
  688. package/dist/components/base/forms/fields/slider.d.ts.map +1 -0
  689. package/dist/components/base/forms/fields/string-repeater.d.ts +26 -0
  690. package/dist/components/base/forms/fields/string-repeater.d.ts.map +1 -0
  691. package/dist/components/base/forms/fields/switch-card.d.ts +19 -0
  692. package/dist/components/base/forms/fields/switch-card.d.ts.map +1 -0
  693. package/dist/components/base/forms/fields/switch.d.ts +23 -0
  694. package/dist/components/base/forms/fields/switch.d.ts.map +1 -0
  695. package/dist/components/base/forms/fields/tags-input.d.ts +65 -0
  696. package/dist/components/base/forms/fields/tags-input.d.ts.map +1 -0
  697. package/dist/components/base/forms/fields/textarea.d.ts +26 -0
  698. package/dist/components/base/forms/fields/textarea.d.ts.map +1 -0
  699. package/dist/components/base/forms/fields/time-picker.d.ts +58 -0
  700. package/dist/components/base/forms/fields/time-picker.d.ts.map +1 -0
  701. package/dist/components/base/forms/fields/toggle-field.d.ts +21 -0
  702. package/dist/components/base/forms/fields/toggle-field.d.ts.map +1 -0
  703. package/dist/components/base/forms/fields/upload-progress-list.d.ts +42 -0
  704. package/dist/components/base/forms/fields/upload-progress-list.d.ts.map +1 -0
  705. package/dist/components/base/forms/fields/upload-tray.d.ts +42 -0
  706. package/dist/components/base/forms/fields/upload-tray.d.ts.map +1 -0
  707. package/dist/components/base/forms/fields/weight-input.d.ts +59 -0
  708. package/dist/components/base/forms/fields/weight-input.d.ts.map +1 -0
  709. package/dist/components/base/forms/form-field.d.ts +33 -0
  710. package/dist/components/base/forms/form-field.d.ts.map +1 -0
  711. package/dist/components/base/forms/form-sizing.d.ts +26 -0
  712. package/dist/components/base/forms/form-sizing.d.ts.map +1 -0
  713. package/dist/components/base/forms/index.cjs +1 -0
  714. package/dist/components/base/forms/index.d.ts +4 -0
  715. package/dist/components/base/forms/index.d.ts.map +1 -0
  716. package/dist/components/base/forms/index.js +7 -0
  717. package/dist/components/base/forms/operation-password-form.d.ts +15 -0
  718. package/dist/components/base/forms/operation-password-form.d.ts.map +1 -0
  719. package/dist/components/base/index.d.ts.map +1 -0
  720. package/dist/components/base/item/index.cjs +1 -0
  721. package/dist/components/base/item/index.d.ts +3 -0
  722. package/dist/components/base/item/index.d.ts.map +1 -0
  723. package/dist/components/base/item/index.js +2 -0
  724. package/dist/components/base/item/item.d.ts +13 -0
  725. package/dist/components/base/item/item.d.ts.map +1 -0
  726. package/dist/components/base/item/item.types.d.ts +36 -0
  727. package/dist/components/base/item/item.types.d.ts.map +1 -0
  728. package/dist/components/base/map/index.cjs +2 -0
  729. package/dist/components/base/map/index.cjs.map +1 -0
  730. package/dist/components/base/map/index.d.ts +12 -0
  731. package/dist/components/base/map/index.d.ts.map +1 -0
  732. package/dist/components/base/map/index.js +861 -0
  733. package/dist/components/base/map/index.js.map +1 -0
  734. package/dist/components/base/map/map.d.ts +117 -0
  735. package/dist/components/base/map/map.d.ts.map +1 -0
  736. package/dist/components/base/map/place-autocomplete.d.ts +83 -0
  737. package/dist/components/base/map/place-autocomplete.d.ts.map +1 -0
  738. package/dist/components/base/navigation/action-menu.d.ts +36 -0
  739. package/dist/components/base/navigation/action-menu.d.ts.map +1 -0
  740. package/dist/components/base/navigation/aside-navigation-menu.d.ts +13 -0
  741. package/dist/components/base/navigation/aside-navigation-menu.d.ts.map +1 -0
  742. package/dist/components/base/navigation/breadcrumbs.d.ts +25 -0
  743. package/dist/components/base/navigation/breadcrumbs.d.ts.map +1 -0
  744. package/dist/components/base/navigation/dropdown-menu.d.ts +2 -0
  745. package/dist/components/base/navigation/dropdown-menu.d.ts.map +1 -0
  746. package/dist/components/base/navigation/index.cjs +1 -0
  747. package/dist/components/base/navigation/index.d.ts +12 -0
  748. package/dist/components/base/navigation/index.d.ts.map +1 -0
  749. package/dist/components/base/navigation/index.js +5 -0
  750. package/dist/components/base/navigation/language-switcher.d.ts +13 -0
  751. package/dist/components/base/navigation/language-switcher.d.ts.map +1 -0
  752. package/dist/components/base/navigation/navigation-tabs.d.ts +25 -0
  753. package/dist/components/base/navigation/navigation-tabs.d.ts.map +1 -0
  754. package/dist/components/base/navigation/overflow-tab-bar.d.ts +26 -0
  755. package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -0
  756. package/dist/components/base/navigation/page-header/index.d.ts +2 -0
  757. package/dist/components/base/navigation/page-header/index.d.ts.map +1 -0
  758. package/dist/components/base/navigation/page-header/page-header.d.ts +21 -0
  759. package/dist/components/base/navigation/page-header/page-header.d.ts.map +1 -0
  760. package/dist/components/base/navigation/section-nav/index.d.ts +2 -0
  761. package/dist/components/base/navigation/section-nav/index.d.ts.map +1 -0
  762. package/dist/components/base/navigation/section-nav/section-nav.d.ts +17 -0
  763. package/dist/components/base/navigation/section-nav/section-nav.d.ts.map +1 -0
  764. package/dist/components/base/navigation/side-nav.d.ts +30 -0
  765. package/dist/components/base/navigation/side-nav.d.ts.map +1 -0
  766. package/dist/components/base/navigation/tab-navigation-menu.d.ts +13 -0
  767. package/dist/components/base/navigation/tab-navigation-menu.d.ts.map +1 -0
  768. package/dist/components/base/navigation/tabs.d.ts +2 -0
  769. package/dist/components/base/navigation/tabs.d.ts.map +1 -0
  770. package/dist/components/base/popover/index.cjs +1 -0
  771. package/dist/components/base/popover/index.d.ts +2 -0
  772. package/dist/components/base/popover/index.d.ts.map +1 -0
  773. package/dist/components/base/popover/index.js +2 -0
  774. package/dist/components/base/popover/popover.d.ts +23 -0
  775. package/dist/components/base/popover/popover.d.ts.map +1 -0
  776. package/dist/components/base/popover-menu/index.cjs +1 -0
  777. package/dist/components/base/popover-menu/index.d.ts +4 -0
  778. package/dist/components/base/popover-menu/index.d.ts.map +1 -0
  779. package/dist/components/base/popover-menu/index.js +2 -0
  780. package/dist/components/base/popover-menu/popover-menu.d.ts +49 -0
  781. package/dist/components/base/popover-menu/popover-menu.d.ts.map +1 -0
  782. package/dist/components/base/popover-menu/popover-menu.types.d.ts +29 -0
  783. package/dist/components/base/popover-menu/popover-menu.types.d.ts.map +1 -0
  784. package/dist/components/base/sheet/index.cjs +1 -0
  785. package/dist/components/base/sheet/index.d.ts +2 -0
  786. package/dist/components/base/sheet/index.d.ts.map +1 -0
  787. package/dist/components/base/sheet/index.js +2 -0
  788. package/dist/components/base/sheet/sheet.d.ts +14 -0
  789. package/dist/components/base/sheet/sheet.d.ts.map +1 -0
  790. package/dist/components/base/sidebar/index.cjs +1 -0
  791. package/dist/components/base/sidebar/index.d.ts +2 -0
  792. package/dist/components/base/sidebar/index.d.ts.map +1 -0
  793. package/dist/components/base/sidebar/index.js +2 -0
  794. package/dist/components/base/sidebar/sidebar.d.ts +14 -0
  795. package/dist/components/base/sidebar/sidebar.d.ts.map +1 -0
  796. package/dist/components/base/spinner/index.cjs +1 -0
  797. package/dist/components/base/spinner/index.d.ts +2 -0
  798. package/dist/components/base/spinner/index.d.ts.map +1 -0
  799. package/dist/components/base/spinner/index.js +2 -0
  800. package/dist/components/base/spinner/spinner.d.ts +10 -0
  801. package/dist/components/base/spinner/spinner.d.ts.map +1 -0
  802. package/dist/components/base/table/column-visibility-toggle.d.ts +6 -0
  803. package/dist/components/base/table/column-visibility-toggle.d.ts.map +1 -0
  804. package/dist/components/base/table/data-table.d.ts +7 -0
  805. package/dist/components/base/table/data-table.d.ts.map +1 -0
  806. package/dist/components/base/table/filter-bar.d.ts +6 -0
  807. package/dist/components/base/table/filter-bar.d.ts.map +1 -0
  808. package/dist/components/base/table/hooks.d.ts +32 -0
  809. package/dist/components/base/table/hooks.d.ts.map +1 -0
  810. package/dist/components/base/table/index.cjs +2 -0
  811. package/dist/components/base/table/index.cjs.map +1 -0
  812. package/dist/components/base/table/index.d.ts +18 -0
  813. package/dist/components/base/table/index.d.ts.map +1 -0
  814. package/dist/components/base/table/index.js +1189 -0
  815. package/dist/components/base/table/index.js.map +1 -0
  816. package/dist/components/base/table/pagination.d.ts +6 -0
  817. package/dist/components/base/table/pagination.d.ts.map +1 -0
  818. package/dist/components/base/table/partials/cell-renderers.d.ts +62 -0
  819. package/dist/components/base/table/partials/cell-renderers.d.ts.map +1 -0
  820. package/dist/components/base/table/partials/cell-value.d.ts +41 -0
  821. package/dist/components/base/table/partials/cell-value.d.ts.map +1 -0
  822. package/dist/components/base/table/partials/density-toggle.d.ts +12 -0
  823. package/dist/components/base/table/partials/density-toggle.d.ts.map +1 -0
  824. package/dist/components/base/table/partials/table-link.d.ts +5 -0
  825. package/dist/components/base/table/partials/table-link.d.ts.map +1 -0
  826. package/dist/components/base/table/table-actions.d.ts +6 -0
  827. package/dist/components/base/table/table-actions.d.ts.map +1 -0
  828. package/dist/components/base/table/table-body.d.ts +6 -0
  829. package/dist/components/base/table/table-body.d.ts.map +1 -0
  830. package/dist/components/base/table/table-header.d.ts +6 -0
  831. package/dist/components/base/table/table-header.d.ts.map +1 -0
  832. package/dist/components/base/table/table-helpers.d.ts +40 -0
  833. package/dist/components/base/table/table-helpers.d.ts.map +1 -0
  834. package/dist/components/base/table/table-pagination.d.ts +6 -0
  835. package/dist/components/base/table/table-pagination.d.ts.map +1 -0
  836. package/dist/components/base/table/table-toolbar.d.ts +6 -0
  837. package/dist/components/base/table/table-toolbar.d.ts.map +1 -0
  838. package/dist/components/base/table/table.strings.d.ts +4 -0
  839. package/dist/components/base/table/table.strings.d.ts.map +1 -0
  840. package/dist/components/base/table/table.types.d.ts +298 -0
  841. package/dist/components/base/table/table.types.d.ts.map +1 -0
  842. package/dist/components/base/toaster/index.cjs +2 -0
  843. package/dist/components/base/toaster/index.cjs.map +1 -0
  844. package/dist/components/base/toaster/index.d.ts +2 -0
  845. package/dist/components/base/toaster/index.d.ts.map +1 -0
  846. package/dist/components/base/toaster/index.js +40 -0
  847. package/dist/components/base/toaster/index.js.map +1 -0
  848. package/dist/components/base/toaster/toaster.d.ts +7 -0
  849. package/dist/components/base/toaster/toaster.d.ts.map +1 -0
  850. package/dist/components/composed/admin/admin.strings.d.ts +32 -0
  851. package/dist/components/composed/admin/admin.strings.d.ts.map +1 -0
  852. package/dist/components/composed/admin/api-key-list/api-key-list.d.ts +3 -0
  853. package/dist/components/composed/admin/api-key-list/api-key-list.d.ts.map +1 -0
  854. package/dist/components/composed/admin/api-key-list/api-key-list.strings.d.ts +16 -0
  855. package/dist/components/composed/admin/api-key-list/api-key-list.strings.d.ts.map +1 -0
  856. package/dist/components/composed/admin/api-key-list/api-key-list.types.d.ts +55 -0
  857. package/dist/components/composed/admin/api-key-list/api-key-list.types.d.ts.map +1 -0
  858. package/dist/components/composed/admin/api-key-list/index.d.ts +4 -0
  859. package/dist/components/composed/admin/api-key-list/index.d.ts.map +1 -0
  860. package/dist/components/composed/admin/conversation-row/conversation-row.d.ts +6 -0
  861. package/dist/components/composed/admin/conversation-row/conversation-row.d.ts.map +1 -0
  862. package/dist/components/composed/admin/conversation-row/index.d.ts +3 -0
  863. package/dist/components/composed/admin/conversation-row/index.d.ts.map +1 -0
  864. package/dist/components/composed/admin/conversation-row/types.d.ts +12 -0
  865. package/dist/components/composed/admin/conversation-row/types.d.ts.map +1 -0
  866. package/dist/components/composed/admin/index.cjs +2 -0
  867. package/dist/components/composed/admin/index.cjs.map +1 -0
  868. package/dist/components/composed/admin/index.d.ts +12 -0
  869. package/dist/components/composed/admin/index.d.ts.map +1 -0
  870. package/dist/components/composed/admin/index.js +393 -0
  871. package/dist/components/composed/admin/index.js.map +1 -0
  872. package/dist/components/composed/admin/inventory-level/index.d.ts +3 -0
  873. package/dist/components/composed/admin/inventory-level/index.d.ts.map +1 -0
  874. package/dist/components/composed/admin/inventory-level/inventory-level.d.ts +6 -0
  875. package/dist/components/composed/admin/inventory-level/inventory-level.d.ts.map +1 -0
  876. package/dist/components/composed/admin/inventory-level/types.d.ts +13 -0
  877. package/dist/components/composed/admin/inventory-level/types.d.ts.map +1 -0
  878. package/dist/components/composed/admin/role-permission/index.d.ts +3 -0
  879. package/dist/components/composed/admin/role-permission/index.d.ts.map +1 -0
  880. package/dist/components/composed/admin/role-permission/role-permission.d.ts +6 -0
  881. package/dist/components/composed/admin/role-permission/role-permission.d.ts.map +1 -0
  882. package/dist/components/composed/admin/role-permission/types.d.ts +20 -0
  883. package/dist/components/composed/admin/role-permission/types.d.ts.map +1 -0
  884. package/dist/components/composed/admin/settings-toggle/index.d.ts +3 -0
  885. package/dist/components/composed/admin/settings-toggle/index.d.ts.map +1 -0
  886. package/dist/components/composed/admin/settings-toggle/settings-toggle.d.ts +6 -0
  887. package/dist/components/composed/admin/settings-toggle/settings-toggle.d.ts.map +1 -0
  888. package/dist/components/composed/admin/settings-toggle/types.d.ts +15 -0
  889. package/dist/components/composed/admin/settings-toggle/types.d.ts.map +1 -0
  890. package/dist/components/composed/admin/team-member/index.d.ts +3 -0
  891. package/dist/components/composed/admin/team-member/index.d.ts.map +1 -0
  892. package/dist/components/composed/admin/team-member/team-member.d.ts +6 -0
  893. package/dist/components/composed/admin/team-member/team-member.d.ts.map +1 -0
  894. package/dist/components/composed/admin/team-member/types.d.ts +12 -0
  895. package/dist/components/composed/admin/team-member/types.d.ts.map +1 -0
  896. package/dist/components/composed/ai/ai-agent/ai-agent.d.ts +6 -0
  897. package/dist/components/composed/ai/ai-agent/ai-agent.d.ts.map +1 -0
  898. package/dist/components/composed/ai/ai-agent/index.d.ts +3 -0
  899. package/dist/components/composed/ai/ai-agent/index.d.ts.map +1 -0
  900. package/dist/components/composed/ai/ai-agent/types.d.ts +28 -0
  901. package/dist/components/composed/ai/ai-agent/types.d.ts.map +1 -0
  902. package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts +6 -0
  903. package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts.map +1 -0
  904. package/dist/components/composed/ai/ai-artifact/index.d.ts +3 -0
  905. package/dist/components/composed/ai/ai-artifact/index.d.ts.map +1 -0
  906. package/dist/components/composed/ai/ai-artifact/types.d.ts +40 -0
  907. package/dist/components/composed/ai/ai-artifact/types.d.ts.map +1 -0
  908. package/dist/components/composed/ai/ai-attachment/ai-attachment.d.ts +6 -0
  909. package/dist/components/composed/ai/ai-attachment/ai-attachment.d.ts.map +1 -0
  910. package/dist/components/composed/ai/ai-attachment/index.d.ts +3 -0
  911. package/dist/components/composed/ai/ai-attachment/index.d.ts.map +1 -0
  912. package/dist/components/composed/ai/ai-attachment/types.d.ts +31 -0
  913. package/dist/components/composed/ai/ai-attachment/types.d.ts.map +1 -0
  914. package/dist/components/composed/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +6 -0
  915. package/dist/components/composed/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts.map +1 -0
  916. package/dist/components/composed/ai/ai-chain-of-thought/index.d.ts +3 -0
  917. package/dist/components/composed/ai/ai-chain-of-thought/index.d.ts.map +1 -0
  918. package/dist/components/composed/ai/ai-chain-of-thought/types.d.ts +31 -0
  919. package/dist/components/composed/ai/ai-chain-of-thought/types.d.ts.map +1 -0
  920. package/dist/components/composed/ai/ai-citation/ai-citation.d.ts +6 -0
  921. package/dist/components/composed/ai/ai-citation/ai-citation.d.ts.map +1 -0
  922. package/dist/components/composed/ai/ai-citation/index.d.ts +3 -0
  923. package/dist/components/composed/ai/ai-citation/index.d.ts.map +1 -0
  924. package/dist/components/composed/ai/ai-citation/types.d.ts +27 -0
  925. package/dist/components/composed/ai/ai-citation/types.d.ts.map +1 -0
  926. package/dist/components/composed/ai/ai-classification/ai-classification.d.ts +3 -0
  927. package/dist/components/composed/ai/ai-classification/ai-classification.d.ts.map +1 -0
  928. package/dist/components/composed/ai/ai-classification/index.d.ts +3 -0
  929. package/dist/components/composed/ai/ai-classification/index.d.ts.map +1 -0
  930. package/dist/components/composed/ai/ai-classification/types.d.ts +21 -0
  931. package/dist/components/composed/ai/ai-classification/types.d.ts.map +1 -0
  932. package/dist/components/composed/ai/ai-code-block/ai-code-block.d.ts +6 -0
  933. package/dist/components/composed/ai/ai-code-block/ai-code-block.d.ts.map +1 -0
  934. package/dist/components/composed/ai/ai-code-block/index.d.ts +3 -0
  935. package/dist/components/composed/ai/ai-code-block/index.d.ts.map +1 -0
  936. package/dist/components/composed/ai/ai-code-block/types.d.ts +32 -0
  937. package/dist/components/composed/ai/ai-code-block/types.d.ts.map +1 -0
  938. package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts +6 -0
  939. package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts.map +1 -0
  940. package/dist/components/composed/ai/ai-confidence/index.d.ts +3 -0
  941. package/dist/components/composed/ai/ai-confidence/index.d.ts.map +1 -0
  942. package/dist/components/composed/ai/ai-confidence/types.d.ts +18 -0
  943. package/dist/components/composed/ai/ai-confidence/types.d.ts.map +1 -0
  944. package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts +6 -0
  945. package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts.map +1 -0
  946. package/dist/components/composed/ai/ai-confirmation/index.d.ts +3 -0
  947. package/dist/components/composed/ai/ai-confirmation/index.d.ts.map +1 -0
  948. package/dist/components/composed/ai/ai-confirmation/types.d.ts +37 -0
  949. package/dist/components/composed/ai/ai-confirmation/types.d.ts.map +1 -0
  950. package/dist/components/composed/ai/ai-feedback/ai-feedback.d.ts +6 -0
  951. package/dist/components/composed/ai/ai-feedback/ai-feedback.d.ts.map +1 -0
  952. package/dist/components/composed/ai/ai-feedback/index.d.ts +3 -0
  953. package/dist/components/composed/ai/ai-feedback/index.d.ts.map +1 -0
  954. package/dist/components/composed/ai/ai-feedback/types.d.ts +20 -0
  955. package/dist/components/composed/ai/ai-feedback/types.d.ts.map +1 -0
  956. package/dist/components/composed/ai/ai-file-tree/ai-file-tree.d.ts +6 -0
  957. package/dist/components/composed/ai/ai-file-tree/ai-file-tree.d.ts.map +1 -0
  958. package/dist/components/composed/ai/ai-file-tree/index.d.ts +3 -0
  959. package/dist/components/composed/ai/ai-file-tree/index.d.ts.map +1 -0
  960. package/dist/components/composed/ai/ai-file-tree/types.d.ts +40 -0
  961. package/dist/components/composed/ai/ai-file-tree/types.d.ts.map +1 -0
  962. package/dist/components/composed/ai/ai-inline-citation/ai-inline-citation.d.ts +6 -0
  963. package/dist/components/composed/ai/ai-inline-citation/ai-inline-citation.d.ts.map +1 -0
  964. package/dist/components/composed/ai/ai-inline-citation/index.d.ts +3 -0
  965. package/dist/components/composed/ai/ai-inline-citation/index.d.ts.map +1 -0
  966. package/dist/components/composed/ai/ai-inline-citation/types.d.ts +20 -0
  967. package/dist/components/composed/ai/ai-inline-citation/types.d.ts.map +1 -0
  968. package/dist/components/composed/ai/ai-message-bubble/ai-message-bubble.d.ts +6 -0
  969. package/dist/components/composed/ai/ai-message-bubble/ai-message-bubble.d.ts.map +1 -0
  970. package/dist/components/composed/ai/ai-message-bubble/index.d.ts +3 -0
  971. package/dist/components/composed/ai/ai-message-bubble/index.d.ts.map +1 -0
  972. package/dist/components/composed/ai/ai-message-bubble/types.d.ts +24 -0
  973. package/dist/components/composed/ai/ai-message-bubble/types.d.ts.map +1 -0
  974. package/dist/components/composed/ai/ai-package-info/ai-package-info.d.ts +6 -0
  975. package/dist/components/composed/ai/ai-package-info/ai-package-info.d.ts.map +1 -0
  976. package/dist/components/composed/ai/ai-package-info/index.d.ts +3 -0
  977. package/dist/components/composed/ai/ai-package-info/index.d.ts.map +1 -0
  978. package/dist/components/composed/ai/ai-package-info/types.d.ts +35 -0
  979. package/dist/components/composed/ai/ai-package-info/types.d.ts.map +1 -0
  980. package/dist/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts +6 -0
  981. package/dist/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts.map +1 -0
  982. package/dist/components/composed/ai/ai-prompt-suggestions/index.d.ts +3 -0
  983. package/dist/components/composed/ai/ai-prompt-suggestions/index.d.ts.map +1 -0
  984. package/dist/components/composed/ai/ai-prompt-suggestions/types.d.ts +19 -0
  985. package/dist/components/composed/ai/ai-prompt-suggestions/types.d.ts.map +1 -0
  986. package/dist/components/composed/ai/ai-reasoning/ai-reasoning.d.ts +6 -0
  987. package/dist/components/composed/ai/ai-reasoning/ai-reasoning.d.ts.map +1 -0
  988. package/dist/components/composed/ai/ai-reasoning/index.d.ts +3 -0
  989. package/dist/components/composed/ai/ai-reasoning/index.d.ts.map +1 -0
  990. package/dist/components/composed/ai/ai-reasoning/types.d.ts +30 -0
  991. package/dist/components/composed/ai/ai-reasoning/types.d.ts.map +1 -0
  992. package/dist/components/composed/ai/ai-shimmer/ai-shimmer.d.ts +6 -0
  993. package/dist/components/composed/ai/ai-shimmer/ai-shimmer.d.ts.map +1 -0
  994. package/dist/components/composed/ai/ai-shimmer/index.d.ts +3 -0
  995. package/dist/components/composed/ai/ai-shimmer/index.d.ts.map +1 -0
  996. package/dist/components/composed/ai/ai-shimmer/types.d.ts +11 -0
  997. package/dist/components/composed/ai/ai-shimmer/types.d.ts.map +1 -0
  998. package/dist/components/composed/ai/ai-sources/ai-sources.d.ts +6 -0
  999. package/dist/components/composed/ai/ai-sources/ai-sources.d.ts.map +1 -0
  1000. package/dist/components/composed/ai/ai-sources/index.d.ts +3 -0
  1001. package/dist/components/composed/ai/ai-sources/index.d.ts.map +1 -0
  1002. package/dist/components/composed/ai/ai-sources/types.d.ts +36 -0
  1003. package/dist/components/composed/ai/ai-sources/types.d.ts.map +1 -0
  1004. package/dist/components/composed/ai/ai-summary/ai-summary.d.ts +3 -0
  1005. package/dist/components/composed/ai/ai-summary/ai-summary.d.ts.map +1 -0
  1006. package/dist/components/composed/ai/ai-summary/index.d.ts +3 -0
  1007. package/dist/components/composed/ai/ai-summary/index.d.ts.map +1 -0
  1008. package/dist/components/composed/ai/ai-summary/types.d.ts +16 -0
  1009. package/dist/components/composed/ai/ai-summary/types.d.ts.map +1 -0
  1010. package/dist/components/composed/ai/ai-task/ai-task.d.ts +6 -0
  1011. package/dist/components/composed/ai/ai-task/ai-task.d.ts.map +1 -0
  1012. package/dist/components/composed/ai/ai-task/index.d.ts +3 -0
  1013. package/dist/components/composed/ai/ai-task/index.d.ts.map +1 -0
  1014. package/dist/components/composed/ai/ai-task/types.d.ts +32 -0
  1015. package/dist/components/composed/ai/ai-task/types.d.ts.map +1 -0
  1016. package/dist/components/composed/ai/ai-token-usage/ai-token-usage.d.ts +6 -0
  1017. package/dist/components/composed/ai/ai-token-usage/ai-token-usage.d.ts.map +1 -0
  1018. package/dist/components/composed/ai/ai-token-usage/index.d.ts +3 -0
  1019. package/dist/components/composed/ai/ai-token-usage/index.d.ts.map +1 -0
  1020. package/dist/components/composed/ai/ai-token-usage/types.d.ts +18 -0
  1021. package/dist/components/composed/ai/ai-token-usage/types.d.ts.map +1 -0
  1022. package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts +6 -0
  1023. package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts.map +1 -0
  1024. package/dist/components/composed/ai/ai-tool-call/index.d.ts +3 -0
  1025. package/dist/components/composed/ai/ai-tool-call/index.d.ts.map +1 -0
  1026. package/dist/components/composed/ai/ai-tool-call/types.d.ts +29 -0
  1027. package/dist/components/composed/ai/ai-tool-call/types.d.ts.map +1 -0
  1028. package/dist/components/composed/ai/ai.strings.d.ts +41 -0
  1029. package/dist/components/composed/ai/ai.strings.d.ts.map +1 -0
  1030. package/dist/components/composed/ai/index.cjs +2 -0
  1031. package/dist/components/composed/ai/index.cjs.map +1 -0
  1032. package/dist/components/composed/ai/index.d.ts +25 -0
  1033. package/dist/components/composed/ai/index.d.ts.map +1 -0
  1034. package/dist/components/composed/ai/index.js +959 -0
  1035. package/dist/components/composed/ai/index.js.map +1 -0
  1036. package/dist/components/composed/analytics/activity-heatmap/activity-heatmap.d.ts +6 -0
  1037. package/dist/components/composed/analytics/activity-heatmap/activity-heatmap.d.ts.map +1 -0
  1038. package/dist/components/composed/analytics/activity-heatmap/index.d.ts +3 -0
  1039. package/dist/components/composed/analytics/activity-heatmap/index.d.ts.map +1 -0
  1040. package/dist/components/composed/analytics/activity-heatmap/types.d.ts +16 -0
  1041. package/dist/components/composed/analytics/activity-heatmap/types.d.ts.map +1 -0
  1042. package/dist/components/composed/analytics/analytics.strings.d.ts +36 -0
  1043. package/dist/components/composed/analytics/analytics.strings.d.ts.map +1 -0
  1044. package/dist/components/composed/analytics/atoms/metric-skeleton.d.ts +12 -0
  1045. package/dist/components/composed/analytics/atoms/metric-skeleton.d.ts.map +1 -0
  1046. package/dist/components/composed/analytics/atoms/metric-sparkline.d.ts +15 -0
  1047. package/dist/components/composed/analytics/atoms/metric-sparkline.d.ts.map +1 -0
  1048. package/dist/components/composed/analytics/atoms/metric-trend-chip.d.ts +14 -0
  1049. package/dist/components/composed/analytics/atoms/metric-trend-chip.d.ts.map +1 -0
  1050. package/dist/components/composed/analytics/format-metric-value.d.ts +9 -0
  1051. package/dist/components/composed/analytics/format-metric-value.d.ts.map +1 -0
  1052. package/dist/components/composed/analytics/index.cjs +2 -0
  1053. package/dist/components/composed/analytics/index.cjs.map +1 -0
  1054. package/dist/components/composed/analytics/index.d.ts +32 -0
  1055. package/dist/components/composed/analytics/index.d.ts.map +1 -0
  1056. package/dist/components/composed/analytics/index.js +1381 -0
  1057. package/dist/components/composed/analytics/index.js.map +1 -0
  1058. package/dist/components/composed/analytics/metric/index.d.ts +2 -0
  1059. package/dist/components/composed/analytics/metric/index.d.ts.map +1 -0
  1060. package/dist/components/composed/analytics/metric/metric.d.ts +22 -0
  1061. package/dist/components/composed/analytics/metric/metric.d.ts.map +1 -0
  1062. package/dist/components/composed/analytics/metric-bar/index.d.ts +2 -0
  1063. package/dist/components/composed/analytics/metric-bar/index.d.ts.map +1 -0
  1064. package/dist/components/composed/analytics/metric-bar/metric-bar.d.ts +18 -0
  1065. package/dist/components/composed/analytics/metric-bar/metric-bar.d.ts.map +1 -0
  1066. package/dist/components/composed/analytics/metric-comparison/index.d.ts +2 -0
  1067. package/dist/components/composed/analytics/metric-comparison/index.d.ts.map +1 -0
  1068. package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts +22 -0
  1069. package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts.map +1 -0
  1070. package/dist/components/composed/analytics/metric-gradient/index.d.ts +2 -0
  1071. package/dist/components/composed/analytics/metric-gradient/index.d.ts.map +1 -0
  1072. package/dist/components/composed/analytics/metric-gradient/metric-gradient.d.ts +16 -0
  1073. package/dist/components/composed/analytics/metric-gradient/metric-gradient.d.ts.map +1 -0
  1074. package/dist/components/composed/analytics/metric-grid/index.d.ts +2 -0
  1075. package/dist/components/composed/analytics/metric-grid/index.d.ts.map +1 -0
  1076. package/dist/components/composed/analytics/metric-grid/metric-grid.d.ts +21 -0
  1077. package/dist/components/composed/analytics/metric-grid/metric-grid.d.ts.map +1 -0
  1078. package/dist/components/composed/analytics/metric-micro-grid/index.d.ts +2 -0
  1079. package/dist/components/composed/analytics/metric-micro-grid/index.d.ts.map +1 -0
  1080. package/dist/components/composed/analytics/metric-micro-grid/metric-micro-grid.d.ts +18 -0
  1081. package/dist/components/composed/analytics/metric-micro-grid/metric-micro-grid.d.ts.map +1 -0
  1082. package/dist/components/composed/analytics/types.d.ts +70 -0
  1083. package/dist/components/composed/analytics/types.d.ts.map +1 -0
  1084. package/dist/components/composed/cards/contact-card/contact-card.d.ts +14 -0
  1085. package/dist/components/composed/cards/contact-card/contact-card.d.ts.map +1 -0
  1086. package/dist/components/composed/cards/contact-card/index.d.ts +3 -0
  1087. package/dist/components/composed/cards/contact-card/index.d.ts.map +1 -0
  1088. package/dist/components/composed/cards/contact-card/types.d.ts +23 -0
  1089. package/dist/components/composed/cards/contact-card/types.d.ts.map +1 -0
  1090. package/dist/components/composed/cards/course-card/course-card.d.ts +6 -0
  1091. package/dist/components/composed/cards/course-card/course-card.d.ts.map +1 -0
  1092. package/dist/components/composed/cards/course-card/index.d.ts +3 -0
  1093. package/dist/components/composed/cards/course-card/index.d.ts.map +1 -0
  1094. package/dist/components/composed/cards/course-card/types.d.ts +36 -0
  1095. package/dist/components/composed/cards/course-card/types.d.ts.map +1 -0
  1096. package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts +6 -0
  1097. package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts.map +1 -0
  1098. package/dist/components/composed/cards/feature-announcement/index.d.ts +3 -0
  1099. package/dist/components/composed/cards/feature-announcement/index.d.ts.map +1 -0
  1100. package/dist/components/composed/cards/feature-announcement/types.d.ts +11 -0
  1101. package/dist/components/composed/cards/feature-announcement/types.d.ts.map +1 -0
  1102. package/dist/components/composed/cards/giftcard-card/index.d.ts +7 -0
  1103. package/dist/components/composed/cards/giftcard-card/index.d.ts.map +1 -0
  1104. package/dist/components/composed/cards/giftcard-card/partials/giftcard-compact.d.ts +9 -0
  1105. package/dist/components/composed/cards/giftcard-card/partials/giftcard-compact.d.ts.map +1 -0
  1106. package/dist/components/composed/cards/giftcard-card/partials/giftcard-dark.d.ts +8 -0
  1107. package/dist/components/composed/cards/giftcard-card/partials/giftcard-dark.d.ts.map +1 -0
  1108. package/dist/components/composed/cards/giftcard-card/partials/giftcard-full.d.ts +10 -0
  1109. package/dist/components/composed/cards/giftcard-card/partials/giftcard-full.d.ts.map +1 -0
  1110. package/dist/components/composed/cards/giftcard-card/partials/giftcard-illustrated.d.ts +9 -0
  1111. package/dist/components/composed/cards/giftcard-card/partials/giftcard-illustrated.d.ts.map +1 -0
  1112. package/dist/components/composed/cards/giftcard-card/partials/giftcard-minimal.d.ts +9 -0
  1113. package/dist/components/composed/cards/giftcard-card/partials/giftcard-minimal.d.ts.map +1 -0
  1114. package/dist/components/composed/cards/giftcard-card/types.d.ts +78 -0
  1115. package/dist/components/composed/cards/giftcard-card/types.d.ts.map +1 -0
  1116. package/dist/components/composed/cards/gradient-card/gradient-card.d.ts +10 -0
  1117. package/dist/components/composed/cards/gradient-card/gradient-card.d.ts.map +1 -0
  1118. package/dist/components/composed/cards/gradient-card/index.d.ts +3 -0
  1119. package/dist/components/composed/cards/gradient-card/index.d.ts.map +1 -0
  1120. package/dist/components/composed/cards/gradient-card/types.d.ts +32 -0
  1121. package/dist/components/composed/cards/gradient-card/types.d.ts.map +1 -0
  1122. package/dist/components/composed/cards/index.cjs +2 -0
  1123. package/dist/components/composed/cards/index.cjs.map +1 -0
  1124. package/dist/components/composed/cards/index.d.ts +13 -0
  1125. package/dist/components/composed/cards/index.d.ts.map +1 -0
  1126. package/dist/components/composed/cards/index.js +1209 -0
  1127. package/dist/components/composed/cards/index.js.map +1 -0
  1128. package/dist/components/composed/cards/vendor-profile/index.d.ts +3 -0
  1129. package/dist/components/composed/cards/vendor-profile/index.d.ts.map +1 -0
  1130. package/dist/components/composed/cards/vendor-profile/types.d.ts +37 -0
  1131. package/dist/components/composed/cards/vendor-profile/types.d.ts.map +1 -0
  1132. package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts +6 -0
  1133. package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts.map +1 -0
  1134. package/dist/components/composed/commerce/address-card/address-card.d.ts +6 -0
  1135. package/dist/components/composed/commerce/address-card/address-card.d.ts.map +1 -0
  1136. package/dist/components/composed/commerce/address-card/index.d.ts +3 -0
  1137. package/dist/components/composed/commerce/address-card/index.d.ts.map +1 -0
  1138. package/dist/components/composed/commerce/address-card/types.d.ts +29 -0
  1139. package/dist/components/composed/commerce/address-card/types.d.ts.map +1 -0
  1140. package/dist/components/composed/commerce/cart-summary/cart-summary.d.ts +6 -0
  1141. package/dist/components/composed/commerce/cart-summary/cart-summary.d.ts.map +1 -0
  1142. package/dist/components/composed/commerce/cart-summary/index.d.ts +3 -0
  1143. package/dist/components/composed/commerce/cart-summary/index.d.ts.map +1 -0
  1144. package/dist/components/composed/commerce/cart-summary/types.d.ts +29 -0
  1145. package/dist/components/composed/commerce/cart-summary/types.d.ts.map +1 -0
  1146. package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts +6 -0
  1147. package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts.map +1 -0
  1148. package/dist/components/composed/commerce/coupon-input/index.d.ts +3 -0
  1149. package/dist/components/composed/commerce/coupon-input/index.d.ts.map +1 -0
  1150. package/dist/components/composed/commerce/coupon-input/types.d.ts +20 -0
  1151. package/dist/components/composed/commerce/coupon-input/types.d.ts.map +1 -0
  1152. package/dist/components/composed/commerce/discount-stack/discount-stack.d.ts +6 -0
  1153. package/dist/components/composed/commerce/discount-stack/discount-stack.d.ts.map +1 -0
  1154. package/dist/components/composed/commerce/discount-stack/index.d.ts +3 -0
  1155. package/dist/components/composed/commerce/discount-stack/index.d.ts.map +1 -0
  1156. package/dist/components/composed/commerce/discount-stack/types.d.ts +19 -0
  1157. package/dist/components/composed/commerce/discount-stack/types.d.ts.map +1 -0
  1158. package/dist/components/composed/commerce/index.cjs +2 -0
  1159. package/dist/components/composed/commerce/index.cjs.map +1 -0
  1160. package/dist/components/composed/commerce/index.d.ts +18 -0
  1161. package/dist/components/composed/commerce/index.d.ts.map +1 -0
  1162. package/dist/components/composed/commerce/index.js +1040 -0
  1163. package/dist/components/composed/commerce/index.js.map +1 -0
  1164. package/dist/components/composed/commerce/loyalty-points/index.d.ts +3 -0
  1165. package/dist/components/composed/commerce/loyalty-points/index.d.ts.map +1 -0
  1166. package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts +6 -0
  1167. package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts.map +1 -0
  1168. package/dist/components/composed/commerce/loyalty-points/types.d.ts +24 -0
  1169. package/dist/components/composed/commerce/loyalty-points/types.d.ts.map +1 -0
  1170. package/dist/components/composed/commerce/order-status/index.d.ts +3 -0
  1171. package/dist/components/composed/commerce/order-status/index.d.ts.map +1 -0
  1172. package/dist/components/composed/commerce/order-status/order-status.d.ts +6 -0
  1173. package/dist/components/composed/commerce/order-status/order-status.d.ts.map +1 -0
  1174. package/dist/components/composed/commerce/order-status/types.d.ts +23 -0
  1175. package/dist/components/composed/commerce/order-status/types.d.ts.map +1 -0
  1176. package/dist/components/composed/commerce/payment-method/index.d.ts +3 -0
  1177. package/dist/components/composed/commerce/payment-method/index.d.ts.map +1 -0
  1178. package/dist/components/composed/commerce/payment-method/payment-method.d.ts +6 -0
  1179. package/dist/components/composed/commerce/payment-method/payment-method.d.ts.map +1 -0
  1180. package/dist/components/composed/commerce/payment-method/types.d.ts +20 -0
  1181. package/dist/components/composed/commerce/payment-method/types.d.ts.map +1 -0
  1182. package/dist/components/composed/commerce/refund-status/index.d.ts +3 -0
  1183. package/dist/components/composed/commerce/refund-status/index.d.ts.map +1 -0
  1184. package/dist/components/composed/commerce/refund-status/refund-status.d.ts +6 -0
  1185. package/dist/components/composed/commerce/refund-status/refund-status.d.ts.map +1 -0
  1186. package/dist/components/composed/commerce/refund-status/types.d.ts +24 -0
  1187. package/dist/components/composed/commerce/refund-status/types.d.ts.map +1 -0
  1188. package/dist/components/composed/commerce/shipment-tracking/index.d.ts +3 -0
  1189. package/dist/components/composed/commerce/shipment-tracking/index.d.ts.map +1 -0
  1190. package/dist/components/composed/commerce/shipment-tracking/shipment-tracking.d.ts +6 -0
  1191. package/dist/components/composed/commerce/shipment-tracking/shipment-tracking.d.ts.map +1 -0
  1192. package/dist/components/composed/commerce/shipment-tracking/types.d.ts +17 -0
  1193. package/dist/components/composed/commerce/shipment-tracking/types.d.ts.map +1 -0
  1194. package/dist/components/composed/commerce/subscription-summary/index.d.ts +3 -0
  1195. package/dist/components/composed/commerce/subscription-summary/index.d.ts.map +1 -0
  1196. package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts +6 -0
  1197. package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts.map +1 -0
  1198. package/dist/components/composed/commerce/subscription-summary/types.d.ts +27 -0
  1199. package/dist/components/composed/commerce/subscription-summary/types.d.ts.map +1 -0
  1200. package/dist/components/composed/commerce/tax-breakdown/index.d.ts +3 -0
  1201. package/dist/components/composed/commerce/tax-breakdown/index.d.ts.map +1 -0
  1202. package/dist/components/composed/commerce/tax-breakdown/tax-breakdown.d.ts +6 -0
  1203. package/dist/components/composed/commerce/tax-breakdown/tax-breakdown.d.ts.map +1 -0
  1204. package/dist/components/composed/commerce/tax-breakdown/types.d.ts +22 -0
  1205. package/dist/components/composed/commerce/tax-breakdown/types.d.ts.map +1 -0
  1206. package/dist/components/composed/commerce/upcoming-booking/index.d.ts +3 -0
  1207. package/dist/components/composed/commerce/upcoming-booking/index.d.ts.map +1 -0
  1208. package/dist/components/composed/commerce/upcoming-booking/types.d.ts +33 -0
  1209. package/dist/components/composed/commerce/upcoming-booking/types.d.ts.map +1 -0
  1210. package/dist/components/composed/commerce/upcoming-booking/upcoming-booking.d.ts +6 -0
  1211. package/dist/components/composed/commerce/upcoming-booking/upcoming-booking.d.ts.map +1 -0
  1212. package/dist/components/composed/commerce/voucher-entry/index.d.ts +3 -0
  1213. package/dist/components/composed/commerce/voucher-entry/index.d.ts.map +1 -0
  1214. package/dist/components/composed/commerce/voucher-entry/types.d.ts +20 -0
  1215. package/dist/components/composed/commerce/voucher-entry/types.d.ts.map +1 -0
  1216. package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts +6 -0
  1217. package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts.map +1 -0
  1218. package/dist/components/composed/dark-surfaces/booking-receipt/booking-receipt.d.ts +6 -0
  1219. package/dist/components/composed/dark-surfaces/booking-receipt/booking-receipt.d.ts.map +1 -0
  1220. package/dist/components/composed/dark-surfaces/booking-receipt/index.d.ts +3 -0
  1221. package/dist/components/composed/dark-surfaces/booking-receipt/index.d.ts.map +1 -0
  1222. package/dist/components/composed/dark-surfaces/booking-receipt/types.d.ts +16 -0
  1223. package/dist/components/composed/dark-surfaces/booking-receipt/types.d.ts.map +1 -0
  1224. package/dist/components/composed/dark-surfaces/dark-info-panel/dark-info-panel.d.ts +6 -0
  1225. package/dist/components/composed/dark-surfaces/dark-info-panel/dark-info-panel.d.ts.map +1 -0
  1226. package/dist/components/composed/dark-surfaces/dark-info-panel/index.d.ts +3 -0
  1227. package/dist/components/composed/dark-surfaces/dark-info-panel/index.d.ts.map +1 -0
  1228. package/dist/components/composed/dark-surfaces/dark-info-panel/types.d.ts +18 -0
  1229. package/dist/components/composed/dark-surfaces/dark-info-panel/types.d.ts.map +1 -0
  1230. package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts +6 -0
  1231. package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts.map +1 -0
  1232. package/dist/components/composed/dark-surfaces/dark-payment/index.d.ts +3 -0
  1233. package/dist/components/composed/dark-surfaces/dark-payment/index.d.ts.map +1 -0
  1234. package/dist/components/composed/dark-surfaces/dark-payment/types.d.ts +15 -0
  1235. package/dist/components/composed/dark-surfaces/dark-payment/types.d.ts.map +1 -0
  1236. package/dist/components/composed/dark-surfaces/dark-surfaces.strings.d.ts +37 -0
  1237. package/dist/components/composed/dark-surfaces/dark-surfaces.strings.d.ts.map +1 -0
  1238. package/dist/components/composed/dark-surfaces/index.cjs +2 -0
  1239. package/dist/components/composed/dark-surfaces/index.cjs.map +1 -0
  1240. package/dist/components/composed/dark-surfaces/index.d.ts +11 -0
  1241. package/dist/components/composed/dark-surfaces/index.d.ts.map +1 -0
  1242. package/dist/components/composed/dark-surfaces/index.js +330 -0
  1243. package/dist/components/composed/dark-surfaces/index.js.map +1 -0
  1244. package/dist/components/composed/dark-surfaces/order-items/index.d.ts +3 -0
  1245. package/dist/components/composed/dark-surfaces/order-items/index.d.ts.map +1 -0
  1246. package/dist/components/composed/dark-surfaces/order-items/order-items.d.ts +6 -0
  1247. package/dist/components/composed/dark-surfaces/order-items/order-items.d.ts.map +1 -0
  1248. package/dist/components/composed/dark-surfaces/order-items/types.d.ts +22 -0
  1249. package/dist/components/composed/dark-surfaces/order-items/types.d.ts.map +1 -0
  1250. package/dist/components/composed/dark-surfaces/outstanding-balance/index.d.ts +3 -0
  1251. package/dist/components/composed/dark-surfaces/outstanding-balance/index.d.ts.map +1 -0
  1252. package/dist/components/composed/dark-surfaces/outstanding-balance/outstanding-balance.d.ts +6 -0
  1253. package/dist/components/composed/dark-surfaces/outstanding-balance/outstanding-balance.d.ts.map +1 -0
  1254. package/dist/components/composed/dark-surfaces/outstanding-balance/types.d.ts +13 -0
  1255. package/dist/components/composed/dark-surfaces/outstanding-balance/types.d.ts.map +1 -0
  1256. package/dist/components/composed/data-display/dense-info-card/helpers.d.ts +13 -0
  1257. package/dist/components/composed/data-display/dense-info-card/helpers.d.ts.map +1 -0
  1258. package/dist/components/composed/data-display/dense-info-card/index.d.ts +7 -0
  1259. package/dist/components/composed/data-display/dense-info-card/index.d.ts.map +1 -0
  1260. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-classification.d.ts +6 -0
  1261. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-classification.d.ts.map +1 -0
  1262. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +6 -0
  1263. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-dashboard.d.ts.map +1 -0
  1264. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-financial.d.ts +6 -0
  1265. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-financial.d.ts.map +1 -0
  1266. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-project.d.ts +6 -0
  1267. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-project.d.ts.map +1 -0
  1268. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-score.d.ts +6 -0
  1269. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-score.d.ts.map +1 -0
  1270. package/dist/components/composed/data-display/dense-info-card/types.d.ts +112 -0
  1271. package/dist/components/composed/data-display/dense-info-card/types.d.ts.map +1 -0
  1272. package/dist/components/composed/data-display/index.cjs +2 -0
  1273. package/dist/components/composed/data-display/index.cjs.map +1 -0
  1274. package/dist/components/composed/data-display/index.d.ts +15 -0
  1275. package/dist/components/composed/data-display/index.d.ts.map +1 -0
  1276. package/dist/components/composed/data-display/index.js +1069 -0
  1277. package/dist/components/composed/data-display/index.js.map +1 -0
  1278. package/dist/components/composed/data-display/inline-metric/index.d.ts +3 -0
  1279. package/dist/components/composed/data-display/inline-metric/index.d.ts.map +1 -0
  1280. package/dist/components/composed/data-display/inline-metric/inline-metric.d.ts +6 -0
  1281. package/dist/components/composed/data-display/inline-metric/inline-metric.d.ts.map +1 -0
  1282. package/dist/components/composed/data-display/inline-metric/types.d.ts +12 -0
  1283. package/dist/components/composed/data-display/inline-metric/types.d.ts.map +1 -0
  1284. package/dist/components/composed/data-display/invoice-header/index.d.ts +3 -0
  1285. package/dist/components/composed/data-display/invoice-header/index.d.ts.map +1 -0
  1286. package/dist/components/composed/data-display/invoice-header/invoice-header.d.ts +6 -0
  1287. package/dist/components/composed/data-display/invoice-header/invoice-header.d.ts.map +1 -0
  1288. package/dist/components/composed/data-display/invoice-header/types.d.ts +27 -0
  1289. package/dist/components/composed/data-display/invoice-header/types.d.ts.map +1 -0
  1290. package/dist/components/composed/data-display/invoice-items/index.d.ts +3 -0
  1291. package/dist/components/composed/data-display/invoice-items/index.d.ts.map +1 -0
  1292. package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts +14 -0
  1293. package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts.map +1 -0
  1294. package/dist/components/composed/data-display/invoice-items/types.d.ts +23 -0
  1295. package/dist/components/composed/data-display/invoice-items/types.d.ts.map +1 -0
  1296. package/dist/components/composed/data-display/invoice-mini/index.d.ts +4 -0
  1297. package/dist/components/composed/data-display/invoice-mini/index.d.ts.map +1 -0
  1298. package/dist/components/composed/data-display/invoice-mini/invoice-mini.d.ts +6 -0
  1299. package/dist/components/composed/data-display/invoice-mini/invoice-mini.d.ts.map +1 -0
  1300. package/dist/components/composed/data-display/invoice-mini/types.d.ts +30 -0
  1301. package/dist/components/composed/data-display/invoice-mini/types.d.ts.map +1 -0
  1302. package/dist/components/composed/data-display/invoice-table/index.d.ts +3 -0
  1303. package/dist/components/composed/data-display/invoice-table/index.d.ts.map +1 -0
  1304. package/dist/components/composed/data-display/invoice-table/invoice-table.d.ts +6 -0
  1305. package/dist/components/composed/data-display/invoice-table/invoice-table.d.ts.map +1 -0
  1306. package/dist/components/composed/data-display/invoice-table/types.d.ts +54 -0
  1307. package/dist/components/composed/data-display/invoice-table/types.d.ts.map +1 -0
  1308. package/dist/components/composed/data-display/mini-kpi/index.d.ts +3 -0
  1309. package/dist/components/composed/data-display/mini-kpi/index.d.ts.map +1 -0
  1310. package/dist/components/composed/data-display/mini-kpi/mini-kpi.d.ts +6 -0
  1311. package/dist/components/composed/data-display/mini-kpi/mini-kpi.d.ts.map +1 -0
  1312. package/dist/components/composed/data-display/mini-kpi/types.d.ts +9 -0
  1313. package/dist/components/composed/data-display/mini-kpi/types.d.ts.map +1 -0
  1314. package/dist/components/composed/index.d.ts.map +1 -0
  1315. package/dist/components/composed/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +6 -0
  1316. package/dist/components/composed/navigation/breadcrumb-progress/breadcrumb-progress.d.ts.map +1 -0
  1317. package/dist/components/composed/navigation/breadcrumb-progress/index.d.ts +3 -0
  1318. package/dist/components/composed/navigation/breadcrumb-progress/index.d.ts.map +1 -0
  1319. package/dist/components/composed/navigation/breadcrumb-progress/types.d.ts +18 -0
  1320. package/dist/components/composed/navigation/breadcrumb-progress/types.d.ts.map +1 -0
  1321. package/dist/components/composed/navigation/category-nav/category-nav.d.ts +6 -0
  1322. package/dist/components/composed/navigation/category-nav/category-nav.d.ts.map +1 -0
  1323. package/dist/components/composed/navigation/category-nav/index.d.ts +3 -0
  1324. package/dist/components/composed/navigation/category-nav/index.d.ts.map +1 -0
  1325. package/dist/components/composed/navigation/category-nav/types.d.ts +16 -0
  1326. package/dist/components/composed/navigation/category-nav/types.d.ts.map +1 -0
  1327. package/dist/components/composed/navigation/experience-activity/experience-activity.d.ts +6 -0
  1328. package/dist/components/composed/navigation/experience-activity/experience-activity.d.ts.map +1 -0
  1329. package/dist/components/composed/navigation/experience-activity/index.d.ts +3 -0
  1330. package/dist/components/composed/navigation/experience-activity/index.d.ts.map +1 -0
  1331. package/dist/components/composed/navigation/experience-activity/types.d.ts +19 -0
  1332. package/dist/components/composed/navigation/experience-activity/types.d.ts.map +1 -0
  1333. package/dist/components/composed/navigation/index.cjs +2 -0
  1334. package/dist/components/composed/navigation/index.cjs.map +1 -0
  1335. package/dist/components/composed/navigation/index.d.ts +13 -0
  1336. package/dist/components/composed/navigation/index.d.ts.map +1 -0
  1337. package/dist/components/composed/navigation/index.js +447 -0
  1338. package/dist/components/composed/navigation/index.js.map +1 -0
  1339. package/dist/components/composed/navigation/kanban-board/index.d.ts +3 -0
  1340. package/dist/components/composed/navigation/kanban-board/index.d.ts.map +1 -0
  1341. package/dist/components/composed/navigation/kanban-board/kanban-board.d.ts +6 -0
  1342. package/dist/components/composed/navigation/kanban-board/kanban-board.d.ts.map +1 -0
  1343. package/dist/components/composed/navigation/kanban-board/types.d.ts +13 -0
  1344. package/dist/components/composed/navigation/kanban-board/types.d.ts.map +1 -0
  1345. package/dist/components/composed/navigation/tab-switcher/index.d.ts +3 -0
  1346. package/dist/components/composed/navigation/tab-switcher/index.d.ts.map +1 -0
  1347. package/dist/components/composed/navigation/tab-switcher/tab-switcher.d.ts +6 -0
  1348. package/dist/components/composed/navigation/tab-switcher/tab-switcher.d.ts.map +1 -0
  1349. package/dist/components/composed/navigation/tab-switcher/types.d.ts +13 -0
  1350. package/dist/components/composed/navigation/tab-switcher/types.d.ts.map +1 -0
  1351. package/dist/components/composed/navigation/time-ruler/index.d.ts +3 -0
  1352. package/dist/components/composed/navigation/time-ruler/index.d.ts.map +1 -0
  1353. package/dist/components/composed/navigation/time-ruler/time-ruler.d.ts +6 -0
  1354. package/dist/components/composed/navigation/time-ruler/time-ruler.d.ts.map +1 -0
  1355. package/dist/components/composed/navigation/time-ruler/types.d.ts +20 -0
  1356. package/dist/components/composed/navigation/time-ruler/types.d.ts.map +1 -0
  1357. package/dist/components/composed/navigation/vendor-performance/index.d.ts +3 -0
  1358. package/dist/components/composed/navigation/vendor-performance/index.d.ts.map +1 -0
  1359. package/dist/components/composed/navigation/vendor-performance/types.d.ts +17 -0
  1360. package/dist/components/composed/navigation/vendor-performance/types.d.ts.map +1 -0
  1361. package/dist/components/composed/navigation/vendor-performance/vendor-performance.d.ts +6 -0
  1362. package/dist/components/composed/navigation/vendor-performance/vendor-performance.d.ts.map +1 -0
  1363. package/dist/components/composed/onboarding/checklist/checklist.d.ts +3 -0
  1364. package/dist/components/composed/onboarding/checklist/checklist.d.ts.map +1 -0
  1365. package/dist/components/composed/onboarding/checklist/checklist.strings.d.ts +16 -0
  1366. package/dist/components/composed/onboarding/checklist/checklist.strings.d.ts.map +1 -0
  1367. package/dist/components/composed/onboarding/checklist/checklist.types.d.ts +61 -0
  1368. package/dist/components/composed/onboarding/checklist/checklist.types.d.ts.map +1 -0
  1369. package/dist/components/composed/onboarding/checklist/index.d.ts +5 -0
  1370. package/dist/components/composed/onboarding/checklist/index.d.ts.map +1 -0
  1371. package/dist/components/composed/onboarding/checklist/partials/step-status-indicator.d.ts +12 -0
  1372. package/dist/components/composed/onboarding/checklist/partials/step-status-indicator.d.ts.map +1 -0
  1373. package/dist/components/composed/onboarding/index.cjs +2 -0
  1374. package/dist/components/composed/onboarding/index.cjs.map +1 -0
  1375. package/dist/components/composed/onboarding/index.d.ts +8 -0
  1376. package/dist/components/composed/onboarding/index.d.ts.map +1 -0
  1377. package/dist/components/composed/onboarding/index.js +123 -0
  1378. package/dist/components/composed/onboarding/index.js.map +1 -0
  1379. package/dist/components/composed/timelines/activity-stream/activity-stream.d.ts +6 -0
  1380. package/dist/components/composed/timelines/activity-stream/activity-stream.d.ts.map +1 -0
  1381. package/dist/components/composed/timelines/activity-stream/index.d.ts +3 -0
  1382. package/dist/components/composed/timelines/activity-stream/index.d.ts.map +1 -0
  1383. package/dist/components/composed/timelines/activity-stream/types.d.ts +26 -0
  1384. package/dist/components/composed/timelines/activity-stream/types.d.ts.map +1 -0
  1385. package/dist/components/composed/timelines/changelog/changelog-timeline.d.ts +6 -0
  1386. package/dist/components/composed/timelines/changelog/changelog-timeline.d.ts.map +1 -0
  1387. package/dist/components/composed/timelines/changelog/index.d.ts +3 -0
  1388. package/dist/components/composed/timelines/changelog/index.d.ts.map +1 -0
  1389. package/dist/components/composed/timelines/changelog/types.d.ts +25 -0
  1390. package/dist/components/composed/timelines/changelog/types.d.ts.map +1 -0
  1391. package/dist/components/composed/timelines/index.cjs +2 -0
  1392. package/dist/components/composed/timelines/index.cjs.map +1 -0
  1393. package/dist/components/composed/timelines/index.d.ts +11 -0
  1394. package/dist/components/composed/timelines/index.d.ts.map +1 -0
  1395. package/dist/components/composed/timelines/index.js +594 -0
  1396. package/dist/components/composed/timelines/index.js.map +1 -0
  1397. package/dist/components/composed/timelines/milestones/index.d.ts +3 -0
  1398. package/dist/components/composed/timelines/milestones/index.d.ts.map +1 -0
  1399. package/dist/components/composed/timelines/milestones/milestones-timeline.d.ts +6 -0
  1400. package/dist/components/composed/timelines/milestones/milestones-timeline.d.ts.map +1 -0
  1401. package/dist/components/composed/timelines/milestones/types.d.ts +26 -0
  1402. package/dist/components/composed/timelines/milestones/types.d.ts.map +1 -0
  1403. package/dist/components/composed/timelines/order-timeline/index.d.ts +3 -0
  1404. package/dist/components/composed/timelines/order-timeline/index.d.ts.map +1 -0
  1405. package/dist/components/composed/timelines/order-timeline/order-timeline.d.ts +3 -0
  1406. package/dist/components/composed/timelines/order-timeline/order-timeline.d.ts.map +1 -0
  1407. package/dist/components/composed/timelines/order-timeline/types.d.ts +16 -0
  1408. package/dist/components/composed/timelines/order-timeline/types.d.ts.map +1 -0
  1409. package/dist/components/composed/timelines/payment-timeline/index.d.ts +3 -0
  1410. package/dist/components/composed/timelines/payment-timeline/index.d.ts.map +1 -0
  1411. package/dist/components/composed/timelines/payment-timeline/payment-timeline.d.ts +3 -0
  1412. package/dist/components/composed/timelines/payment-timeline/payment-timeline.d.ts.map +1 -0
  1413. package/dist/components/composed/timelines/payment-timeline/types.d.ts +13 -0
  1414. package/dist/components/composed/timelines/payment-timeline/types.d.ts.map +1 -0
  1415. package/dist/components/composed/timelines/shared/index.d.ts +2 -0
  1416. package/dist/components/composed/timelines/shared/index.d.ts.map +1 -0
  1417. package/dist/components/composed/timelines/shared/timeline.d.ts +23 -0
  1418. package/dist/components/composed/timelines/shared/timeline.d.ts.map +1 -0
  1419. package/dist/components/composed/timelines/steps-card/index.d.ts +3 -0
  1420. package/dist/components/composed/timelines/steps-card/index.d.ts.map +1 -0
  1421. package/dist/components/composed/timelines/steps-card/steps-card.d.ts +10 -0
  1422. package/dist/components/composed/timelines/steps-card/steps-card.d.ts.map +1 -0
  1423. package/dist/components/composed/timelines/steps-card/types.d.ts +28 -0
  1424. package/dist/components/composed/timelines/steps-card/types.d.ts.map +1 -0
  1425. package/dist/components/features/activities/activities-feed.d.ts +6 -0
  1426. package/dist/components/features/activities/activities-feed.d.ts.map +1 -0
  1427. package/dist/components/features/activities/activities.config.d.ts +7 -0
  1428. package/dist/components/features/activities/activities.config.d.ts.map +1 -0
  1429. package/dist/components/features/activities/activities.strings.d.ts +39 -0
  1430. package/dist/components/features/activities/activities.strings.d.ts.map +1 -0
  1431. package/dist/components/features/activities/activities.types.d.ts +235 -0
  1432. package/dist/components/features/activities/activities.types.d.ts.map +1 -0
  1433. package/dist/components/features/activities/hooks/index.d.ts +3 -0
  1434. package/dist/components/features/activities/hooks/index.d.ts.map +1 -0
  1435. package/dist/components/features/activities/hooks/use-activity-feed.d.ts +29 -0
  1436. package/dist/components/features/activities/hooks/use-activity-feed.d.ts.map +1 -0
  1437. package/dist/components/features/activities/hooks/use-activity-resources.d.ts +23 -0
  1438. package/dist/components/features/activities/hooks/use-activity-resources.d.ts.map +1 -0
  1439. package/dist/components/features/activities/index.cjs +2 -0
  1440. package/dist/components/features/activities/index.cjs.map +1 -0
  1441. package/dist/components/features/activities/index.d.ts +8 -0
  1442. package/dist/components/features/activities/index.d.ts.map +1 -0
  1443. package/dist/components/features/activities/index.js +961 -0
  1444. package/dist/components/features/activities/index.js.map +1 -0
  1445. package/dist/components/features/activities/partials/activities-feed-card.d.ts +6 -0
  1446. package/dist/components/features/activities/partials/activities-feed-card.d.ts.map +1 -0
  1447. package/dist/components/features/activities/partials/activity-actions-menu.d.ts +9 -0
  1448. package/dist/components/features/activities/partials/activity-actions-menu.d.ts.map +1 -0
  1449. package/dist/components/features/activities/partials/activity-changes.d.ts +7 -0
  1450. package/dist/components/features/activities/partials/activity-changes.d.ts.map +1 -0
  1451. package/dist/components/features/activities/partials/activity-date-label.d.ts +7 -0
  1452. package/dist/components/features/activities/partials/activity-date-label.d.ts.map +1 -0
  1453. package/dist/components/features/activities/partials/activity-empty-state.d.ts +7 -0
  1454. package/dist/components/features/activities/partials/activity-empty-state.d.ts.map +1 -0
  1455. package/dist/components/features/activities/partials/activity-headline.d.ts +12 -0
  1456. package/dist/components/features/activities/partials/activity-headline.d.ts.map +1 -0
  1457. package/dist/components/features/activities/partials/activity-marker.d.ts +10 -0
  1458. package/dist/components/features/activities/partials/activity-marker.d.ts.map +1 -0
  1459. package/dist/components/features/activities/partials/activity-resource-tag.d.ts +10 -0
  1460. package/dist/components/features/activities/partials/activity-resource-tag.d.ts.map +1 -0
  1461. package/dist/components/features/activities/partials/activity-row.d.ts +31 -0
  1462. package/dist/components/features/activities/partials/activity-row.d.ts.map +1 -0
  1463. package/dist/components/features/activities/partials/index.d.ts +10 -0
  1464. package/dist/components/features/activities/partials/index.d.ts.map +1 -0
  1465. package/dist/components/features/activities/partials/tone-tokens.d.ts +20 -0
  1466. package/dist/components/features/activities/partials/tone-tokens.d.ts.map +1 -0
  1467. package/dist/components/features/ai-chat/ai-chat.d.ts +57 -0
  1468. package/dist/components/features/ai-chat/ai-chat.d.ts.map +1 -0
  1469. package/dist/components/features/ai-chat/ai-chat.strings.d.ts +54 -0
  1470. package/dist/components/features/ai-chat/ai-chat.strings.d.ts.map +1 -0
  1471. package/dist/components/features/ai-chat/ai-chat.types.d.ts +160 -0
  1472. package/dist/components/features/ai-chat/ai-chat.types.d.ts.map +1 -0
  1473. package/dist/components/features/ai-chat/hooks/index.d.ts +2 -0
  1474. package/dist/components/features/ai-chat/hooks/index.d.ts.map +1 -0
  1475. package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +16 -0
  1476. package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts.map +1 -0
  1477. package/dist/components/features/ai-chat/index.cjs +3 -0
  1478. package/dist/components/features/ai-chat/index.cjs.map +1 -0
  1479. package/dist/components/features/ai-chat/index.d.ts +6 -0
  1480. package/dist/components/features/ai-chat/index.d.ts.map +1 -0
  1481. package/dist/components/features/ai-chat/index.js +559 -0
  1482. package/dist/components/features/ai-chat/index.js.map +1 -0
  1483. package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +14 -0
  1484. package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts.map +1 -0
  1485. package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts +22 -0
  1486. package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts.map +1 -0
  1487. package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts +13 -0
  1488. package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts.map +1 -0
  1489. package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts +18 -0
  1490. package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts.map +1 -0
  1491. package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +44 -0
  1492. package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts.map +1 -0
  1493. package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +14 -0
  1494. package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts.map +1 -0
  1495. package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +14 -0
  1496. package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts.map +1 -0
  1497. package/dist/components/features/ai-chat/partials/index.d.ts +8 -0
  1498. package/dist/components/features/ai-chat/partials/index.d.ts.map +1 -0
  1499. package/dist/components/features/card/booking-calendar-event-card.d.ts +20 -0
  1500. package/dist/components/features/card/booking-calendar-event-card.d.ts.map +1 -0
  1501. package/dist/components/features/card/card.strings.d.ts +15 -0
  1502. package/dist/components/features/card/card.strings.d.ts.map +1 -0
  1503. package/dist/components/features/card/card.types.d.ts +91 -0
  1504. package/dist/components/features/card/card.types.d.ts.map +1 -0
  1505. package/dist/components/features/card/hooks/index.d.ts +2 -0
  1506. package/dist/components/features/card/hooks/index.d.ts.map +1 -0
  1507. package/dist/components/features/card/hooks/use-shared-resource-card.d.ts +26 -0
  1508. package/dist/components/features/card/hooks/use-shared-resource-card.d.ts.map +1 -0
  1509. package/dist/components/features/card/index.cjs +2 -0
  1510. package/dist/components/features/card/index.cjs.map +1 -0
  1511. package/dist/components/features/card/index.d.ts +8 -0
  1512. package/dist/components/features/card/index.d.ts.map +1 -0
  1513. package/dist/components/features/card/index.js +305 -0
  1514. package/dist/components/features/card/index.js.map +1 -0
  1515. package/dist/components/features/card/partials/default-shared-resource-partials.d.ts +27 -0
  1516. package/dist/components/features/card/partials/default-shared-resource-partials.d.ts.map +1 -0
  1517. package/dist/components/features/card/partials/index.d.ts +2 -0
  1518. package/dist/components/features/card/partials/index.d.ts.map +1 -0
  1519. package/dist/components/features/card/shared-resource-card.d.ts +7 -0
  1520. package/dist/components/features/card/shared-resource-card.d.ts.map +1 -0
  1521. package/dist/components/features/comments/comments-provider.d.ts +15 -0
  1522. package/dist/components/features/comments/comments-provider.d.ts.map +1 -0
  1523. package/dist/components/features/comments/comments.d.ts +5 -0
  1524. package/dist/components/features/comments/comments.d.ts.map +1 -0
  1525. package/dist/components/features/comments/comments.strings.d.ts +71 -0
  1526. package/dist/components/features/comments/comments.strings.d.ts.map +1 -0
  1527. package/dist/components/features/comments/comments.types.d.ts +271 -0
  1528. package/dist/components/features/comments/comments.types.d.ts.map +1 -0
  1529. package/dist/components/features/comments/hooks/index.d.ts +6 -0
  1530. package/dist/components/features/comments/hooks/index.d.ts.map +1 -0
  1531. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +29 -0
  1532. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts.map +1 -0
  1533. package/dist/components/features/comments/hooks/use-comments.d.ts +33 -0
  1534. package/dist/components/features/comments/hooks/use-comments.d.ts.map +1 -0
  1535. package/dist/components/features/comments/index.cjs +1 -0
  1536. package/dist/components/features/comments/index.d.ts +9 -0
  1537. package/dist/components/features/comments/index.d.ts.map +1 -0
  1538. package/dist/components/features/comments/index.js +3 -0
  1539. package/dist/components/features/comments/partials/comment-attachment-chip.d.ts +17 -0
  1540. package/dist/components/features/comments/partials/comment-attachment-chip.d.ts.map +1 -0
  1541. package/dist/components/features/comments/partials/comment-composer.d.ts +11 -0
  1542. package/dist/components/features/comments/partials/comment-composer.d.ts.map +1 -0
  1543. package/dist/components/features/comments/partials/comment-content.d.ts +19 -0
  1544. package/dist/components/features/comments/partials/comment-content.d.ts.map +1 -0
  1545. package/dist/components/features/comments/partials/comment-empty.d.ts +9 -0
  1546. package/dist/components/features/comments/partials/comment-empty.d.ts.map +1 -0
  1547. package/dist/components/features/comments/partials/comment-item.d.ts +4 -0
  1548. package/dist/components/features/comments/partials/comment-item.d.ts.map +1 -0
  1549. package/dist/components/features/comments/partials/comment-timeline.d.ts +4 -0
  1550. package/dist/components/features/comments/partials/comment-timeline.d.ts.map +1 -0
  1551. package/dist/components/features/comments/partials/index.d.ts +10 -0
  1552. package/dist/components/features/comments/partials/index.d.ts.map +1 -0
  1553. package/dist/components/features/event-log/event-log.d.ts +9 -0
  1554. package/dist/components/features/event-log/event-log.d.ts.map +1 -0
  1555. package/dist/components/features/event-log/event-log.strings.d.ts +18 -0
  1556. package/dist/components/features/event-log/event-log.strings.d.ts.map +1 -0
  1557. package/dist/components/features/event-log/event-log.types.d.ts +110 -0
  1558. package/dist/components/features/event-log/event-log.types.d.ts.map +1 -0
  1559. package/dist/components/features/event-log/index.cjs +2 -0
  1560. package/dist/components/features/event-log/index.cjs.map +1 -0
  1561. package/dist/components/features/event-log/index.d.ts +5 -0
  1562. package/dist/components/features/event-log/index.d.ts.map +1 -0
  1563. package/dist/components/features/event-log/index.js +201 -0
  1564. package/dist/components/features/event-log/index.js.map +1 -0
  1565. package/dist/components/features/event-log/partials/event-log-event-row.d.ts +11 -0
  1566. package/dist/components/features/event-log/partials/event-log-event-row.d.ts.map +1 -0
  1567. package/dist/components/features/filters/facets/async-select-facet.d.ts +26 -0
  1568. package/dist/components/features/filters/facets/async-select-facet.d.ts.map +1 -0
  1569. package/dist/components/features/filters/facets/date-facet.d.ts +16 -0
  1570. package/dist/components/features/filters/facets/date-facet.d.ts.map +1 -0
  1571. package/dist/components/features/filters/facets/range-facet.d.ts +28 -0
  1572. package/dist/components/features/filters/facets/range-facet.d.ts.map +1 -0
  1573. package/dist/components/features/filters/facets/search-facet.d.ts +24 -0
  1574. package/dist/components/features/filters/facets/search-facet.d.ts.map +1 -0
  1575. package/dist/components/features/filters/facets/select-facet.d.ts +17 -0
  1576. package/dist/components/features/filters/facets/select-facet.d.ts.map +1 -0
  1577. package/dist/components/features/filters/facets/tags-facet.d.ts +24 -0
  1578. package/dist/components/features/filters/facets/tags-facet.d.ts.map +1 -0
  1579. package/dist/components/features/filters/filter-context.d.ts +52 -0
  1580. package/dist/components/features/filters/filter-context.d.ts.map +1 -0
  1581. package/dist/components/features/filters/filter-layout.d.ts +14 -0
  1582. package/dist/components/features/filters/filter-layout.d.ts.map +1 -0
  1583. package/dist/components/features/filters/filters.strings.d.ts +102 -0
  1584. package/dist/components/features/filters/filters.strings.d.ts.map +1 -0
  1585. package/dist/components/features/filters/filters.types.d.ts +188 -0
  1586. package/dist/components/features/filters/filters.types.d.ts.map +1 -0
  1587. package/dist/components/features/filters/hooks/index.d.ts +4 -0
  1588. package/dist/components/features/filters/hooks/index.d.ts.map +1 -0
  1589. package/dist/components/features/filters/hooks/use-async-options.d.ts +12 -0
  1590. package/dist/components/features/filters/hooks/use-async-options.d.ts.map +1 -0
  1591. package/dist/components/features/filters/hooks/use-filter-groups.d.ts +17 -0
  1592. package/dist/components/features/filters/hooks/use-filter-groups.d.ts.map +1 -0
  1593. package/dist/components/features/filters/index.cjs +2 -0
  1594. package/dist/components/features/filters/index.cjs.map +1 -0
  1595. package/dist/components/features/filters/index.d.ts +26 -0
  1596. package/dist/components/features/filters/index.d.ts.map +1 -0
  1597. package/dist/components/features/filters/index.js +2023 -0
  1598. package/dist/components/features/filters/index.js.map +1 -0
  1599. package/dist/components/features/filters/operator-options.d.ts +10 -0
  1600. package/dist/components/features/filters/operator-options.d.ts.map +1 -0
  1601. package/dist/components/features/filters/partials/active-filter-item.d.ts +27 -0
  1602. package/dist/components/features/filters/partials/active-filter-item.d.ts.map +1 -0
  1603. package/dist/components/features/filters/partials/async-filter-content.d.ts +18 -0
  1604. package/dist/components/features/filters/partials/async-filter-content.d.ts.map +1 -0
  1605. package/dist/components/features/filters/partials/date-filter-content.d.ts +11 -0
  1606. package/dist/components/features/filters/partials/date-filter-content.d.ts.map +1 -0
  1607. package/dist/components/features/filters/partials/filter-error-boundary.d.ts +9 -0
  1608. package/dist/components/features/filters/partials/filter-error-boundary.d.ts.map +1 -0
  1609. package/dist/components/features/filters/partials/filter-list-content.d.ts +22 -0
  1610. package/dist/components/features/filters/partials/filter-list-content.d.ts.map +1 -0
  1611. package/dist/components/features/filters/partials/filter-list-item.d.ts +18 -0
  1612. package/dist/components/features/filters/partials/filter-list-item.d.ts.map +1 -0
  1613. package/dist/components/features/filters/partials/filter-operator-select.d.ts +21 -0
  1614. package/dist/components/features/filters/partials/filter-operator-select.d.ts.map +1 -0
  1615. package/dist/components/features/filters/partials/filter-pill.d.ts +22 -0
  1616. package/dist/components/features/filters/partials/filter-pill.d.ts.map +1 -0
  1617. package/dist/components/features/filters/partials/filter-popover-content.d.ts +28 -0
  1618. package/dist/components/features/filters/partials/filter-popover-content.d.ts.map +1 -0
  1619. package/dist/components/features/filters/partials/filter-tabs.d.ts +14 -0
  1620. package/dist/components/features/filters/partials/filter-tabs.d.ts.map +1 -0
  1621. package/dist/components/features/filters/partials/filter-value-display.d.ts +21 -0
  1622. package/dist/components/features/filters/partials/filter-value-display.d.ts.map +1 -0
  1623. package/dist/components/features/filters/partials/filters-button.d.ts +26 -0
  1624. package/dist/components/features/filters/partials/filters-button.d.ts.map +1 -0
  1625. package/dist/components/features/filters/partials/index.d.ts +15 -0
  1626. package/dist/components/features/filters/partials/index.d.ts.map +1 -0
  1627. package/dist/components/features/filters/partials/regular-filter-content.d.ts +25 -0
  1628. package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -0
  1629. package/dist/components/features/filters/partials/search-filters-list.d.ts +23 -0
  1630. package/dist/components/features/filters/partials/search-filters-list.d.ts.map +1 -0
  1631. package/dist/components/features/filters/partials/tags-filter-content.d.ts +25 -0
  1632. package/dist/components/features/filters/partials/tags-filter-content.d.ts.map +1 -0
  1633. package/dist/components/features/filters/utils/filter-utils.d.ts +38 -0
  1634. package/dist/components/features/filters/utils/filter-utils.d.ts.map +1 -0
  1635. package/dist/components/features/filters/validators.d.ts +51 -0
  1636. package/dist/components/features/filters/validators.d.ts.map +1 -0
  1637. package/dist/components/features/global-search/global-search.d.ts +32 -0
  1638. package/dist/components/features/global-search/global-search.d.ts.map +1 -0
  1639. package/dist/components/features/global-search/global-search.strings.d.ts +37 -0
  1640. package/dist/components/features/global-search/global-search.strings.d.ts.map +1 -0
  1641. package/dist/components/features/global-search/global-search.types.d.ts +99 -0
  1642. package/dist/components/features/global-search/global-search.types.d.ts.map +1 -0
  1643. package/dist/components/features/global-search/hooks/index.d.ts +3 -0
  1644. package/dist/components/features/global-search/hooks/index.d.ts.map +1 -0
  1645. package/dist/components/features/global-search/hooks/use-global-search.d.ts +34 -0
  1646. package/dist/components/features/global-search/hooks/use-global-search.d.ts.map +1 -0
  1647. package/dist/components/features/global-search/index.cjs +2 -0
  1648. package/dist/components/features/global-search/index.cjs.map +1 -0
  1649. package/dist/components/features/global-search/index.d.ts +8 -0
  1650. package/dist/components/features/global-search/index.d.ts.map +1 -0
  1651. package/dist/components/features/global-search/index.js +565 -0
  1652. package/dist/components/features/global-search/index.js.map +1 -0
  1653. package/dist/components/features/global-search/partials/global-search-empty-state.d.ts +6 -0
  1654. package/dist/components/features/global-search/partials/global-search-empty-state.d.ts.map +1 -0
  1655. package/dist/components/features/global-search/partials/global-search-footer.d.ts +10 -0
  1656. package/dist/components/features/global-search/partials/global-search-footer.d.ts.map +1 -0
  1657. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +12 -0
  1658. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts.map +1 -0
  1659. package/dist/components/features/global-search/partials/global-search-input.d.ts +12 -0
  1660. package/dist/components/features/global-search/partials/global-search-input.d.ts.map +1 -0
  1661. package/dist/components/features/global-search/partials/global-search-result-row.d.ts +15 -0
  1662. package/dist/components/features/global-search/partials/global-search-result-row.d.ts.map +1 -0
  1663. package/dist/components/features/global-search/partials/global-search-tabs.d.ts +12 -0
  1664. package/dist/components/features/global-search/partials/global-search-tabs.d.ts.map +1 -0
  1665. package/dist/components/features/global-search/partials/index.d.ts +10 -0
  1666. package/dist/components/features/global-search/partials/index.d.ts.map +1 -0
  1667. package/dist/components/features/global-search/partials/tone-palettes.d.ts +4 -0
  1668. package/dist/components/features/global-search/partials/tone-palettes.d.ts.map +1 -0
  1669. package/dist/components/features/index.d.ts.map +1 -0
  1670. package/dist/components/features/kanban/hooks/index.d.ts +2 -0
  1671. package/dist/components/features/kanban/hooks/index.d.ts.map +1 -0
  1672. package/dist/components/features/kanban/hooks/use-kanban.d.ts +33 -0
  1673. package/dist/components/features/kanban/hooks/use-kanban.d.ts.map +1 -0
  1674. package/dist/components/features/kanban/index.cjs +2 -0
  1675. package/dist/components/features/kanban/index.cjs.map +1 -0
  1676. package/dist/components/features/kanban/index.d.ts +5 -0
  1677. package/dist/components/features/kanban/index.d.ts.map +1 -0
  1678. package/dist/components/features/kanban/index.js +322 -0
  1679. package/dist/components/features/kanban/index.js.map +1 -0
  1680. package/dist/components/features/kanban/kanban-context.d.ts +26 -0
  1681. package/dist/components/features/kanban/kanban-context.d.ts.map +1 -0
  1682. package/dist/components/features/kanban/kanban.d.ts +39 -0
  1683. package/dist/components/features/kanban/kanban.d.ts.map +1 -0
  1684. package/dist/components/features/kanban/kanban.strings.d.ts +25 -0
  1685. package/dist/components/features/kanban/kanban.strings.d.ts.map +1 -0
  1686. package/dist/components/features/kanban/kanban.types.d.ts +157 -0
  1687. package/dist/components/features/kanban/kanban.types.d.ts.map +1 -0
  1688. package/dist/components/features/mentions/hooks/index.d.ts +3 -0
  1689. package/dist/components/features/mentions/hooks/index.d.ts.map +1 -0
  1690. package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +35 -0
  1691. package/dist/components/features/mentions/hooks/use-mentions-search.d.ts.map +1 -0
  1692. package/dist/components/features/mentions/hooks/use-mentions.d.ts +36 -0
  1693. package/dist/components/features/mentions/hooks/use-mentions.d.ts.map +1 -0
  1694. package/dist/components/features/mentions/index.cjs +1 -0
  1695. package/dist/components/features/mentions/index.d.ts +6 -0
  1696. package/dist/components/features/mentions/index.d.ts.map +1 -0
  1697. package/dist/components/features/mentions/index.js +2 -0
  1698. package/dist/components/features/mentions/mentions.strings.d.ts +23 -0
  1699. package/dist/components/features/mentions/mentions.strings.d.ts.map +1 -0
  1700. package/dist/components/features/mentions/mentions.types.d.ts +72 -0
  1701. package/dist/components/features/mentions/mentions.types.d.ts.map +1 -0
  1702. package/dist/components/features/mentions/partials/index.d.ts +5 -0
  1703. package/dist/components/features/mentions/partials/index.d.ts.map +1 -0
  1704. package/dist/components/features/mentions/partials/mention-chip.d.ts +14 -0
  1705. package/dist/components/features/mentions/partials/mention-chip.d.ts.map +1 -0
  1706. package/dist/components/features/mentions/partials/mention-content.d.ts +25 -0
  1707. package/dist/components/features/mentions/partials/mention-content.d.ts.map +1 -0
  1708. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +27 -0
  1709. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts.map +1 -0
  1710. package/dist/components/features/mentions/partials/mention-picker.d.ts +20 -0
  1711. package/dist/components/features/mentions/partials/mention-picker.d.ts.map +1 -0
  1712. package/dist/components/features/mentions/utils/build-mention-html.d.ts +25 -0
  1713. package/dist/components/features/mentions/utils/build-mention-html.d.ts.map +1 -0
  1714. package/dist/components/features/mentions/utils/index.d.ts +4 -0
  1715. package/dist/components/features/mentions/utils/index.d.ts.map +1 -0
  1716. package/dist/components/features/mentions/utils/parse-mentions-from-html.d.ts +3 -0
  1717. package/dist/components/features/mentions/utils/parse-mentions-from-html.d.ts.map +1 -0
  1718. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +17 -0
  1719. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts.map +1 -0
  1720. package/dist/components/features/overlays/alert-dialog.d.ts +6 -0
  1721. package/dist/components/features/overlays/alert-dialog.d.ts.map +1 -0
  1722. package/dist/components/features/overlays/dialog.d.ts +6 -0
  1723. package/dist/components/features/overlays/dialog.d.ts.map +1 -0
  1724. package/dist/components/features/overlays/drawer.d.ts +6 -0
  1725. package/dist/components/features/overlays/drawer.d.ts.map +1 -0
  1726. package/dist/components/features/overlays/hooks/index.d.ts +3 -0
  1727. package/dist/components/features/overlays/hooks/index.d.ts.map +1 -0
  1728. package/dist/components/features/overlays/hooks/use-native-dialog.d.ts +25 -0
  1729. package/dist/components/features/overlays/hooks/use-native-dialog.d.ts.map +1 -0
  1730. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +24 -0
  1731. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts.map +1 -0
  1732. package/dist/components/features/overlays/index.cjs +1 -0
  1733. package/dist/components/features/overlays/index.d.ts +7 -0
  1734. package/dist/components/features/overlays/index.d.ts.map +1 -0
  1735. package/dist/components/features/overlays/index.js +2 -0
  1736. package/dist/components/features/overlays/overlays.strings.d.ts +17 -0
  1737. package/dist/components/features/overlays/overlays.strings.d.ts.map +1 -0
  1738. package/dist/components/features/overlays/overlays.types.d.ts +57 -0
  1739. package/dist/components/features/overlays/overlays.types.d.ts.map +1 -0
  1740. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +6 -0
  1741. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts.map +1 -0
  1742. package/dist/components/features/rich-text-editor/index.cjs +2 -0
  1743. package/dist/components/features/rich-text-editor/index.cjs.map +1 -0
  1744. package/dist/components/features/rich-text-editor/index.d.ts +6 -0
  1745. package/dist/components/features/rich-text-editor/index.d.ts.map +1 -0
  1746. package/dist/components/features/rich-text-editor/index.js +20 -0
  1747. package/dist/components/features/rich-text-editor/index.js.map +1 -0
  1748. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +23 -0
  1749. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts.map +1 -0
  1750. package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts +24 -0
  1751. package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts.map +1 -0
  1752. package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +8 -0
  1753. package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts.map +1 -0
  1754. package/dist/components/features/rich-text-editor/partials/index.d.ts +7 -0
  1755. package/dist/components/features/rich-text-editor/partials/index.d.ts.map +1 -0
  1756. package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +9 -0
  1757. package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts.map +1 -0
  1758. package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +4 -0
  1759. package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts.map +1 -0
  1760. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +24 -0
  1761. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts.map +1 -0
  1762. package/dist/components/features/rich-text-editor/rich-text-editor.d.ts +4 -0
  1763. package/dist/components/features/rich-text-editor/rich-text-editor.d.ts.map +1 -0
  1764. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +29 -0
  1765. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts.map +1 -0
  1766. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +97 -0
  1767. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts.map +1 -0
  1768. package/dist/components/features/suggestions/hooks/index.d.ts +2 -0
  1769. package/dist/components/features/suggestions/hooks/index.d.ts.map +1 -0
  1770. package/dist/components/features/suggestions/hooks/use-suggestions.d.ts +10 -0
  1771. package/dist/components/features/suggestions/hooks/use-suggestions.d.ts.map +1 -0
  1772. package/dist/components/features/suggestions/index.cjs +2 -0
  1773. package/dist/components/features/suggestions/index.cjs.map +1 -0
  1774. package/dist/components/features/suggestions/index.d.ts +5 -0
  1775. package/dist/components/features/suggestions/index.d.ts.map +1 -0
  1776. package/dist/components/features/suggestions/index.js +100 -0
  1777. package/dist/components/features/suggestions/index.js.map +1 -0
  1778. package/dist/components/features/suggestions/suggestions.d.ts +6 -0
  1779. package/dist/components/features/suggestions/suggestions.d.ts.map +1 -0
  1780. package/dist/components/features/suggestions/suggestions.strings.d.ts +15 -0
  1781. package/dist/components/features/suggestions/suggestions.strings.d.ts.map +1 -0
  1782. package/dist/components/features/suggestions/suggestions.types.d.ts +35 -0
  1783. package/dist/components/features/suggestions/suggestions.types.d.ts.map +1 -0
  1784. package/dist/components/features/sync/index.cjs +2 -0
  1785. package/dist/components/features/sync/index.cjs.map +1 -0
  1786. package/dist/components/features/sync/index.d.ts +4 -0
  1787. package/dist/components/features/sync/index.d.ts.map +1 -0
  1788. package/dist/components/features/sync/index.js +65 -0
  1789. package/dist/components/features/sync/index.js.map +1 -0
  1790. package/dist/components/features/sync/sync-range-dialog-form.d.ts +6 -0
  1791. package/dist/components/features/sync/sync-range-dialog-form.d.ts.map +1 -0
  1792. package/dist/components/features/sync/sync.strings.d.ts +13 -0
  1793. package/dist/components/features/sync/sync.strings.d.ts.map +1 -0
  1794. package/dist/components/features/sync/sync.types.d.ts +22 -0
  1795. package/dist/components/features/sync/sync.types.d.ts.map +1 -0
  1796. package/dist/components/layout/containers/containers.types.d.ts +28 -0
  1797. package/dist/components/layout/containers/containers.types.d.ts.map +1 -0
  1798. package/dist/components/layout/containers/content-container.d.ts +3 -0
  1799. package/dist/components/layout/containers/content-container.d.ts.map +1 -0
  1800. package/dist/components/layout/containers/index.cjs +1 -0
  1801. package/dist/components/layout/containers/index.d.ts +4 -0
  1802. package/dist/components/layout/containers/index.d.ts.map +1 -0
  1803. package/dist/components/layout/containers/index.js +3 -0
  1804. package/dist/components/layout/containers/section.d.ts +3 -0
  1805. package/dist/components/layout/containers/section.d.ts.map +1 -0
  1806. package/dist/components/layout/header/header.d.ts +3 -0
  1807. package/dist/components/layout/header/header.d.ts.map +1 -0
  1808. package/dist/components/layout/header/header.types.d.ts +115 -0
  1809. package/dist/components/layout/header/header.types.d.ts.map +1 -0
  1810. package/dist/components/layout/header/index.cjs +1 -0
  1811. package/dist/components/layout/header/index.d.ts +8 -0
  1812. package/dist/components/layout/header/index.d.ts.map +1 -0
  1813. package/dist/components/layout/header/index.js +2 -0
  1814. package/dist/components/layout/header/partials/header-breadcrumbs.d.ts +3 -0
  1815. package/dist/components/layout/header/partials/header-breadcrumbs.d.ts.map +1 -0
  1816. package/dist/components/layout/header/partials/header-notifications.d.ts +5 -0
  1817. package/dist/components/layout/header/partials/header-notifications.d.ts.map +1 -0
  1818. package/dist/components/layout/header/partials/header-search.d.ts +3 -0
  1819. package/dist/components/layout/header/partials/header-search.d.ts.map +1 -0
  1820. package/dist/components/layout/header/partials/header-user-menu.d.ts +3 -0
  1821. package/dist/components/layout/header/partials/header-user-menu.d.ts.map +1 -0
  1822. package/dist/components/layout/hooks/index.cjs +1 -0
  1823. package/dist/components/layout/hooks/index.d.ts +4 -0
  1824. package/dist/components/layout/hooks/index.d.ts.map +1 -0
  1825. package/dist/components/layout/hooks/index.js +2 -0
  1826. package/dist/components/layout/hooks/use-active-path.d.ts +2 -0
  1827. package/dist/components/layout/hooks/use-active-path.d.ts.map +1 -0
  1828. package/dist/components/layout/hooks/use-command-shortcut.d.ts +8 -0
  1829. package/dist/components/layout/hooks/use-command-shortcut.d.ts.map +1 -0
  1830. package/dist/components/layout/hooks/use-layout-link.d.ts +3 -0
  1831. package/dist/components/layout/hooks/use-layout-link.d.ts.map +1 -0
  1832. package/dist/components/layout/index.cjs +1 -0
  1833. package/dist/components/layout/index.d.ts +20 -0
  1834. package/dist/components/layout/index.d.ts.map +1 -0
  1835. package/dist/components/layout/index.js +7 -0
  1836. package/dist/components/layout/layout.types.d.ts +86 -0
  1837. package/dist/components/layout/layout.types.d.ts.map +1 -0
  1838. package/dist/components/layout/page/index.cjs +1 -0
  1839. package/dist/components/layout/page/index.d.ts +6 -0
  1840. package/dist/components/layout/page/index.d.ts.map +1 -0
  1841. package/dist/components/layout/page/index.js +2 -0
  1842. package/dist/components/layout/page/page-content.d.ts +12 -0
  1843. package/dist/components/layout/page/page-content.d.ts.map +1 -0
  1844. package/dist/components/layout/page/page.d.ts +3 -0
  1845. package/dist/components/layout/page/page.d.ts.map +1 -0
  1846. package/dist/components/layout/page/page.types.d.ts +94 -0
  1847. package/dist/components/layout/page/page.types.d.ts.map +1 -0
  1848. package/dist/components/layout/page/partials/page-actions.d.ts +3 -0
  1849. package/dist/components/layout/page/partials/page-actions.d.ts.map +1 -0
  1850. package/dist/components/layout/page/partials/page-header.d.ts +3 -0
  1851. package/dist/components/layout/page/partials/page-header.d.ts.map +1 -0
  1852. package/dist/components/layout/sidebar/app-sidebar.d.ts +3 -0
  1853. package/dist/components/layout/sidebar/app-sidebar.d.ts.map +1 -0
  1854. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +5 -0
  1855. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts.map +1 -0
  1856. package/dist/components/layout/sidebar/components/sidebar-logo.d.ts +8 -0
  1857. package/dist/components/layout/sidebar/components/sidebar-logo.d.ts.map +1 -0
  1858. package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +3 -0
  1859. package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts.map +1 -0
  1860. package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +21 -0
  1861. package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts.map +1 -0
  1862. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +7 -0
  1863. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts.map +1 -0
  1864. package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts +3 -0
  1865. package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts.map +1 -0
  1866. package/dist/components/layout/sidebar/index.cjs +1 -0
  1867. package/dist/components/layout/sidebar/index.d.ts +12 -0
  1868. package/dist/components/layout/sidebar/index.d.ts.map +1 -0
  1869. package/dist/components/layout/sidebar/index.js +3 -0
  1870. package/dist/components/layout/sidebar/sidebar.context.d.ts +12 -0
  1871. package/dist/components/layout/sidebar/sidebar.context.d.ts.map +1 -0
  1872. package/dist/components/layout/sidebar/sidebar.d.ts +16 -0
  1873. package/dist/components/layout/sidebar/sidebar.d.ts.map +1 -0
  1874. package/dist/components/layout/sidebar/sidebar.settings.d.ts +11 -0
  1875. package/dist/components/layout/sidebar/sidebar.settings.d.ts.map +1 -0
  1876. package/dist/components/layout/sidebar/sidebar.types.d.ts +122 -0
  1877. package/dist/components/layout/sidebar/sidebar.types.d.ts.map +1 -0
  1878. package/dist/components/layout/sidebar/sidebar.utils.d.ts +24 -0
  1879. package/dist/components/layout/sidebar/sidebar.utils.d.ts.map +1 -0
  1880. package/dist/components/typography/heading.d.ts +17 -0
  1881. package/dist/components/typography/heading.d.ts.map +1 -0
  1882. package/dist/components/typography/index.cjs +1 -0
  1883. package/dist/components/typography/index.d.ts +10 -0
  1884. package/dist/components/typography/index.d.ts.map +1 -0
  1885. package/dist/components/typography/index.js +3 -0
  1886. package/dist/components/typography/label.d.ts +13 -0
  1887. package/dist/components/typography/label.d.ts.map +1 -0
  1888. package/dist/components/typography/text-link.d.ts +52 -0
  1889. package/dist/components/typography/text-link.d.ts.map +1 -0
  1890. package/dist/components/typography/text.d.ts +48 -0
  1891. package/dist/components/typography/text.d.ts.map +1 -0
  1892. package/dist/components/typography/typography.d.ts +10 -0
  1893. package/dist/components/typography/typography.d.ts.map +1 -0
  1894. package/dist/components/ui/accordion.d.ts +7 -0
  1895. package/dist/components/ui/accordion.d.ts.map +1 -0
  1896. package/dist/components/ui/alert.d.ts +11 -0
  1897. package/dist/components/ui/alert.d.ts.map +1 -0
  1898. package/dist/components/ui/avatar.d.ts +12 -0
  1899. package/dist/components/ui/avatar.d.ts.map +1 -0
  1900. package/dist/components/ui/badge.d.ts +10 -0
  1901. package/dist/components/ui/badge.d.ts.map +1 -0
  1902. package/dist/components/ui/breadcrumb.d.ts +12 -0
  1903. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  1904. package/dist/components/ui/button-group.d.ts +11 -0
  1905. package/dist/components/ui/button-group.d.ts.map +1 -0
  1906. package/dist/components/ui/button.d.ts +9 -0
  1907. package/dist/components/ui/button.d.ts.map +1 -0
  1908. package/dist/components/ui/calendar.d.ts +11 -0
  1909. package/dist/components/ui/calendar.d.ts.map +1 -0
  1910. package/dist/components/ui/card.d.ts +12 -0
  1911. package/dist/components/ui/card.d.ts.map +1 -0
  1912. package/dist/components/ui/chart.d.ts +59 -0
  1913. package/dist/components/ui/chart.d.ts.map +1 -0
  1914. package/dist/components/ui/checkbox.d.ts +7 -0
  1915. package/dist/components/ui/checkbox.d.ts.map +1 -0
  1916. package/dist/components/ui/collapsible.d.ts +9 -0
  1917. package/dist/components/ui/collapsible.d.ts.map +1 -0
  1918. package/dist/components/ui/combobox.d.ts +41 -0
  1919. package/dist/components/ui/combobox.d.ts.map +1 -0
  1920. package/dist/components/ui/command.d.ts +20 -0
  1921. package/dist/components/ui/command.d.ts.map +1 -0
  1922. package/dist/components/ui/context-menu.d.ts +26 -0
  1923. package/dist/components/ui/context-menu.d.ts.map +1 -0
  1924. package/dist/components/ui/dialog.d.ts +24 -0
  1925. package/dist/components/ui/dialog.d.ts.map +1 -0
  1926. package/dist/components/ui/dropdown-menu.d.ts +34 -0
  1927. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  1928. package/dist/components/ui/empty.d.ts +12 -0
  1929. package/dist/components/ui/empty.d.ts.map +1 -0
  1930. package/dist/components/ui/hover-card.d.ts +6 -0
  1931. package/dist/components/ui/hover-card.d.ts.map +1 -0
  1932. package/dist/components/ui/input-group.d.ts +19 -0
  1933. package/dist/components/ui/input-group.d.ts.map +1 -0
  1934. package/dist/components/ui/input.d.ts +4 -0
  1935. package/dist/components/ui/input.d.ts.map +1 -0
  1936. package/dist/components/ui/item.d.ts +23 -0
  1937. package/dist/components/ui/item.d.ts.map +1 -0
  1938. package/dist/components/ui/pagination.d.ts +18 -0
  1939. package/dist/components/ui/pagination.d.ts.map +1 -0
  1940. package/dist/components/ui/popover.d.ts +20 -0
  1941. package/dist/components/ui/popover.d.ts.map +1 -0
  1942. package/dist/components/ui/progress.d.ts +8 -0
  1943. package/dist/components/ui/progress.d.ts.map +1 -0
  1944. package/dist/components/ui/radio-group.d.ts +6 -0
  1945. package/dist/components/ui/radio-group.d.ts.map +1 -0
  1946. package/dist/components/ui/scroll-area.d.ts +5 -0
  1947. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  1948. package/dist/components/ui/select.d.ts +16 -0
  1949. package/dist/components/ui/select.d.ts.map +1 -0
  1950. package/dist/components/ui/separator.d.ts +4 -0
  1951. package/dist/components/ui/separator.d.ts.map +1 -0
  1952. package/dist/components/ui/sheet.d.ts +23 -0
  1953. package/dist/components/ui/sheet.d.ts.map +1 -0
  1954. package/dist/components/ui/sidebar.d.ts +64 -0
  1955. package/dist/components/ui/sidebar.d.ts.map +1 -0
  1956. package/dist/components/ui/skeleton.d.ts +3 -0
  1957. package/dist/components/ui/skeleton.d.ts.map +1 -0
  1958. package/dist/components/ui/slider.d.ts +4 -0
  1959. package/dist/components/ui/slider.d.ts.map +1 -0
  1960. package/dist/components/ui/slot.d.ts +13 -0
  1961. package/dist/components/ui/slot.d.ts.map +1 -0
  1962. package/dist/components/ui/sonner.d.ts +4 -0
  1963. package/dist/components/ui/sonner.d.ts.map +1 -0
  1964. package/dist/components/ui/spinner.d.ts +3 -0
  1965. package/dist/components/ui/spinner.d.ts.map +1 -0
  1966. package/dist/components/ui/switch.d.ts +6 -0
  1967. package/dist/components/ui/switch.d.ts.map +1 -0
  1968. package/dist/components/ui/table.d.ts +14 -0
  1969. package/dist/components/ui/table.d.ts.map +1 -0
  1970. package/dist/components/ui/tabs.d.ts +11 -0
  1971. package/dist/components/ui/tabs.d.ts.map +1 -0
  1972. package/dist/components/ui/textarea.d.ts +4 -0
  1973. package/dist/components/ui/textarea.d.ts.map +1 -0
  1974. package/dist/components/ui/toggle-group.d.ts +12 -0
  1975. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  1976. package/dist/components/ui/toggle.d.ts +9 -0
  1977. package/dist/components/ui/toggle.d.ts.map +1 -0
  1978. package/dist/components/ui/tooltip.d.ts +11 -0
  1979. package/dist/components/ui/tooltip.d.ts.map +1 -0
  1980. package/dist/favicon.svg +1 -0
  1981. package/dist/files/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  1982. package/dist/files/inter-cyrillic-wght-normal.woff2 +0 -0
  1983. package/dist/files/inter-greek-ext-wght-normal.woff2 +0 -0
  1984. package/dist/files/inter-greek-wght-normal.woff2 +0 -0
  1985. package/dist/files/inter-latin-ext-wght-normal.woff2 +0 -0
  1986. package/dist/files/inter-latin-wght-normal.woff2 +0 -0
  1987. package/dist/files/inter-vietnamese-wght-normal.woff2 +0 -0
  1988. package/dist/hooks/use-debounce.d.ts +2 -0
  1989. package/dist/hooks/use-debounce.d.ts.map +1 -0
  1990. package/dist/hooks/use-files.d.ts +29 -0
  1991. package/dist/hooks/use-files.d.ts.map +1 -0
  1992. package/dist/hooks/use-mobile.d.ts +2 -0
  1993. package/dist/hooks/use-mobile.d.ts.map +1 -0
  1994. package/dist/hooks/useFormErrors.d.ts +8 -0
  1995. package/dist/hooks/useFormErrors.d.ts.map +1 -0
  1996. package/dist/icons.svg +24 -0
  1997. package/dist/images/layers-2x.png +0 -0
  1998. package/dist/images/layers.png +0 -0
  1999. package/dist/images/marker-icon-2x.png +0 -0
  2000. package/dist/images/marker-icon.png +0 -0
  2001. package/dist/images/marker-shadow.png +0 -0
  2002. package/dist/images/spritesheet-2x.png +0 -0
  2003. package/dist/images/spritesheet.png +0 -0
  2004. package/dist/images/spritesheet.svg +156 -0
  2005. package/dist/index.cjs +1 -0
  2006. package/dist/index.d.ts +12 -0
  2007. package/dist/index.d.ts.map +1 -0
  2008. package/dist/index.js +4 -0
  2009. package/dist/lib/format.d.ts +41 -0
  2010. package/dist/lib/format.d.ts.map +1 -0
  2011. package/dist/lib/sanitize-html.d.ts +3 -0
  2012. package/dist/lib/sanitize-html.d.ts.map +1 -0
  2013. package/dist/lib/strings.cjs +2 -0
  2014. package/dist/lib/strings.cjs.map +1 -0
  2015. package/dist/lib/strings.d.ts +11 -0
  2016. package/dist/lib/strings.d.ts.map +1 -0
  2017. package/dist/lib/strings.js +25 -0
  2018. package/dist/lib/strings.js.map +1 -0
  2019. package/dist/lib/ui-provider/defaults.d.ts +3 -0
  2020. package/dist/lib/ui-provider/defaults.d.ts.map +1 -0
  2021. package/dist/lib/ui-provider/hooks.d.ts +16 -0
  2022. package/dist/lib/ui-provider/hooks.d.ts.map +1 -0
  2023. package/dist/lib/ui-provider/index.cjs +1 -0
  2024. package/dist/lib/ui-provider/index.d.ts +29 -0
  2025. package/dist/lib/ui-provider/index.d.ts.map +1 -0
  2026. package/dist/lib/ui-provider/index.js +2 -0
  2027. package/dist/lib/ui-provider/provider.d.ts +25 -0
  2028. package/dist/lib/ui-provider/provider.d.ts.map +1 -0
  2029. package/dist/lib/ui-provider/store.d.ts +26 -0
  2030. package/dist/lib/ui-provider/store.d.ts.map +1 -0
  2031. package/dist/lib/ui-provider/types.d.ts +202 -0
  2032. package/dist/lib/ui-provider/types.d.ts.map +1 -0
  2033. package/dist/lib/utils.cjs +2 -0
  2034. package/dist/lib/utils.cjs.map +1 -0
  2035. package/dist/lib/utils.d.ts +3 -0
  2036. package/dist/lib/utils.d.ts.map +1 -0
  2037. package/dist/lib/utils.js +26 -0
  2038. package/dist/lib/utils.js.map +1 -0
  2039. package/dist/showcase/assets/AreaChart-D-RqNtqG.js +6 -0
  2040. package/dist/showcase/assets/CSPContext-t69BXyB7.js +1 -0
  2041. package/dist/showcase/assets/CompositeItem-DHNLgEeV.js +1 -0
  2042. package/dist/showcase/assets/CompositeRoot-xq_0ZFev.js +1 -0
  2043. package/dist/showcase/assets/Control.FullScreen-B9vseC57.js +1 -0
  2044. package/dist/showcase/assets/DialogTrigger-Cl7n_3xX.js +1 -0
  2045. package/dist/showcase/assets/FormContext-CXdwDz7F.js +1 -0
  2046. package/dist/showcase/assets/PreviewLayout-BHemtKEf.js +1 -0
  2047. package/dist/showcase/assets/RadioGroup-DXAt4VZN.js +1 -0
  2048. package/dist/showcase/assets/Separator-C9vXwWmZ.js +1 -0
  2049. package/dist/showcase/assets/ToolbarRootContext-iF4ctnIz.js +1 -0
  2050. package/dist/showcase/assets/accordion-DzkNgNcB.js +172 -0
  2051. package/dist/showcase/assets/accordion-variants-DP5-oxLe.js +1 -0
  2052. package/dist/showcase/assets/action-menu-CyA2e9TF.js +1 -0
  2053. package/dist/showcase/assets/activities-Dt-dO5ew.js +501 -0
  2054. package/dist/showcase/assets/activities-feed-card-DZdFekXl.js +1 -0
  2055. package/dist/showcase/assets/admin-C2SeJmE7.js +80 -0
  2056. package/dist/showcase/assets/ai-Cwo0h_Xn.js +41 -0
  2057. package/dist/showcase/assets/ai-artifact-3UJofyU5.js +2 -0
  2058. package/dist/showcase/assets/ai-chat-CrFtG_Vg.js +568 -0
  2059. package/dist/showcase/assets/ai-elements-iJ15Y7pS.js +379 -0
  2060. package/dist/showcase/assets/ai-new-DuznZydd.js +167 -0
  2061. package/dist/showcase/assets/ai-tool-call-CTcGGAQU.js +1 -0
  2062. package/dist/showcase/assets/alert-CUGGckOX.js +1 -0
  2063. package/dist/showcase/assets/alert-tWped3Sw.js +59 -0
  2064. package/dist/showcase/assets/analytics.strings-BcotPUad.js +1 -0
  2065. package/dist/showcase/assets/api-key-list-Q5LAqzMn.js +73 -0
  2066. package/dist/showcase/assets/arrow-down-CfwCPcHL.js +1 -0
  2067. package/dist/showcase/assets/arrow-left-BKx9qNX6.js +1 -0
  2068. package/dist/showcase/assets/arrow-right-DlEpbqEk.js +1 -0
  2069. package/dist/showcase/assets/arrow-up-BYQ4F9L1.js +1 -0
  2070. package/dist/showcase/assets/arrow-up-right-C8r6vYfE.js +1 -0
  2071. package/dist/showcase/assets/avatar-BuZ3zTbH.js +57 -0
  2072. package/dist/showcase/assets/avatar-DR2mqPpY.js +1 -0
  2073. package/dist/showcase/assets/badge-D1HLfP93.js +28 -0
  2074. package/dist/showcase/assets/badge-check-oP2z_95u.js +1 -0
  2075. package/dist/showcase/assets/bell-BTX2D-ES.js +1 -0
  2076. package/dist/showcase/assets/bot-CKh5XgUG.js +1 -0
  2077. package/dist/showcase/assets/box-F1uaZ6iw.js +1 -0
  2078. package/dist/showcase/assets/brain-dD_ppLUa.js +1 -0
  2079. package/dist/showcase/assets/brand-zisZOFKf.js +40 -0
  2080. package/dist/showcase/assets/breadcrumb-C7vv0L8K.js +52 -0
  2081. package/dist/showcase/assets/breadcrumb-fay5sLba.js +1 -0
  2082. package/dist/showcase/assets/breadcrumbs-DklRXepp.js +1 -0
  2083. package/dist/showcase/assets/briefcase-D9M4aNmi.js +1 -0
  2084. package/dist/showcase/assets/button-DbhXfR1N.js +44 -0
  2085. package/dist/showcase/assets/button-group-BpdhyMif.js +1 -0
  2086. package/dist/showcase/assets/buttons-XexbmUtN.js +259 -0
  2087. package/dist/showcase/assets/calendar-BADJgjpI.js +16 -0
  2088. package/dist/showcase/assets/calendar-Djh3xLVx.js +1 -0
  2089. package/dist/showcase/assets/calendar-dWZ2-0gU.js +1 -0
  2090. package/dist/showcase/assets/card-BUSAPPkx.js +1 -0
  2091. package/dist/showcase/assets/cards-DHBPe01w.js +328 -0
  2092. package/dist/showcase/assets/chart-column-6l5wIZ0h.js +1 -0
  2093. package/dist/showcase/assets/chevron-down-at2vrt1V.js +1 -0
  2094. package/dist/showcase/assets/chevron-left-DIs3WYNO.js +1 -0
  2095. package/dist/showcase/assets/chevron-right-BNy0Or0x.js +1 -0
  2096. package/dist/showcase/assets/chevron-up-CX7619BJ.js +1 -0
  2097. package/dist/showcase/assets/chevrons-up-down-Be6eciau.js +1 -0
  2098. package/dist/showcase/assets/chunk-CilyBKbf.js +1 -0
  2099. package/dist/showcase/assets/circle-C0Yd1DDS.js +1 -0
  2100. package/dist/showcase/assets/circle-alert-DfQp_X3_.js +1 -0
  2101. package/dist/showcase/assets/circle-check-BkqQe1tv.js +1 -0
  2102. package/dist/showcase/assets/circle-check-big-BXxHUhuc.js +1 -0
  2103. package/dist/showcase/assets/circle-dot-HeRgxZxN.js +1 -0
  2104. package/dist/showcase/assets/circle-question-mark-BgS4fb6N.js +1 -0
  2105. package/dist/showcase/assets/circle-x-CMzwDsaf.js +1 -0
  2106. package/dist/showcase/assets/clock-ynCzs_rR.js +1 -0
  2107. package/dist/showcase/assets/code-xml-B8aVstrJ.js +1 -0
  2108. package/dist/showcase/assets/collapsible-C8CKdiRn.js +27 -0
  2109. package/dist/showcase/assets/collapsible-u43HxDHB.js +1 -0
  2110. package/dist/showcase/assets/combobox-D-6ff0VG.js +622 -0
  2111. package/dist/showcase/assets/command-BsHudlBe.js +1 -0
  2112. package/dist/showcase/assets/command-DZqmBolX.js +45 -0
  2113. package/dist/showcase/assets/comment-composer-OnxlkC5y.js +1 -0
  2114. package/dist/showcase/assets/comment-item-DmZ1AJ2Y.js +1 -0
  2115. package/dist/showcase/assets/comments-BjIVksjE.js +349 -0
  2116. package/dist/showcase/assets/commerce-3T1GxvrA.js +78 -0
  2117. package/dist/showcase/assets/commerce-extras-CYv_uRQR.js +179 -0
  2118. package/dist/showcase/assets/composite-mol0-2zZ.js +1 -0
  2119. package/dist/showcase/assets/contact-card-CWAANJqn.js +65 -0
  2120. package/dist/showcase/assets/content-container-D3Phw6h8.js +1 -0
  2121. package/dist/showcase/assets/copyable-BdzUH3U3.js +96 -0
  2122. package/dist/showcase/assets/course-card-Cb6Y2vJ6.js +113 -0
  2123. package/dist/showcase/assets/cpu-CRrekbGQ.js +1 -0
  2124. package/dist/showcase/assets/credit-card--5vg7bQy.js +1 -0
  2125. package/dist/showcase/assets/currency-VuqnKj_Y.js +149 -0
  2126. package/dist/showcase/assets/customers-BETQwFRp.js +1 -0
  2127. package/dist/showcase/assets/dark-surfaces-DEyBimFz.js +90 -0
  2128. package/dist/showcase/assets/database-Bnvw0wVV.js +1 -0
  2129. package/dist/showcase/assets/date-block-IhoCVl_d.js +1 -0
  2130. package/dist/showcase/assets/date-picker-DnJpsnaF.js +1 -0
  2131. package/dist/showcase/assets/date-pickers-CEbieq-R.js +110 -0
  2132. package/dist/showcase/assets/dense-info-B04QmrOd.js +106 -0
  2133. package/dist/showcase/assets/dialog-DotEO3IO.js +1 -0
  2134. package/dist/showcase/assets/display-hK7Dtm-B.js +392 -0
  2135. package/dist/showcase/assets/dist-DQgGKvzA.js +1 -0
  2136. package/dist/showcase/assets/dollar-sign-gJtl-XaL.js +1 -0
  2137. package/dist/showcase/assets/download-CMrNgeil.js +1 -0
  2138. package/dist/showcase/assets/dropdown-menu-Cqv6D7Sb.js +1 -0
  2139. package/dist/showcase/assets/dropzone-v69fWHZJ.js +1 -0
  2140. package/dist/showcase/assets/ellipsis-CgqPlt6Z.js +1 -0
  2141. package/dist/showcase/assets/ellipsis-vertical-CiJqC0n2.js +1 -0
  2142. package/dist/showcase/assets/empty-DYHzk-Gb.js +1 -0
  2143. package/dist/showcase/assets/empty-item-CTwvC_3M.js +49 -0
  2144. package/dist/showcase/assets/empty-state-eUgJ4h41.js +188 -0
  2145. package/dist/showcase/assets/enhanced-activities-XU2u5gO6.js +359 -0
  2146. package/dist/showcase/assets/esm-B7xAMXnv.js +2 -0
  2147. package/dist/showcase/assets/event-calendar-D2rjpzq1.js +138 -0
  2148. package/dist/showcase/assets/event-log-BxER62Ds.js +326 -0
  2149. package/dist/showcase/assets/example-DPfw-R7_.js +1 -0
  2150. package/dist/showcase/assets/external-link-DJNGkjZ0.js +1 -0
  2151. package/dist/showcase/assets/eye-BQU3UqWi.js +1 -0
  2152. package/dist/showcase/assets/feature-announcement-CjGQEODB.js +34 -0
  2153. package/dist/showcase/assets/fetchers-SLCIqgnM.js +1 -0
  2154. package/dist/showcase/assets/file-DBpbC8g-.js +1 -0
  2155. package/dist/showcase/assets/file-text-DokBif5V.js +1 -0
  2156. package/dist/showcase/assets/filters-DM2olMKy.js +78 -0
  2157. package/dist/showcase/assets/flag-hAuZbHU1.js +1 -0
  2158. package/dist/showcase/assets/folder-open-DqubQ0ts.js +1 -0
  2159. package/dist/showcase/assets/form-sizing-CfbZF8Ja.js +1 -0
  2160. package/dist/showcase/assets/format-DoQ4Wqkq.js +1 -0
  2161. package/dist/showcase/assets/format-gCABLair.js +1 -0
  2162. package/dist/showcase/assets/format-metric-value-cyOYS377.js +1 -0
  2163. package/dist/showcase/assets/forms-FsAT0C-I.js +790 -0
  2164. package/dist/showcase/assets/generic-BUuo7j09.js +1 -0
  2165. package/dist/showcase/assets/getPseudoElementBounds-l8uxcPNL.js +1 -0
  2166. package/dist/showcase/assets/gift-CS7Tg3kD.js +1 -0
  2167. package/dist/showcase/assets/giftcard-cards-h1ffLs9F.js +85 -0
  2168. package/dist/showcase/assets/git-branch-D4-6vv6t.js +1 -0
  2169. package/dist/showcase/assets/global-search-BUyhhsQv.js +90 -0
  2170. package/dist/showcase/assets/globe-CqLYhUfl.js +1 -0
  2171. package/dist/showcase/assets/gradient-card-Bwr9OLIL.js +58 -0
  2172. package/dist/showcase/assets/header-notifications-BWla1yhM.js +1 -0
  2173. package/dist/showcase/assets/heart-DfZtXfIP.js +1 -0
  2174. package/dist/showcase/assets/house-DhIReDt8.js +1 -0
  2175. package/dist/showcase/assets/icon-badge-BgRFYZEc.js +1 -0
  2176. package/dist/showcase/assets/image-D_eNEZWQ.js +1 -0
  2177. package/dist/showcase/assets/inbox-5sFkO7gC.js +1 -0
  2178. package/dist/showcase/assets/index-B-Z7p0So.js +10 -0
  2179. package/dist/showcase/assets/index-Cu3Ssz5r.css +2 -0
  2180. package/dist/showcase/assets/inertValue-NU_Amr-x.js +1 -0
  2181. package/dist/showcase/assets/info-DyB6KH3Z.js +1 -0
  2182. package/dist/showcase/assets/inline-stat-D2aaM1Vt.js +1 -0
  2183. package/dist/showcase/assets/input-BS64kyoq.js +1 -0
  2184. package/dist/showcase/assets/input-DWLyniGt.js +1 -0
  2185. package/dist/showcase/assets/input-group-BS8j5Eek.js +47 -0
  2186. package/dist/showcase/assets/input-group-B_E_3EGS.js +1 -0
  2187. package/dist/showcase/assets/inputs-DOQ2foig.js +49 -0
  2188. package/dist/showcase/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  2189. package/dist/showcase/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  2190. package/dist/showcase/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  2191. package/dist/showcase/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  2192. package/dist/showcase/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  2193. package/dist/showcase/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  2194. package/dist/showcase/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  2195. package/dist/showcase/assets/invoice-header-C2-uQE_s.js +36 -0
  2196. package/dist/showcase/assets/invoice-items-BUunRJqA.js +36 -0
  2197. package/dist/showcase/assets/invoice-mini-BrLMrzN6.js +14 -0
  2198. package/dist/showcase/assets/invoice-table-CaB9Z8jI.js +30 -0
  2199. package/dist/showcase/assets/isElementDisabled-BLmk_uhf.js +1 -0
  2200. package/dist/showcase/assets/isSameDay-rwvIyLOL.js +1 -0
  2201. package/dist/showcase/assets/isToday-CIAzBrb5.js +1 -0
  2202. package/dist/showcase/assets/italic-B02a4PdD.js +1 -0
  2203. package/dist/showcase/assets/item-C-0RObvI.js +117 -0
  2204. package/dist/showcase/assets/item-CCu0Ufaq.js +1 -0
  2205. package/dist/showcase/assets/item-DF4m_56j.js +1 -0
  2206. package/dist/showcase/assets/kanban-BgW23a7P.js +175 -0
  2207. package/dist/showcase/assets/label-MdV7pglj.js +1 -0
  2208. package/dist/showcase/assets/layout-containers-nKVReEJB.js +96 -0
  2209. package/dist/showcase/assets/layout-header-CKyxHHPC.js +170 -0
  2210. package/dist/showcase/assets/layout-page-ClD2yMnK.js +122 -0
  2211. package/dist/showcase/assets/layout-sidebar-jdQnYDiT.js +224 -0
  2212. package/dist/showcase/assets/layout-users-Cv849xnU.js +104 -0
  2213. package/dist/showcase/assets/leaflet-src-9EZQ14iG.js +1 -0
  2214. package/dist/showcase/assets/leaflet.draw-CwFqqsDc.js +1 -0
  2215. package/dist/showcase/assets/lib-BHW4JERQ.js +1 -0
  2216. package/dist/showcase/assets/lock-B8bfl9sZ.js +1 -0
  2217. package/dist/showcase/assets/mail-DmOBTX4I.js +1 -0
  2218. package/dist/showcase/assets/map-ButgRl8f.js +124 -0
  2219. package/dist/showcase/assets/map-pin-o3egisLq.js +1 -0
  2220. package/dist/showcase/assets/menus-DdXgYKVA.js +89 -0
  2221. package/dist/showcase/assets/message-square-Bl6P4TA0.js +1 -0
  2222. package/dist/showcase/assets/metadata-list-aXo96h_U.js +278 -0
  2223. package/dist/showcase/assets/metric-BLHKuZtE.js +1 -0
  2224. package/dist/showcase/assets/metric-grid-6Dpj5eV3.js +1 -0
  2225. package/dist/showcase/assets/metric-trend-chip-m389ipmG.js +1 -0
  2226. package/dist/showcase/assets/metrics-analytics-bar-B-1IUlHf.js +44 -0
  2227. package/dist/showcase/assets/metrics-analytics-cards-B8tvK_RB.js +77 -0
  2228. package/dist/showcase/assets/metrics-comparison-DKJ7Js3F.js +76 -0
  2229. package/dist/showcase/assets/metrics-heatmap-BlRnJoI0.js +27 -0
  2230. package/dist/showcase/assets/metrics-inline-badge-COI7f64X.js +17 -0
  2231. package/dist/showcase/assets/metrics-kpi-row-LRfmKhsy.js +31 -0
  2232. package/dist/showcase/assets/metrics-micro-grid-DmqIQVVR.js +42 -0
  2233. package/dist/showcase/assets/metrics-overview-Dbf5RM2k.js +192 -0
  2234. package/dist/showcase/assets/metrics-stat-cards-D5oevQvv.js +54 -0
  2235. package/dist/showcase/assets/minus-D-jmUi0G.js +1 -0
  2236. package/dist/showcase/assets/money-display-C__61373.js +1 -0
  2237. package/dist/showcase/assets/month-year-picker-BfBQePUY.js +1 -0
  2238. package/dist/showcase/assets/navigation-DUAe-sQV.js +86 -0
  2239. package/dist/showcase/assets/navigation-extras-itSAf6QT.js +43 -0
  2240. package/dist/showcase/assets/navigation-fAOvwIlP.js +230 -0
  2241. package/dist/showcase/assets/onboarding-checklist-1gmzk3_J.js +119 -0
  2242. package/dist/showcase/assets/orders-DNn7r9k_.js +1 -0
  2243. package/dist/showcase/assets/overlays-BMTBOIEI.js +88 -0
  2244. package/dist/showcase/assets/overlays-Lu16yJWM.js +393 -0
  2245. package/dist/showcase/assets/package-BIa1hPVQ.js +1 -0
  2246. package/dist/showcase/assets/page-action-button-C5NiQHnP.js +1 -0
  2247. package/dist/showcase/assets/page-header-Cwf9DuhD.js +1 -0
  2248. package/dist/showcase/assets/pagination-9iSNmdCx.js +1 -0
  2249. package/dist/showcase/assets/pagination-MjniF-7j.js +42 -0
  2250. package/dist/showcase/assets/paperclip-CaNLUOIA.js +1 -0
  2251. package/dist/showcase/assets/pencil-DTLGPoc_.js +1 -0
  2252. package/dist/showcase/assets/phone-XvU6LndA.js +1 -0
  2253. package/dist/showcase/assets/plus-BDSCn8ol.js +1 -0
  2254. package/dist/showcase/assets/popover-CvhuubS6.js +1 -0
  2255. package/dist/showcase/assets/popover-DUQqLZN2.js +1 -0
  2256. package/dist/showcase/assets/popover-menu-DVGBuFpL.js +1 -0
  2257. package/dist/showcase/assets/progress-BQopCRpV.js +1 -0
  2258. package/dist/showcase/assets/progress-CvSUR260.js +18 -0
  2259. package/dist/showcase/assets/props-table-BzUnIcv-.js +1 -0
  2260. package/dist/showcase/assets/props.generated-BqPfiNI-.json +32423 -0
  2261. package/dist/showcase/assets/quote-D55lkoXn.js +1 -0
  2262. package/dist/showcase/assets/receipt-D3ilhl9U.js +1 -0
  2263. package/dist/showcase/assets/refresh-cw-Csl2LQ4l.js +1 -0
  2264. package/dist/showcase/assets/resolveAriaLabelledBy-DmY5COAB.js +1 -0
  2265. package/dist/showcase/assets/resolveValueLabel-CM5i142y.js +1 -0
  2266. package/dist/showcase/assets/rich-text-editor-Bz7jWvPv.js +124 -0
  2267. package/dist/showcase/assets/rich-text-editor-DWKFpgNI.js +141 -0
  2268. package/dist/showcase/assets/rotate-ccw-BnkpK7eq.js +1 -0
  2269. package/dist/showcase/assets/scroll-area-BTVLd58j.js +1 -0
  2270. package/dist/showcase/assets/scroll-area-CgFEDepJ.js +32 -0
  2271. package/dist/showcase/assets/select-B7-tZDlG.js +1 -0
  2272. package/dist/showcase/assets/send-BhjEdZ06.js +1 -0
  2273. package/dist/showcase/assets/separator-CJayjKGP.js +28 -0
  2274. package/dist/showcase/assets/separator-CZ_sPWQj.js +1 -0
  2275. package/dist/showcase/assets/settings-Duj7gAZe.js +1 -0
  2276. package/dist/showcase/assets/sheet-BMabZ_Gj.js +1 -0
  2277. package/dist/showcase/assets/shield-C22sWOf4.js +1 -0
  2278. package/dist/showcase/assets/shield-alert-DgZ6UO46.js +1 -0
  2279. package/dist/showcase/assets/shield-check-jGSgmijm.js +1 -0
  2280. package/dist/showcase/assets/shopping-bag-Cd09Ga6D.js +1 -0
  2281. package/dist/showcase/assets/sidebar.context-CXTHS3vn.js +1 -0
  2282. package/dist/showcase/assets/skeleton-Dmp4eC1A.js +1 -0
  2283. package/dist/showcase/assets/skeleton-FLNbc7QP.js +29 -0
  2284. package/dist/showcase/assets/smart-card-50WN9sCI.js +1 -0
  2285. package/dist/showcase/assets/sonner-DR_DYpqb.js +22 -0
  2286. package/dist/showcase/assets/sortable.esm-C_l8_Iqt.js +5 -0
  2287. package/dist/showcase/assets/sparkles-C-fyahzv.js +1 -0
  2288. package/dist/showcase/assets/spinner-B8jgVQNj.js +30 -0
  2289. package/dist/showcase/assets/spinner-C4zPRpI0.js +49 -0
  2290. package/dist/showcase/assets/spinner-DFjHsQlR.js +1 -0
  2291. package/dist/showcase/assets/spritesheet-DpIxuf5L.svg +156 -0
  2292. package/dist/showcase/assets/square-pen-Dp7lCfI3.js +1 -0
  2293. package/dist/showcase/assets/stacked-avatars-CTckbUiW.js +1 -0
  2294. package/dist/showcase/assets/star-l00ivfkD.js +1 -0
  2295. package/dist/showcase/assets/startOfDay-Xmododib.js +1 -0
  2296. package/dist/showcase/assets/styles-zuwR0q1z.js +1 -0
  2297. package/dist/showcase/assets/switch-D3LrIrTQ.js +1 -0
  2298. package/dist/showcase/assets/switch-ylXVyh_N.js +1 -0
  2299. package/dist/showcase/assets/table-Cn3-19zb.js +1 -0
  2300. package/dist/showcase/assets/table-ao3IcAnF.js +390 -0
  2301. package/dist/showcase/assets/tabs-CTLQKtiu.js +19 -0
  2302. package/dist/showcase/assets/tabs-lc1fX94A.js +1 -0
  2303. package/dist/showcase/assets/text-button-Fu8UY1A8.js +1 -0
  2304. package/dist/showcase/assets/text-link--EyGasJN.js +1 -0
  2305. package/dist/showcase/assets/textarea-BdhnlNrF.js +1 -0
  2306. package/dist/showcase/assets/textarea-D1kG3a9B.js +1 -0
  2307. package/dist/showcase/assets/timelines-DF3tNgyG.js +186 -0
  2308. package/dist/showcase/assets/toggle-group-CfxuWsv9.js +1 -0
  2309. package/dist/showcase/assets/toggles-CacdBPlV.js +71 -0
  2310. package/dist/showcase/assets/toggles-group-CRhgTGmL.js +32 -0
  2311. package/dist/showcase/assets/trash-2-B0_GprQM.js +1 -0
  2312. package/dist/showcase/assets/trending-up-B202l1b6.js +1 -0
  2313. package/dist/showcase/assets/truck-Bl1pNrHi.js +1 -0
  2314. package/dist/showcase/assets/typography-DEtOxBlR.js +214 -0
  2315. package/dist/showcase/assets/ui-badge-n4RA0J5b.js +28 -0
  2316. package/dist/showcase/assets/ui-card-Ck-kzrTh.js +30 -0
  2317. package/dist/showcase/assets/ui-table-gzOp82pf.js +42 -0
  2318. package/dist/showcase/assets/upload-tray-VvKdTZSi.js +138 -0
  2319. package/dist/showcase/assets/useAnchoredPopupScrollLock-Cu2ZwN7Z.js +1 -0
  2320. package/dist/showcase/assets/useCollapsiblePanel-C6_cdQ7B.js +1 -0
  2321. package/dist/showcase/assets/useCompositeItem-BfUPqXoj.js +1 -0
  2322. package/dist/showcase/assets/useCompositeListItem-Cf2lpKB8.js +1 -0
  2323. package/dist/showcase/assets/useControlled-C6q3nmcf.js +1 -0
  2324. package/dist/showcase/assets/useLabelableId-CfPT16c1.js +1 -0
  2325. package/dist/showcase/assets/useOpenInteractionType-CGeqRuuY.js +1 -0
  2326. package/dist/showcase/assets/useRender-CoUlh0uZ.js +1 -0
  2327. package/dist/showcase/assets/useRole-DSPUSyVX.js +1 -0
  2328. package/dist/showcase/assets/useTriggerFocusGuards-BwZ1HD24.js +1 -0
  2329. package/dist/showcase/assets/useValueChanged-Dej794I1.js +1 -0
  2330. package/dist/showcase/assets/user-3L762Mec.js +1 -0
  2331. package/dist/showcase/assets/user-plus-9WRYjS04.js +1 -0
  2332. package/dist/showcase/assets/users-CxKZ7gt8.js +1 -0
  2333. package/dist/showcase/assets/valueToPercent-CDF3aNnc.js +1 -0
  2334. package/dist/showcase/assets/vendor-profile-BaCptdMF.js +37 -0
  2335. package/dist/showcase/assets/wrench-Duh91tnW.js +1 -0
  2336. package/dist/showcase/assets/x-t42iKYpL.js +1 -0
  2337. package/dist/showcase/assets/zap-D0z3Tv_L.js +1 -0
  2338. package/dist/showcase/favicon.svg +1 -0
  2339. package/dist/showcase/icons.svg +24 -0
  2340. package/dist/showcase/index.html +15 -0
  2341. package/dist/style.css +2 -0
  2342. package/dist/types/index.d.ts +12 -0
  2343. package/dist/types/index.d.ts.map +1 -0
  2344. package/dist/types/locale.types.d.ts +8 -0
  2345. package/dist/types/locale.types.d.ts.map +1 -0
  2346. package/dist/types/pagination.types.d.ts +19 -0
  2347. package/dist/types/pagination.types.d.ts.map +1 -0
  2348. package/package.json +301 -0
  2349. package/scripts/install-skill.mjs +184 -0
  2350. package/scripts/serve-showcase.mjs +111 -0
  2351. package/src/App.css +373 -0
  2352. package/style.css.d.ts +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments-BOFU1GYY.js","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":";;;;;;;;;;;;;;;;;AA6EA,IAAa,IAA0C;CACnD,OAAO;CACP,UAAU;CACV,OAAO;CACP,WAAW;CAEX,qBAAqB;CACrB,gBAAgB;CAChB,oBAAoB;CACpB,cAAc;CACd,gBAAgB;CAChB,gBAAgB;CAChB,wBAAwB;CACxB,yBAAyB;CAEzB,yBAAyB;CACzB,wBAAwB;CACxB,4BAA4B;CAC5B,oCAAoC;CACpC,wBAAwB;CACxB,0BAA0B;CAE1B,gBAAgB;CAChB,QAAQ;CACR,QAAQ;CACR,aAAa;CACb,WAAW;CACX,YAAY;CACZ,UAAU;CACV,YAAY;CACZ,kBAAkB;CAClB,oBAAoB;CAEpB,oBAAoB;CACpB,uBAAuB;CACvB,0BAA0B;CAC1B,uBAAuB;CACvB,yBAAyB;CACzB,wBAAwB;CACxB,sBAAsB;CACtB,yBAAyB;CAEzB,kBAAkB;CAElB,kBAAkB;CAClB,kBAAkB;CACrB;AAMD,SAAgB,EACZ,GACA,GACM;AACN,QAAO,EAAS,QAAQ,mBAAmB,GAAG,MAAgB;EAC1D,IAAM,IAAQ,EAAO;AACrB,SAAO,KAAiC,OAAO,KAAK,OAAO,EAAM;GACnE;;;;AC5GN,SAAgB,EACZ,GACe;AACf,QAAO,SACI;EACH,GAAG;EACH,GAAI,KAAe,EAAE;EACxB,GACD,CAAC,EAAY,CAChB;;AASL,SAAgB,GACZ,GACiB;CACjB,IAAM,IAAQ,GAAgB,EACxB,IAAQ,GAAgB;AAC9B,QAAO,SACI;EACH,aACI,GAAe,iBACb,MACE,EAAM,aAAc,KAAK,EAAE,CAAoC;EACvE,cACI,GAAe,kBACb,MACE,EAAM,cAAe,KAAK,EAAE,CAAuB;EAC3D,gBAAgB,GAAe;EAC/B,oBACI,GAAe,sBAAsB,EAAM;EAClD,GACD;EAAC;EAAe;EAAO,EAAM;EAAmB,CACnD;;;;AChCL,SAAS,GAAY,GAA+B;AAIhD,QAHI,OAAO,KAAU,YAAY,KAAS,IAAU,OAChD,IAAQ,OAAa,GAAG,EAAM,MAC9B,IAAQ,OAAO,OAAa,IAAI,IAAQ,MAAM,QAAQ,EAAE,CAAC,OACtD,IAAI,KAAS,OAAO,OAAO,QAAQ,EAAE,CAAC;;AAGjD,SAAS,GAAS,GAAwB;AAKtC,QAJI,EAAI,UAAU,WAAW,SAAS,GAAS,IAC3C,EAAI,aAAa,qBACjB,EAAI,UAAU,WAAW,QAAQ,GAAS,IAC1C,EAAI,WAAiB,IAClB;;AAGX,IAAa,MAAyD,EAClE,eACA,cAAW,IACX,aACA,YACA,cACA,SAAS,GACT,aAAU,IACV,mBACE;CACF,IAAM,IAA2B;EAC7B,GAAG;EACH,GAAG;EACN,EAEK,IAAM,GAAW,cAAc,EAAW,IAAI,EAAW,KACzD,IACF,GAAW,eAAe,EAAW,IACrC,EAAW,QACX,EAAQ,oBACN,IAAO,GAAS,EAAW,EAE3B,IAAc,EAAW,WAAW,aACpC,IAAW,EAAW,WAAW,UACjC,IAAY,GAAY,EAAW,KAAK,EAExC,IAAO,IACP,EAAQ,4BACP,OAAO,EAAW,YAAa,WAC1B,IAAI,KAAK,MAAM,EAAW,SAAS,CAAC,KACpC,MACN,IACE,EAAW,SAAS,EAAQ,wBAC5B,GAEF,IAAU,EACZ,8EACA,uCACA,IAAU,sBAAsB,uBAChC,IACM,0EACA,kEACN,EACH,EAEK,IAAW,IACb,kBAAC,GAAD;EACI,WAAW,EAAG,+CAA+C,WAAW;EACxE,eAAA;EACF,CAAA,GAEF,kBAAC,GAAD;EACI,WAAW,EACP,YACA,YACA,IAAW,qBAAqB,wBACnC;EACD,eAAA;EACF,CAAA,EAGA,IACF,kBAAC,QAAD;EAAM,WAAU;YAAhB,CACI,kBAAC,GAAD;GACI,KAAI;GACJ,MAAK;GACL,QAAO;GACP,WAAW,EAAG,YAAY,KAAY,mBAAmB;aAExD;GACE,CAAA,EACN,IACG,kBAAC,GAAD;GACI,KAAI;GACJ,MAAK;GACL,MAAK;GACL,WAAU;aAET;GACE,CAAA,GACP,KACD;;AAKX,QACI,kBAAC,OAAD;EAAK,WAAW;YAAhB;GACK;GAJe,KAAO,CAAC,KAAe,CAAC,IAMpC,kBAAC,KAAD;IACI,MAAM;IACN,QAAO;IACP,KAAI;IACJ,WAAU;IACV,cAAY,EAAQ;cAEnB;IACD,CAAA,GAEJ;GAGH,KAAe,OAAO,EAAW,YAAa,YAC3C,kBAAC,OAAD;IAAK,WAAU;cACX,kBAAC,OAAD;KACI,WAAU;KACV,OAAO,EACH,OAAO,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,EAAW,SAAS,CAAC,CAAC,IAC7D;KACH,CAAA;IACA,CAAA;GAGT,KAAY,KACT,kBAAC,UAAD;IACI,MAAK;IACL,eAAe,EAAQ,EAAW,GAAG;IACrC,WAAU;cAET,EAAQ;IACJ,CAAA;GAGZ,KAAY,KACT,kBAAC,UAAD;IACI,MAAK;IACL,eAAe,EAAS,EAAW,GAAG;IACtC,WAAU;IACV,cAAY,EAAQ;IACpB,OAAO,EAAQ;cAEf,kBAAC,GAAD,EAAG,WAAU,UAAW,CAAA;IACnB,CAAA;GAEX;;;;;ACzId,SAAgB,GACZ,IAAsC,EAAE,EACf;CACzB,IAAM,EACF,aACA,YACA,aAIA,aACA,uBACA,aACA,eACA,GAEE,CAAC,GAAa,KAAuB,QACvC,IAAqB,CAAC,GAAG,EAAmB,GAAG,EAAE,CACpD,EACK,IAAc,kBAAmC,IAAI,KAAK,CAAC,EAC3D,IAAe,kBAA0B,IAAI,KAAK,CAAC,EACnD,IAAc,EAAO,EAAS;AACpC,GAAY,UAAU;CAEtB,IAAM,IAAmB,GACpB,GAAY,MAAsC;AAC/C,KAAqB,MACjB,EAAK,KAAK,MAAO,EAAE,OAAO,IAAK;GAAE,GAAG;GAAG,GAAG;GAAO,GAAG,EAAG,CAC1D;IAEL,EAAE,CACL,EAEK,IAAiB,GAClB,MAA2C;AACxC,IAAoB,CAAC,GAAG,EAAK,CAAC;IAElC,EAAE,CACL,EAEK,IAAc,GACf,GAAY,MAAe;AACxB,MAAI,CAAC,EAAU;EACf,IAAM,IAAa,IAAI,iBAAiB;AAaxC,EAZA,EAAY,QAAQ,IAAI,GAAI,EAAE,eAAY,CAAC,EAE3C,EAAiB,GAAI;GACjB,QAAQ;GACR,UAAU;GACV,OAAO,KAAA;GACV,CAAC,EAMF,EAAS;GAAE;GAAM,aAJG,MAAqB;AACrC,MAAiB,GAAI,EAAE,aAAU,CAAC;;GAGT,QAAQ,EAAW;GAAQ,CAAC,CACpD,MAAM,MAAa;AAEhB,GADA,EAAY,QAAQ,OAAO,EAAG,EAC9B,EAAiB,GAAI;IACjB,GAAG;IACH;IACA,QAAQ;IACR,UAAU;IACV,OAAO,KAAA;IACV,CAAC;IACJ,CACD,OAAO,MAAiB;AAErB,OADA,EAAY,QAAQ,OAAO,EAAG,EAC1B,EAAW,OAAO,QAClB;GAEJ,IAAM,IACF,aAAe,QAAQ,EAAI,UAAU;AAKzC,GAJA,EAAiB,GAAI;IACjB,QAAQ;IACR,OAAO;IACV,CAAC,EACF,IAAU,EAAQ;IACpB;IAEV;EAAC;EAAS;EAAU;EAAiB,CACxC,EAEK,IAAW,GACZ,MAA+C;AAC5C,MAAI,KAAY,CAAC,EAAU;EAC3B,IAAM,IAAQ,MAAM,KAAK,EAAW;AAChC,IAAM,WAAW,KAErB,GAAqB,MAAS;GAC1B,IAAM,IAAO,CAAC,GAAG,EAAK;AACtB,QAAK,IAAM,KAAQ,GAAO;AACtB,QACI,OAAO,KAAa,YACpB,EAAK,UAAU,GACjB;AACE,SAAU,wBAAwB;AAClC;;AAEJ,QACI,OAAO,KAAY,YACnB,EAAK,OAAO,GACd;AACE,SAAU,qBAAqB;AAC/B;;IAGJ,IAAM,IACF,OAAO,SAAW,OAAe,gBAAgB,SAC3C,OAAO,YAAY,GACnB,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE;AAalE,IAXA,EAAa,QAAQ,IAAI,GAAI,EAAK,EAElC,EAAK,KAAK;KACN;KACA,MAAM,EAAK;KACX,MAAM,EAAK;KACX,UAAU,EAAK;KACf,QAAQ;KACR,UAAU;KACb,CAAC,EAEF,qBAAqB,EAAY,GAAI,EAAK,CAAC;;AAE/C,UAAO;IACT;IAEN;EAAC;EAAa;EAAU;EAAU;EAAS;EAAS;EAAS,CAChE,EAEK,IAAmB,GAAa,MAAe;EACjD,IAAM,IAAQ,EAAY,QAAQ,IAAI,EAAG;AAMzC,EALI,MACA,EAAM,WAAW,OAAO,EACxB,EAAY,QAAQ,OAAO,EAAG,GAElC,EAAa,QAAQ,OAAO,EAAG,EAC/B,GAAqB,MAAS,EAAK,QAAQ,MAAM,EAAE,OAAO,EAAG,CAAC;IAC/D,EAAE,CAAC,EAEA,IAAkB,GACnB,MAAe;EACZ,IAAM,IAAO,EAAa,QAAQ,IAAI,EAAG;AACpC,OACL,EAAY,GAAI,EAAK;IAEzB,CAAC,EAAY,CAChB,EAEK,IAAQ,QAAkB;AAC5B,OAAK,IAAM,KAAS,EAAY,QAAQ,QAAQ,CAC5C,GAAM,WAAW,OAAO;AAI5B,EAFA,EAAY,QAAQ,OAAO,EAC3B,EAAa,QAAQ,OAAO,EAC5B,EAAoB,EAAE,CAAC;IACxB,EAAE,CAAC;AAyBN,QAvBA,QAAgB;AACZ,IAAY,UAAU,EAAY;IACnC,CAAC,EAAY,CAAC,EAEjB,QAAgB;EACZ,IAAM,IAAW,EAAY;AAC7B,eAAa;AACT,QAAK,IAAM,KAAS,EAAS,QAAQ,CACjC,GAAM,WAAW,OAAO;;IAGjC,EAAE,CAAC,EAYC;EACH;EACA,qBAZwB,QAClB,EAAY,QAAQ,MAAM,EAAE,WAAW,cAAc,CAAC,EAAE,OAAO,EACrE,CAAC,EAAY,CAUb;EACA,aARgB,QACV,EAAY,MAAM,MAAM,EAAE,WAAW,YAAY,EACvD,CAAC,EAAY,CAMb;EACA;EACA;EACA;EACA;EACA;EACH;;;;AC5LL,SAAS,GAAqB,GAAuB;AAGjD,QAFI,CAAC,KAAQ,OAAO,KAAS,WAAiB,KACjC,EAAK,QAAQ,YAAY,GAAG,CAAC,MACnC,CAAK,SAAS;;AAGzB,IAAa,IAAkB,EAG7B,SACE,EACI,YACA,gBAAa,IACb,kBAAe,IACf,WACA,cAAW,GACX,aACA,aACA,mBACA,SAAS,GACT,WAAW,GACX,kBAAkB,GAClB,aAAa,GACb,kBACA,eAAY,IACZ,kBAAe,IACf,kBAEJ,GACF;CACE,IAAM,IAAU,EAAmB,EAAY,EAEzC,IAAY,GACZ,IAAmB,GACnB,IAAoB,GAEpB,IAAY,EAA6B,KAAK,EAC9C,CAAC,GAAM,KAAW,QACd,GAAe,WAAW,GAAgB,WAAW,GAC9D,EACK,CAAC,GAAc,KAAmB,EAAwB,KAAK,EAO/D,IAAW,EAAY;EACzB;EACA;EACA;EACA,iBACI,GAAe,cAAc,GAAgB;EACpD,CAAC,EAEI,IAAmB,GAAoB;EACzC,GAAG;EACH,oBAAoB,GAAe,eAAe,KAAA;EACrD,CAAC;AAyCF,CAvCA,GACI,UACO;EACH,aAAa,EAAU,SAAS,OAAO;EACvC,aAAa;AAIT,GAHA,EAAU,SAAS,OAAO,EAC1B,EAAS,OAAO,EAChB,EAAiB,OAAO,EACxB,EAAgB,KAAK;;EAEzB,UAAU,MAAS;AACf,KAAU,SAAS,QAAQ,EAAK;;EAEvC,GACD,CAAC,GAAkB,EAAS,CAC/B,EAGD,QAAgB;AAIZ,EAHA,EAAU,SAAS,QAAQ,GAAe,WAAW,GAAG,EACxD,EAAS,YAAY,GAAe,cAAc,EAAE,CAAC,EACrD,EAAiB,eAAe,GAAe,eAAe,EAAE,CAAC,EACjE,EAAgB,KAAK;IAEtB;EAAC,EAAQ;EAAI,EAAQ;EAAM;EAAS,CAAC,EAGxC,QAAgB;AACZ,MAAI,CAAC,EAAgB;AAErB,EADA,EAAU,SAAS,QAAQ,EAAe,WAAW,GAAG,EACxD,EAAS,YAAY,EAAe,cAAc,EAAE,CAAC;EACrD,IAAM,KAAQ,EAAe,eAAe,EAAe,SAAS,EAAE,EAAE,QACnE,MAAkC,CAAC,CAAC,EACxC;AACD,IAAiB,eAAe,EAAK;IAEtC,CAAC,GAAgB,GAAG,CAAC,EAGxB,QAAgB;AACZ,EAAI,GAAQ,WACR,EAAgB,EAAO,QAAQ;IAEpC,CAAC,EAAO,CAAC;CAEZ,IAAM,KAAgB,MAA4B;AAC9C,KAAO,gBAAgB;EACvB,IAAM,IAAO,EAAU,SAAS,SAAS,IAAI;AAC7C,MAAI,CAAC,GAAqB,EAAK,EAAE;AAC7B,KAAgB,EAAQ,eAAe;AACvC;;AAcJ,EAZA,EAAgB,KAAK,EAYrB,EAAS;GATL,SAAS;GACT,eAAe,EAAQ;GACvB,iBAAiB,EAAQ;GACzB,aAAa;GACb,YAAY,EAAS;GACrB,aAAa,EAAiB;GAC9B,WAAW,GAAgB;GAGtB,CAAO;IAGd,KAAe,EAAyB,KAAK,EAC7C,WAA8B,GAAa,SAAS,OAAO,EAC3D,KAAe,MAA2B;AACvC,OACL,EAAiB,SAAS,EAAM;IAG9B,IAAiB,EAAiB,YAAY,SAAS,GACvD,IAAY,CAAC,CAAC,GAEd,KAAc,IACd,EAAQ,qBACR,IACE,EAAQ,eACR,EAAQ,gBAEV,KAAqB,IACvB,kBAAC,IAAD;EACI,OAAO,EAAQ;EACf,YAAY,EAAQ;EACpB,SAAS;EACX,CAAA,GACF,MAEE,KAAoB,QAAwD;EAC9E,IAAM,IAAqC,EAAE;AAiB7C,SAhBI,KAAa,OAAO,KAAK,EAAU,CAAC,SAAS,KAC7C,EAAM,KAAK;GACP,IAAI;GACJ,MAAM;GACN,OAAO,EAAQ;GACf,eAAe,EAAS,cAAc,GAAK;GAC9C,CAAC,EAEF,GAAmB,YAAY,CAAC,EAAkB,YAClD,EAAM,KAAK;GACP,IAAI;GACJ,MAAM;GACN,OAAO,EAAQ;GACf,SAAS;GACZ,CAAC,EAEC;IAER;EACC;EACA,GAAmB;EACnB,GAAmB;EACnB,EAAQ;EACR,EAAQ;EACX,CAAC;AAEF,KAAI,CAAC,EAAY,QAAO;CAExB,IAAM,IACF,kBAAC,GAAD;EACI,MAAK;EACL,eAAe,GAAc;EAC7B,UAAU,KAAgB,EAAiB;EAC3C,MAAM,IAAe,IAAU;YAE9B;EACI,CAAA,EAGP,KAAgB,KAAa,IAC/B,kBAAC,GAAD;EACI,MAAK;EACL,SAAQ;EACR,aAAY;EACZ,SAAS;EACT,UAAU;YAET,EAAQ;EACJ,CAAA,GACT,MAQE,IAAkB,IACpB,kBAAC,OAAD;EAAK,WAAU;YACV,EAAiB,YAAY,KAAK,MAC/B,kBAAC,IAAD;GAEgB;GACZ,UAAA;GACA,UAAU,EAAiB;GAC3B,SAAS,EAAiB;GAC1B,SAAS;GACX,EANO,EAAW,GAMlB,CACJ;EACA,CAAA,GACN,MAEE,KAAa,IAAiB,IAAkB,MAEhD,IAAiB,MAAiB,KAAuB,OAAf,GAC1C,KAAgB,MAAiB,MAAS;AAEhD,QACI,kBAAC,QAAD;EAAM,UAAU;EAAc,WAAU;YAAxC;GACK;GAED,kBAAC,SAAD;IACI,KAAK;IACL,MAAK;IACL,UAAA;IACA,QAAA;IACA,QAAQ,GAAmB;IAC3B,WAAW,MAAM;AAEb,KADA,EAAY,EAAE,OAAO,MAAM,EAC3B,EAAE,OAAO,QAAQ;;IAEvB,CAAA;GAKD,CAAC,EAAS,iBACP,kBAAC,GAAD;IAAS,MAAM,EAAS;IAAY,cAAc,EAAS;cAA3D,CACI,kBAAC,GAAD;KACI,QACI,kBAAC,UAAD;MACI,MAAK;MACL,WAAU;MACV,UAAU;MACZ,CAAA;eAGL,EAAQ;KACI,CAAA,EACjB,kBAAC,GAAD;KACI,MAAM,EAAS;KACf,YAAY,EAAS;KACrB,eAAe,EAAS;KACxB,OAAO,EAAS;KACL;KACX,OAAO,EAAS;KAChB,UAAU,EAAS;KACnB,aAAa,EAAS;KACtB,WAAW,EAAS;KACpB,UAAU,EAAS;KACnB,SAAS;MACL,OAAO,EAAQ;MACf,mBAAmB,EAAQ;MAC3B,OAAO,EAAQ;MACf,SAAS,EAAQ;MACpB;KACH,CAAA,CACI;;GAGd,kBAAC,OAAD;IAAK,WAAU;cAAf,CACI,kBAAC,GAAD;KACI,KAAK;KACL,OAAO;KACP,WAAW,MAAS;AAChB,QAAQ,EAAK;MAOb,IAAM,IAAS,GAA8B,EAAK,EAC5C,IAAW,EAAS;AAG1B,UAFoB,EAAS,KAAK,MAAM,EAAE,GAAG,CAAC,KAAK,IAE/C,KADe,EAAO,KAAK,MAAM,EAAE,GAAG,CAAC,KAAK,IAC5B,EAAY;OAC5B,IAAM,IAAO,IAAI,IAAI,EAAS,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAC9C,IAAS,EAAO,KACjB,MAAM,EAAK,IAAI,EAAE,GAAG,IAAI,EAC5B;AACD,SAAS,YAAY,EAAO;;;KAGpC,aAAa,KAAe,EAAQ;KACpC,WAAU;KACV,WAAW,KAAa;KACL;KACnB,iBAAiB;KACL;KACZ,eAAe,EAAS;KAC1B,CAAA,EAEF,kBAAC,GAAD;KACI,MAAM,EAAS,iBAAiB,EAAS;KACzC,YAAY,EAAS;KACrB,eAAe,EAAS;KACxB,0BAA0B,EAAS,sBAAsB,GAAK;KAC9D,OAAO,EAAS;KACL;KACX,OAAO,EAAS;KAChB,aAAa,EAAS;KACtB,mBAAmB,EAAS;KAC5B,WAAW,EAAS;KACpB,UAAU,EAAS;KACnB,SAAS;MACL,OAAO,EAAQ;MACf,OAAO,EAAQ;MACf,SAAS,EAAQ;MACpB;KACH,CAAA,CACA;;GAEL,KACG,kBAAC,GAAD;IAAM,MAAK;IAAK,MAAK;cAChB;IACE,CAAA;GAGV,MACG,kBAAC,OAAD;IAAK,WAAU;cAAf,CACK,IACA,EACC;;GAEP;;EAEb;AAMF,SAAS,GAAgB,EACrB,UACA,eACA,cAKD;AACC,QACI,kBAAC,OAAD;EAAK,WAAU;YAAf,CACI,kBAAC,GAAD;GAAM,MAAK;GAAM,MAAK;GAAY,QAAO;GAAS,WAAU;aACvD;GACE,CAAA,EACN,IACG,kBAAC,UAAD;GACI,MAAK;GACL,SAAS;GACT,WAAU;GACV,cAAY;aAEZ,kBAAC,GAAD,EAAG,WAAU,UAAW,CAAA;GACnB,CAAA,GACT,KACF;;;AAKd,SAAgB,GAAiB,GAAkB,GAAuB;AACtE,QAAO,EAAkB,GAAU,EAAE,MAAM,KAAQ,IAAI,CAAC;;;;ACla5D,IAAa,KAAuC,EAChD,SAAS,GACT,SACA,mBACE;CACF,IAAM,IAAU,EAAmB,EAAY;AAE/C,QACI,kBAAC,OAAD;EACI,WAAW,EACP,8DACA,EACH;YAJL;GAMI,kBAAC,OAAD;IAAK,WAAU;cACV,KACG,kBAAC,GAAD,EAAe,WAAU,oCAAqC,CAAA;IAEhE,CAAA;GACN,kBAAC,GAAD;IAAM,QAAO;cACR,EAAQ;IACN,CAAA;GACN,EAAQ,YACL,kBAAC,GAAD;IAAM,MAAK;IAAK,MAAK;IAAY,WAAU;cACtC,EAAQ;IACN,CAAA,GACP;GACF;;;;;ACdd,SAAgB,GACZ,GACS;AACT,QAAO,kBAAC,GAAD,EAAyB,YAAW,CAAA;;AAG/C,SAAgB,EACZ,GACS;CACT,IAAM,EAAE,YAAS,cAAW,oBAAiB,iBAAc,GACrD,IACF,EAAQ,eACP,EAAoC,gBACrC;AAoBJ,QAlBI,MAAgB,SACT,GAAkB,EAAQ,QAAQ,GAGzC,MAAgB,SAEZ,kBAAC,GAAD;EACI,MAAM,EAAQ,WAAW;EACzB,UAAU,EAAQ;EACP;EACX,eAAe;EACJ;EACb,CAAA,GAON,kBAAC,GAAD;EAAM,WAAU;YAHC,GAAmB,EAAQ,WAAW,GAIlD;EACE,CAAA;;AAQf,SAAS,GAAkB,GAAkD;AACzE,KAAI,CAAC,EAAY,QAAO;AAExB,KAAI;EACA,IAAM,IAAS,KAAK,MAAM,EAAW;AAQrC,SAJI,CAAC,KAAU,CAAC,MAAM,QAAQ,EAAO,OAAO,IAAI,EAAO,OAAO,WAAW,IAC9D,OAIP,kBAAC,OAAD;GAAK,WAAU;aACV,EAAO,OAAO,KAAK,GAAO,MACvB,kBAAC,GAAD,EAAA,UACK,GAAgB,EAAM,EAChB,EAFI,EAAM,MAAM,GAAG,EAAM,KAAK,GAAG,IAEjC,CACb;GACA,CAAA;SAEN;AAEJ,SACI,kBAAC,GAAD;GAAM,WAAU;aAFJ,GAAmB,EAG1B;GACE,CAAA;;;AAKnB,SAAS,GAAgB,GAAoE;CACzF,IAAM,IAAO,EAAM,QAAQ,EAAE;AAE7B,SAAQ,EAAM,MAAd;EACI,KAAK,aAAa;GACd,IAAM,IAAM,OAAO,EAAK,QAAQ,GAAG,CAAC,MAAM;AAE1C,UADK,IACE,kBAAC,GAAD;IAAM,QAAA;IAAO,SAAS;IAAO,CAAA,GADnB;;EAGrB,KAAK,UAAU;GACX,IAAM,IAAO,EAAU,OAAO,EAAK,QAAQ,GAAG,CAAC,EACzC,IAAQ,OAAO,EAAK,SAAS,EAAE;AAGrC,UAFK,IAEE,EACH,GACA,EAAE,KAAK,IAHO,KAAK,IAAI,KAAK,IAAI,GAAO,EAAE,EAAE,EAGhC,IAAoC,EAC/C,EACH,GANiB;;EAQtB,KAAK,QAAQ;GAET,IAAM,KADQ,MAAM,QAAQ,EAAK,MAAM,GAAG,EAAK,QAAQ,EAAE,EAEpD,KAAK,MAAS,EAAU,OAAO,KAAQ,GAAG,CAAC,CAAC,CAC5C,QAAQ,MAAS,EAAK,SAAS,EAAE;AActC,UAZI,EAAe,WAAW,IAAU,OAEpC,EAAK,UAAU,YAEX,kBAAC,MAAD;IAAI,WAAU;cACT,EAAe,KAAK,GAAM,MACvB,kBAAC,MAAD,EAAA,UAA8B,GAAU,EAA/B,GAAG,EAAK,GAAG,IAAoB,CAC1C;IACD,CAAA,GAKT,kBAAC,MAAD;IAAI,WAAU;cACT,EAAe,KAAK,MACjB,kBAAC,MAAD,EAAA,UAAgB,GAAU,EAAjB,EAAiB,CAC5B;IACD,CAAA;;EAGb,KAAK,SAAS;GACV,IAAM,IAAO,OAAO,EAAK,QAAQ,GAAG,CAAC,MAAM;AAC3C,OAAI,CAAC,EAAM,QAAO;GAClB,IAAM,IAAU,EAAU,OAAO,EAAK,WAAW,GAAG,CAAC;AACrD,UACI,kBAAC,cAAD;IAAY,WAAU;cAAtB,CACI,kBAAC,GAAD;KAAM,QAAA;KAAO,SAAS;KAAQ,CAAA,EAC7B,EAAQ,SAAS,KACd,kBAAC,QAAD;KAAM,WAAU;eAAhB,CAAyE,MAClE,EACA;OAEF;;;EAGrB,KAAK,YACD,QACI,kBAAC,OAAD;GACI,WAAU;GACV,eAAY;GACd,CAAA;EAEV,SAAS;GACL,IAAM,IAAO,EAAU,OAAO,EAAK,QAAQ,GAAG,CAAC;AAE/C,UADK,IAED,kBAAC,GAAD;IAAM,WAAU;cACX;IACE,CAAA,GAJO;;;;AAU9B,SAAS,EAAU,GAAuB;AACtC,QAAO,EAAM,QAAQ,YAAY,GAAG,CAAC,MAAM;;AAG/C,SAAS,GAAmB,GAA0C;AAClE,KAAI,OAAO,KAAU,SAAU,QAAO;CACtC,IAAM,IAAU,EAAM,MAAM;AAC5B,KAAI,MAAY,GAAI,QAAO;AAC3B,KAAI,EAAQ,WAAW,IAAI,IAAI,EAAQ,WAAW,IAAI,CAAE,QAAO;AAC/D,KAAI;EACA,IAAM,IAAS,KAAK,MAAM,EAAQ;AAClC,MAAI,OAAO,KAAW,SAAU,QAAO;SACnC;AAMR,QAHI,EAAQ,WAAW,KAAI,IAAI,EAAQ,SAAS,KAAI,GACzC,EAAQ,MAAM,GAAG,GAAG,GAExB;;;;ACvKX,IAAM,KAAmB,KAEnB,MAAsB,MAA4C,GAAG,KACrE,MAAuB,MAA4C,GAAG,MACtE,MAAyB,MAC3B,EAAE,OAAO,EAAE,CAAC,aAAa,GAAG,EAAE,MAAM,EAAE,CAAC,QAAQ,MAAM,IAAI,EACvD,MAA6B,MAAgB;AAC/C,KAAI;AACA,SAAO,EAAoB,IAAI,KAAK,EAAI,EAAE,EAAE,WAAW,IAAM,CAAC;SAC1D;AACJ,SAAO;;GAIF,KAAc,EAAK,SAAwD,EACpF,YACA,gBACA,aACA,gBACA,YACA,YACA,SAAS,GACT,gBACA,iBACA,mBACA,uBACA,eACA,qBACA,sBAC8E;CAC9E,IAAM,IAAU,EAAmB,EAAY,EACzC,IAAY,GAAqB;EACnC;EACA;EACA;EACA;EACH,CAAC,EAEI,IAAsB,EAAU,eAAe,IAC/C,IAAuB,EAAU,gBAAgB,IACjD,IACF,EAAU,kBAAkB,IAC1B,KACF,EAAU,sBAAsB,IAE9B,IAAa,EAAQ,MAAM,QAAQ,EAAQ,gBAC3C,IAAY,EAAQ,MAAM,UAAU,KAAA,GAEpC,IAAe,QACZ,EAAQ,YACN,GAA2B,EAAQ,UAAU,GADrB,KAEhC,CAAC,EAAQ,WAAW,GAA2B,CAAC,EAE7C,IAAkB,QAAc;AAClC,MAAI,CAAC,EAAY,QAAO;EACxB,IAAM,IAAU,EAAW,MAAM;AACjC,SAAO,MAAY,KACb,KACA,EAAQ,OAAO,EAAE,CAAC,aAAa;IACtC,CAAC,EAAW,CAAC,EAEV,IAAU,QACR,MAAM,QAAQ,EAAQ,UAAU,GACzB,EAAQ,UAAU,QACpB,MAAuB,OAAO,KAAQ,SAC1C,GAED,EAAQ,aAAa,OAAO,EAAQ,aAAc,WAC3C,OAAO,OAAO,EAAQ,UAAU,CAAC,QACnC,MAA2B,OAAO,KAAU,SAChD,GAEE,EAAE,EACV,CAAC,EAAQ,UAAU,CAAC,EAEjB,IAAc,SACH,EAAQ,eAAe,EAAQ,SAAS,EAAE,EAC3C,QACP,MAA8B,CAAC,CAAC,KAAK,OAAO,KAAM,SACtD,EACF,CAAC,EAAQ,aAAa,EAAQ,MAAM,CAAC,EAElC,IAAY,EAAQ,aAAa,EAAE,EAEnC,IAAW,EAAQ,aAAa,IAChC,IAAW,EAAQ,aAAa,IAChC,IAAa,EAAQ,UAAU,EAAQ,WAAW,UAClD,IACF,KAAc,EAAQ,SAAS,EAAuB,EAAQ,OAAO,GAAG,MACtE,KACF,EAAQ,cAAc,MAAQ,MAAgB,IAC5C,IAAiB,EAAQ,YAAY,MAAQ,MAAgB,IAE7D,IAAiB,EAAY,SAAS;AAE5C,QACI,kBAAC,WAAD;EACI,WAAW,EACP,sEACA,yDACH;EACD,mBAAiB,EAAQ;YAEzB,kBAAC,OAAD;GAAK,WAAU;aAAf;IACI,kBAAC,GAAD;KAAQ,WAAU;eAAlB,CACK,CAAC,CAAC,KACC,kBAAC,GAAD;MAAa,KAAK;MAAW,KAAK;MAAc,CAAA,EAEpD,kBAAC,GAAD;MAAgB,WAAU;gBACrB;MACY,CAAA,CACZ;;IAET,kBAAC,OAAD;KAAK,WAAU;eAAf;MACI,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACI,kBAAC,GAAD;SACI,KAAI;SACJ,QAAO;SACP,WAAU;mBAET;SACE,CAAA;QAEN,CAAC,CAAC,KACC,kBAAC,GAAD;SAAiB,eAAe;mBAC5B,kBAAC,GAAD,EAAA,UAAA,CACI,kBAAC,GAAD;UAAgB,QAAQ,kBAAC,QAAD,EAAM,WAAU,oCAAqC,CAAA;oBACzE,kBAAC,GAAD;WAAK,WAAU;WAAsB,eAAA;WAAc,CAAA;UACtC,CAAA,EACjB,kBAAC,GAAD;UACI,MAAK;UACL,WAAU;oBAET,EAAQ;UACI,CAAA,CACX,EAAA,CAAA;SACI,CAAA;QAGtB,kBAAC,GAAD;SACI,KAAI;SACJ,MAAK;SACL,MAAK;SACL,WAAU;mBAET;SACE,CAAA;QAEN,CAAC,CAAC,KACC,kBAAC,GAAD;SACI,KAAI;SACJ,MAAK;SACL,MAAK;SACL,WAAU;mBAET,EAAQ;SACN,CAAA;QAGV,CAAC,CAAC,KAAc,CAAC,CAAC,KACf,kBAAC,GAAD;SAAO,SAAQ;SAAY,WAAU;mBAChC;SACG,CAAA;QAEV;;MAEN,kBAAC,OAAD;OAAK,WAAU;iBACX,kBAAC,GAAD;QACa;QACE;QACM;QACnB,CAAA;OACA,CAAA;MAEL,EAAQ,SAAS,KACd,kBAAC,OAAD;OAAK,WAAU;iBACV,EAAQ,KAAK,MACV,kBAAC,GAAD;QAAiB,SAAQ;QAAY,WAAU;kBAC1C;QACG,EAFI,EAEJ,CACV;OACA,CAAA;MAGT,KACG,kBAAC,OAAD;OAAK,WAAU;iBACV,EAAY,KAAK,MACV,IAEI,kBAAC,OAAD,EAAA,UACK,EAAiB,EAAW,EAC3B,EAFI,EAAW,MAAM,EAAW,KAEhC,GAIV,kBAAC,IAAD;QAEgB;QACZ,WAAW;SACP,aAAa;SACb,cAAc;SACjB;QACD,SAAS;QACX,EAPO,EAAW,MAAM,EAAW,KAOnC,CAER;OACA,CAAA;MAGT,EAAU,SAAS,KAChB,kBAAC,OAAD;OAAK,WAAU;iBACV,EAAU,KAAK,MACZ,kBAAC,UAAD;QAEI,MAAK;QACL,eACI,KAAW,EAAQ,KACb,EAAQ,EAAQ,IAAI,EAAS,MAAM,GACnC,KAAA;QAEV,OAAO,EAAS,OAAO,KAAK,KAAK;QACjC,WAAU;kBAEV,kBAAC,GAAD;SACI,SAAS,EAAS,OAAO,YAAY;SACrC,WAAU;mBAFd,CAII,kBAAC,QAAD;UAAM,eAAA;UAAY,WAAU;oBACvB,EAAS;UACP,CAAA,EACP,kBAAC,QAAD;UAAM,WAAU;oBAAgB,EAAS;UAAa,CAAA,CAClD;;QACH,EAnBA,EAAS,MAmBT,CACX;OACA,CAAA;MAER;;IAGN,kBAAC,OAAD;KACI,WAAW,EACP,oDACA,oDACA,yCACH;eALL;MAOK,CAAC,CAAC,KACC,kBAAC,GAAD;OACI,MAAK;OACL,MAAK;OACL,SAAQ;OACR,aAAY;OACZ,eACI,EAAQ,MAAM,EAAQ,EAAQ,GAAG;OAErC,OAAO,EAAQ;OACf,cAAY,EAAQ;iBAEpB,kBAAC,GAAD,EAAiB,WAAU,YAAa,CAAA;OACnC,CAAA;MAEZ,CAAC,CAAC,KACC,kBAAC,GAAD;OACI,MAAK;OACL,MAAK;OACL,SAAQ;OACR,aAAY;OACZ,eACI,EAAQ,MAAM,EAAQ,EAAQ,IAAI,KAAK;OAE3C,OAAO,EAAQ;OACf,cAAY,EAAQ;iBAEpB,kBAAC,IAAD,EAAO,WAAU,YAAa,CAAA;OACzB,CAAA;MAEZ,CAAC,CAAC,KAAe,KACd,kBAAC,GAAD;OACI,MAAK;OACL,MAAK;OACL,SAAQ;OACR,aAAY;OACZ,eAAe,EAAY,EAAQ;OACnC,OAAO,IAAW,EAAQ,aAAa,EAAQ;OAC/C,cAAY,IAAW,EAAQ,aAAa,EAAQ;iBAEpD,kBAAC,GAAD,EACI,WAAW,EACP,YACA,KAAY,eACf,EACH,CAAA;OACG,CAAA;MAEZ,CAAC,CAAC,KAAkB,CAAC,CAAC,EAAQ,MAC3B,kBAAC,GAAD;OACI,MAAK;OACL,MAAK;OACL,SAAQ;OACR,aAAY;OACZ,OAAO,EAAQ;OACf,cAAY,EAAQ;iBAEpB,kBAAC,GAAD,EAAQ,WAAU,YAAa,CAAA;OAC1B,CAAA;MAEZ,CAAC,CAAC,MACC,CAAC,CAAC,KACF,CAAC,CAAC,EAAQ,MACN,kBAAC,GAAD;OACI,MAAK;OACL,MAAK;OACL,SAAQ;OACR,aAAY;OACZ,WAAU;OACV,eACI,EAAS,EAAQ,GAAa;OAElC,OAAO,EAAQ;OACf,cAAY,EAAQ;iBAEpB,kBAAC,IAAD,EAAQ,WAAU,YAAa,CAAA;OAC1B,CAAA;MAEf;;IACJ;;EACA,CAAA;EAEhB,ECxWW,KAAkB,SAE7B,EACE,aACA,gBACA,aACA,gBACA,YACA,YACA,SAAS,GACT,gBACA,iBACA,mBACA,uBACA,cACA,eACA,qBACA,oBACA,gBACsD;AAStD,QARK,EAAS,SASV,kBAAC,OAAD;EAAK,WAAU;YACV,EAAS,KAAK,GAAS,MAAU;GAC9B,IAAM,IACF,kBAAC,IAAD;IACa;IACI;IACH;IACG;IACJ;IACA;IACT,SAAS;IACI;IACC;IACE;IACI;IACT;IACO;IACD;IACnB,CAAA;AAgBN,UAbI,IAEI,kBAAC,OAAD,EAAA,UACK,EAAW;IACR;IACA,aAAa,KAAe;IAC5B;IACA;IACH,CAAC,EACA,EAPI,EAAQ,MAAM,WAAW,IAO7B,GAKV,kBAAC,OAAD,EAAA,UACK,GACC,EAFI,EAAQ,MAAM,WAAW,IAE7B;IAEZ;EACA,CAAA,GA/CF,kBAAA,GAAA,EAAA,UACK,KAAa,kBAAC,GAAD,EAAc,SAAS,GAAe,CAAA,EACrD,CAAA;;;;ACIf,SAAgB,GAId,GAA+C;CAC7C,IAAM,IAAK,GAAuB,EAE5B,IACF,EAAM,oBAAoB,EAAG,oBAAoB,OAE/C,IAAa,EAAM,cAAc,IACjC,IAAc,EAAM,eAAe,IAEnC,IAAW,EAAM,UACjB,IAAW,EAAM,UACjB,IAAc,EAAM,aACpB,IAAU,EAAM,SAChB,IAAU,EAAM,SAEhB,IAAY,EAAM,WAClB,IAAc,EAAM,aAEpB,IAAU,EAAmB,EAAM,QAAQ,EAC3C,IAAY,EAAM,UAAU,KAAA,IAAY,EAAQ,QAAQ,EAAM,OAE9D,CAAC,GAAY,KAAiB,EAAiC,EAAE,CAAC,EAClE,CAAC,GAAc,KAAmB,EAAS,GAAM,EACjD,CAAC,GAAU,MAAe,EAAS,EAAE,EAErC,IAAsC;EACxC,YAAY,MAAW,EAAc,EAAO;EAC5C,aAAa;AAGT,GAFA,IAAa,MAAM,IAAI,EAAE,EACzB,EAAc,EAAE,CAAC,EACjB,EAAgB,GAAM;;EAE1B,eAAe;EAClB,EAEK,IAAe,GAChB,MAAyC;AACjC,QACL,EAAgB,GAAK,EACrB,EAAc,EAAE,CAAC,EACjB,EAAS,GAAQ,EAAc;IAGnC,CAAC,EAAS,CACb,EAEK,IAAW,EAAM,iBACnB,IACI,kBAAC,GAAD;EACI,SAAS,EAAM;EACH;EACE;EACd,QAAQ;EACE;EAOV,UACI;EAEJ,SAAS,EAAM;EACJ;EACE;EACf,CAAA,GACF,OAcF,IACF,kBAAC,IAAD;EACI,UAAU,EAAM;EACH;EACH;EACG;EACJ;EACA;EACT,SAAS,EAAM;EACf,aAAa,EAAM;EACnB,cAAc,EAAM;EACpB,gBAAgB,EAAM;EACtB,oBAAoB,EAAM;EACf;EAKX,YAAY,EAAM;EAClB,kBAAkB,EAAM;EACxB,iBAAiB,EAAM;EACvB,WACI,EAAM,aAAa,kBAAC,GAAD,EAAc,SAAS,EAAM,SAAW,CAAA;EAEjE,CAAA,EAGA,IAAgB,IAAW,kBAAC,OAAD,EAAA,UAAM,GAAe,CAAA,GAAG,MAEnD,IACF,kBAAC,OAAD;EAAK,WAAU;YAAf;GACK,EAAM;GACN,MAAqB,SAAS;GAC9B;GACA,MAAqB,YAAY;GACjC,EAAM;GACL;;AAOV,QAJI,EAAM,OACC,IAIP,kBAAC,GAAD;EACI,OAAO,MAAc,KAAQ,KAAA,IAAY;EACzC,aAAa,EAAQ,YAAY,KAAA;EACjC,SAAQ;EACR,WAAW,EAAG,uBAAuB,EAAM,UAAU;YAEpD;EACO,CAAA;;AAKpB,IAAa,KAAe;;;ACvH5B,SAAgB,GAKZ,IAAuD,EAAE,EACf;CAC1C,IAAM,EAAE,aAAU,aAAU,gBAAa,GAEnC,CAAC,GAAc,KAAmB,EAAkC,EACtE,MAAM,QACT,CAAC,EACI,CAAC,GAAc,KAAmB,EAAS,GAAM,EACjD,CAAC,GAAY,KAAiB,EAAiC,EAAE,CAAC,EAClE,CAAC,GAAU,KAAe,EAAS,EAAE,EAErC,IAAgC;EAClC,YAAY,MAAW,EAAc,EAAO;EAC5C,aAAa;AAGT,GAFA,GAAa,MAAM,IAAI,EAAE,EACzB,EAAgB,EAAE,MAAM,QAAQ,CAAC,EACjC,EAAc,EAAE,CAAC;;EAErB,eAAe;EAClB;AAqED,QAAO;EACH;EACA;EACA;EACA;EACA,YAxEe,GACd,MAAkD;AAC/C,KAAgB;IACZ,MAAM;IACN,WAAW,EAAQ,MAAM;IACzB,YAAY,EAAQ,MAAM;IAC7B,CAAC;KAEN,EAAE,CAgEF;EACA,WA9Dc,GACb,MAAkD;AAC/C,KAAgB;IAAE,MAAM;IAAW;IAAS,CAAC;KAEjD,EAAE,CA0DF;EACA,oBAxDuB,QAAkB;AAEzC,GADA,EAAgB,EAAE,MAAM,QAAQ,CAAC,EACjC,EAAc,EAAE,CAAC;KAClB,EAAE,CAqDD;EACA,QApDW,GACV,MAAyC;AAItC,OAHA,EAAgB,GAAK,EACrB,EAAc,EAAE,CAAC,EAEb,EAAa,SAAS,aAAa,EAAa,QAAQ,IAAI;AAC5D,QAAI,CAAC,GAAU;AACX,OAAgB,GAAM;AACtB;;AAEJ,MAAS,EAAa,QAAQ,IAAI,GAAQ,EAAQ;AAClD;;AAGJ,OAAI,CAAC,GAAU;AACX,MAAgB,GAAM;AACtB;;AAQJ,KAJI,EAAa,SAAS,aAChB;IAAE,GAAG;IAAQ,WAAW,EAAa;IAAW,GAChD,GAEQ,EAAQ;KAG9B;GAAC;GAAc;GAAU;GAAS,CAyBlC;EACA,eAvBkB,GACjB,MAAe;AACR,IAAC,KAAY,CAAC,KAClB,EAAS,EAAG;KAEhB,CAAC,EAAS,CAkBV;EACA,eAhBkB,QAAkB;AAGpC,GAFA,GAAa,MAAM,IAAI,EAAE,EACzB,EAAgB,EAAE,MAAM,QAAQ,CAAC,EACjC,EAAc,EAAE,CAAC;KAClB,EAAE,CAYD;EACA;EACH"}
@@ -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(`./typography-DClleVWi.cjs`),i=require(`./badge-BjtDcU1M.cjs`),a=require(`./button-DjacsNTg.cjs`),o=require(`./tooltip-DPv0LGr9.cjs`),s=require(`./smart-card-Ddsjvf7r.cjs`),c=require(`./popover-BTEwjJZS.cjs`),l=require(`./avatar-BcYcRORH.cjs`),u=require(`./rich-text-editor-UZghkgsh.cjs`),d=require(`./mentions-DVCjaO_z.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.o,{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-BbTYFzx6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments-BbTYFzx6.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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"}
@@ -0,0 +1,2 @@
1
+ require(`./chunk-D3uCBrYO.cjs`);const e=require(`../lib/utils.cjs`);let t=require(`react/jsx-runtime`);var n={tight:`space-y-3`,default:`space-y-5`,loose:`space-y-8`};function r({children:r,as:i=`section`,density:a=`default`,className:o,...s}){return(0,t.jsx)(i,{className:e.cn(n[a],o),...s,children:r})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
2
+ //# sourceMappingURL=containers-BthqdOhA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers-BthqdOhA.cjs","names":[],"sources":["../../src/components/layout/containers/section.tsx"],"sourcesContent":["/**\n * Section — vertical-spaced wrapper for grouping content blocks inside a page.\n *\n * Use between cards or content groups when you want a consistent vertical\n * rhythm without nesting another `Container`. Three densities scale the\n * top/bottom spacing.\n */\nimport { cn } from '@/lib/utils';\n\nimport type { SectionProps } from './containers.types';\n\nconst DENSITY_CLASS: Record<NonNullable<SectionProps['density']>, string> = {\n\ttight: 'space-y-3',\n\tdefault: 'space-y-5',\n\tloose: 'space-y-8',\n};\n\nexport function Section({\n\tchildren,\n\tas: Component = 'section',\n\tdensity = 'default',\n\tclassName,\n\t...props\n}: SectionProps) {\n\treturn (\n\t\t<Component className={cn(DENSITY_CLASS[density], className)} {...props}>\n\t\t\t{children}\n\t\t</Component>\n\t);\n}\n"],"mappings":"uGAWA,IAAM,EAAsE,CAC3E,MAAO,YACP,QAAS,YACT,MAAO,YACP,CAED,SAAgB,EAAQ,CACvB,WACA,GAAI,EAAY,UAChB,UAAU,UACV,YACA,GAAG,GACa,CAChB,OACC,EAAA,EAAA,KAAC,EAAD,CAAW,UAAW,EAAA,GAAG,EAAc,GAAU,EAAU,CAAE,GAAI,EAC/D,WACU,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ //#region src/components/layout/containers/section.tsx
4
+ var n = {
5
+ tight: "space-y-3",
6
+ default: "space-y-5",
7
+ loose: "space-y-8"
8
+ };
9
+ function r({ children: r, as: i = "section", density: a = "default", className: o, ...s }) {
10
+ return /* @__PURE__ */ t(i, {
11
+ className: e(n[a], o),
12
+ ...s,
13
+ children: r
14
+ });
15
+ }
16
+ //#endregion
17
+ export { r as t };
18
+
19
+ //# sourceMappingURL=containers-CD2xs1nk.js.map