admin-ui-starter-kit 0.6.9 → 0.7.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 (1355) hide show
  1. package/.agents/skills/admin-ui-consumer-migration/SKILL.md +29 -1
  2. package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +14 -0
  3. package/.agents/skills/admin-ui-consumer-migration/references/theme-overrides.md +172 -0
  4. package/.agents/skills/component-library-rules/SKILL.md +5 -4
  5. package/.agents/skills/component-library-rules/references/components/INDEX.json +22 -3
  6. package/.agents/skills/component-library-rules/references/components/INDEX.md +21 -2
  7. package/.agents/skills/component-library-rules/references/components/base__avatar.md +3 -3
  8. package/.agents/skills/component-library-rules/references/components/base__carousel.md +8 -5
  9. package/.agents/skills/component-library-rules/references/components/base__css-variables.md +1 -0
  10. package/.agents/skills/component-library-rules/references/components/base__currency.md +10 -11
  11. package/.agents/skills/component-library-rules/references/components/base__item.md +7 -7
  12. package/.agents/skills/component-library-rules/references/components/base__money-display.md +4 -0
  13. package/.agents/skills/component-library-rules/references/components/base__typography.md +3 -3
  14. package/.agents/skills/component-library-rules/references/components/composed__commerce-address-card.md +74 -0
  15. package/.agents/skills/component-library-rules/references/components/composed__commerce-cart-summary.md +84 -0
  16. package/.agents/skills/component-library-rules/references/components/composed__commerce-coupon-input.md +52 -0
  17. package/.agents/skills/component-library-rules/references/components/composed__commerce-discount-stack.md +58 -0
  18. package/.agents/skills/component-library-rules/references/components/composed__commerce-inventory-section.md +168 -0
  19. package/.agents/skills/component-library-rules/references/components/composed__commerce-loyalty-points.md +60 -0
  20. package/.agents/skills/component-library-rules/references/components/composed__commerce-order-status.md +62 -0
  21. package/.agents/skills/component-library-rules/references/components/composed__commerce-payment-method.md +58 -0
  22. package/.agents/skills/component-library-rules/references/components/composed__commerce-refund-status.md +58 -0
  23. package/.agents/skills/component-library-rules/references/components/composed__commerce-seo-listing.md +106 -0
  24. package/.agents/skills/component-library-rules/references/components/composed__commerce-shipment-tracking.md +65 -0
  25. package/.agents/skills/component-library-rules/references/components/composed__commerce-subscription-summary.md +66 -0
  26. package/.agents/skills/component-library-rules/references/components/composed__commerce-tax-breakdown.md +60 -0
  27. package/.agents/skills/component-library-rules/references/components/composed__commerce-upcoming-booking.md +62 -0
  28. package/.agents/skills/component-library-rules/references/components/composed__commerce-voucher-entry.md +60 -0
  29. package/.agents/skills/component-library-rules/references/components/composed__commerce.md +29 -143
  30. package/.agents/skills/component-library-rules/references/components/features__products.md +18 -462
  31. package/.agents/skills/component-library-rules/references/components/features__products__actions.md +37 -0
  32. package/.agents/skills/component-library-rules/references/components/features__products__support-rail.md +73 -0
  33. package/.agents/skills/component-library-rules/references/components/features__products__variant-details.md +97 -0
  34. package/.agents/skills/component-library-rules/references/components/features__products__variant-management.md +269 -0
  35. package/.agents/skills/component-library-rules/references/components/layout__layout-auth.md +1 -1
  36. package/.agents/skills/component-library-rules/references/testing.md +1 -1
  37. package/.agents/skills/token-system/SKILL.md +4 -1
  38. package/AGENTS.md +4 -3
  39. package/COMPONENT_SELECTION.md +15 -0
  40. package/INTEGRATION.md +41 -2
  41. package/MIGRATION.md +7 -7
  42. package/README.md +7 -3
  43. package/dist/_shared/accordion-CSRRDWVZ.js +135 -0
  44. package/dist/_shared/accordion-CSRRDWVZ.js.map +1 -0
  45. package/dist/_shared/accordion-ClVkIaCy.cjs +2 -0
  46. package/dist/_shared/accordion-ClVkIaCy.cjs.map +1 -0
  47. package/dist/_shared/action-menu-8RN2_Jdr.js +96 -0
  48. package/dist/_shared/action-menu-8RN2_Jdr.js.map +1 -0
  49. package/dist/_shared/action-menu-Cx2xaBjN.cjs +2 -0
  50. package/dist/_shared/action-menu-Cx2xaBjN.cjs.map +1 -0
  51. package/dist/_shared/ai-artifact-BO0XGFHz.cjs +3 -0
  52. package/dist/_shared/ai-artifact-BO0XGFHz.cjs.map +1 -0
  53. package/dist/_shared/ai-artifact-CbsGR1t8.js +1099 -0
  54. package/dist/_shared/ai-artifact-CbsGR1t8.js.map +1 -0
  55. package/dist/_shared/auth-CwipRgNB.cjs +2 -0
  56. package/dist/_shared/auth-CwipRgNB.cjs.map +1 -0
  57. package/dist/_shared/auth-Wipu0Oa_.js +643 -0
  58. package/dist/_shared/auth-Wipu0Oa_.js.map +1 -0
  59. package/dist/_shared/badge-B0Ashqkn.cjs +2 -0
  60. package/dist/_shared/badge-B0Ashqkn.cjs.map +1 -0
  61. package/dist/_shared/badge-DOJpEtsa.js +110 -0
  62. package/dist/_shared/badge-DOJpEtsa.js.map +1 -0
  63. package/dist/_shared/breadcrumbs-C7PI8sxx.cjs +2 -0
  64. package/dist/_shared/breadcrumbs-C7PI8sxx.cjs.map +1 -0
  65. package/dist/_shared/breadcrumbs-xNjbIrGc.js +105 -0
  66. package/dist/_shared/breadcrumbs-xNjbIrGc.js.map +1 -0
  67. package/dist/_shared/button-CB8e7fui.cjs +2 -0
  68. package/dist/_shared/button-CB8e7fui.cjs.map +1 -0
  69. package/dist/_shared/button-CNEMqDHK.js +192 -0
  70. package/dist/_shared/button-CNEMqDHK.js.map +1 -0
  71. package/dist/_shared/buttons-BCFKQuB5.js +137 -0
  72. package/dist/_shared/buttons-BCFKQuB5.js.map +1 -0
  73. package/dist/_shared/buttons-DHj5I2YL.cjs +2 -0
  74. package/dist/_shared/buttons-DHj5I2YL.cjs.map +1 -0
  75. package/dist/_shared/card-radio-group-DdubYUJ6.cjs +2 -0
  76. package/dist/_shared/card-radio-group-DdubYUJ6.cjs.map +1 -0
  77. package/dist/_shared/card-radio-group-Du6rzuoC.js +150 -0
  78. package/dist/_shared/card-radio-group-Du6rzuoC.js.map +1 -0
  79. package/dist/_shared/cards-B7voInTJ.js +430 -0
  80. package/dist/_shared/cards-B7voInTJ.js.map +1 -0
  81. package/dist/_shared/cards-DvE5gRFf.cjs +2 -0
  82. package/dist/_shared/cards-DvE5gRFf.cjs.map +1 -0
  83. package/dist/_shared/combobox-AbXh9ft4.cjs +2 -0
  84. package/dist/_shared/combobox-AbXh9ft4.cjs.map +1 -0
  85. package/dist/_shared/combobox-ImXiC1qy.js +957 -0
  86. package/dist/_shared/combobox-ImXiC1qy.js.map +1 -0
  87. package/dist/_shared/command-B-Yokco3.js +39 -0
  88. package/dist/_shared/command-B-Yokco3.js.map +1 -0
  89. package/dist/_shared/command-kcPx4TM_.cjs +2 -0
  90. package/dist/_shared/command-kcPx4TM_.cjs.map +1 -0
  91. package/dist/_shared/comments-BR5ENvoo.cjs +2 -0
  92. package/dist/_shared/comments-BR5ENvoo.cjs.map +1 -0
  93. package/dist/_shared/comments-a3l--GJ-.js +952 -0
  94. package/dist/_shared/comments-a3l--GJ-.js.map +1 -0
  95. package/dist/_shared/containers-8ryMAXNr.js +48 -0
  96. package/dist/_shared/containers-8ryMAXNr.js.map +1 -0
  97. package/dist/_shared/containers-BcrM8-22.cjs +2 -0
  98. package/dist/_shared/containers-BcrM8-22.cjs.map +1 -0
  99. package/dist/_shared/copyable-C0KJlRVr.js +38 -0
  100. package/dist/_shared/copyable-C0KJlRVr.js.map +1 -0
  101. package/dist/_shared/copyable-tJxsOyn-.cjs +2 -0
  102. package/dist/_shared/copyable-tJxsOyn-.cjs.map +1 -0
  103. package/dist/_shared/data-display-B9Lciun3.cjs +2 -0
  104. package/dist/_shared/data-display-B9Lciun3.cjs.map +1 -0
  105. package/dist/_shared/data-display-CYmwUdmU.js +1878 -0
  106. package/dist/_shared/data-display-CYmwUdmU.js.map +1 -0
  107. package/dist/_shared/date-picker-BaPDfs1p.js +1361 -0
  108. package/dist/_shared/date-picker-BaPDfs1p.js.map +1 -0
  109. package/dist/_shared/date-picker-DrkoZZdr.cjs +2 -0
  110. package/dist/_shared/date-picker-DrkoZZdr.cjs.map +1 -0
  111. package/dist/_shared/date-pickers-CT3aZpPn.cjs +2 -0
  112. package/dist/_shared/date-pickers-CT3aZpPn.cjs.map +1 -0
  113. package/dist/_shared/date-pickers-DRp0VM7k.js +329 -0
  114. package/dist/_shared/date-pickers-DRp0VM7k.js.map +1 -0
  115. package/dist/_shared/display-BHIs_Y_j.js +1006 -0
  116. package/dist/_shared/display-BHIs_Y_j.js.map +1 -0
  117. package/dist/_shared/display-DV7n0KA1.cjs +2 -0
  118. package/dist/_shared/display-DV7n0KA1.cjs.map +1 -0
  119. package/dist/_shared/dropdown-menu-5fFMhKo4.js +147 -0
  120. package/dist/_shared/dropdown-menu-5fFMhKo4.js.map +1 -0
  121. package/dist/_shared/dropdown-menu-B_SCGRL2.cjs +2 -0
  122. package/dist/_shared/dropdown-menu-B_SCGRL2.cjs.map +1 -0
  123. package/dist/_shared/form-sizing-VNEGzvM7.js +42 -0
  124. package/dist/_shared/form-sizing-VNEGzvM7.js.map +1 -0
  125. package/dist/_shared/form-sizing-lBFpJWv4.cjs +2 -0
  126. package/dist/_shared/form-sizing-lBFpJWv4.cjs.map +1 -0
  127. package/dist/_shared/forms-B7LYVbAy.cjs +2 -0
  128. package/dist/_shared/forms-B7LYVbAy.cjs.map +1 -0
  129. package/dist/_shared/forms-C5uZX_kQ.js +3534 -0
  130. package/dist/_shared/forms-C5uZX_kQ.js.map +1 -0
  131. package/dist/_shared/header-B4wGB6Ca.cjs +2 -0
  132. package/dist/_shared/header-B4wGB6Ca.cjs.map +1 -0
  133. package/dist/_shared/header-CWyOry0f.js +447 -0
  134. package/dist/_shared/header-CWyOry0f.js.map +1 -0
  135. package/dist/_shared/hooks-B4Cop5YI.cjs +2 -0
  136. package/dist/_shared/hooks-B4Cop5YI.cjs.map +1 -0
  137. package/dist/_shared/hooks-CFUZJW_S.js +95 -0
  138. package/dist/_shared/hooks-CFUZJW_S.js.map +1 -0
  139. package/dist/_shared/icon-size-CMNigtUu.js +15 -0
  140. package/dist/_shared/icon-size-CMNigtUu.js.map +1 -0
  141. package/dist/_shared/icon-size-D2NnYd0K.cjs +2 -0
  142. package/dist/_shared/icon-size-D2NnYd0K.cjs.map +1 -0
  143. package/dist/_shared/input-BEhrcsk7.js +182 -0
  144. package/dist/_shared/input-BEhrcsk7.js.map +1 -0
  145. package/dist/_shared/input-DGvh-izk.cjs +2 -0
  146. package/dist/_shared/input-DGvh-izk.cjs.map +1 -0
  147. package/dist/_shared/item-BG2iK1sy.cjs +2 -0
  148. package/dist/_shared/item-BG2iK1sy.cjs.map +1 -0
  149. package/dist/_shared/item-D75eGy8G.js +227 -0
  150. package/dist/_shared/item-D75eGy8G.js.map +1 -0
  151. package/dist/_shared/layout-CZVEJ3p_.cjs +2 -0
  152. package/dist/_shared/layout-CZVEJ3p_.cjs.map +1 -0
  153. package/dist/_shared/layout-D75TJTaD.js +268 -0
  154. package/dist/_shared/layout-D75TJTaD.js.map +1 -0
  155. package/dist/_shared/mentions-CWqC8Xds.js +506 -0
  156. package/dist/_shared/mentions-CWqC8Xds.js.map +1 -0
  157. package/dist/_shared/mentions-wtkrL2hX.cjs +2 -0
  158. package/dist/_shared/mentions-wtkrL2hX.cjs.map +1 -0
  159. package/dist/_shared/money-display-BabyaIWb.js +198 -0
  160. package/dist/_shared/money-display-BabyaIWb.js.map +1 -0
  161. package/dist/_shared/money-display-CrNRbByx.cjs +2 -0
  162. package/dist/_shared/money-display-CrNRbByx.cjs.map +1 -0
  163. package/dist/_shared/navigation-9DB-vtGI.js +436 -0
  164. package/dist/_shared/navigation-9DB-vtGI.js.map +1 -0
  165. package/dist/_shared/navigation-DAjFLSv5.cjs +2 -0
  166. package/dist/_shared/navigation-DAjFLSv5.cjs.map +1 -0
  167. package/dist/_shared/overlays-BK0J8zSv.cjs +2 -0
  168. package/dist/_shared/overlays-BK0J8zSv.cjs.map +1 -0
  169. package/dist/_shared/overlays-DKsXufDv.js +735 -0
  170. package/dist/_shared/overlays-DKsXufDv.js.map +1 -0
  171. package/dist/_shared/popover-menu-DXh14PIu.js +93 -0
  172. package/dist/_shared/popover-menu-DXh14PIu.js.map +1 -0
  173. package/dist/_shared/popover-menu-DkjPUZ4v.cjs +2 -0
  174. package/dist/_shared/popover-menu-DkjPUZ4v.cjs.map +1 -0
  175. package/dist/_shared/rich-text-editor-DjZTJzdm.cjs +2 -0
  176. package/dist/_shared/rich-text-editor-DjZTJzdm.cjs.map +1 -0
  177. package/dist/_shared/rich-text-editor-DloyZq46.js +620 -0
  178. package/dist/_shared/rich-text-editor-DloyZq46.js.map +1 -0
  179. package/dist/_shared/settings-AIgixHbB.cjs +2 -0
  180. package/dist/_shared/settings-AIgixHbB.cjs.map +1 -0
  181. package/dist/_shared/settings-D3KdypJk.js +143 -0
  182. package/dist/_shared/settings-D3KdypJk.js.map +1 -0
  183. package/dist/_shared/sidebar-BzBincq3.js +548 -0
  184. package/dist/_shared/sidebar-BzBincq3.js.map +1 -0
  185. package/dist/_shared/sidebar-D5NLbyow.cjs +2 -0
  186. package/dist/_shared/sidebar-D5NLbyow.cjs.map +1 -0
  187. package/dist/_shared/skeleton-Bc_qa5l_.js +256 -0
  188. package/dist/_shared/skeleton-Bc_qa5l_.js.map +1 -0
  189. package/dist/_shared/skeleton-Wq6G0Kya.cjs +2 -0
  190. package/dist/_shared/skeleton-Wq6G0Kya.cjs.map +1 -0
  191. package/dist/_shared/spinner-C-yoZUk-.cjs +2 -0
  192. package/dist/_shared/spinner-C-yoZUk-.cjs.map +1 -0
  193. package/dist/_shared/spinner-CDVWFN0N.js +67 -0
  194. package/dist/_shared/spinner-CDVWFN0N.js.map +1 -0
  195. package/dist/_shared/table-B70kyH2E.js +1377 -0
  196. package/dist/_shared/table-B70kyH2E.js.map +1 -0
  197. package/dist/_shared/table-DQA2m2F0.cjs +2 -0
  198. package/dist/_shared/table-DQA2m2F0.cjs.map +1 -0
  199. package/dist/_shared/textarea-Dx9yEZY2.js +118 -0
  200. package/dist/_shared/textarea-Dx9yEZY2.js.map +1 -0
  201. package/dist/_shared/textarea-rfnSeHHC.cjs +2 -0
  202. package/dist/_shared/textarea-rfnSeHHC.cjs.map +1 -0
  203. package/dist/_shared/typography-C_kCoR1d.js +204 -0
  204. package/dist/_shared/typography-C_kCoR1d.js.map +1 -0
  205. package/dist/_shared/typography-sXFd02zl.cjs +2 -0
  206. package/dist/_shared/typography-sXFd02zl.cjs.map +1 -0
  207. package/dist/_shared/workspace-Bw-k_HXQ.js +357 -0
  208. package/dist/_shared/workspace-Bw-k_HXQ.js.map +1 -0
  209. package/dist/_shared/workspace-CLUsYC5y.cjs +2 -0
  210. package/dist/_shared/workspace-CLUsYC5y.cjs.map +1 -0
  211. package/dist/components/base/accordion/index.cjs +1 -1
  212. package/dist/components/base/accordion/index.js +1 -1
  213. package/dist/components/base/badge/index.cjs +1 -1
  214. package/dist/components/base/badge/index.js +1 -1
  215. package/dist/components/base/buttons/index.cjs +1 -1
  216. package/dist/components/base/buttons/index.js +2 -2
  217. package/dist/components/base/cards/index.cjs +1 -1
  218. package/dist/components/base/cards/index.js +1 -1
  219. package/dist/components/base/carousel/carousel.d.ts.map +1 -1
  220. package/dist/components/base/carousel/index.cjs +1 -1
  221. package/dist/components/base/carousel/index.cjs.map +1 -1
  222. package/dist/components/base/carousel/index.js +98 -97
  223. package/dist/components/base/carousel/index.js.map +1 -1
  224. package/dist/components/base/combobox/components/combobox-dropdown.d.ts.map +1 -1
  225. package/dist/components/base/combobox/index.cjs +1 -1
  226. package/dist/components/base/combobox/index.js +1 -1
  227. package/dist/components/base/command/command.d.ts +1 -1
  228. package/dist/components/base/command/index.cjs +1 -1
  229. package/dist/components/base/command/index.js +1 -1
  230. package/dist/components/base/copyable/index.cjs +1 -1
  231. package/dist/components/base/copyable/index.js +1 -1
  232. package/dist/components/base/currency/index.cjs +1 -1
  233. package/dist/components/base/currency/index.js +1 -1
  234. package/dist/components/base/date-pickers/index.cjs +1 -1
  235. package/dist/components/base/date-pickers/index.js +2 -2
  236. package/dist/components/base/display/alert.d.ts.map +1 -1
  237. package/dist/components/base/display/chart.cjs +1 -1
  238. package/dist/components/base/display/chart.js +1 -1
  239. package/dist/components/base/display/icon-size.d.ts +6 -0
  240. package/dist/components/base/display/icon-size.d.ts.map +1 -0
  241. package/dist/components/base/display/index.cjs +1 -1
  242. package/dist/components/base/display/index.d.ts +1 -0
  243. package/dist/components/base/display/index.d.ts.map +1 -1
  244. package/dist/components/base/display/index.js +10 -9
  245. package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
  246. package/dist/components/base/event-calendar/index.cjs +1 -1
  247. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  248. package/dist/components/base/event-calendar/index.js +4 -4
  249. package/dist/components/base/event-calendar/index.js.map +1 -1
  250. package/dist/components/base/forms/index.cjs +1 -1
  251. package/dist/components/base/forms/index.js +5 -5
  252. package/dist/components/base/item/index.cjs +1 -1
  253. package/dist/components/base/item/index.js +1 -1
  254. package/dist/components/base/item/item.d.ts.map +1 -1
  255. package/dist/components/base/map/index.cjs +1 -1
  256. package/dist/components/base/map/index.cjs.map +1 -1
  257. package/dist/components/base/map/index.js +3 -3
  258. package/dist/components/base/map/index.js.map +1 -1
  259. package/dist/components/base/map/map.d.ts +1 -1
  260. package/dist/components/base/map/map.d.ts.map +1 -1
  261. package/dist/components/base/navigation/dropdown-menu.d.ts +33 -1
  262. package/dist/components/base/navigation/dropdown-menu.d.ts.map +1 -1
  263. package/dist/components/base/navigation/index.cjs +1 -1
  264. package/dist/components/base/navigation/index.js +4 -4
  265. package/dist/components/base/popover-menu/index.cjs +1 -1
  266. package/dist/components/base/popover-menu/index.js +1 -1
  267. package/dist/components/base/spinner/index.cjs +1 -1
  268. package/dist/components/base/spinner/index.js +1 -1
  269. package/dist/components/base/table/index.cjs +1 -1
  270. package/dist/components/base/table/index.js +1 -1
  271. package/dist/components/composed/admin/index.cjs +1 -1
  272. package/dist/components/composed/admin/index.cjs.map +1 -1
  273. package/dist/components/composed/admin/index.js +10 -11
  274. package/dist/components/composed/admin/index.js.map +1 -1
  275. package/dist/components/composed/ai/index.cjs +1 -1
  276. package/dist/components/composed/ai/index.cjs.map +1 -1
  277. package/dist/components/composed/ai/index.js +8 -9
  278. package/dist/components/composed/ai/index.js.map +1 -1
  279. package/dist/components/composed/analytics/index.cjs +1 -1
  280. package/dist/components/composed/analytics/index.cjs.map +1 -1
  281. package/dist/components/composed/analytics/index.js +4 -4
  282. package/dist/components/composed/analytics/index.js.map +1 -1
  283. package/dist/components/composed/cards/index.cjs +1 -1
  284. package/dist/components/composed/cards/index.cjs.map +1 -1
  285. package/dist/components/composed/cards/index.js +13 -15
  286. package/dist/components/composed/cards/index.js.map +1 -1
  287. package/dist/components/composed/commerce/index.cjs +1 -1
  288. package/dist/components/composed/commerce/index.cjs.map +1 -1
  289. package/dist/components/composed/commerce/index.d.ts +2 -0
  290. package/dist/components/composed/commerce/index.d.ts.map +1 -1
  291. package/dist/components/composed/commerce/index.js +1246 -382
  292. package/dist/components/composed/commerce/index.js.map +1 -1
  293. package/dist/components/composed/commerce/inventory-section/index.d.ts +3 -0
  294. package/dist/components/composed/commerce/inventory-section/index.d.ts.map +1 -0
  295. package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts +6 -0
  296. package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts.map +1 -0
  297. package/dist/components/composed/commerce/inventory-section/types.d.ts +85 -0
  298. package/dist/components/composed/commerce/inventory-section/types.d.ts.map +1 -0
  299. package/dist/components/composed/commerce/seo-listing/index.d.ts +4 -0
  300. package/dist/components/composed/commerce/seo-listing/index.d.ts.map +1 -0
  301. package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts +6 -0
  302. package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts.map +1 -0
  303. package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts +6 -0
  304. package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts.map +1 -0
  305. package/dist/components/composed/commerce/seo-listing/types.d.ts +68 -0
  306. package/dist/components/composed/commerce/seo-listing/types.d.ts.map +1 -0
  307. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  308. package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
  309. package/dist/components/composed/dark-surfaces/index.js +7 -7
  310. package/dist/components/composed/dark-surfaces/index.js.map +1 -1
  311. package/dist/components/composed/data-display/index.cjs +1 -1
  312. package/dist/components/composed/data-display/index.js +1 -1
  313. package/dist/components/composed/navigation/index.cjs +1 -1
  314. package/dist/components/composed/navigation/index.cjs.map +1 -1
  315. package/dist/components/composed/navigation/index.js +5 -6
  316. package/dist/components/composed/navigation/index.js.map +1 -1
  317. package/dist/components/composed/onboarding/index.cjs +1 -1
  318. package/dist/components/composed/onboarding/index.js +3 -3
  319. package/dist/components/composed/timelines/index.cjs +1 -1
  320. package/dist/components/composed/timelines/index.js +3 -3
  321. package/dist/components/features/activities/index.cjs +1 -1
  322. package/dist/components/features/activities/index.js +5 -5
  323. package/dist/components/features/ai-chat/index.cjs +1 -1
  324. package/dist/components/features/ai-chat/index.js +5 -5
  325. package/dist/components/features/card/index.cjs +1 -1
  326. package/dist/components/features/card/index.js +4 -4
  327. package/dist/components/features/comments/index.cjs +1 -1
  328. package/dist/components/features/comments/index.js +2 -2
  329. package/dist/components/features/data-view/index.cjs +1 -1
  330. package/dist/components/features/data-view/index.js +2 -2
  331. package/dist/components/features/event-log/index.cjs +1 -1
  332. package/dist/components/features/event-log/index.js +4 -4
  333. package/dist/components/features/filters/index.cjs +1 -1
  334. package/dist/components/features/filters/index.cjs.map +1 -1
  335. package/dist/components/features/filters/index.js +64 -64
  336. package/dist/components/features/filters/index.js.map +1 -1
  337. package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
  338. package/dist/components/features/global-search/index.cjs +1 -1
  339. package/dist/components/features/global-search/index.js +4 -4
  340. package/dist/components/features/kanban/index.cjs +1 -1
  341. package/dist/components/features/kanban/index.js +3 -3
  342. package/dist/components/features/media-library/index.cjs +1 -1
  343. package/dist/components/features/media-library/index.cjs.map +1 -1
  344. package/dist/components/features/media-library/index.js +230 -206
  345. package/dist/components/features/media-library/index.js.map +1 -1
  346. package/dist/components/features/media-library/media-library.d.ts.map +1 -1
  347. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  348. package/dist/components/features/media-library/media-library.strings.d.ts.map +1 -1
  349. package/dist/components/features/media-library/partials/media-library-partials.d.ts.map +1 -1
  350. package/dist/components/features/mentions/index.cjs +1 -1
  351. package/dist/components/features/mentions/index.js +1 -1
  352. package/dist/components/features/overlays/index.cjs +1 -1
  353. package/dist/components/features/overlays/index.js +1 -1
  354. package/dist/components/features/products/components/index.d.ts +3 -0
  355. package/dist/components/features/products/components/index.d.ts.map +1 -1
  356. package/dist/components/features/products/components/product-options-matrix.d.ts +6 -0
  357. package/dist/components/features/products/components/product-options-matrix.d.ts.map +1 -0
  358. package/dist/components/features/products/components/product-variants-bulk-table.d.ts +6 -0
  359. package/dist/components/features/products/components/product-variants-bulk-table.d.ts.map +1 -0
  360. package/dist/components/features/products/components/product-variants-manager.d.ts +6 -0
  361. package/dist/components/features/products/components/product-variants-manager.d.ts.map +1 -0
  362. package/dist/components/features/products/index.cjs +1 -1
  363. package/dist/components/features/products/index.cjs.map +1 -1
  364. package/dist/components/features/products/index.js +1705 -511
  365. package/dist/components/features/products/index.js.map +1 -1
  366. package/dist/components/features/products/products.strings.d.ts +70 -0
  367. package/dist/components/features/products/products.strings.d.ts.map +1 -1
  368. package/dist/components/features/products/products.types.d.ts +163 -1
  369. package/dist/components/features/products/products.types.d.ts.map +1 -1
  370. package/dist/components/features/resource/index.cjs +1 -1
  371. package/dist/components/features/resource/index.js +5 -5
  372. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  373. package/dist/components/features/rich-text-editor/index.js +1 -1
  374. package/dist/components/features/schema-form/index.cjs +1 -1
  375. package/dist/components/features/schema-form/index.js +8 -8
  376. package/dist/components/features/suggestions/index.cjs +1 -1
  377. package/dist/components/features/suggestions/index.js +1 -1
  378. package/dist/components/features/sync/index.cjs +1 -1
  379. package/dist/components/features/sync/index.js +2 -2
  380. package/dist/components/layout/auth/index.cjs +1 -1
  381. package/dist/components/layout/auth/index.js +1 -1
  382. package/dist/components/layout/containers/index.cjs +1 -1
  383. package/dist/components/layout/containers/index.js +1 -1
  384. package/dist/components/layout/header/index.cjs +1 -1
  385. package/dist/components/layout/header/index.js +1 -1
  386. package/dist/components/layout/hooks/index.cjs +1 -1
  387. package/dist/components/layout/hooks/index.js +1 -1
  388. package/dist/components/layout/index.cjs +1 -1
  389. package/dist/components/layout/index.js +8 -8
  390. package/dist/components/layout/page/index.cjs +1 -1
  391. package/dist/components/layout/page/index.js +1 -1
  392. package/dist/components/layout/page/page-content.d.ts +1 -1
  393. package/dist/components/layout/page/page-content.d.ts.map +1 -1
  394. package/dist/components/layout/settings/index.cjs +1 -1
  395. package/dist/components/layout/settings/index.js +1 -1
  396. package/dist/components/layout/sidebar/index.cjs +1 -1
  397. package/dist/components/layout/sidebar/index.js +2 -2
  398. package/dist/components/layout/workspace/index.cjs +1 -1
  399. package/dist/components/layout/workspace/index.js +1 -1
  400. package/dist/components/typography/index.cjs +1 -1
  401. package/dist/components/typography/index.js +1 -1
  402. package/dist/components/typography/text-link.d.ts +3 -1
  403. package/dist/components/typography/text-link.d.ts.map +1 -1
  404. package/dist/components/typography/text.d.ts.map +1 -1
  405. package/dist/lib/ui-provider/types.d.ts +1 -1
  406. package/dist/lib/ui-provider/types.d.ts.map +1 -1
  407. package/dist/lib/utils.cjs +1 -1
  408. package/dist/lib/utils.cjs.map +1 -1
  409. package/dist/lib/utils.d.ts.map +1 -1
  410. package/dist/lib/utils.js +1 -0
  411. package/dist/lib/utils.js.map +1 -1
  412. package/dist/services/actions/index.cjs +1 -1
  413. package/dist/services/actions/index.js +1 -1
  414. package/dist/showcase/assets/AreaChart-iGBzUSAV.js +6 -0
  415. package/dist/showcase/assets/CompositeItem-1e8qsdC5.js +1 -0
  416. package/dist/showcase/assets/CompositeRoot-DneCUh3i.js +1 -0
  417. package/dist/showcase/assets/DialogTrigger-CVhas4X-.js +1 -0
  418. package/dist/showcase/assets/LabelableContext-Bfc22fLa.js +1 -0
  419. package/dist/showcase/assets/MenuTrigger-WTiiOMpe.js +1 -0
  420. package/dist/showcase/assets/PreviewLayout-ClbLOtTa.js +1 -0
  421. package/dist/showcase/assets/RadioGroup-DEBYMgi5.js +1 -0
  422. package/dist/showcase/assets/ScrollAreaCorner-CilamsvS.js +1 -0
  423. package/dist/showcase/assets/Separator-DSecBOlo.js +1 -0
  424. package/dist/showcase/assets/ToolbarRootContext-BY_Czi0-.js +1 -0
  425. package/dist/showcase/assets/accordion-FV2cJ9V1.js +171 -0
  426. package/dist/showcase/assets/accordion-variants-DRNuXgFT.js +1 -0
  427. package/dist/showcase/assets/action-menu-uhMTzBIl.js +1 -0
  428. package/dist/showcase/assets/actions-C3kChFSc.js +310 -0
  429. package/dist/showcase/assets/actions-DizTzuf8.js +38 -0
  430. package/dist/showcase/assets/activities-DQ7u_XKr.js +500 -0
  431. package/dist/showcase/assets/activities-feed-card-DoxFXr20.js +1 -0
  432. package/dist/showcase/assets/admin-CRVq1bj-.js +140 -0
  433. package/dist/showcase/assets/ai-DMBh2BKA.js +207 -0
  434. package/dist/showcase/assets/ai-artifact-DnSz7Xj1.js +2 -0
  435. package/dist/showcase/assets/ai-chat-Ba60tj9x.js +568 -0
  436. package/dist/showcase/assets/ai-elements-CaMbMARm.js +387 -0
  437. package/dist/showcase/assets/ai-tool-call-Cg11pnXq.js +1 -0
  438. package/dist/showcase/assets/alert-AeDTPQQ5.js +62 -0
  439. package/dist/showcase/assets/alert-BQucj-0f.js +1 -0
  440. package/dist/showcase/assets/alert-DY0yMYc3.js +93 -0
  441. package/dist/showcase/assets/api-key-list-DZiVRCkz.js +73 -0
  442. package/dist/showcase/assets/api-key-list-DuoC5nyO.js +1 -0
  443. package/dist/showcase/assets/app-sidebar-D_RbOUZC.js +1 -0
  444. package/dist/showcase/assets/arrow-down-J_5dmfVv.js +1 -0
  445. package/dist/showcase/assets/arrow-left-DeKmFjyi.js +1 -0
  446. package/dist/showcase/assets/arrow-right-ztHj2bIY.js +1 -0
  447. package/dist/showcase/assets/arrow-up-CCenfeVW.js +1 -0
  448. package/dist/showcase/assets/arrow-up-right-URGvP7LF.js +1 -0
  449. package/dist/showcase/assets/avatar-CTFW3AQa.js +1 -0
  450. package/dist/showcase/assets/avatar-DH3vm33j.js +1 -0
  451. package/dist/showcase/assets/avatar-DRi6ZWB2.js +67 -0
  452. package/dist/showcase/assets/avatar-eEOgFI6D.js +57 -0
  453. package/dist/showcase/assets/badge-C9RqIyT7.js +31 -0
  454. package/dist/showcase/assets/badge-check-CRkt0WPY.js +1 -0
  455. package/dist/showcase/assets/bell-B-bFEx5I.js +1 -0
  456. package/dist/showcase/assets/boolean-indicator-CD3scHDz.js +1 -0
  457. package/dist/showcase/assets/bot-DbSsnrvR.js +1 -0
  458. package/dist/showcase/assets/box-BDLbaerX.js +1 -0
  459. package/dist/showcase/assets/braces-nP1Ffv07.js +1 -0
  460. package/dist/showcase/assets/brain-B69nRyRF.js +1 -0
  461. package/dist/showcase/assets/brand-WHRuwaVX.js +36 -0
  462. package/dist/showcase/assets/breadcrumb-CYxS57Ko.js +1 -0
  463. package/dist/showcase/assets/breadcrumb-viDsLdax.js +52 -0
  464. package/dist/showcase/assets/breadcrumbs-CX6eCwn4.js +1 -0
  465. package/dist/showcase/assets/briefcase-BCMmOuh2.js +1 -0
  466. package/dist/showcase/assets/building-2-DCSQxFoC.js +1 -0
  467. package/dist/showcase/assets/button-It_u4rRb.js +44 -0
  468. package/dist/showcase/assets/button-group-B2NgHAyn.js +1 -0
  469. package/dist/showcase/assets/buttons-ClK1qR3J.js +272 -0
  470. package/dist/showcase/assets/calendar-CX89JdTd.js +16 -0
  471. package/dist/showcase/assets/calendar-DV83xhzB.js +1 -0
  472. package/dist/showcase/assets/calendar-HrkenM2F.js +1 -0
  473. package/dist/showcase/assets/calendar-days-O55Ncg5j.js +1 -0
  474. package/dist/showcase/assets/camera-C6hO-Q3l.js +1 -0
  475. package/dist/showcase/assets/card-CXet5wLR.js +1 -0
  476. package/dist/showcase/assets/card-ChwovoeQ.js +188 -0
  477. package/dist/showcase/assets/card-checkbox-group-DN7Ui724.js +1 -0
  478. package/dist/showcase/assets/card-primitives-C5YmKK4H.js +1 -0
  479. package/dist/showcase/assets/card-radio-group-DaiWsziy.js +1 -0
  480. package/dist/showcase/assets/cards-CpYk7Lcz.js +354 -0
  481. package/dist/showcase/assets/carousel-CaoSMqW3.js +452 -0
  482. package/dist/showcase/assets/cell-renderers-BTLGZyvy.js +1 -0
  483. package/dist/showcase/assets/chart-DukdMlSE.js +358 -0
  484. package/dist/showcase/assets/chart-column-BqDA22mr.js +1 -0
  485. package/dist/showcase/assets/checkbox-CJg8G3-s.js +1 -0
  486. package/dist/showcase/assets/checkbox-DlOCnOfc.js +1 -0
  487. package/dist/showcase/assets/chevron-down-CjLLqYjs.js +1 -0
  488. package/dist/showcase/assets/chevron-left-lE5l5Y1q.js +1 -0
  489. package/dist/showcase/assets/chevron-up-WpyEPcvJ.js +1 -0
  490. package/dist/showcase/assets/chevrons-up-down-CPkjAe_j.js +1 -0
  491. package/dist/showcase/assets/circle-B9E-rFdh.js +1 -0
  492. package/dist/showcase/assets/circle-alert-DX4Q8Agf.js +1 -0
  493. package/dist/showcase/assets/circle-check-BdcUhuQ7.js +1 -0
  494. package/dist/showcase/assets/circle-check-big-CeaAGVP1.js +1 -0
  495. package/dist/showcase/assets/circle-dot-DoXkol-T.js +1 -0
  496. package/dist/showcase/assets/circle-question-mark-CYE6Hj4n.js +1 -0
  497. package/dist/showcase/assets/circle-x-BpB4A5gs.js +1 -0
  498. package/dist/showcase/assets/clock-3-B7Fa1qg-.js +1 -0
  499. package/dist/showcase/assets/clock-B1cuTZnL.js +1 -0
  500. package/dist/showcase/assets/code-xml-C_ICl6NY.js +1 -0
  501. package/dist/showcase/assets/collapsible-CtrQcEWW.js +27 -0
  502. package/dist/showcase/assets/collapsible-XZ4qRG4O.js +1 -0
  503. package/dist/showcase/assets/collapsible-ZP3Pv6SI.js +1 -0
  504. package/dist/showcase/assets/combobox-GMkDgk_z.js +685 -0
  505. package/dist/showcase/assets/command-BXhyoNX1.js +1 -0
  506. package/dist/showcase/assets/command-DNHjxTyl.js +1 -0
  507. package/dist/showcase/assets/comment-composer-BtE5Erp8.js +1 -0
  508. package/dist/showcase/assets/comment-item-TztxmXc7.js +1 -0
  509. package/dist/showcase/assets/comments-CEMkLRtb.js +357 -0
  510. package/dist/showcase/assets/commerce-BtvCQH0C.js +19 -0
  511. package/dist/showcase/assets/commerce-address-card-8PUGRwNW.js +33 -0
  512. package/dist/showcase/assets/commerce-cart-summary-nrO5v1O8.js +43 -0
  513. package/dist/showcase/assets/commerce-coupon-input-C-sT1FNq.js +11 -0
  514. package/dist/showcase/assets/commerce-discount-stack-BdGk8tbD.js +17 -0
  515. package/dist/showcase/assets/commerce-inventory-section-BnBu7wK5.js +123 -0
  516. package/dist/showcase/assets/commerce-loyalty-points-Bjei3EdW.js +19 -0
  517. package/dist/showcase/assets/commerce-order-status--TMOLhrS.js +21 -0
  518. package/dist/showcase/assets/commerce-payment-method-C8fVquyN.js +17 -0
  519. package/dist/showcase/assets/commerce-refund-status-Cs6dbewH.js +17 -0
  520. package/dist/showcase/assets/commerce-seo-listing-C4WvKFei.js +61 -0
  521. package/dist/showcase/assets/commerce-shipment-tracking-BcezyjSw.js +24 -0
  522. package/dist/showcase/assets/commerce-subscription-summary-BjhnmqOx.js +25 -0
  523. package/dist/showcase/assets/commerce-tax-breakdown-js8xMRDn.js +19 -0
  524. package/dist/showcase/assets/commerce-upcoming-booking-doggTqfA.js +20 -0
  525. package/dist/showcase/assets/commerce-voucher-entry-ByMZAiZO.js +19 -0
  526. package/dist/showcase/assets/composite-D2jjTQvZ.js +1 -0
  527. package/dist/showcase/assets/conditional-rendering-Cy3xN7KO.js +1 -0
  528. package/dist/showcase/assets/contact-card-BSH_KDbf.js +65 -0
  529. package/dist/showcase/assets/content-container-Q9Bp8aFE.js +1 -0
  530. package/dist/showcase/assets/copyable-8_0ImOB2.js +1 -0
  531. package/dist/showcase/assets/copyable-B3R9lXVu.js +96 -0
  532. package/dist/showcase/assets/course-card-zh8fH-6n.js +77 -0
  533. package/dist/showcase/assets/cpu-DlPQMchp.js +1 -0
  534. package/dist/showcase/assets/credit-card-DeuhwEKG.js +1 -0
  535. package/dist/showcase/assets/css-variables-BxE5DqUm.js +1223 -0
  536. package/dist/showcase/assets/currency-D3DomSfR.js +148 -0
  537. package/dist/showcase/assets/dark-surfaces-DYh199dt.js +90 -0
  538. package/dist/showcase/assets/data-view-HJme-PWk.js +124 -0
  539. package/dist/showcase/assets/data-view-s5TQvt4f.js +4 -0
  540. package/dist/showcase/assets/database-KGU1LGqB.js +1 -0
  541. package/dist/showcase/assets/date-block-CxFhNxK2.js +1 -0
  542. package/dist/showcase/assets/date-block-DmRDymLD.js +1 -0
  543. package/dist/showcase/assets/date-picker-CScVl5jV.js +1 -0
  544. package/dist/showcase/assets/date-pickers-D4EmH-RF.js +73 -0
  545. package/dist/showcase/assets/dense-info-DXbmG0Nf.js +106 -0
  546. package/dist/showcase/assets/design-system-consistency-D_j9P0qR.js +264 -0
  547. package/dist/showcase/assets/dialog-BHymSzYi.js +1 -0
  548. package/dist/showcase/assets/dialog-CGr-za_Y.js +1 -0
  549. package/dist/showcase/assets/dialog-DeXQn0Lm.js +1 -0
  550. package/dist/showcase/assets/display-utilities-Y1wtHZNJ.js +4 -0
  551. package/dist/showcase/assets/display-utilities.examples-BMKQv0ep.js +309 -0
  552. package/dist/showcase/assets/dist-DfpWey5P.js +1 -0
  553. package/dist/showcase/assets/dist-DrnHE1zU.js +45 -0
  554. package/dist/showcase/assets/dollar-sign-DzPcAVIr.js +1 -0
  555. package/dist/showcase/assets/download-YQyeAxpe.js +1 -0
  556. package/dist/showcase/assets/dropdown-menu-DijrdxTg.js +1 -0
  557. package/dist/showcase/assets/dropzone-CJQVfB6l.js +1 -0
  558. package/dist/showcase/assets/earth-CzKdl3sr.js +1 -0
  559. package/dist/showcase/assets/ellipsis-Bm3jOBg8.js +1 -0
  560. package/dist/showcase/assets/ellipsis-vertical-BfYWo5Lf.js +1 -0
  561. package/dist/showcase/assets/empty-BdJ7O2MX.js +1 -0
  562. package/dist/showcase/assets/empty-item-BQdBtp6f.js +49 -0
  563. package/dist/showcase/assets/empty-state-62UU8y5C.js +1 -0
  564. package/dist/showcase/assets/empty-state-CCL_J3tY.js +190 -0
  565. package/dist/showcase/assets/enhanced-activities-CC1UzTfz.js +357 -0
  566. package/dist/showcase/assets/enhanced-combobox-B9cjPsF6.js +1 -0
  567. package/dist/showcase/assets/esm-B-fRlXh3.js +2 -0
  568. package/dist/showcase/assets/event-calendar-Bhwxq8YS.js +138 -0
  569. package/dist/showcase/assets/event-log-CnKaX_Qy.js +330 -0
  570. package/dist/showcase/assets/example-DDhaO2UY.js +1 -0
  571. package/dist/showcase/assets/external-link-CANOM2jg.js +1 -0
  572. package/dist/showcase/assets/eye-Bipckkwy.js +1 -0
  573. package/dist/showcase/assets/feature-announcement-lwmHkJsA.js +34 -0
  574. package/dist/showcase/assets/file-D3AT65yE.js +1 -0
  575. package/dist/showcase/assets/file-text-BzM5AARd.js +1 -0
  576. package/dist/showcase/assets/filter-layout-Dcg6Bnrn.js +1 -0
  577. package/dist/showcase/assets/filters-CqlLV9PM.js +139 -0
  578. package/dist/showcase/assets/fixtures-yK2xR5Qs.js +1 -0
  579. package/dist/showcase/assets/flag-DwDsuNoj.js +1 -0
  580. package/dist/showcase/assets/folder-open-CU6X87LZ.js +1 -0
  581. package/dist/showcase/assets/form-field-CpRcKtwS.js +1 -0
  582. package/dist/showcase/assets/form-sizing-Bv0A0Oi0.js +1 -0
  583. package/dist/showcase/assets/format-DmB3OvZa.js +1 -0
  584. package/dist/showcase/assets/forms-htLZTBP2.js +915 -0
  585. package/dist/showcase/assets/funnel-Dg-pRz2W.js +1 -0
  586. package/dist/showcase/assets/generic-C19aoW0F.js +1 -0
  587. package/dist/showcase/assets/getPseudoElementBounds-r_QLBIGn.js +1 -0
  588. package/dist/showcase/assets/gift-CpwvL7we.js +1 -0
  589. package/dist/showcase/assets/giftcard-cards-DHZQPc_n.js +85 -0
  590. package/dist/showcase/assets/git-branch-CZga8VLM.js +1 -0
  591. package/dist/showcase/assets/global-search-DqJo5jCc.js +1 -0
  592. package/dist/showcase/assets/global-search-_HODxZaU.js +215 -0
  593. package/dist/showcase/assets/globe-pWzZwcAv.js +1 -0
  594. package/dist/showcase/assets/gradient-card-D9fPawlx.js +58 -0
  595. package/dist/showcase/assets/grip-vertical-oqI1TI-N.js +1 -0
  596. package/dist/showcase/assets/hash-DQPCJKw8.js +1 -0
  597. package/dist/showcase/assets/header-DkCzYf6f.js +1 -0
  598. package/dist/showcase/assets/header-notifications-CPiuGNR5.js +1 -0
  599. package/dist/showcase/assets/heart-0z9BLROt.js +1 -0
  600. package/dist/showcase/assets/hooks-CXwg9TyF.js +220 -0
  601. package/dist/showcase/assets/house-Bg4YZsNF.js +1 -0
  602. package/dist/showcase/assets/icon-badge-CrSkFExw.js +1 -0
  603. package/dist/showcase/assets/icon-badge-D1fdev_s.js +37 -0
  604. package/dist/showcase/assets/icon-size-BHn0d6Zp.js +1 -0
  605. package/dist/showcase/assets/image-BXWnqpeJ.js +1 -0
  606. package/dist/showcase/assets/inbox-CObYzZZR.js +1 -0
  607. package/dist/showcase/assets/index-DBheiRxz.css +2 -0
  608. package/dist/showcase/assets/index-DSBghWdd.js +10 -0
  609. package/dist/showcase/assets/inertValue-DOcq7b5x.js +1 -0
  610. package/dist/showcase/assets/info-wAcLD6Uj.js +1 -0
  611. package/dist/showcase/assets/inline-stat-CufTTte_.js +1 -0
  612. package/dist/showcase/assets/inline-stat-D4GrY6tT.js +15 -0
  613. package/dist/showcase/assets/input-Bq9vs-9_.js +1 -0
  614. package/dist/showcase/assets/input-DsP89oH1.js +1 -0
  615. package/dist/showcase/assets/input-group-CCaNByLp.js +1 -0
  616. package/dist/showcase/assets/input-group-m-swxf-o.js +47 -0
  617. package/dist/showcase/assets/inputs-BSEM9vfa.js +155 -0
  618. package/dist/showcase/assets/installation-uRaDUCjH.js +134 -0
  619. package/dist/showcase/assets/invoice-header-D48jDTWC.js +36 -0
  620. package/dist/showcase/assets/invoice-items-jRLo8FHu.js +36 -0
  621. package/dist/showcase/assets/invoice-mini-DLS8PQrl.js +14 -0
  622. package/dist/showcase/assets/invoice-table-D4y33M95.js +30 -0
  623. package/dist/showcase/assets/isSameDay-Cn7Vlp79.js +1 -0
  624. package/dist/showcase/assets/isToday-B0jKMww1.js +1 -0
  625. package/dist/showcase/assets/italic-BHsKu0Gj.js +1 -0
  626. package/dist/showcase/assets/item-BLXAOZLR.js +1 -0
  627. package/dist/showcase/assets/item-C8eCX4DH.js +140 -0
  628. package/dist/showcase/assets/item-D5xwkRvf.js +1 -0
  629. package/dist/showcase/assets/kanban-ujfZHhvd.js +188 -0
  630. package/dist/showcase/assets/key-round-B_fKEPa6.js +1 -0
  631. package/dist/showcase/assets/label-NSapdBaB.js +1 -0
  632. package/dist/showcase/assets/languages-TkdVe7-2.js +1 -0
  633. package/dist/showcase/assets/layers-1IEBbvoc.js +1 -0
  634. package/dist/showcase/assets/layout-app-shell-D4PFTEsD.js +608 -0
  635. package/dist/showcase/assets/layout-auth-BTriDNME.js +790 -0
  636. package/dist/showcase/assets/layout-containers-CLJfaL-J.js +101 -0
  637. package/dist/showcase/assets/layout-header-CsNPnQde.js +203 -0
  638. package/dist/showcase/assets/layout-page-CSejcBCR.js +315 -0
  639. package/dist/showcase/assets/layout-primitives-D1MJs2E3.js +34 -0
  640. package/dist/showcase/assets/layout-sidebar-CO8Hdnoh.js +224 -0
  641. package/dist/showcase/assets/layout-users-BgrXF4nn.js +117 -0
  642. package/dist/showcase/assets/layout-workspace-DLg1f_o-.js +191 -0
  643. package/dist/showcase/assets/lib-B7vzArq-.js +1 -0
  644. package/dist/showcase/assets/list-checks-tsvYcEx2.js +1 -0
  645. package/dist/showcase/assets/lock-CPztxP5s.js +1 -0
  646. package/dist/showcase/assets/lock-keyhole-BHaFzps8.js +1 -0
  647. package/dist/showcase/assets/mail-DFoR3rHO.js +1 -0
  648. package/dist/showcase/assets/mail-check-QV1zqP5D.js +1 -0
  649. package/dist/showcase/assets/map-BOo4UMER.js +124 -0
  650. package/dist/showcase/assets/map-pin-CEcA7jdk.js +1 -0
  651. package/dist/showcase/assets/media-library-CKR3NF1Y.js +699 -0
  652. package/dist/showcase/assets/mention-inline-suggestions-Chbuzkb7.js +1 -0
  653. package/dist/showcase/assets/mentions-syVuen0M.js +138 -0
  654. package/dist/showcase/assets/menus-COIxEKPm.js +171 -0
  655. package/dist/showcase/assets/message-square-CYSVV7nZ.js +1 -0
  656. package/dist/showcase/assets/metadata-list-BHIfOKD6.js +1 -0
  657. package/dist/showcase/assets/metadata-list-DLI17y0k.js +286 -0
  658. package/dist/showcase/assets/metric-bar-OTyaeNJY.js +1 -0
  659. package/dist/showcase/assets/metric-grid-BcjDZqHZ.js +1 -0
  660. package/dist/showcase/assets/metric-opI4qu4r.js +1 -0
  661. package/dist/showcase/assets/metric-trend-chip-BvhqlY9f.js +1 -0
  662. package/dist/showcase/assets/metrics-analytics-bar-Z8xY1Gwq.js +44 -0
  663. package/dist/showcase/assets/metrics-analytics-cards-DfzbV-8j.js +50 -0
  664. package/dist/showcase/assets/metrics-comparison-C71X-WeV.js +76 -0
  665. package/dist/showcase/assets/metrics-heatmap-Cs1ixWQX.js +27 -0
  666. package/dist/showcase/assets/metrics-inline-badge-DP1guaTx.js +17 -0
  667. package/dist/showcase/assets/metrics-kpi-row-CVwHH3rN.js +31 -0
  668. package/dist/showcase/assets/metrics-micro-grid-CQGKibEU.js +42 -0
  669. package/dist/showcase/assets/metrics-overview-DPGjh2Gi.js +192 -0
  670. package/dist/showcase/assets/metrics-stat-cards-C3k7Uyt1.js +54 -0
  671. package/dist/showcase/assets/minus-BTHZFjKs.js +1 -0
  672. package/dist/showcase/assets/money-display-B8BodAKb.js +1 -0
  673. package/dist/showcase/assets/money-display-C7TuSgzA.js +3 -0
  674. package/dist/showcase/assets/month-year-picker-DQcCIbM9.js +1 -0
  675. package/dist/showcase/assets/navigation-BjYK7JTx.js +231 -0
  676. package/dist/showcase/assets/navigation-DkkHPGFq.js +90 -0
  677. package/dist/showcase/assets/navigation-extras-drFz7Xmf.js +43 -0
  678. package/dist/showcase/assets/notification-banner-CATA6COT.js +1 -0
  679. package/dist/showcase/assets/onboarding-checklist-CjGo74ic.js +119 -0
  680. package/dist/showcase/assets/overflow-tab-bar-BYRykiZn.js +1 -0
  681. package/dist/showcase/assets/overlays-BtfkqYL1.js +159 -0
  682. package/dist/showcase/assets/overlays-CzmrvPNh.js +408 -0
  683. package/dist/showcase/assets/overview-B5ckb1et.js +184 -0
  684. package/dist/showcase/assets/package-Db-MTVUx.js +1 -0
  685. package/dist/showcase/assets/package-check-UP9srP8w.js +1 -0
  686. package/dist/showcase/assets/page-BFvDdpX3.js +1 -0
  687. package/dist/showcase/assets/page-action-button-CROlcZJb.js +1 -0
  688. package/dist/showcase/assets/page-header-B8xYCCzF.js +1 -0
  689. package/dist/showcase/assets/pagination-B7j6cJXU.js +1 -0
  690. package/dist/showcase/assets/pagination-B8LN9MT7.js +42 -0
  691. package/dist/showcase/assets/paperclip-CAcGOT6G.js +1 -0
  692. package/dist/showcase/assets/password-input-DzO1QEsL.js +1 -0
  693. package/dist/showcase/assets/pencil-Db0qlNpO.js +1 -0
  694. package/dist/showcase/assets/phone-BHkprQ5O.js +1 -0
  695. package/dist/showcase/assets/placeholder-pattern-Ba0rjJa5.js +1 -0
  696. package/dist/showcase/assets/plus-CaAfJIjc.js +1 -0
  697. package/dist/showcase/assets/popover-BZsIv1AP.js +1 -0
  698. package/dist/showcase/assets/popover-DCfeA2ZY.js +1 -0
  699. package/dist/showcase/assets/popover-menu-kjcHCICE.js +1 -0
  700. package/dist/showcase/assets/product-empty-state-CSdeHHZT.js +1 -0
  701. package/dist/showcase/assets/product-option-action-menu-FvgEaWA7.js +1 -0
  702. package/dist/showcase/assets/product-rows-Cb8gLOeV.js +1 -0
  703. package/dist/showcase/assets/product-structure-card-CFqufBoJ.js +1 -0
  704. package/dist/showcase/assets/product-variant-action-menu-BvSn7PuK.js +1 -0
  705. package/dist/showcase/assets/products-D1aG4KFi.js +61 -0
  706. package/dist/showcase/assets/progress-2NWkkA6x.js +18 -0
  707. package/dist/showcase/assets/progress-DECH8qUu.js +1 -0
  708. package/dist/showcase/assets/progress-DHsjY-V1.js +1 -0
  709. package/dist/showcase/assets/props-table-CzpevabQ.js +1 -0
  710. package/dist/showcase/assets/props.generated-CXbCZMUk.json +42824 -0
  711. package/dist/showcase/assets/qr-code-DLeRQu83.js +1 -0
  712. package/dist/showcase/assets/quote-eFsPYmD1.js +1 -0
  713. package/dist/showcase/assets/receipt-V9T3dONa.js +1 -0
  714. package/dist/showcase/assets/receipt-text-866Msgc2.js +1 -0
  715. package/dist/showcase/assets/refinement-guide-BoerkamA.js +189 -0
  716. package/dist/showcase/assets/refresh-cw-Crg4uqw8.js +1 -0
  717. package/dist/showcase/assets/resolveValueLabel-D8poX7JF.js +1 -0
  718. package/dist/showcase/assets/resource-Ca8tGlsX.js +139 -0
  719. package/dist/showcase/assets/resource-aE-LkpW8.js +1 -0
  720. package/dist/showcase/assets/resource-selector-card-DzDG2Wl6.js +43 -0
  721. package/dist/showcase/assets/rich-text-editor-BCTbpMcY.js +143 -0
  722. package/dist/showcase/assets/rich-text-editor-CdklzzLj.js +124 -0
  723. package/dist/showcase/assets/rotate-ccw-CCPhnEPA.js +1 -0
  724. package/dist/showcase/assets/route-CODe9_7c.js +1 -0
  725. package/dist/showcase/assets/save-B_ze9MC9.js +1 -0
  726. package/dist/showcase/assets/schema-form-CEmpu59s.js +327 -0
  727. package/dist/showcase/assets/scroll-area-BM0asGLD.js +32 -0
  728. package/dist/showcase/assets/scroll-area-zRw8lSrA.js +1 -0
  729. package/dist/showcase/assets/section-DLqBJGPH.js +1 -0
  730. package/dist/showcase/assets/select-B0ivd5pJ.js +1 -0
  731. package/dist/showcase/assets/select-BrPUZL6Z.js +1 -0
  732. package/dist/showcase/assets/send-B4jTMdd9.js +1 -0
  733. package/dist/showcase/assets/separator-7f_tdxB3.js +28 -0
  734. package/dist/showcase/assets/separator-BvhVS5L0.js +1 -0
  735. package/dist/showcase/assets/separator-DeMF0eCd.js +1 -0
  736. package/dist/showcase/assets/separator-Dsqit2yw.js +1 -0
  737. package/dist/showcase/assets/settings-2-DnZeyxSR.js +1 -0
  738. package/dist/showcase/assets/settings-GFwewlvm.js +1 -0
  739. package/dist/showcase/assets/sheet-B06fRKgl.js +1 -0
  740. package/dist/showcase/assets/shield-NNzIJA-o.js +1 -0
  741. package/dist/showcase/assets/shield-alert-dlgSUsVl.js +1 -0
  742. package/dist/showcase/assets/shield-check-CkqmRaJd.js +1 -0
  743. package/dist/showcase/assets/shopping-bag-x4S32KGc.js +1 -0
  744. package/dist/showcase/assets/showcase-CiXeaTrT.js +132 -0
  745. package/dist/showcase/assets/sidebar-BDOvomlZ.js +1 -0
  746. package/dist/showcase/assets/sidebar.context-M_w0AsBU.js +1 -0
  747. package/dist/showcase/assets/skeleton-C0-TGyFP.js +29 -0
  748. package/dist/showcase/assets/skeleton-ClY9N5IF.js +1 -0
  749. package/dist/showcase/assets/skeleton-CyCX3AHa.js +1 -0
  750. package/dist/showcase/assets/skeleton-JapnB0xo.js +1 -0
  751. package/dist/showcase/assets/slider-BagnbSUE.js +1 -0
  752. package/dist/showcase/assets/smart-card-BA097ZGN.js +1 -0
  753. package/dist/showcase/assets/sonner-bg55zTHJ.js +22 -0
  754. package/dist/showcase/assets/sortable.esm-DCj5rKPd.js +5 -0
  755. package/dist/showcase/assets/sparkles-a2TsduRv.js +1 -0
  756. package/dist/showcase/assets/spinner-BRTHJLPS.js +49 -0
  757. package/dist/showcase/assets/spinner-RQ5TsGWE.js +30 -0
  758. package/dist/showcase/assets/spinner-yQrc4KLG.js +1 -0
  759. package/dist/showcase/assets/square-pen-wg5I0K5c.js +1 -0
  760. package/dist/showcase/assets/stacked-avatars-BGpGV4Is.js +1 -0
  761. package/dist/showcase/assets/star-Ccv6TKPm.js +1 -0
  762. package/dist/showcase/assets/startOfDay-BslQvd9l.js +1 -0
  763. package/dist/showcase/assets/styles-CMmKOMCT.js +1 -0
  764. package/dist/showcase/assets/suggestions--A7bRqHY.js +126 -0
  765. package/dist/showcase/assets/support-rail-b2WhhyFB.js +26 -0
  766. package/dist/showcase/assets/switch-Cv_v9byU.js +1 -0
  767. package/dist/showcase/assets/switch-DY-b3cEd.js +1 -0
  768. package/dist/showcase/assets/switch-card-C-Q3eon2.js +1 -0
  769. package/dist/showcase/assets/sync-BmH6kK2e.js +124 -0
  770. package/dist/showcase/assets/table-DAil3SVn.js +686 -0
  771. package/dist/showcase/assets/table-DNimuqS6.js +1 -0
  772. package/dist/showcase/assets/table-actions-Bgp9_jhZ.js +1 -0
  773. package/dist/showcase/assets/tabs-DN23r2we.js +1 -0
  774. package/dist/showcase/assets/tabs-RbFeMoGk.js +19 -0
  775. package/dist/showcase/assets/tags-input-Cp-ikGn_.js +1 -0
  776. package/dist/showcase/assets/text-button-CPxfmks9.js +1 -0
  777. package/dist/showcase/assets/text-link-BBHsgNSW.js +1 -0
  778. package/dist/showcase/assets/textarea-BGe_VCrI.js +1 -0
  779. package/dist/showcase/assets/textarea-DAV6cQCw.js +1 -0
  780. package/dist/showcase/assets/throttle-alert-B85zpgs4.js +1 -0
  781. package/dist/showcase/assets/timelines-BptCi-0C.js +200 -0
  782. package/dist/showcase/assets/toggle-group-B4tIG940.js +1 -0
  783. package/dist/showcase/assets/toggles-BSkNLAjb.js +71 -0
  784. package/dist/showcase/assets/toggles-group-CQIwVA__.js +32 -0
  785. package/dist/showcase/assets/tooltip-DN6bKPgk.js +31 -0
  786. package/dist/showcase/assets/trash-2-DZ5FSAFb.js +1 -0
  787. package/dist/showcase/assets/trending-up-DtSjt9AO.js +1 -0
  788. package/dist/showcase/assets/truck-B0QFWMMH.js +1 -0
  789. package/dist/showcase/assets/typography-8sXlmgaD.js +223 -0
  790. package/dist/showcase/assets/ui-badge-C4odkkUK.js +28 -0
  791. package/dist/showcase/assets/ui-card-CU1Ga8J6.js +30 -0
  792. package/dist/showcase/assets/ui-table-Bp-MkWh5.js +42 -0
  793. package/dist/showcase/assets/upload-tray-DT0HesKW.js +138 -0
  794. package/dist/showcase/assets/use-layout-link-BsJvjSZp.js +1 -0
  795. package/dist/showcase/assets/useAriaLabelledBy-Bl2oGr7T.js +1 -0
  796. package/dist/showcase/assets/useCollapsiblePanel-C8-r9Srt.js +1 -0
  797. package/dist/showcase/assets/useCompositeItem-DVZX40q_.js +1 -0
  798. package/dist/showcase/assets/useCompositeListItem-DWggcwRs.js +1 -0
  799. package/dist/showcase/assets/useLabelableId-Dx_-xVBr.js +1 -0
  800. package/dist/showcase/assets/useOpenInteractionType-CKNY2kPx.js +1 -0
  801. package/dist/showcase/assets/useRender-Bk8pPQUW.js +1 -0
  802. package/dist/showcase/assets/useTriggerFocusGuards-D74GGv1k.js +1 -0
  803. package/dist/showcase/assets/useValueChanged-BjYsvuOC.js +1 -0
  804. package/dist/showcase/assets/user-DlFWtE-h.js +1 -0
  805. package/dist/showcase/assets/user-plus-NGAALkPS.js +1 -0
  806. package/dist/showcase/assets/users-DYPDZwd6.js +1 -0
  807. package/dist/showcase/assets/variant-details-DtdWm8Bt.js +50 -0
  808. package/dist/showcase/assets/variant-management-Dk_P-wBF.js +209 -0
  809. package/dist/showcase/assets/vendor-profile-Bf1kKKdO.js +37 -0
  810. package/dist/showcase/assets/video-BObmzTOM.js +1 -0
  811. package/dist/showcase/assets/visually-hidden-rJ25V2wc.js +1 -0
  812. package/dist/showcase/assets/weight-input-DpQ3yEQ3.js +1 -0
  813. package/dist/showcase/assets/wrench-Df-eIMsM.js +1 -0
  814. package/dist/showcase/assets/x-DVQ0XpIT.js +1 -0
  815. package/dist/showcase/assets/zap-_0WPgXWT.js +1 -0
  816. package/dist/showcase/index.html +2 -2
  817. package/dist/style.css +1 -1
  818. package/package.json +1 -1
  819. package/src/css/tokens/components.css +17 -2
  820. package/src/css/tokens/foundation.css +4 -2
  821. package/dist/_shared/accordion-8B4OFqiT.cjs +0 -2
  822. package/dist/_shared/accordion-8B4OFqiT.cjs.map +0 -1
  823. package/dist/_shared/accordion-DlpTSZ3p.js +0 -135
  824. package/dist/_shared/accordion-DlpTSZ3p.js.map +0 -1
  825. package/dist/_shared/action-menu-BYrYdpkR.cjs +0 -2
  826. package/dist/_shared/action-menu-BYrYdpkR.cjs.map +0 -1
  827. package/dist/_shared/action-menu-CYwMZX-b.js +0 -96
  828. package/dist/_shared/action-menu-CYwMZX-b.js.map +0 -1
  829. package/dist/_shared/ai-artifact-Cv8VBibf.cjs +0 -3
  830. package/dist/_shared/ai-artifact-Cv8VBibf.cjs.map +0 -1
  831. package/dist/_shared/ai-artifact-DwfXQuh4.js +0 -1099
  832. package/dist/_shared/ai-artifact-DwfXQuh4.js.map +0 -1
  833. package/dist/_shared/auth-Cz5ci18c.cjs +0 -2
  834. package/dist/_shared/auth-Cz5ci18c.cjs.map +0 -1
  835. package/dist/_shared/auth-DDWsgFUL.js +0 -643
  836. package/dist/_shared/auth-DDWsgFUL.js.map +0 -1
  837. package/dist/_shared/badge-C65rt1M9.cjs +0 -2
  838. package/dist/_shared/badge-C65rt1M9.cjs.map +0 -1
  839. package/dist/_shared/badge-r8ae66Vd.js +0 -110
  840. package/dist/_shared/badge-r8ae66Vd.js.map +0 -1
  841. package/dist/_shared/breadcrumbs-CuT0YIfo.js +0 -105
  842. package/dist/_shared/breadcrumbs-CuT0YIfo.js.map +0 -1
  843. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs +0 -2
  844. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs.map +0 -1
  845. package/dist/_shared/button-Be2ayMxF.js +0 -192
  846. package/dist/_shared/button-Be2ayMxF.js.map +0 -1
  847. package/dist/_shared/button-CfQtOuBK.cjs +0 -2
  848. package/dist/_shared/button-CfQtOuBK.cjs.map +0 -1
  849. package/dist/_shared/buttons-DABiSx6N.cjs +0 -2
  850. package/dist/_shared/buttons-DABiSx6N.cjs.map +0 -1
  851. package/dist/_shared/buttons-DYQqQPpk.js +0 -137
  852. package/dist/_shared/buttons-DYQqQPpk.js.map +0 -1
  853. package/dist/_shared/card-radio-group-DKhZhBFV.cjs +0 -2
  854. package/dist/_shared/card-radio-group-DKhZhBFV.cjs.map +0 -1
  855. package/dist/_shared/card-radio-group-DRjmLN5s.js +0 -150
  856. package/dist/_shared/card-radio-group-DRjmLN5s.js.map +0 -1
  857. package/dist/_shared/cards-BJctT9KD.js +0 -428
  858. package/dist/_shared/cards-BJctT9KD.js.map +0 -1
  859. package/dist/_shared/cards-m03XN10f.cjs +0 -2
  860. package/dist/_shared/cards-m03XN10f.cjs.map +0 -1
  861. package/dist/_shared/combobox-BdBpeD3C.cjs +0 -2
  862. package/dist/_shared/combobox-BdBpeD3C.cjs.map +0 -1
  863. package/dist/_shared/combobox-D9tU_83-.js +0 -954
  864. package/dist/_shared/combobox-D9tU_83-.js.map +0 -1
  865. package/dist/_shared/command-BbJB0pjP.cjs +0 -2
  866. package/dist/_shared/command-BbJB0pjP.cjs.map +0 -1
  867. package/dist/_shared/command-IP2wy_HN.js +0 -39
  868. package/dist/_shared/command-IP2wy_HN.js.map +0 -1
  869. package/dist/_shared/comments-DAzpeuQq.cjs +0 -2
  870. package/dist/_shared/comments-DAzpeuQq.cjs.map +0 -1
  871. package/dist/_shared/comments-DzZaKP9x.js +0 -952
  872. package/dist/_shared/comments-DzZaKP9x.js.map +0 -1
  873. package/dist/_shared/containers-CB7zaAvN.cjs +0 -2
  874. package/dist/_shared/containers-CB7zaAvN.cjs.map +0 -1
  875. package/dist/_shared/containers-CLBmhGfs.js +0 -48
  876. package/dist/_shared/containers-CLBmhGfs.js.map +0 -1
  877. package/dist/_shared/copyable-BJYx2SlN.js +0 -38
  878. package/dist/_shared/copyable-BJYx2SlN.js.map +0 -1
  879. package/dist/_shared/copyable-DiDEjp8Z.cjs +0 -2
  880. package/dist/_shared/copyable-DiDEjp8Z.cjs.map +0 -1
  881. package/dist/_shared/data-display-DQUUEzCx.cjs +0 -2
  882. package/dist/_shared/data-display-DQUUEzCx.cjs.map +0 -1
  883. package/dist/_shared/data-display-LlvMEFTK.js +0 -1878
  884. package/dist/_shared/data-display-LlvMEFTK.js.map +0 -1
  885. package/dist/_shared/date-picker-CrC-lHyF.cjs +0 -2
  886. package/dist/_shared/date-picker-CrC-lHyF.cjs.map +0 -1
  887. package/dist/_shared/date-picker-DbYBek-b.js +0 -1361
  888. package/dist/_shared/date-picker-DbYBek-b.js.map +0 -1
  889. package/dist/_shared/date-pickers-9AU8YQK2.js +0 -329
  890. package/dist/_shared/date-pickers-9AU8YQK2.js.map +0 -1
  891. package/dist/_shared/date-pickers-DUEwCWig.cjs +0 -2
  892. package/dist/_shared/date-pickers-DUEwCWig.cjs.map +0 -1
  893. package/dist/_shared/display-BqoPOdof.cjs +0 -2
  894. package/dist/_shared/display-BqoPOdof.cjs.map +0 -1
  895. package/dist/_shared/display-CQoSwU74.js +0 -986
  896. package/dist/_shared/display-CQoSwU74.js.map +0 -1
  897. package/dist/_shared/dropdown-menu-CHQzQWUK.cjs +0 -2
  898. package/dist/_shared/dropdown-menu-CHQzQWUK.cjs.map +0 -1
  899. package/dist/_shared/dropdown-menu-CoWmrjYX.js +0 -147
  900. package/dist/_shared/dropdown-menu-CoWmrjYX.js.map +0 -1
  901. package/dist/_shared/form-sizing-DJus3nK3.cjs +0 -2
  902. package/dist/_shared/form-sizing-DJus3nK3.cjs.map +0 -1
  903. package/dist/_shared/form-sizing-DWjJsQSR.js +0 -42
  904. package/dist/_shared/form-sizing-DWjJsQSR.js.map +0 -1
  905. package/dist/_shared/forms-CNh-S9FK.cjs +0 -2
  906. package/dist/_shared/forms-CNh-S9FK.cjs.map +0 -1
  907. package/dist/_shared/forms-DIz3SCA9.js +0 -3534
  908. package/dist/_shared/forms-DIz3SCA9.js.map +0 -1
  909. package/dist/_shared/header-Bs61tQla.js +0 -447
  910. package/dist/_shared/header-Bs61tQla.js.map +0 -1
  911. package/dist/_shared/header-D01oOxna.cjs +0 -2
  912. package/dist/_shared/header-D01oOxna.cjs.map +0 -1
  913. package/dist/_shared/hooks-ACnpaIli.js +0 -95
  914. package/dist/_shared/hooks-ACnpaIli.js.map +0 -1
  915. package/dist/_shared/hooks-B7khuHkk.cjs +0 -2
  916. package/dist/_shared/hooks-B7khuHkk.cjs.map +0 -1
  917. package/dist/_shared/input-CzJzVyQ0.js +0 -182
  918. package/dist/_shared/input-CzJzVyQ0.js.map +0 -1
  919. package/dist/_shared/input-Dvvmn96E.cjs +0 -2
  920. package/dist/_shared/input-Dvvmn96E.cjs.map +0 -1
  921. package/dist/_shared/item-CVjjpHQd.js +0 -226
  922. package/dist/_shared/item-CVjjpHQd.js.map +0 -1
  923. package/dist/_shared/item-ChHblHhR.cjs +0 -2
  924. package/dist/_shared/item-ChHblHhR.cjs.map +0 -1
  925. package/dist/_shared/layout-CGi5w1mo.js +0 -268
  926. package/dist/_shared/layout-CGi5w1mo.js.map +0 -1
  927. package/dist/_shared/layout-ccVwjUG8.cjs +0 -2
  928. package/dist/_shared/layout-ccVwjUG8.cjs.map +0 -1
  929. package/dist/_shared/mentions-Cg_4vFxd.cjs +0 -2
  930. package/dist/_shared/mentions-Cg_4vFxd.cjs.map +0 -1
  931. package/dist/_shared/mentions-Ci9RFTfw.js +0 -506
  932. package/dist/_shared/mentions-Ci9RFTfw.js.map +0 -1
  933. package/dist/_shared/money-display-BFk9Gu21.cjs +0 -2
  934. package/dist/_shared/money-display-BFk9Gu21.cjs.map +0 -1
  935. package/dist/_shared/money-display-DpuLnsK2.js +0 -198
  936. package/dist/_shared/money-display-DpuLnsK2.js.map +0 -1
  937. package/dist/_shared/navigation-C1QN2-Vq.cjs +0 -2
  938. package/dist/_shared/navigation-C1QN2-Vq.cjs.map +0 -1
  939. package/dist/_shared/navigation-CMrLO8v5.js +0 -436
  940. package/dist/_shared/navigation-CMrLO8v5.js.map +0 -1
  941. package/dist/_shared/overlays-BJLczwpz.js +0 -735
  942. package/dist/_shared/overlays-BJLczwpz.js.map +0 -1
  943. package/dist/_shared/overlays-DbaPLT67.cjs +0 -2
  944. package/dist/_shared/overlays-DbaPLT67.cjs.map +0 -1
  945. package/dist/_shared/popover-menu-D_t6rCvN.cjs +0 -2
  946. package/dist/_shared/popover-menu-D_t6rCvN.cjs.map +0 -1
  947. package/dist/_shared/popover-menu-f2O6R_27.js +0 -93
  948. package/dist/_shared/popover-menu-f2O6R_27.js.map +0 -1
  949. package/dist/_shared/rich-text-editor-DmZHbsms.js +0 -620
  950. package/dist/_shared/rich-text-editor-DmZHbsms.js.map +0 -1
  951. package/dist/_shared/rich-text-editor-DqUU-H7i.cjs +0 -2
  952. package/dist/_shared/rich-text-editor-DqUU-H7i.cjs.map +0 -1
  953. package/dist/_shared/settings-CgtcSI8L.js +0 -143
  954. package/dist/_shared/settings-CgtcSI8L.js.map +0 -1
  955. package/dist/_shared/settings-csNmeT7b.cjs +0 -2
  956. package/dist/_shared/settings-csNmeT7b.cjs.map +0 -1
  957. package/dist/_shared/sidebar-DyGIcJd9.cjs +0 -2
  958. package/dist/_shared/sidebar-DyGIcJd9.cjs.map +0 -1
  959. package/dist/_shared/sidebar-OT-xIguQ.js +0 -548
  960. package/dist/_shared/sidebar-OT-xIguQ.js.map +0 -1
  961. package/dist/_shared/skeleton-DwF5VdMh.cjs +0 -2
  962. package/dist/_shared/skeleton-DwF5VdMh.cjs.map +0 -1
  963. package/dist/_shared/skeleton-yUXqeWzB.js +0 -256
  964. package/dist/_shared/skeleton-yUXqeWzB.js.map +0 -1
  965. package/dist/_shared/spinner-BDrUzfTo.cjs +0 -2
  966. package/dist/_shared/spinner-BDrUzfTo.cjs.map +0 -1
  967. package/dist/_shared/spinner-CuVZhJhN.js +0 -67
  968. package/dist/_shared/spinner-CuVZhJhN.js.map +0 -1
  969. package/dist/_shared/table-BVWemr79.cjs +0 -2
  970. package/dist/_shared/table-BVWemr79.cjs.map +0 -1
  971. package/dist/_shared/table-WYSjfQRr.js +0 -1377
  972. package/dist/_shared/table-WYSjfQRr.js.map +0 -1
  973. package/dist/_shared/textarea-C0iZwWdD.js +0 -118
  974. package/dist/_shared/textarea-C0iZwWdD.js.map +0 -1
  975. package/dist/_shared/textarea-bHFAtwYd.cjs +0 -2
  976. package/dist/_shared/textarea-bHFAtwYd.cjs.map +0 -1
  977. package/dist/_shared/typography-5bLhAYaK.js +0 -201
  978. package/dist/_shared/typography-5bLhAYaK.js.map +0 -1
  979. package/dist/_shared/typography-CWEobAJV.cjs +0 -2
  980. package/dist/_shared/typography-CWEobAJV.cjs.map +0 -1
  981. package/dist/_shared/workspace-BkwsqTrc.cjs +0 -2
  982. package/dist/_shared/workspace-BkwsqTrc.cjs.map +0 -1
  983. package/dist/_shared/workspace-DpU1YG1t.js +0 -357
  984. package/dist/_shared/workspace-DpU1YG1t.js.map +0 -1
  985. package/dist/showcase/assets/AreaChart-DxDBymDt.js +0 -6
  986. package/dist/showcase/assets/CompositeItem-owAA4Ah3.js +0 -1
  987. package/dist/showcase/assets/CompositeRoot-DzHTtLBs.js +0 -1
  988. package/dist/showcase/assets/DialogTrigger-OUBMI353.js +0 -1
  989. package/dist/showcase/assets/LabelableContext-Cd9Gf7TR.js +0 -1
  990. package/dist/showcase/assets/PreviewLayout-X_NxjYOV.js +0 -1
  991. package/dist/showcase/assets/RadioGroup-BzveyiIV.js +0 -1
  992. package/dist/showcase/assets/ScrollAreaCorner-IZFF348L.js +0 -1
  993. package/dist/showcase/assets/Separator-CSYYEo-X.js +0 -1
  994. package/dist/showcase/assets/ToolbarRootContext-BYSKM0e8.js +0 -1
  995. package/dist/showcase/assets/accordion-B9VkLXiy.js +0 -171
  996. package/dist/showcase/assets/accordion-variants-g7lk5hEX.js +0 -1
  997. package/dist/showcase/assets/action-menu-CWIvuiLO.js +0 -1
  998. package/dist/showcase/assets/actions-BuwzXYEF.js +0 -310
  999. package/dist/showcase/assets/activities-BTBlr1G4.js +0 -500
  1000. package/dist/showcase/assets/activities-feed-card-C5lcwUFk.js +0 -1
  1001. package/dist/showcase/assets/admin-kbK6nUjx.js +0 -140
  1002. package/dist/showcase/assets/ai-CKu9EGmA.js +0 -207
  1003. package/dist/showcase/assets/ai-artifact-Bg1MFGeF.js +0 -2
  1004. package/dist/showcase/assets/ai-chat-DEntRhJD.js +0 -568
  1005. package/dist/showcase/assets/ai-elements-DyKRCWiS.js +0 -387
  1006. package/dist/showcase/assets/ai-tool-call-DFrTelEX.js +0 -1
  1007. package/dist/showcase/assets/alert-C0wSpBYn.js +0 -93
  1008. package/dist/showcase/assets/alert-CZ4rgwPr.js +0 -62
  1009. package/dist/showcase/assets/alert-WTKIdE4s.js +0 -1
  1010. package/dist/showcase/assets/api-key-list-BnrUT9Uf.js +0 -1
  1011. package/dist/showcase/assets/api-key-list-bQ6QzFhA.js +0 -73
  1012. package/dist/showcase/assets/app-sidebar-B3veRbac.js +0 -1
  1013. package/dist/showcase/assets/arrow-down-CEXJx115.js +0 -1
  1014. package/dist/showcase/assets/arrow-left-Ca6ri5q0.js +0 -1
  1015. package/dist/showcase/assets/arrow-right-a3STqWgx.js +0 -1
  1016. package/dist/showcase/assets/arrow-up-CCU1MaGq.js +0 -1
  1017. package/dist/showcase/assets/arrow-up-right-BDImqvM2.js +0 -1
  1018. package/dist/showcase/assets/avatar-Bwgai0SK.js +0 -67
  1019. package/dist/showcase/assets/avatar-DSmL52Us.js +0 -57
  1020. package/dist/showcase/assets/avatar-kK9n1a25.js +0 -1
  1021. package/dist/showcase/assets/avatar-nb7MgV_x.js +0 -1
  1022. package/dist/showcase/assets/badge-CTGPRSXm.js +0 -31
  1023. package/dist/showcase/assets/badge-check-zqoYYrVj.js +0 -1
  1024. package/dist/showcase/assets/bell-D7HWGStL.js +0 -1
  1025. package/dist/showcase/assets/boolean-indicator-CqwlV0cf.js +0 -1
  1026. package/dist/showcase/assets/bot-Owx4SMiU.js +0 -1
  1027. package/dist/showcase/assets/box-BeeoLlMd.js +0 -1
  1028. package/dist/showcase/assets/braces-fzrExVIx.js +0 -1
  1029. package/dist/showcase/assets/brain-Da2fsBjd.js +0 -1
  1030. package/dist/showcase/assets/brand-Bo6uwdGf.js +0 -36
  1031. package/dist/showcase/assets/breadcrumb-B-K-6dtd.js +0 -1
  1032. package/dist/showcase/assets/breadcrumb-B6lR9Cq2.js +0 -52
  1033. package/dist/showcase/assets/breadcrumbs-Bamog6P5.js +0 -1
  1034. package/dist/showcase/assets/briefcase-DQjbh28E.js +0 -1
  1035. package/dist/showcase/assets/building-2-DaQW5yJa.js +0 -1
  1036. package/dist/showcase/assets/button-D3skvyQS.js +0 -44
  1037. package/dist/showcase/assets/button-group-BYtbrhme.js +0 -1
  1038. package/dist/showcase/assets/buttons-B3IkMmNQ.js +0 -272
  1039. package/dist/showcase/assets/calendar-C4fCDK3O.js +0 -1
  1040. package/dist/showcase/assets/calendar-CcwkVxCK.js +0 -16
  1041. package/dist/showcase/assets/calendar-DBkwxV9H.js +0 -1
  1042. package/dist/showcase/assets/calendar-days-BWed1W3Z.js +0 -1
  1043. package/dist/showcase/assets/camera-BUoAyoZT.js +0 -1
  1044. package/dist/showcase/assets/card-7DBPqWuv.js +0 -1
  1045. package/dist/showcase/assets/card-ClwyNDHJ.js +0 -188
  1046. package/dist/showcase/assets/card-primitives-BE1YpEQW.js +0 -1
  1047. package/dist/showcase/assets/card-radio-group-1NMbocuG.js +0 -1
  1048. package/dist/showcase/assets/cards-Bu8uaGSU.js +0 -354
  1049. package/dist/showcase/assets/carousel-dTTRRSQg.js +0 -449
  1050. package/dist/showcase/assets/cell-renderers-CcyBuUsC.js +0 -1
  1051. package/dist/showcase/assets/chart-BSboeIO6.js +0 -358
  1052. package/dist/showcase/assets/chart-column-CCzA6B9l.js +0 -1
  1053. package/dist/showcase/assets/checkbox-CSdEPNT5.js +0 -1
  1054. package/dist/showcase/assets/checkbox-CqNLi9Q3.js +0 -1
  1055. package/dist/showcase/assets/chevron-down-C91gNQdT.js +0 -1
  1056. package/dist/showcase/assets/chevron-left-SiAoYFSo.js +0 -1
  1057. package/dist/showcase/assets/chevron-up-Beb1_ET_.js +0 -1
  1058. package/dist/showcase/assets/chevrons-up-down-DaST4VKL.js +0 -1
  1059. package/dist/showcase/assets/circle-D9KiRp8C.js +0 -1
  1060. package/dist/showcase/assets/circle-alert-BQkAwFkl.js +0 -1
  1061. package/dist/showcase/assets/circle-check-big-CN5YOJqq.js +0 -1
  1062. package/dist/showcase/assets/circle-check-dqmKTiDe.js +0 -1
  1063. package/dist/showcase/assets/circle-dot-B7LPN_0V.js +0 -1
  1064. package/dist/showcase/assets/circle-question-mark-yTRkQO3d.js +0 -1
  1065. package/dist/showcase/assets/circle-x-CW2dFcX-.js +0 -1
  1066. package/dist/showcase/assets/clock-3-CXJ_JotW.js +0 -1
  1067. package/dist/showcase/assets/clock-DUqvfazQ.js +0 -1
  1068. package/dist/showcase/assets/code-xml-BmdQDeID.js +0 -1
  1069. package/dist/showcase/assets/collapsible-C-WYhJxn.js +0 -1
  1070. package/dist/showcase/assets/collapsible-CL37AlCX.js +0 -27
  1071. package/dist/showcase/assets/collapsible-uGO5Rj8q.js +0 -1
  1072. package/dist/showcase/assets/combobox-CFh5kUzj.js +0 -685
  1073. package/dist/showcase/assets/command-CtpLaHjh.js +0 -1
  1074. package/dist/showcase/assets/command-DSlK-QAE.js +0 -1
  1075. package/dist/showcase/assets/comment-composer-Rr_a5tZQ.js +0 -1
  1076. package/dist/showcase/assets/comment-item-Dme2o2KI.js +0 -1
  1077. package/dist/showcase/assets/comments-CW2nz465.js +0 -357
  1078. package/dist/showcase/assets/commerce-bwcq6oPn.js +0 -267
  1079. package/dist/showcase/assets/composite-DMIR0vmP.js +0 -1
  1080. package/dist/showcase/assets/conditional-rendering-Bk6AC76c.js +0 -1
  1081. package/dist/showcase/assets/contact-card-BCXS9tWq.js +0 -65
  1082. package/dist/showcase/assets/content-container-b1dC2caJ.js +0 -1
  1083. package/dist/showcase/assets/copyable-BIABx-Vv.js +0 -96
  1084. package/dist/showcase/assets/copyable-Ic9wzVaj.js +0 -1
  1085. package/dist/showcase/assets/course-card-Bo5P3TYv.js +0 -77
  1086. package/dist/showcase/assets/cpu-_VqU6yRO.js +0 -1
  1087. package/dist/showcase/assets/credit-card-BbxO8xLo.js +0 -1
  1088. package/dist/showcase/assets/css-variables-zqpBgnS1.js +0 -1205
  1089. package/dist/showcase/assets/currency-Cjvt4F0b.js +0 -149
  1090. package/dist/showcase/assets/dark-surfaces-CLwERt1f.js +0 -90
  1091. package/dist/showcase/assets/data-view-AtyUp7b-.js +0 -124
  1092. package/dist/showcase/assets/data-view-cnEmgP1C.js +0 -4
  1093. package/dist/showcase/assets/database-TbVXEw7v.js +0 -1
  1094. package/dist/showcase/assets/date-block-CDHemKnP.js +0 -1
  1095. package/dist/showcase/assets/date-block-COb89Y_-.js +0 -1
  1096. package/dist/showcase/assets/date-picker-CK8llBIN.js +0 -1
  1097. package/dist/showcase/assets/date-pickers-DFfDnW9w.js +0 -73
  1098. package/dist/showcase/assets/dense-info-CaFVDE90.js +0 -106
  1099. package/dist/showcase/assets/design-system-consistency-CeSMuTuu.js +0 -264
  1100. package/dist/showcase/assets/dialog-CRQNEK2K.js +0 -1
  1101. package/dist/showcase/assets/dialog-CsCLDb0G.js +0 -1
  1102. package/dist/showcase/assets/dialog-Qh3EHEKq.js +0 -1
  1103. package/dist/showcase/assets/display-utilities-rP3hb4FK.js +0 -4
  1104. package/dist/showcase/assets/display-utilities.examples-BwbvHOcx.js +0 -309
  1105. package/dist/showcase/assets/dist-CbqRct9s.js +0 -1
  1106. package/dist/showcase/assets/dist-iivamCjp.js +0 -45
  1107. package/dist/showcase/assets/dollar-sign-COaRmdJE.js +0 -1
  1108. package/dist/showcase/assets/download-yCcb4rfH.js +0 -1
  1109. package/dist/showcase/assets/dropdown-menu-KoFNw-fX.js +0 -1
  1110. package/dist/showcase/assets/dropzone-DLguWnmu.js +0 -1
  1111. package/dist/showcase/assets/earth-TDRqTA4S.js +0 -1
  1112. package/dist/showcase/assets/ellipsis-Q_fBbRE9.js +0 -1
  1113. package/dist/showcase/assets/ellipsis-vertical-Bh8t3Z1g.js +0 -1
  1114. package/dist/showcase/assets/empty-DvmDTSAj.js +0 -1
  1115. package/dist/showcase/assets/empty-item-C3HP5nuw.js +0 -49
  1116. package/dist/showcase/assets/empty-state-Dcin4cOt.js +0 -190
  1117. package/dist/showcase/assets/empty-state-IV_GTNEI.js +0 -1
  1118. package/dist/showcase/assets/enhanced-activities-BLf2gpes.js +0 -357
  1119. package/dist/showcase/assets/enhanced-combobox-ClZcVnhv.js +0 -1
  1120. package/dist/showcase/assets/esm-Cf6QQstQ.js +0 -2
  1121. package/dist/showcase/assets/event-calendar-zrfI_3AM.js +0 -138
  1122. package/dist/showcase/assets/event-log-D-_CViAw.js +0 -330
  1123. package/dist/showcase/assets/example-6bZGEb3-.js +0 -1
  1124. package/dist/showcase/assets/external-link-7ldgjHZM.js +0 -1
  1125. package/dist/showcase/assets/eye-pXVkim6z.js +0 -1
  1126. package/dist/showcase/assets/feature-announcement-CFcGj3ge.js +0 -34
  1127. package/dist/showcase/assets/file-Bn9sAGaT.js +0 -1
  1128. package/dist/showcase/assets/file-text-Cvxg6pjh.js +0 -1
  1129. package/dist/showcase/assets/filter-layout-DqNRRzDU.js +0 -1
  1130. package/dist/showcase/assets/filters-CQMI_T63.js +0 -139
  1131. package/dist/showcase/assets/flag-vI_WJ-BU.js +0 -1
  1132. package/dist/showcase/assets/folder-open-0AyKSRQS.js +0 -1
  1133. package/dist/showcase/assets/form-field-BaBeXn7a.js +0 -1
  1134. package/dist/showcase/assets/form-sizing-Dltt6Fj-.js +0 -1
  1135. package/dist/showcase/assets/format-DLLMyN-3.js +0 -1
  1136. package/dist/showcase/assets/forms-gPD-Caru.js +0 -915
  1137. package/dist/showcase/assets/funnel-Ca9nWMHm.js +0 -1
  1138. package/dist/showcase/assets/generic-AAssz0h7.js +0 -1
  1139. package/dist/showcase/assets/getPseudoElementBounds-fbxSMOsb.js +0 -1
  1140. package/dist/showcase/assets/gift-BC42Oxfz.js +0 -1
  1141. package/dist/showcase/assets/giftcard-cards-CFKnYe0c.js +0 -85
  1142. package/dist/showcase/assets/git-branch-B-nF8w-J.js +0 -1
  1143. package/dist/showcase/assets/global-search-D6Gxw0G3.js +0 -1
  1144. package/dist/showcase/assets/global-search-jsb_4idg.js +0 -215
  1145. package/dist/showcase/assets/globe-C92uBSrO.js +0 -1
  1146. package/dist/showcase/assets/gradient-card-D4ly60sD.js +0 -58
  1147. package/dist/showcase/assets/hash-BShTbxlR.js +0 -1
  1148. package/dist/showcase/assets/header-CSiNqg9Q.js +0 -1
  1149. package/dist/showcase/assets/header-notifications-CpHeFPQF.js +0 -1
  1150. package/dist/showcase/assets/heart-B3hXs7fr.js +0 -1
  1151. package/dist/showcase/assets/hooks-CamAqFFh.js +0 -220
  1152. package/dist/showcase/assets/house-4_CouE-Y.js +0 -1
  1153. package/dist/showcase/assets/icon-badge-CePIZqWR.js +0 -1
  1154. package/dist/showcase/assets/icon-badge-DSbvvnxh.js +0 -37
  1155. package/dist/showcase/assets/image-BxbFIbVJ.js +0 -1
  1156. package/dist/showcase/assets/inbox-BXab1SM6.js +0 -1
  1157. package/dist/showcase/assets/index-BPUtPJjB.css +0 -2
  1158. package/dist/showcase/assets/index-BjjNfnhP.js +0 -10
  1159. package/dist/showcase/assets/inertValue-CZOzgsmF.js +0 -1
  1160. package/dist/showcase/assets/info-DzqwCq93.js +0 -1
  1161. package/dist/showcase/assets/inline-stat-D5ybpUh-.js +0 -15
  1162. package/dist/showcase/assets/inline-stat-Dq34wv-6.js +0 -1
  1163. package/dist/showcase/assets/input-C8OfUHCK.js +0 -1
  1164. package/dist/showcase/assets/input-D34Ge3rh.js +0 -1
  1165. package/dist/showcase/assets/input-group-BCPZ6Pwq.js +0 -1
  1166. package/dist/showcase/assets/input-group-CySTANka.js +0 -47
  1167. package/dist/showcase/assets/inputs-CnmHo_lj.js +0 -155
  1168. package/dist/showcase/assets/installation-BPvseS46.js +0 -134
  1169. package/dist/showcase/assets/invoice-header-C9JjJWQX.js +0 -36
  1170. package/dist/showcase/assets/invoice-items-DB8tbCv9.js +0 -36
  1171. package/dist/showcase/assets/invoice-mini-Q_PnimKL.js +0 -14
  1172. package/dist/showcase/assets/invoice-table-CLDvpLib.js +0 -30
  1173. package/dist/showcase/assets/isSameDay-D8bDebyL.js +0 -1
  1174. package/dist/showcase/assets/isToday-XVjRuMtp.js +0 -1
  1175. package/dist/showcase/assets/italic-Cm13b8qb.js +0 -1
  1176. package/dist/showcase/assets/item-C07859JQ.js +0 -1
  1177. package/dist/showcase/assets/item-LinnMxvu.js +0 -1
  1178. package/dist/showcase/assets/item-i7ZUMs5t.js +0 -140
  1179. package/dist/showcase/assets/kanban-CIMTpuN5.js +0 -188
  1180. package/dist/showcase/assets/key-round-Bh7EzOyR.js +0 -1
  1181. package/dist/showcase/assets/label-C3A4CjeG.js +0 -1
  1182. package/dist/showcase/assets/languages-C37jhetw.js +0 -1
  1183. package/dist/showcase/assets/layers-Lyr6p-Nt.js +0 -1
  1184. package/dist/showcase/assets/layout-app-shell-BWAkl9gq.js +0 -608
  1185. package/dist/showcase/assets/layout-auth-y1alnhc8.js +0 -790
  1186. package/dist/showcase/assets/layout-containers-B6c-uvil.js +0 -101
  1187. package/dist/showcase/assets/layout-header-DNhJHWNw.js +0 -203
  1188. package/dist/showcase/assets/layout-page-CXU7CnQK.js +0 -315
  1189. package/dist/showcase/assets/layout-primitives-StuFwfwh.js +0 -34
  1190. package/dist/showcase/assets/layout-sidebar-D-QjnZPh.js +0 -224
  1191. package/dist/showcase/assets/layout-users-D7KMzs3-.js +0 -117
  1192. package/dist/showcase/assets/layout-workspace-Butr7CL5.js +0 -191
  1193. package/dist/showcase/assets/lib-D5nOMXIt.js +0 -1
  1194. package/dist/showcase/assets/list-checks-Cg9HZf4W.js +0 -1
  1195. package/dist/showcase/assets/lock-Da21HhQx.js +0 -1
  1196. package/dist/showcase/assets/lock-keyhole-DNTfa9e3.js +0 -1
  1197. package/dist/showcase/assets/mail-Bamky-ti.js +0 -1
  1198. package/dist/showcase/assets/mail-check-BfVYPC42.js +0 -1
  1199. package/dist/showcase/assets/map-BTlWnRAQ.js +0 -124
  1200. package/dist/showcase/assets/map-pin-BU2RBuvC.js +0 -1
  1201. package/dist/showcase/assets/media-library-DJxgoGAF.js +0 -699
  1202. package/dist/showcase/assets/mention-inline-suggestions-CbXVAvbK.js +0 -1
  1203. package/dist/showcase/assets/mentions-kMT-Z3qU.js +0 -138
  1204. package/dist/showcase/assets/menus-bhp_n9PT.js +0 -171
  1205. package/dist/showcase/assets/message-square-DC5Bb9Zs.js +0 -1
  1206. package/dist/showcase/assets/metadata-list-DGr729EW.js +0 -286
  1207. package/dist/showcase/assets/metadata-list-DyjhZi6d.js +0 -1
  1208. package/dist/showcase/assets/metric-DRDok6Ci.js +0 -1
  1209. package/dist/showcase/assets/metric-bar-DZsH4Q3U.js +0 -1
  1210. package/dist/showcase/assets/metric-grid-BlFXTrid.js +0 -1
  1211. package/dist/showcase/assets/metric-trend-chip-oEihbEK8.js +0 -1
  1212. package/dist/showcase/assets/metrics-analytics-bar-BovaXHQX.js +0 -44
  1213. package/dist/showcase/assets/metrics-analytics-cards-CeX9Skmd.js +0 -50
  1214. package/dist/showcase/assets/metrics-comparison-DFPSmREl.js +0 -76
  1215. package/dist/showcase/assets/metrics-heatmap-CXzfZwe_.js +0 -27
  1216. package/dist/showcase/assets/metrics-inline-badge-DQJaNpYH.js +0 -17
  1217. package/dist/showcase/assets/metrics-kpi-row-BIpv8CPU.js +0 -31
  1218. package/dist/showcase/assets/metrics-micro-grid-EOCkRI5Z.js +0 -42
  1219. package/dist/showcase/assets/metrics-overview-BD4s9H2T.js +0 -192
  1220. package/dist/showcase/assets/metrics-stat-cards-t7asN5nA.js +0 -54
  1221. package/dist/showcase/assets/minus-Dr1iTc_q.js +0 -1
  1222. package/dist/showcase/assets/money-display-B5_VqQC0.js +0 -1
  1223. package/dist/showcase/assets/money-display-bU2_cVGX.js +0 -1
  1224. package/dist/showcase/assets/month-year-picker-DVRuYbLm.js +0 -1
  1225. package/dist/showcase/assets/navigation-DBKvJoe-.js +0 -231
  1226. package/dist/showcase/assets/navigation-DOhfmtgy.js +0 -90
  1227. package/dist/showcase/assets/navigation-extras-BkO2TZP7.js +0 -43
  1228. package/dist/showcase/assets/notification-banner-CE1Ei_ZT.js +0 -1
  1229. package/dist/showcase/assets/onboarding-checklist-Bf0aoBoa.js +0 -119
  1230. package/dist/showcase/assets/overflow-tab-bar-B2RXtyMP.js +0 -1
  1231. package/dist/showcase/assets/overlays-4E_sUgkz.js +0 -408
  1232. package/dist/showcase/assets/overlays-ulNl-Vhr.js +0 -159
  1233. package/dist/showcase/assets/overview-CgymfIBq.js +0 -184
  1234. package/dist/showcase/assets/package-CADuUP1u.js +0 -1
  1235. package/dist/showcase/assets/package-check-O7MD6XE_.js +0 -1
  1236. package/dist/showcase/assets/page-GB6OIgID.js +0 -1
  1237. package/dist/showcase/assets/page-action-button-Dpprot7y.js +0 -1
  1238. package/dist/showcase/assets/page-header-2VEUPx67.js +0 -1
  1239. package/dist/showcase/assets/pagination-BBuRtAX9.js +0 -1
  1240. package/dist/showcase/assets/pagination-C4mt4Q4l.js +0 -42
  1241. package/dist/showcase/assets/paperclip-Cmyh3Bhf.js +0 -1
  1242. package/dist/showcase/assets/password-input-CgZj1niQ.js +0 -1
  1243. package/dist/showcase/assets/pencil-CtdXjogr.js +0 -1
  1244. package/dist/showcase/assets/phone-CAFMH1vV.js +0 -1
  1245. package/dist/showcase/assets/placeholder-pattern-DHKm-uYV.js +0 -1
  1246. package/dist/showcase/assets/plus-CN2dzUxL.js +0 -1
  1247. package/dist/showcase/assets/popover-DILNXLWy.js +0 -1
  1248. package/dist/showcase/assets/popover-menu-Bp08xxOf.js +0 -1
  1249. package/dist/showcase/assets/popover-o1EO2yVS.js +0 -1
  1250. package/dist/showcase/assets/products-CCLAbHBN.js +0 -423
  1251. package/dist/showcase/assets/progress-BGna-ZmU.js +0 -18
  1252. package/dist/showcase/assets/progress-BSYlNLIJ.js +0 -1
  1253. package/dist/showcase/assets/progress-CZVy3LGB.js +0 -1
  1254. package/dist/showcase/assets/props-table-X9St7Q4m.js +0 -1
  1255. package/dist/showcase/assets/props.generated-f_jHBhPb.json +0 -41753
  1256. package/dist/showcase/assets/qr-code-CEmKf9xU.js +0 -1
  1257. package/dist/showcase/assets/quote-IH6r-rlY.js +0 -1
  1258. package/dist/showcase/assets/receipt-m9rOe5lY.js +0 -1
  1259. package/dist/showcase/assets/receipt-text-C0TobatH.js +0 -1
  1260. package/dist/showcase/assets/refinement-guide-t9T7iAS2.js +0 -189
  1261. package/dist/showcase/assets/refresh-cw-Dy_Nc4jA.js +0 -1
  1262. package/dist/showcase/assets/resolveValueLabel-DR7LgQP5.js +0 -1
  1263. package/dist/showcase/assets/resource-BcJ8O6uj.js +0 -1
  1264. package/dist/showcase/assets/resource-_zDXez77.js +0 -139
  1265. package/dist/showcase/assets/resource-selector-card-CCAEF-AT.js +0 -43
  1266. package/dist/showcase/assets/rich-text-editor-BJG_ECJp.js +0 -143
  1267. package/dist/showcase/assets/rich-text-editor-fbgVfyEH.js +0 -124
  1268. package/dist/showcase/assets/rotate-ccw-CGuTkHQ3.js +0 -1
  1269. package/dist/showcase/assets/route-C7EZ2Njy.js +0 -1
  1270. package/dist/showcase/assets/save-fKrt-yFG.js +0 -1
  1271. package/dist/showcase/assets/schema-form-k7TXeirD.js +0 -327
  1272. package/dist/showcase/assets/scroll-area-CqNwdlI6.js +0 -32
  1273. package/dist/showcase/assets/scroll-area-UVtlGOgx.js +0 -1
  1274. package/dist/showcase/assets/section-DuBNJP4P.js +0 -1
  1275. package/dist/showcase/assets/select-CINVEIWn.js +0 -1
  1276. package/dist/showcase/assets/select-ZLaamXrm.js +0 -1
  1277. package/dist/showcase/assets/send-DBvt_4jT.js +0 -1
  1278. package/dist/showcase/assets/separator-BdBXRpc3.js +0 -28
  1279. package/dist/showcase/assets/separator-CkJjJQWW.js +0 -1
  1280. package/dist/showcase/assets/separator-CxOeStjL.js +0 -1
  1281. package/dist/showcase/assets/separator-O-VQMSf_.js +0 -1
  1282. package/dist/showcase/assets/settings-2-BWjMVlyS.js +0 -1
  1283. package/dist/showcase/assets/settings-D9Z79UcG.js +0 -1
  1284. package/dist/showcase/assets/sheet-CK9C6r7_.js +0 -1
  1285. package/dist/showcase/assets/shield-BboB3Zlo.js +0 -1
  1286. package/dist/showcase/assets/shield-alert-CAAobStl.js +0 -1
  1287. package/dist/showcase/assets/shield-check-Rfyzz9bK.js +0 -1
  1288. package/dist/showcase/assets/shopping-bag-5hLD82YW.js +0 -1
  1289. package/dist/showcase/assets/showcase-DhOQXB5E.js +0 -132
  1290. package/dist/showcase/assets/sidebar-ZTUACc0t.js +0 -1
  1291. package/dist/showcase/assets/sidebar.context-BiNOpG5W.js +0 -1
  1292. package/dist/showcase/assets/skeleton-BZUSoHbk.js +0 -1
  1293. package/dist/showcase/assets/skeleton-BZkYzAdq.js +0 -1
  1294. package/dist/showcase/assets/skeleton-CrOp8tx3.js +0 -29
  1295. package/dist/showcase/assets/skeleton-P5GXAj4U.js +0 -1
  1296. package/dist/showcase/assets/slider-zlE7nLrp.js +0 -1
  1297. package/dist/showcase/assets/smart-card-OExZHSsj.js +0 -1
  1298. package/dist/showcase/assets/sonner-eMphKM9E.js +0 -22
  1299. package/dist/showcase/assets/sortable.esm-CM9VD5N4.js +0 -5
  1300. package/dist/showcase/assets/sparkles-CIB5irID.js +0 -1
  1301. package/dist/showcase/assets/spinner-11-kP-Ob.js +0 -1
  1302. package/dist/showcase/assets/spinner-D4G5TFSm.js +0 -49
  1303. package/dist/showcase/assets/spinner-DKGukuFV.js +0 -30
  1304. package/dist/showcase/assets/square-pen-zflKy9oX.js +0 -1
  1305. package/dist/showcase/assets/stacked-avatars-Cve1Y6GY.js +0 -1
  1306. package/dist/showcase/assets/star-DleXDkCp.js +0 -1
  1307. package/dist/showcase/assets/startOfDay-TDP2erzM.js +0 -1
  1308. package/dist/showcase/assets/styles-BKlX_Ipc.js +0 -1
  1309. package/dist/showcase/assets/suggestions-Dt2hm1NY.js +0 -126
  1310. package/dist/showcase/assets/switch-DAPAgJbv.js +0 -1
  1311. package/dist/showcase/assets/switch-fQpP2tJl.js +0 -1
  1312. package/dist/showcase/assets/sync-BRcK160D.js +0 -124
  1313. package/dist/showcase/assets/table-Dhmbe1yN.js +0 -686
  1314. package/dist/showcase/assets/table-actions-GGrPOQcv.js +0 -1
  1315. package/dist/showcase/assets/table-v0Eu5yZn.js +0 -1
  1316. package/dist/showcase/assets/tabs-DmaXB1aF.js +0 -19
  1317. package/dist/showcase/assets/tabs-vbNIJ-eo.js +0 -1
  1318. package/dist/showcase/assets/tags-input-Bms_Q5CE.js +0 -1
  1319. package/dist/showcase/assets/text-button-gvJCzaXS.js +0 -1
  1320. package/dist/showcase/assets/text-link-DkByVX4d.js +0 -1
  1321. package/dist/showcase/assets/textarea-B6Ho29y3.js +0 -1
  1322. package/dist/showcase/assets/textarea-JCb0yhZ1.js +0 -1
  1323. package/dist/showcase/assets/throttle-alert-CPU-u6Rs.js +0 -1
  1324. package/dist/showcase/assets/timelines-Bw7mvAdx.js +0 -200
  1325. package/dist/showcase/assets/toggle-group-jlIGX1zh.js +0 -1
  1326. package/dist/showcase/assets/toggles-DV6V9vj-.js +0 -71
  1327. package/dist/showcase/assets/toggles-group-C-Y3dG8q.js +0 -32
  1328. package/dist/showcase/assets/tooltip-CDtPyNOv.js +0 -31
  1329. package/dist/showcase/assets/trash-2-CXRm3lMl.js +0 -1
  1330. package/dist/showcase/assets/trending-up-Bcyp9cw8.js +0 -1
  1331. package/dist/showcase/assets/truck-DVgzuKLP.js +0 -1
  1332. package/dist/showcase/assets/typography-BKPf4j85.js +0 -223
  1333. package/dist/showcase/assets/ui-badge-D-Ud2MES.js +0 -28
  1334. package/dist/showcase/assets/ui-card-gGqI2cfr.js +0 -30
  1335. package/dist/showcase/assets/ui-table-Bqcab_kq.js +0 -42
  1336. package/dist/showcase/assets/upload-tray-BFh6twLE.js +0 -138
  1337. package/dist/showcase/assets/use-layout-link-e9jr981L.js +0 -1
  1338. package/dist/showcase/assets/useAriaLabelledBy-ByBTPUi3.js +0 -1
  1339. package/dist/showcase/assets/useCollapsiblePanel-Bx_-SRtw.js +0 -1
  1340. package/dist/showcase/assets/useCompositeItem-Dmih9c3W.js +0 -1
  1341. package/dist/showcase/assets/useCompositeListItem-C0QJgAKb.js +0 -1
  1342. package/dist/showcase/assets/useLabelableId-COfjI9qt.js +0 -1
  1343. package/dist/showcase/assets/useOpenInteractionType-CRefmlni.js +0 -1
  1344. package/dist/showcase/assets/useRender-Bgu76j1u.js +0 -1
  1345. package/dist/showcase/assets/useTriggerFocusGuards-B2fPZeWf.js +0 -1
  1346. package/dist/showcase/assets/useValueChanged-CNjJ-spo.js +0 -1
  1347. package/dist/showcase/assets/user-CmkLnMh9.js +0 -1
  1348. package/dist/showcase/assets/user-plus-3CGFNUf0.js +0 -1
  1349. package/dist/showcase/assets/users-CuO8W7wn.js +0 -1
  1350. package/dist/showcase/assets/vendor-profile-HLMsE22G.js +0 -37
  1351. package/dist/showcase/assets/video-CoHnn0fp.js +0 -1
  1352. package/dist/showcase/assets/visually-hidden-D5bPAL7Q.js +0 -1
  1353. package/dist/showcase/assets/wrench-C93IxaGt.js +0 -1
  1354. package/dist/showcase/assets/x-BJDvVLAz.js +0 -1
  1355. package/dist/showcase/assets/zap-DYD_Ljkv.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments-a3l--GJ-.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 { useStrings, type StringsProp } from '@/lib/strings';\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?: StringsProp<CommentsStrings>,\n): CommentsStrings {\n return useStrings(defaultCommentsStrings, propStrings);\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 { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\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?: StringsProp<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 = useStrings(defaultCommentsStrings, stringsProp);\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=\"xs\"\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 variant=\"error\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onClick={() => onRetry(attachment.id)}\n className=\"h-auto shrink-0 rounded px-1.5 py-px text-xs font-medium ring-1 ring-inset ring-destructive/30 hover:ring-destructive/60\"\n >\n {strings.attachmentRetryLabel}\n </Button>\n )}\n\n {editable && onRemove && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"icon-small\"\n onClick={() => onRemove(attachment.id)}\n className=\"-mr-0.5 size-4 shrink-0 rounded p-0 text-muted-foreground hover:bg-foreground/10 hover:text-foreground\"\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 strings={{\n editorLabel: placeholder ?? strings.composerPlaceholder,\n }}\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=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wide\">\n {label}\n </Text>\n {onClose ? (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"icon-small\"\n onClick={onClose}\n className=\"size-4 rounded p-0 text-muted-foreground hover:text-foreground\"\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 type { StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useResolvedStrings } from '../comments-provider';\nimport type { CommentsStrings } from '../comments.strings';\n\nexport interface CommentEmptyProps {\n strings?: StringsProp<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 'comment-item--component 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 min-w-0 items-start gap-3\">\n <Avatar className=\"mt-0.5 size-avatar 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 variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onClick={() =>\n onReact && comment.id\n ? onReact(comment.id, reaction.emoji)\n : undefined\n }\n title={reaction.users?.join(', ')}\n className=\"h-auto rounded-full p-0\"\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 'absolute right-2 top-2 opacity-0 transition-opacity',\n 'group-hover:opacity-100 focus-within:opacity-100',\n 'inline-flex items-center gap-0.5 rounded-md bg-card/95 shadow-sm ring-1 ring-border/70',\n )}\n >\n {!!onReply && (\n <Button\n type=\"button\"\n size=\"icon-small\"\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-small\"\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-small\"\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-small\"\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-small\"\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=\"default\"\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,48 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ //#region src/components/layout/containers/content-container.tsx
4
+ var n = {
5
+ narrow: "max-w-[1040px] mx-auto",
6
+ default: "",
7
+ large: "max-w-screen-2xl mx-auto",
8
+ wide: "max-w-screen-2xl mx-auto",
9
+ full: ""
10
+ }, r = {
11
+ none: "p-0",
12
+ sm: "p-surface-sm md:p-surface",
13
+ default: "p-surface md:p-space-2xl",
14
+ lg: "p-space-2xl"
15
+ };
16
+ function i({ children: i, as: a = "div", width: o = "default", padding: s = "default", bare: c = !1, className: l, innerClassName: u, ...d }) {
17
+ let f = n[o], p = r[s];
18
+ return c ? /* @__PURE__ */ t(a, {
19
+ className: e("w-full flex-1 relative overflow-hidden overflow-y-auto @container/main h-full", f, l),
20
+ ...d,
21
+ children: i
22
+ }) : /* @__PURE__ */ t(a, {
23
+ className: e("w-full flex-1 relative overflow-hidden @container/main h-full", l),
24
+ ...d,
25
+ children: /* @__PURE__ */ t("div", {
26
+ className: e("flex min-h-full flex-1 flex-col gap-space-2xl rounded-xl", f, p, u),
27
+ children: i
28
+ })
29
+ });
30
+ }
31
+ //#endregion
32
+ //#region src/components/layout/containers/section.tsx
33
+ var a = {
34
+ tight: "space-y-space-lg",
35
+ default: "space-y-space-xl",
36
+ loose: "space-y-space-2xl"
37
+ };
38
+ function o({ children: n, as: r = "section", density: i = "default", className: o, ...s }) {
39
+ return /* @__PURE__ */ t(r, {
40
+ className: e(a[i], o),
41
+ ...s,
42
+ children: n
43
+ });
44
+ }
45
+ //#endregion
46
+ export { i as n, o as t };
47
+
48
+ //# sourceMappingURL=containers-8ryMAXNr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers-8ryMAXNr.js","names":[],"sources":["../../src/components/layout/containers/content-container.tsx","../../src/components/layout/containers/section.tsx"],"sourcesContent":["/**\n * Container — page-level content wrapper.\n *\n * Wraps the page body in a flexbox column with consistent padding and an\n * optional max-width clamp. Use as the outer wrapper inside a `<Page>`, or\n * standalone for content panes that need a centered, padded surface.\n *\n * `bare` skips the padded inner column for edge-to-edge children, while\n * `innerClassName` customizes the clamped column without affecting the outer\n * scroll/container-query wrapper.\n */\nimport { cn } from '@/lib/utils';\n\nimport type { ContainerProps } from './containers.types';\n\nconst WIDTH_CLASS: Record<NonNullable<ContainerProps['width']>, string> = {\n\tnarrow: 'max-w-[1040px] mx-auto',\n\tdefault: '',\n\tlarge: 'max-w-screen-2xl mx-auto',\n\twide: 'max-w-screen-2xl mx-auto',\n\tfull: '',\n};\n\nconst PADDING_CLASS: Record<NonNullable<ContainerProps['padding']>, string> = {\n\tnone: 'p-0',\n\tsm: 'p-surface-sm md:p-surface',\n\tdefault: 'p-surface md:p-space-2xl',\n\tlg: 'p-space-2xl',\n};\n\nexport function Container({\n\tchildren,\n\tas: Component = 'div',\n\twidth = 'default',\n\tpadding = 'default',\n\tbare = false,\n\tclassName,\n\tinnerClassName,\n\t...props\n}: ContainerProps) {\n\tconst widthClass = WIDTH_CLASS[width];\n\tconst paddingClass = PADDING_CLASS[padding];\n\n\tif (bare) {\n\t\treturn (\n\t\t\t<Component\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'w-full flex-1 relative overflow-hidden overflow-y-auto @container/main h-full',\n\t\t\t\t\twidthClass,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Component>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={cn(\n\t\t\t\t'w-full flex-1 relative overflow-hidden @container/main h-full',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'flex min-h-full flex-1 flex-col gap-space-2xl rounded-xl',\n\t\t\t\t\twidthClass,\n\t\t\t\t\tpaddingClass,\n\t\t\t\t\tinnerClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</Component>\n\t);\n}\n","/**\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-space-lg',\n\tdefault: 'space-y-space-xl',\n\tloose: 'space-y-space-2xl',\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":";;;AAeA,IAAM,IAAoE;CACzE,QAAQ;CACR,SAAS;CACT,OAAO;CACP,MAAM;CACN,MAAM;AACP,GAEM,IAAwE;CAC7E,MAAM;CACN,IAAI;CACJ,SAAS;CACT,IAAI;AACL;AAEA,SAAgB,EAAU,EACzB,aACA,IAAI,IAAY,OAChB,WAAQ,WACR,aAAU,WACV,UAAO,IACP,cACA,mBACA,GAAG,KACe;CAClB,IAAM,IAAa,EAAY,IACzB,IAAe,EAAc;CAiBnC,OAfI,IAEF,kBAAC,GAAD;EACC,WAAW,EACV,iFACA,GACA,CACD;EACA,GAAI;EAEH;CACS,CAAA,IAKZ,kBAAC,GAAD;EACC,WAAW,EACV,iEACA,CACD;EACA,GAAI;YAEJ,kBAAC,OAAD;GACC,WAAW,EACV,4DACA,GACA,GACA,CACD;GAEC;EACG,CAAA;CACK,CAAA;AAEb;;;ACnEA,IAAM,IAAsE;CAC3E,OAAO;CACP,SAAS;CACT,OAAO;AACR;AAEA,SAAgB,EAAQ,EACvB,aACA,IAAI,IAAY,WAChB,aAAU,WACV,cACA,GAAG,KACa;CAChB,OACC,kBAAC,GAAD;EAAW,WAAW,EAAG,EAAc,IAAU,CAAS;EAAG,GAAI;EAC/D;CACS,CAAA;AAEb"}
@@ -0,0 +1,2 @@
1
+ const e=require("../lib/utils.cjs");let t=require("react/jsx-runtime");var n={narrow:`max-w-[1040px] mx-auto`,default:``,large:`max-w-screen-2xl mx-auto`,wide:`max-w-screen-2xl mx-auto`,full:``},r={none:`p-0`,sm:`p-surface-sm md:p-surface`,default:`p-surface md:p-space-2xl`,lg:`p-space-2xl`};function i({children:i,as:a=`div`,width:o=`default`,padding:s=`default`,bare:c=!1,className:l,innerClassName:u,...d}){let f=n[o],p=r[s];return c?(0,t.jsx)(a,{className:e.cn(`w-full flex-1 relative overflow-hidden overflow-y-auto @container/main h-full`,f,l),...d,children:i}):(0,t.jsx)(a,{className:e.cn(`w-full flex-1 relative overflow-hidden @container/main h-full`,l),...d,children:(0,t.jsx)(`div`,{className:e.cn(`flex min-h-full flex-1 flex-col gap-space-2xl rounded-xl`,f,p,u),children:i})})}var a={tight:`space-y-space-lg`,default:`space-y-space-xl`,loose:`space-y-space-2xl`};function o({children:n,as:r=`section`,density:i=`default`,className:o,...s}){return(0,t.jsx)(r,{className:e.cn(a[i],o),...s,children:n})}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return o}});
2
+ //# sourceMappingURL=containers-BcrM8-22.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers-BcrM8-22.cjs","names":[],"sources":["../../src/components/layout/containers/content-container.tsx","../../src/components/layout/containers/section.tsx"],"sourcesContent":["/**\n * Container — page-level content wrapper.\n *\n * Wraps the page body in a flexbox column with consistent padding and an\n * optional max-width clamp. Use as the outer wrapper inside a `<Page>`, or\n * standalone for content panes that need a centered, padded surface.\n *\n * `bare` skips the padded inner column for edge-to-edge children, while\n * `innerClassName` customizes the clamped column without affecting the outer\n * scroll/container-query wrapper.\n */\nimport { cn } from '@/lib/utils';\n\nimport type { ContainerProps } from './containers.types';\n\nconst WIDTH_CLASS: Record<NonNullable<ContainerProps['width']>, string> = {\n\tnarrow: 'max-w-[1040px] mx-auto',\n\tdefault: '',\n\tlarge: 'max-w-screen-2xl mx-auto',\n\twide: 'max-w-screen-2xl mx-auto',\n\tfull: '',\n};\n\nconst PADDING_CLASS: Record<NonNullable<ContainerProps['padding']>, string> = {\n\tnone: 'p-0',\n\tsm: 'p-surface-sm md:p-surface',\n\tdefault: 'p-surface md:p-space-2xl',\n\tlg: 'p-space-2xl',\n};\n\nexport function Container({\n\tchildren,\n\tas: Component = 'div',\n\twidth = 'default',\n\tpadding = 'default',\n\tbare = false,\n\tclassName,\n\tinnerClassName,\n\t...props\n}: ContainerProps) {\n\tconst widthClass = WIDTH_CLASS[width];\n\tconst paddingClass = PADDING_CLASS[padding];\n\n\tif (bare) {\n\t\treturn (\n\t\t\t<Component\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'w-full flex-1 relative overflow-hidden overflow-y-auto @container/main h-full',\n\t\t\t\t\twidthClass,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Component>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={cn(\n\t\t\t\t'w-full flex-1 relative overflow-hidden @container/main h-full',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'flex min-h-full flex-1 flex-col gap-space-2xl rounded-xl',\n\t\t\t\t\twidthClass,\n\t\t\t\t\tpaddingClass,\n\t\t\t\t\tinnerClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</Component>\n\t);\n}\n","/**\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-space-lg',\n\tdefault: 'space-y-space-xl',\n\tloose: 'space-y-space-2xl',\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":"uEAeA,IAAM,EAAoE,CACzE,OAAQ,yBACR,QAAS,GACT,MAAO,2BACP,KAAM,2BACN,KAAM,EACP,EAEM,EAAwE,CAC7E,KAAM,MACN,GAAI,4BACJ,QAAS,2BACT,GAAI,aACL,EAEA,SAAgB,EAAU,CACzB,WACA,GAAI,EAAY,MAChB,QAAQ,UACR,UAAU,UACV,OAAO,GACP,YACA,iBACA,GAAG,GACe,CAClB,IAAM,EAAa,EAAY,GACzB,EAAe,EAAc,GAiBnC,OAfI,GAEF,EAAA,EAAA,KAAC,EAAD,CACC,UAAW,EAAA,GACV,gFACA,EACA,CACD,EACA,GAAI,EAEH,UACS,CAAA,GAKZ,EAAA,EAAA,KAAC,EAAD,CACC,UAAW,EAAA,GACV,gEACA,CACD,EACA,GAAI,YAEJ,EAAA,EAAA,KAAC,MAAD,CACC,UAAW,EAAA,GACV,2DACA,EACA,EACA,CACD,EAEC,UACG,CAAA,CACK,CAAA,CAEb,CCnEA,IAAM,EAAsE,CAC3E,MAAO,mBACP,QAAS,mBACT,MAAO,mBACR,EAEA,SAAgB,EAAQ,CACvB,WACA,GAAI,EAAY,UAChB,UAAU,UACV,YACA,GAAG,GACa,CAChB,OACC,EAAA,EAAA,KAAC,EAAD,CAAW,UAAW,EAAA,GAAG,EAAc,GAAU,CAAS,EAAG,GAAI,EAC/D,UACS,CAAA,CAEb"}
@@ -0,0 +1,38 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import { s as t } from "./typography-C_kCoR1d.js";
3
+ import { useState as n } from "react";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ import { Check as a, Copy as o } from "lucide-react";
6
+ import { toast as s } from "sonner";
7
+ //#region src/components/base/copyable/copyable.tsx
8
+ function c({ value: c, displayValue: l, mono: u = !1, truncate: d = !1, className: f, contentClassName: p, successMessage: m = "Copied to clipboard" }) {
9
+ let [h, g] = n(!1), _ = async () => {
10
+ try {
11
+ await navigator.clipboard.writeText(c), g(!0), s.success(m), setTimeout(() => g(!1), 2e3);
12
+ } catch {
13
+ s.error("Failed to copy");
14
+ }
15
+ }, v = l !== void 0 && typeof l != "string";
16
+ return /* @__PURE__ */ i("span", {
17
+ role: "button",
18
+ tabIndex: 0,
19
+ onClick: _,
20
+ onKeyDown: (e) => {
21
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), _());
22
+ },
23
+ className: e("copyable--component", "group inline-flex cursor-pointer items-center gap-1.5 rounded px-1 -mx-1 transition-colors hover:bg-muted", f),
24
+ children: [v ? l : /* @__PURE__ */ r(t, {
25
+ tag: "span",
26
+ className: e(u && "font-mono", d && "max-w-[300px] truncate", p),
27
+ children: l ?? c
28
+ }), /* @__PURE__ */ r("span", {
29
+ className: "text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100",
30
+ children: h ? /* @__PURE__ */ r(a, { className: "size-3.5 text-success" }) : /* @__PURE__ */ r(o, { className: "size-3.5" })
31
+ })]
32
+ });
33
+ }
34
+ c.displayName = "Copyable";
35
+ //#endregion
36
+ export { c as t };
37
+
38
+ //# sourceMappingURL=copyable-C0KJlRVr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyable-C0KJlRVr.js","names":[],"sources":["../../src/components/base/copyable/copyable.tsx"],"sourcesContent":["import { Check, Copy } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { toast } from 'sonner';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\ninterface CopyableProps {\n\t/** The value to copy to clipboard */\n\tvalue: string;\n\t/** Optional display content (if different from value). Can be a string or ReactNode */\n\tdisplayValue?: ReactNode;\n\t/** Use monospace font (only applies when displayValue is not a ReactNode) */\n\tmono?: boolean;\n\t/** Truncate with ellipsis (only applies when displayValue is not a ReactNode) */\n\ttruncate?: boolean;\n\t/** Additional className for the container */\n\tclassName?: string;\n\t/**ClassName for the display content wrapper */\n\tcontentClassName?: string;\n\t/** Success message shown in toast */\n\tsuccessMessage?: string;\n}\n\nexport function Copyable({\n\tvalue,\n\tdisplayValue,\n\tmono = false,\n\ttruncate = false,\n\tclassName,\n\tcontentClassName,\n\tsuccessMessage = 'Copied to clipboard',\n}: CopyableProps) {\n\tconst [copied, setCopied] = useState(false);\n\n\tconst handleCopy = async () => {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\tsetCopied(true);\n\t\t\ttoast.success(successMessage);\n\t\t\tsetTimeout(() => setCopied(false), 2000);\n\t\t} catch {\n\t\t\ttoast.error('Failed to copy');\n\t\t}\n\t};\n\n\t// Check if displayValue is a ReactNode (not a string)\n\tconst isReactNode = displayValue !== undefined && typeof displayValue !== 'string';\n\n\treturn (\n\t\t<span\n\t\t\trole=\"button\"\n\t\t\ttabIndex={0}\n\t\t\tonClick={handleCopy}\n\t\t\tonKeyDown={(e) => {\n\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvoid handleCopy();\n\t\t\t\t}\n\t\t\t}}\n\t\t\tclassName={cn('copyable--component', \n\t\t\t\t'group inline-flex cursor-pointer items-center gap-1.5 rounded px-1 -mx-1 transition-colors hover:bg-muted',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{isReactNode ? (\n\t\t\t\tdisplayValue\n\t\t\t) : (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tmono && 'font-mono',\n\t\t\t\t\t\ttruncate && 'max-w-[300px] truncate',\n\t\t\t\t\t\tcontentClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{displayValue ?? value}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t<span className=\"text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\">\n\t\t\t\t{copied ? (\n\t\t\t\t\t<Check className=\"size-3.5 text-success\" />\n\t\t\t\t) : (\n\t\t\t\t\t<Copy className=\"size-3.5\" />\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</span>\n\t);\n}\n\nexport type { CopyableProps };\n\nCopyable.displayName = 'Copyable';\n"],"mappings":";;;;;;;AAyBA,SAAgB,EAAS,EACxB,UACA,iBACA,UAAO,IACP,cAAW,IACX,cACA,qBACA,oBAAiB,yBACA;CACjB,IAAM,CAAC,GAAQ,KAAa,EAAS,EAAK,GAEpC,IAAa,YAAY;EAC9B,IAAI;GAIH,AAHA,MAAM,UAAU,UAAU,UAAU,CAAK,GACzC,EAAU,EAAI,GACd,EAAM,QAAQ,CAAc,GAC5B,iBAAiB,EAAU,EAAK,GAAG,GAAI;EACxC,QAAQ;GACP,EAAM,MAAM,gBAAgB;EAC7B;CACD,GAGM,IAAc,MAAiB,KAAA,KAAa,OAAO,KAAiB;CAE1E,OACC,kBAAC,QAAD;EACC,MAAK;EACL,UAAU;EACV,SAAS;EACT,YAAY,MAAM;GACjB,CAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,SAClC,EAAE,eAAe,GACjB,EAAgB;EAElB;EACA,WAAW,EAAG,uBACb,6GACA,CACD;YAbD,CAeE,IACA,IAEA,kBAAC,GAAD;GACC,KAAI;GACJ,WAAW,EACV,KAAQ,aACR,KAAY,0BACZ,CACD;aAEC,KAAgB;EACZ,CAAA,GAEP,kBAAC,QAAD;GAAM,WAAU;aACd,IACA,kBAAC,GAAD,EAAO,WAAU,wBAAyB,CAAA,IAE1C,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA;EAExB,CAAA,CACD;;AAER;AAIA,EAAS,cAAc"}
@@ -0,0 +1,2 @@
1
+ const e=require("../lib/utils.cjs"),t=require("./typography-sXFd02zl.cjs");let n=require("react"),r=require("react/jsx-runtime"),i=require("lucide-react"),a=require("sonner");function o({value:o,displayValue:s,mono:c=!1,truncate:l=!1,className:u,contentClassName:d,successMessage:f=`Copied to clipboard`}){let[p,m]=(0,n.useState)(!1),h=async()=>{try{await navigator.clipboard.writeText(o),m(!0),a.toast.success(f),setTimeout(()=>m(!1),2e3)}catch{a.toast.error(`Failed to copy`)}},g=s!==void 0&&typeof s!=`string`;return(0,r.jsxs)(`span`,{role:`button`,tabIndex:0,onClick:h,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),h())},className:e.cn(`copyable--component`,`group inline-flex cursor-pointer items-center gap-1.5 rounded px-1 -mx-1 transition-colors hover:bg-muted`,u),children:[g?s:(0,r.jsx)(t.s,{tag:`span`,className:e.cn(c&&`font-mono`,l&&`max-w-[300px] truncate`,d),children:s??o}),(0,r.jsx)(`span`,{className:`text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100`,children:p?(0,r.jsx)(i.Check,{className:`size-3.5 text-success`}):(0,r.jsx)(i.Copy,{className:`size-3.5`})})]})}o.displayName=`Copyable`,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return o}});
2
+ //# sourceMappingURL=copyable-tJxsOyn-.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyable-tJxsOyn-.cjs","names":[],"sources":["../../src/components/base/copyable/copyable.tsx"],"sourcesContent":["import { Check, Copy } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { toast } from 'sonner';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\ninterface CopyableProps {\n\t/** The value to copy to clipboard */\n\tvalue: string;\n\t/** Optional display content (if different from value). Can be a string or ReactNode */\n\tdisplayValue?: ReactNode;\n\t/** Use monospace font (only applies when displayValue is not a ReactNode) */\n\tmono?: boolean;\n\t/** Truncate with ellipsis (only applies when displayValue is not a ReactNode) */\n\ttruncate?: boolean;\n\t/** Additional className for the container */\n\tclassName?: string;\n\t/**ClassName for the display content wrapper */\n\tcontentClassName?: string;\n\t/** Success message shown in toast */\n\tsuccessMessage?: string;\n}\n\nexport function Copyable({\n\tvalue,\n\tdisplayValue,\n\tmono = false,\n\ttruncate = false,\n\tclassName,\n\tcontentClassName,\n\tsuccessMessage = 'Copied to clipboard',\n}: CopyableProps) {\n\tconst [copied, setCopied] = useState(false);\n\n\tconst handleCopy = async () => {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\tsetCopied(true);\n\t\t\ttoast.success(successMessage);\n\t\t\tsetTimeout(() => setCopied(false), 2000);\n\t\t} catch {\n\t\t\ttoast.error('Failed to copy');\n\t\t}\n\t};\n\n\t// Check if displayValue is a ReactNode (not a string)\n\tconst isReactNode = displayValue !== undefined && typeof displayValue !== 'string';\n\n\treturn (\n\t\t<span\n\t\t\trole=\"button\"\n\t\t\ttabIndex={0}\n\t\t\tonClick={handleCopy}\n\t\t\tonKeyDown={(e) => {\n\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvoid handleCopy();\n\t\t\t\t}\n\t\t\t}}\n\t\t\tclassName={cn('copyable--component', \n\t\t\t\t'group inline-flex cursor-pointer items-center gap-1.5 rounded px-1 -mx-1 transition-colors hover:bg-muted',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{isReactNode ? (\n\t\t\t\tdisplayValue\n\t\t\t) : (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tmono && 'font-mono',\n\t\t\t\t\t\ttruncate && 'max-w-[300px] truncate',\n\t\t\t\t\t\tcontentClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{displayValue ?? value}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t<span className=\"text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\">\n\t\t\t\t{copied ? (\n\t\t\t\t\t<Check className=\"size-3.5 text-success\" />\n\t\t\t\t) : (\n\t\t\t\t\t<Copy className=\"size-3.5\" />\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</span>\n\t);\n}\n\nexport type { CopyableProps };\n\nCopyable.displayName = 'Copyable';\n"],"mappings":"+KAyBA,SAAgB,EAAS,CACxB,QACA,eACA,OAAO,GACP,WAAW,GACX,YACA,mBACA,iBAAiB,uBACA,CACjB,GAAM,CAAC,EAAQ,IAAA,EAAA,EAAA,UAAsB,EAAK,EAEpC,EAAa,SAAY,CAC9B,GAAI,CACH,MAAM,UAAU,UAAU,UAAU,CAAK,EACzC,EAAU,EAAI,EACd,EAAA,MAAM,QAAQ,CAAc,EAC5B,eAAiB,EAAU,EAAK,EAAG,GAAI,CACxC,MAAQ,CACP,EAAA,MAAM,MAAM,gBAAgB,CAC7B,CACD,EAGM,EAAc,IAAiB,IAAA,IAAa,OAAO,GAAiB,SAE1E,OACC,EAAA,EAAA,MAAC,OAAD,CACC,KAAK,SACL,SAAU,EACV,QAAS,EACT,UAAY,GAAM,EACb,EAAE,MAAQ,SAAW,EAAE,MAAQ,OAClC,EAAE,eAAe,EACjB,EAAgB,EAElB,EACA,UAAW,EAAA,GAAG,sBACb,4GACA,CACD,WAbD,CAeE,EACA,GAEA,EAAA,EAAA,KAAC,EAAA,EAAD,CACC,IAAI,OACJ,UAAW,EAAA,GACV,GAAQ,YACR,GAAY,yBACZ,CACD,WAEC,GAAgB,CACZ,CAAA,GAEP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,sFACd,GACA,EAAA,EAAA,KAAC,EAAA,MAAD,CAAO,UAAU,uBAAyB,CAAA,GAE1C,EAAA,EAAA,KAAC,EAAA,KAAD,CAAM,UAAU,UAAY,CAAA,CAExB,CAAA,CACD,GAER,CAIA,EAAS,YAAc"}
@@ -0,0 +1,2 @@
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/strings.cjs"),n=require("./ui-provider-CrsJ_dGn.cjs"),r=require("../lib/utils.cjs"),i=require("./button-CB8e7fui.cjs"),a=require("./tooltip-mvxZV_Lu.cjs"),o=require("./typography-sXFd02zl.cjs"),s=require("./icon-badge-CU6ZkcER.cjs"),c=require("./badge-B0Ashqkn.cjs"),l=require("./cards-DvE5gRFf.cjs"),u=require("./display-DV7n0KA1.cjs"),d=require("./separator-BXn_fnly.cjs"),f=require("./copyable-tJxsOyn-.cjs"),p=require("./avatar-BnKM_o2d.cjs"),m=require("./item-BG2iK1sy.cjs"),h=require("./table-DQA2m2F0.cjs");let g=require("react");g=e.t(g,1);let _=require("react/jsx-runtime"),v=require("lucide-react");function y({items:e,subtotal:t,tax:n,discount:i,total:a,className:s}){return(0,_.jsxs)(`div`,{className:r.cn(`invoice-items--component`,`w-full min-w-0 max-w-full overflow-hidden rounded-lg border border-border bg-card shadow-sm`,s),children:[(0,_.jsxs)(`div`,{className:`grid grid-cols-[1fr_72px_96px_96px] gap-3 bg-muted/40 px-4 py-3`,children:[(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,weight:`medium`,children:`Item`}),(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,weight:`medium`,align:`center`,children:`Qty`}),(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,weight:`medium`,align:`right`,children:`Price`}),(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,weight:`medium`,align:`right`,children:`Total`})]}),e.map((t,n)=>(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`div`,{className:`grid grid-cols-[1fr_72px_96px_96px] items-center gap-3 px-4 py-3`,children:[(0,_.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(o.s,{weight:`medium`,children:t.title}),!!t.badge&&(0,_.jsx)(c.t,{variant:t.badgeVariant??`secondary`,children:t.badge})]}),!!t.description&&(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,className:`line-clamp-1`,children:t.description})]}),(0,_.jsx)(o.s,{align:`center`,type:`secondary`,className:`tabular-nums`,children:t.quantity??1}),(0,_.jsx)(o.s,{align:`right`,className:`tabular-nums`,children:t.unitPrice??t.total}),(0,_.jsx)(o.s,{align:`right`,weight:`semibold`,className:`tabular-nums`,children:t.total})]}),n<e.length-1&&(0,_.jsx)(d.t,{className:`mx-4 !w-auto`})]},t.id)),!!(t||n||i||a)&&(0,_.jsxs)(`div`,{className:`space-y-2 border-t border-border bg-muted/30 px-4 py-3`,children:[!!t&&(0,_.jsx)($,{label:`Subtotal`,value:t,mono:!0,labelClassName:`text-sm`,valueClassName:`text-sm`}),!!i&&(0,_.jsx)($,{label:`Discount`,value:`-${i}`,mono:!0,labelClassName:`text-sm`,valueClassName:`text-sm text-success`}),!!n&&(0,_.jsx)($,{label:`Tax`,value:n,mono:!0,labelClassName:`text-sm`,valueClassName:`text-sm`}),!!a&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(d.t,{}),(0,_.jsx)($,{className:`pt-1`,label:`Total`,value:(0,_.jsx)(o.s,{weight:`semibold`,className:`tabular-nums`,children:a}),labelClassName:`text-sm font-semibold`})]})]})]})}function b({items:e,total:t,className:n}){return(0,_.jsxs)(`div`,{className:r.cn(`invoice-items--component`,`w-full min-w-0 max-w-full space-y-2`,n),children:[(0,_.jsx)(m.o,{className:`min-w-0 max-w-full`,children:e.map(e=>(0,_.jsxs)(m.t,{className:`min-w-0 bg-card shadow-sm`,children:[(0,_.jsx)(m.c,{children:(0,_.jsx)(s.t,{tone:`muted`,size:`default`,shape:`square`,children:e.icon??(0,_.jsx)(v.Package,{})})}),(0,_.jsxs)(m.r,{className:`min-w-0 basis-0`,children:[(0,_.jsx)(m.u,{className:`w-full min-w-0 max-w-full`,children:(0,_.jsx)(`span`,{className:`block min-w-0 truncate`,children:e.title})}),!!(e.description||e.badge)&&(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[!!e.badge&&(0,_.jsx)(c.t,{variant:e.badgeVariant??`secondary`,className:`shrink-0`,children:e.badge}),!!e.description&&(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,className:`min-w-0 truncate`,children:e.description})]})]}),(0,_.jsxs)(m.n,{className:`ml-auto min-w-0 shrink-0 justify-end`,children:[!!e.quantity&&e.quantity>1&&(0,_.jsxs)(o.s,{size:`xs`,type:`secondary`,className:`shrink-0 tabular-nums`,children:[`x`,e.quantity]}),(0,_.jsx)(o.s,{weight:`semibold`,align:`right`,className:`shrink-0 tabular-nums`,children:e.total})]})]},e.id))}),!!t&&(0,_.jsx)($,{className:`rounded-lg border border-border bg-muted/30 px-4 py-2.5`,label:`Total`,value:(0,_.jsx)(o.s,{weight:`semibold`,className:`tabular-nums`,children:t}),labelClassName:`text-sm font-semibold`})]})}function x({items:e,subtotal:t,tax:n,discount:i,total:a,className:s}){return(0,_.jsxs)(`div`,{className:r.cn(`invoice-items--component`,`w-full min-w-0 max-w-full overflow-hidden rounded-lg border border-border bg-card shadow-sm`,s),children:[(0,_.jsx)(`div`,{className:`divide-y divide-border`,children:e.map(e=>(0,_.jsx)(`div`,{className:`px-4 py-3`,children:(0,_.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,_.jsxs)(`div`,{className:`flex items-start gap-3 flex-1 min-w-0`,children:[(0,_.jsx)(`div`,{className:`mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary`,children:e.icon??(0,_.jsx)(v.Package,{className:`size-4`})}),(0,_.jsxs)(`div`,{className:`flex-1 min-w-0 space-y-1`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(o.s,{weight:`semibold`,children:e.title}),!!e.badge&&(0,_.jsx)(c.t,{variant:e.badgeVariant??`secondary`,children:e.badge})]}),!!e.description&&(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,className:`line-clamp-2`,children:e.description}),(0,_.jsxs)(`div`,{className:`flex items-center gap-3 pt-0.5`,children:[!!e.quantity&&(0,_.jsxs)(o.s,{size:`xs`,type:`discrete`,children:[`Qty: `,e.quantity]}),!!e.unitPrice&&(0,_.jsxs)(o.s,{size:`xs`,type:`discrete`,className:`tabular-nums`,children:[`@ `,e.unitPrice]})]})]})]}),(0,_.jsx)(`div`,{className:`flex flex-col items-end gap-1 shrink-0`,children:(0,_.jsx)(o.s,{weight:`semibold`,className:`tabular-nums`,children:e.total})})]})},e.id))}),!!a&&(0,_.jsx)(`div`,{className:`border-t border-border bg-muted/30 px-4 py-3`,children:(0,_.jsxs)(`div`,{className:`space-y-2`,children:[!!t&&(0,_.jsx)($,{label:`Subtotal`,value:t,mono:!0,labelClassName:`text-sm`,valueClassName:`text-sm`}),!!i&&(0,_.jsx)($,{label:`Discount`,value:`-${i}`,mono:!0,labelClassName:`text-sm`,valueClassName:`text-sm text-success`}),!!n&&(0,_.jsx)($,{label:`Tax (20%)`,value:n,mono:!0,labelClassName:`text-sm`,valueClassName:`text-sm`}),(0,_.jsx)(d.t,{}),(0,_.jsx)($,{className:`pt-1`,label:`Total Due`,value:(0,_.jsx)(o.s,{weight:`semibold`,className:`tabular-nums`,children:a}),labelClassName:`text-sm font-semibold`})]})})]})}y.displayName=`InvoiceItemsTable`,b.displayName=`InvoiceItemsCompact`,x.displayName=`InvoiceItemsDetailed`;var S={paid:`Paid`,pending:`Pending`,overdue:`Overdue`,items:e=>e===1?`1 line item`:`${e} line items`,due:`Due`},C={paid:`success`,pending:`warning`,overdue:`error`},w={paid:{label:S.paid,variant:`success`},pending:{label:S.pending,variant:`warning`},overdue:{label:S.overdue,variant:`error`}};function T({invoice:e,className:n,strings:i}){let a=t.mergeStrings(S,i),s={paid:a.paid,pending:a.pending,overdue:a.overdue};return(0,_.jsx)(l.t,{padding:`default`,className:r.cn(`invoice-mini--component min-w-0`,n),children:(0,_.jsxs)(`div`,{className:`space-y-2`,children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,_.jsx)(o.s,{weight:`semibold`,className:`min-w-0 flex-1 truncate font-mono tracking-wide`,children:e.invoiceNumber}),(0,_.jsx)(c.t,{variant:C[e.status],size:`small`,dot:!0,className:`shrink-0`,children:s[e.status]})]}),(0,_.jsx)(o.s,{type:`secondary`,className:`truncate`,children:e.customerName}),(0,_.jsxs)(`div`,{className:`flex flex-wrap items-end justify-between gap-x-3 gap-y-1 pt-1`,children:[(0,_.jsxs)(`div`,{className:`min-w-0 space-y-0.5`,children:[(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,children:a.items(e.lineItemsCount)}),(0,_.jsxs)(o.s,{size:`xs`,type:`discrete`,className:`whitespace-nowrap tabular-nums`,children:[a.due,` `,e.dueDate]})]}),(0,_.jsx)(o.s,{size:`base`,weight:`bold`,className:r.cn(`ml-auto shrink-0 tabular-nums leading-none`),children:e.totalAmount})]})]})})}T.displayName=`InvoiceMiniCard`;var E={title:`Invoice`,billFrom:`Bill From`,billTo:`Bill To`,issued:`Issued`,due:`Due`,amountDue:`Amount Due`};function D({eyebrow:e,name:t,location:n}){return(0,_.jsxs)(`div`,{className:r.cn(`invoice-header--component`,`space-y-1`),children:[(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:e}),(0,_.jsx)(o.s,{weight:`semibold`,className:`leading-snug`,children:t}),!!n&&(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,className:`leading-snug`,children:n})]})}function O({invoiceNumber:e,status:n,statusVariant:i=`success`,from:a,to:s,issuedDate:u,dueDate:f,amount:p,className:m,strings:h}){let g=t.useStrings(E,h);return(0,_.jsxs)(l.t,{title:g.title,className:m,children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,_.jsx)(o.s,{weight:`bold`,className:`font-mono tracking-wide`,children:e}),(0,_.jsx)(c.t,{variant:i,children:n})]}),(0,_.jsxs)(`div`,{className:`mt-5 grid grid-cols-1 gap-5 sm:grid-cols-2 sm:gap-6`,children:[(0,_.jsx)(D,{eyebrow:g.billFrom,name:a.name,location:a.location}),(0,_.jsx)(D,{eyebrow:g.billTo,name:s.name,location:s.location})]}),(0,_.jsx)(d.t,{className:`my-5`}),(0,_.jsxs)(`div`,{className:`flex flex-wrap items-end justify-between gap-4`,children:[(0,_.jsxs)(`div`,{className:`space-y-1`,children:[!!u&&(0,_.jsx)($,{layout:`inline`,label:g.issued,value:u,mono:!0,labelClassName:`text-xs uppercase tracking-wider font-medium`,valueClassName:`text-xs font-medium`}),!!f&&(0,_.jsx)($,{layout:`inline`,label:g.due,value:f,mono:!0,labelClassName:`text-xs uppercase tracking-wider font-medium`,valueClassName:`text-xs font-medium`})]}),(0,_.jsxs)(`div`,{className:`text-right`,children:[(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:g.amountDue}),(0,_.jsx)(o.o,{tag:`h3`,className:r.cn(`mt-1 text-base tabular-nums leading-none tracking-tight border-none pb-0`),children:p})]})]})]})}O.displayName=`InvoiceHeaderCard`;var k={subtotal:`Subtotal`,tax:`Tax`,total:`Total`},A=`border border-border shadow-sm`,j={left:`text-left justify-start`,right:`text-right justify-end`,center:`text-center justify-center`};function M(e){return[{id:`description`,header:`Item`,width:`minmax(0,1fr)`,cell:e=>(0,_.jsx)(o.s,{className:`truncate`,children:e.description})},{id:`qty`,header:`Qty`,width:`36px`,align:`center`,cell:e=>(0,_.jsx)(o.s,{align:`center`,className:`tabular-nums`,children:e.qty})},{id:`price`,header:`Price`,width:`82px`,align:`right`,cell:t=>(0,_.jsxs)(o.s,{className:`tabular-nums font-mono`,children:[e,t.price.toFixed(2)]})},{id:`total`,header:`Total`,width:`82px`,align:`right`,cell:t=>(0,_.jsxs)(o.s,{weight:`medium`,className:`tabular-nums font-mono`,children:[e,t.total.toFixed(2)]})}]}function N(e,t,n,r){let i=e.reduce((e,t)=>e+t.total,0),a=Math.round(i*t*100)/100,o=Math.round(t*100),s=i+a,c=e=>`${n}${e.toFixed(2)}`;return[{label:r.subtotal,value:c(i)},{label:`${r.tax} (${o}%)`,value:c(a)},{label:r.total,value:c(s),emphasis:`total`}]}function P({items:e,columns:i,footerRows:a,taxRate:s=.2,currency:c,className:l,strings:u}){let f=t.useStrings(k,u),{defaultCurrency:p}=n.l(),m=c??p??`€`,h=i??M(m),g=a??(i?[]:N(e,s,m,f)),v=h.map(e=>e.width??`1fr`).join(` `);return(0,_.jsxs)(`div`,{className:r.cn(`invoice-table--component`,`w-full min-w-0 max-w-full overflow-hidden rounded-lg bg-card`,A,l),children:[(0,_.jsx)(`div`,{className:`grid min-w-0 gap-2 bg-muted/40 px-4 py-3`,style:{gridTemplateColumns:v},children:h.map(e=>(0,_.jsx)(`div`,{className:r.cn(`flex min-w-0`,j[e.align??`left`],e.headerClassName),children:(0,_.jsx)(o.s,{size:`xs`,weight:`medium`,type:`secondary`,className:`min-w-0 truncate uppercase tracking-wider`,children:e.header})},e.id))}),e.map((e,t)=>(0,_.jsx)(`div`,{className:r.cn(`grid min-w-0 gap-2 px-4 py-3`,t%2==1&&`bg-muted/20`),style:{gridTemplateColumns:v},children:h.map(n=>(0,_.jsx)(`div`,{className:r.cn(`flex min-w-0 items-center`,j[n.align??`left`],n.cellClassName),children:n.cell(e,t)},n.id))},t)),g.length>0&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(d.t,{}),(0,_.jsx)(`div`,{className:`space-y-2 px-4 py-3`,children:g.map((e,t)=>(0,_.jsxs)(`div`,{className:r.cn(`flex justify-between`,e.emphasis===`total`&&`pt-2`),children:[(0,_.jsx)(o.s,{type:e.emphasis===`total`?void 0:`secondary`,weight:e.emphasis===`total`?`bold`:`regular`,children:e.label}),(0,_.jsx)(o.s,{weight:e.emphasis===`total`?`bold`:`regular`,className:`tabular-nums font-mono`,children:e.value})]},t))})]})]})}P.displayName=`InvoiceTable`;function ee({value:e,max:t=5,label:n}){return(0,_.jsxs)(`div`,{className:r.cn(`helpers--component`,`flex items-center gap-1`),children:[Array.from({length:t},(t,n)=>(0,_.jsx)(`div`,{className:r.cn(`h-1.5 w-3 rounded-full`,n<e?`bg-foreground/60`:`bg-muted`)},n)),!!n&&(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,className:`ml-1`,children:n})]})}function te({label:e,value:t,badge:n,badgeVariant:r}){return(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,_.jsx)(o.s,{size:`xs`,className:`shrink-0 text-muted-foreground`,children:e}),!!n&&(0,_.jsx)(c.t,{variant:r??`secondary`,children:n}),!!t&&!n&&(0,_.jsx)(o.s,{weight:`semibold`,className:`text-right tabular-nums`,children:t})]})}function ne({title:e,description:t,statusBadges:n,rows:r,secondaryRows:i,scale:a,footerBadges:s,footerText:u,actions:f,className:p}){return(0,_.jsx)(l.t,{title:e,description:t,actions:f,className:p,children:(0,_.jsxs)(`div`,{className:`space-y-3`,children:[(0,_.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:n.map(e=>(0,_.jsx)(c.t,{variant:e.variant,children:e.label},e.label))}),(0,_.jsx)(`div`,{className:`space-y-2`,children:r.map(e=>(0,_.jsx)(te,{...e},e.label))}),!!a&&(0,_.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,_.jsx)(o.s,{size:`xs`,className:`text-muted-foreground`,children:a.label}),(0,_.jsx)(ee,{value:a.value,max:a.max,label:`${String(a.value)}/${String(a.max??5)}`})]}),!!i&&i.length>0&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(d.t,{}),(0,_.jsx)(`div`,{className:`space-y-2`,children:i.map(e=>(0,_.jsx)(te,{...e},e.label))})]}),(!!s||!!u)&&(0,_.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-t pt-2`,children:[!!s&&s.map(e=>(0,_.jsx)(c.t,{variant:e.variant,children:e.label},e.label)),!!u&&(0,_.jsx)(o.s,{size:`xs`,className:`text-muted-foreground`,children:u})]})]})})}ne.displayName=`DenseInfoDashboard`;function re({title:e,description:t,stats:n,items:i,totalLabel:a,totalValue:s,footerBadges:u,footerText:f,actions:p,className:h}){return(0,_.jsx)(l.t,{title:e,description:t,actions:p,className:h,children:(0,_.jsxs)(`div`,{className:`space-y-3`,children:[(0,_.jsx)(`div`,{className:`grid grid-cols-2 gap-2 sm:grid-cols-3`,children:n.map(e=>(0,_.jsxs)(`div`,{className:`rounded-lg border border-border/50 bg-muted/30 px-3 py-2.5 text-center`,children:[(0,_.jsx)(o.o,{tag:`h4`,className:`border-none pb-0 text-base font-semibold tabular-nums`,children:e.value}),(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`mt-0.5`,children:e.label}),!!e.trendBadge&&(0,_.jsx)(`div`,{className:`mt-1 flex justify-center`,children:(0,_.jsx)(c.t,{variant:e.trendVariant??`secondary`,children:e.trendBadge})})]},e.label))}),(0,_.jsx)(d.t,{}),(0,_.jsx)(m.o,{children:i.map(e=>(0,_.jsxs)(m.t,{size:`small`,children:[(0,_.jsx)(m.c,{children:(0,_.jsx)(`span`,{className:r.cn(`h-2 w-2 shrink-0 rounded-full`,e.dotColor)})}),(0,_.jsx)(m.r,{children:(0,_.jsxs)(m.u,{bold:!1,className:`gap-2`,children:[e.label,!!e.badge&&(0,_.jsx)(c.t,{variant:e.badgeVariant??`secondary`,children:e.badge})]})}),(0,_.jsx)(m.n,{children:(0,_.jsx)(o.s,{size:`xs`,weight:`semibold`,className:`tabular-nums`,children:e.value})})]},e.label))}),!!s&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(d.t,{}),(0,_.jsx)($,{label:a??`Total`,value:s,mono:!0,labelClassName:`text-sm font-bold`,valueClassName:`text-sm font-bold`})]}),(!!u||!!f)&&(0,_.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-t pt-2`,children:[!!u&&u.map(e=>(0,_.jsx)(c.t,{variant:e.variant,children:e.label},e.label)),!!f&&(0,_.jsx)(o.s,{size:`xs`,className:`text-muted-foreground`,children:f})]})]})})}re.displayName=`DenseInfoClassification`;function ie({title:e,description:t,headerBadges:n,lineItems:r,totalLabel:i=`Total`,totalAmount:a,footerBadges:s,footerText:u,actions:d,className:f}){return(0,_.jsx)(l.t,{title:e,description:t,actions:d,className:f,children:(0,_.jsxs)(`div`,{className:`space-y-3`,children:[(0,_.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:n.map(e=>(0,_.jsx)(c.t,{variant:e.variant,children:e.label},e.label))}),(0,_.jsx)(m.o,{children:r.map((e,t)=>(0,_.jsxs)(`div`,{children:[t>0&&(0,_.jsx)(m.l,{className:`my-0`}),(0,_.jsxs)(m.t,{size:`small`,children:[(0,_.jsx)(m.r,{children:(0,_.jsxs)(m.u,{className:`gap-2`,children:[e.label,!!e.badge&&(0,_.jsx)(c.t,{variant:e.badgeVariant??`secondary`,children:e.badge})]})}),(0,_.jsx)(m.n,{children:(0,_.jsx)(o.s,{size:`xs`,weight:`semibold`,className:`tabular-nums`,children:e.amount})})]})]},e.label))}),!!a&&(0,_.jsx)($,{className:`rounded-lg bg-muted/50 px-3 py-2.5`,label:i,value:a,mono:!0,labelClassName:`text-sm font-semibold`,valueClassName:`text-sm font-semibold`}),(!!s||!!u)&&(0,_.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-t pt-2`,children:[!!s&&s.map(e=>(0,_.jsx)(c.t,{variant:e.variant,children:e.label},e.label)),!!u&&(0,_.jsx)(o.s,{size:`xs`,className:`text-muted-foreground`,children:u})]})]})})}ie.displayName=`DenseInfoFinancial`;function F({title:e,description:t,statusLabel:n,statusVariant:r,metaPairs:i,date:a,priority:s,completedTasks:u,totalTasks:f,actions:p,className:m}){let h=f>0?Math.round(u/f*100):0,g=2*Math.PI*7,y=g-h/100*g;return(0,_.jsx)(l.t,{padding:`default`,actions:p,className:m,children:(0,_.jsxs)(`div`,{className:`space-y-3`,children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,_.jsx)(v.FolderOpen,{className:`h-4 w-4 text-muted-foreground`}),(0,_.jsx)(c.t,{variant:r,dot:!0,children:n})]}),(0,_.jsx)(o.o,{tag:`h5`,className:`font-bold border-none pb-0`,children:e}),!!t&&(0,_.jsx)(o.s,{type:`secondary`,className:`line-clamp-2`,children:t}),!!i&&i.length>0&&(0,_.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:i.map((e,t)=>(0,_.jsxs)(`span`,{className:`flex items-center gap-1`,children:[t>0&&(0,_.jsx)(o.s,{tag:`span`,type:`discrete`,className:`mx-0.5`,children:`•`}),!!e.icon&&(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e.icon}),(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,children:e.label})]},e.label))}),(!!a||!!s)&&(0,_.jsxs)(`div`,{className:`flex items-center justify-between`,children:[!!a&&(0,_.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,_.jsx)(v.Calendar,{className:`h-3 w-3 text-muted-foreground`}),(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,children:a})]}),!!s&&(0,_.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,_.jsx)(v.BarChart3,{className:`h-3 w-3 text-muted-foreground`}),(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,children:s})]})]}),(0,_.jsx)(d.t,{}),(0,_.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsxs)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 20 20`,className:`shrink-0`,children:[(0,_.jsx)(`circle`,{cx:`10`,cy:`10`,r:`7`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,className:`text-muted/50`}),(0,_.jsx)(`circle`,{cx:`10`,cy:`10`,r:`7`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeDasharray:g,strokeDashoffset:y,strokeLinecap:`round`,className:`text-primary`,transform:`rotate(-90 10 10)`})]}),(0,_.jsxs)(o.s,{size:`xs`,weight:`medium`,children:[u,`/`,f,` Tasks`]})]}),(0,_.jsx)(`div`,{className:`h-6 w-6 rounded-full bg-muted`})]})]})})}F.displayName=`DenseInfoProjectCard`;function I({title:e,description:t,statusBadges:n,score:i,scoreLevel:a,scoreFilled:s,scoreTotal:u=10,rows:f,footerBadges:p,actions:m,className:h}){let g=a===`good`?`bg-success`:a===`medium`?`bg-warning`:`bg-destructive`;return(0,_.jsx)(l.t,{title:e,description:t,actions:m,className:h,children:(0,_.jsxs)(`div`,{className:`space-y-3`,children:[(0,_.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:n.map(e=>(0,_.jsx)(c.t,{variant:e.variant,children:e.label},e.label))}),(0,_.jsx)(`div`,{className:`flex items-center justify-center py-2`,children:(0,_.jsx)(o.o,{tag:`h2`,className:`text-base font-bold tabular-nums border-none pb-0`,children:String(i)})}),(0,_.jsx)(`div`,{className:`flex items-center justify-center gap-1`,children:Array.from({length:u},(e,t)=>(0,_.jsx)(`div`,{className:r.cn(`h-5 w-2 rounded-sm`,t<s?g:`bg-muted`)},t))}),(0,_.jsx)(d.t,{}),(0,_.jsx)(`div`,{className:`space-y-2`,children:f.map(e=>(0,_.jsx)($,{label:e.label,value:e.value,mono:!0,labelClassName:`text-xs text-muted-foreground`,valueClassName:`text-sm font-semibold text-right`},e.label))}),!!p&&p.length>0&&(0,_.jsx)(`div`,{className:`flex flex-wrap items-center gap-2 border-t pt-2`,children:p.map(e=>(0,_.jsx)(c.t,{variant:e.variant,children:e.label},e.label))})]})})}I.displayName=`DenseInfoScoreCard`;var L={sm:`gap-1 rounded-full px-2 py-0.5`,md:`gap-1.5 rounded-full px-2.5 py-1`,base:`gap-1.5 rounded-full px-2.5 py-1`,lg:`gap-1.5 rounded-full px-3 py-1`},ae={sm:`xxs`,md:`xxs`,base:`xxs`,lg:`xs`},oe={sm:`xxs`,md:`xs`,base:`xs`,lg:`xs`},se={sm:`xxs`,md:`xxs`,base:`xxs`,lg:`xxs`};function R({metrics:e,className:t}){return(0,_.jsx)(`div`,{className:r.cn(`inline-metric--component`,`flex flex-wrap gap-1.5`,t),children:e.map(e=>{let t=e.size??`base`;return(0,_.jsxs)(`span`,{className:r.cn(`inline-flex items-center bg-card ring-1 ring-border/60`,L[t]??L.base),children:[(0,_.jsx)(o.s,{tag:`span`,size:ae[t]??`xxs`,type:`secondary`,children:e.label}),(0,_.jsx)(o.s,{tag:`span`,size:oe[t]??`xs`,weight:`semibold`,className:`tabular-nums`,children:e.value}),(0,_.jsxs)(o.s,{tag:`span`,size:se[t]??`xxs`,weight:`medium`,className:r.cn(`tabular-nums inline-flex items-center gap-0.5 rounded-full px-1`,e.up?`bg-success/10 text-success`:`bg-destructive/10 text-destructive`),children:[e.up?`↑`:`↓`,e.change]})]},e.label)})})}R.displayName=`InlineMetricBadge`;var ce=`ring-1 ring-border/50 shadow-sm`;function z({kpis:e,className:t}){return(0,_.jsx)(`div`,{className:r.cn(`mini-kpi--component`,`inline-flex items-center divide-x divide-border/50 rounded-xl bg-card px-2 py-2`,ce,t),children:e.map(e=>(0,_.jsxs)(`div`,{className:`flex flex-col items-center px-4`,children:[(0,_.jsx)(o.s,{weight:`bold`,className:`tabular-nums`,children:e.value}),(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,className:`text-xs`,children:e.label})]},e.label))})}z.displayName=`MiniKpiRow`;var B={select:`Select resource`,remove:`Remove resource`,emptyTitle:`No resource selected`,emptyDescription:`Choose a resource to continue.`};function V({resource:e,getKey:n,getTitle:a,getSubtitle:s,getMetadata:c,getBadges:u,getImageUrl:d,getIcon:f,renderResource:p,onSelect:m,onRemove:g,title:y,description:b,emptyTitle:x,emptyDescription:S,selectLabel:C,removeLabel:w,actions:T,padding:E,surface:D,className:O,contentClassName:k,strings:A}){let j=t.useStrings(B,A),M=C??j.select,N=w??j.remove,P=typeof N==`string`?N:j.remove;return(0,_.jsx)(l.t,{"data-component":`resource-selector-card`,"data-slot":`resource-selector-card`,title:y,description:b,headerAction:T??(0,_.jsxs)(`div`,{className:`flex w-full flex-wrap items-center justify-end gap-space-sm sm:w-auto sm:gap-space-md`,children:[!!e&&!!g&&(0,_.jsxs)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`small`,"aria-label":P,onClick:()=>g(e),children:[(0,_.jsx)(v.X,{className:`size-icon`}),(0,_.jsx)(`span`,{className:`hidden sm:inline`,children:N})]}),!!m&&(0,_.jsxs)(i.t,{type:`button`,variant:`secondary`,size:`small`,className:`min-w-0 max-w-full`,onClick:m,children:[(0,_.jsx)(v.Plus,{className:`size-icon`}),(0,_.jsx)(`span`,{className:`truncate`,children:M})]})]}),headerClassName:r.cn(`resource-selector-card--header flex-wrap`,`[&>div:first-child]:basis-full [&>div:last-child]:w-full [&>div:last-child]:justify-end`,`sm:[&>div:first-child]:basis-auto sm:[&>div:last-child]:w-auto`),padding:E,surface:D,className:r.cn(`resource-selector-card--component`,O),contentClassName:r.cn(`resource-selector-card--content`,k),children:e?(0,_.jsx)(`div`,{"data-resource-key":n(e),className:`resource-selector-card--selected min-w-0`,children:p?p(e):(0,_.jsx)(h.u,{title:a(e),subtitle:s?.(e),metadata:c?.(e),badges:u?.(e),imageUrl:d?.(e),icon:f?.(e),mediaClassName:`size-avatar-sm`,contentClassName:`gap-space-2xs`,subtitleClassName:`text-xs`})}):(0,_.jsx)(`div`,{className:`resource-selector-card--empty min-w-0`,children:(0,_.jsxs)(`div`,{className:`min-w-0`,children:[(0,_.jsx)(o.s,{weight:`semibold`,children:x??j.emptyTitle}),(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,className:`mt-space-2xs`,children:S??j.emptyDescription})]})})})}V.displayName=`ResourceSelectorCard`;var H={title:`Nothing here yet`,description:`Once data lands, it will show up in this view.`,ariaLabel:`Empty state`},le={small:`py-empty-state-y-small`,default:`py-empty-state-y`},ue=e=>e===`small`||e==="default"?e:e===`compact`?`small`:`default`,de={none:`default`,icon:`icon`,"icon-soft":`icon`,illustration:`default`},fe={none:void 0,icon:void 0,"icon-soft":`bg-muted/40 text-muted-foreground`,illustration:`mb-4`},U=(0,g.forwardRef)(function({title:e,description:n,media:i,mediaVariant:a=`none`,renderMedia:s,actions:c,footer:l,padding:d=`default`,border:f=!1,className:p,strings:m,ariaLabel:h},g){let v=t.useStrings(H,m),y=e??v.title,b=n===!1?null:n??v.description,x=s?s({mediaVariant:a}):i,S=!!x;return(0,_.jsxs)(u.s,{ref:g,role:`status`,"aria-label":h??v.ariaLabel,className:r.cn(`empty-state--component`,le[ue(d)],f?`border border-dashed`:`border-0`,p),children:[(0,_.jsxs)(u.u,{children:[!!S&&(0,_.jsx)(u.d,{variant:de[a],className:fe[a],children:x}),(0,_.jsx)(o.o,{tag:`h3`,className:`border-0 pb-0 text-base`,"data-slot":`empty-title`,children:y}),!!b&&(0,_.jsx)(o.s,{size:`xs`,type:`secondary`,className:`leading-relaxed [&>a]:text-primary [&>a]:underline [&>a]:underline-offset-4 hover:[&>a]:no-underline`,"data-slot":`empty-description`,children:b})]}),(!!c||!!l)&&(0,_.jsxs)(u.c,{children:[!!c&&(0,_.jsx)(`div`,{className:`flex flex-wrap items-center justify-center gap-2`,children:c}),!!l&&(0,_.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:l})]})]})});U.displayName=`EmptyState`;function W({className:e}){return(0,_.jsxs)(`div`,{className:r.cn(`relative h-24 w-32`,e),"aria-hidden":`true`,children:[(0,_.jsxs)(`div`,{className:`bg-muted/70 dark:bg-muted/40 border-border/50 absolute left-1 top-1 flex h-20 w-20 -rotate-6 flex-col gap-1.5 rounded-md border p-2 shadow-sm`,children:[(0,_.jsx)(`div`,{className:`bg-muted h-2 w-12 rounded`}),(0,_.jsx)(`div`,{className:`bg-muted/60 h-1.5 w-10 rounded`}),(0,_.jsx)(`div`,{className:`bg-muted/60 h-1.5 w-9 rounded`})]}),(0,_.jsxs)(`div`,{className:`bg-background border-border absolute right-1 top-2 flex h-20 w-20 rotate-3 flex-col gap-1.5 rounded-md border p-2 shadow-sm`,children:[(0,_.jsx)(`div`,{className:`bg-muted h-2 w-12 rounded`}),(0,_.jsx)(`div`,{className:`bg-muted/60 h-1.5 w-10 rounded`}),(0,_.jsx)(`div`,{className:`bg-muted/60 h-1.5 w-9 rounded`}),(0,_.jsxs)(`div`,{className:`mt-auto flex items-center gap-1`,children:[(0,_.jsx)(`div`,{className:`bg-success size-1.5 rounded-full`}),(0,_.jsx)(`div`,{className:`bg-muted/60 h-1.5 w-8 rounded`})]})]})]})}W.displayName=`DocumentStackIllustration`;function G({className:e}){return(0,_.jsxs)(`div`,{className:r.cn(`relative h-24 w-32`,e),"aria-hidden":`true`,children:[(0,_.jsx)(`div`,{className:`bg-success/12 border-success/30 absolute left-1/2 top-0 flex size-8 -translate-x-1/2 items-center justify-center rounded-full border`,children:(0,_.jsx)(`svg`,{viewBox:`0 0 16 16`,className:`text-success size-3.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,_.jsx)(`path`,{d:`M3 8l3 3 7-7`})})}),(0,_.jsxs)(`div`,{className:`bg-background border-border absolute inset-x-0 bottom-0 flex h-14 flex-col rounded-lg border shadow-sm`,children:[(0,_.jsx)(`div`,{className:`bg-muted/30 h-3 rounded-t-lg`}),(0,_.jsxs)(`div`,{className:`flex flex-1 items-center justify-between px-3`,children:[(0,_.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,_.jsx)(`div`,{className:`bg-muted/60 h-1.5 w-12 rounded`}),(0,_.jsx)(`div`,{className:`bg-muted/40 h-1.5 w-8 rounded`})]}),(0,_.jsx)(`div`,{className:`bg-muted/40 size-3 rounded-full`})]})]})]})}G.displayName=`InboxCleanIllustration`;function K({className:e}){return(0,_.jsx)(`div`,{className:r.cn(`flex size-20 items-center justify-center rounded-full bg-muted/40 ring-8 ring-muted/20`,e),"aria-hidden":`true`,children:(0,_.jsx)(v.Search,{className:`size-8 text-muted-foreground`})})}K.displayName=`SearchGlassIllustration`;function q({className:e}){return(0,_.jsxs)(`div`,{className:r.cn(`relative h-24 w-52`,e),"aria-hidden":`true`,children:[(0,_.jsx)(`div`,{className:`bg-muted/60 dark:bg-muted/30 border-border/50 absolute inset-x-6 top-0 h-6 rounded-t-lg border`}),(0,_.jsx)(`div`,{className:`bg-muted/80 dark:bg-muted/50 border-border/60 absolute inset-x-3 top-3 h-6 rounded-t-lg border`}),(0,_.jsxs)(`div`,{className:`bg-background border-border absolute inset-x-0 top-6 flex h-16 items-center gap-3 rounded-lg border px-4 shadow-sm`,children:[(0,_.jsx)(`div`,{className:`bg-muted size-8 shrink-0 rounded`}),(0,_.jsxs)(`div`,{className:`flex flex-1 flex-col gap-1.5`,children:[(0,_.jsx)(`div`,{className:`bg-muted h-2.5 w-3/4 rounded`}),(0,_.jsx)(`div`,{className:`bg-muted/60 h-2 w-1/2 rounded`})]})]}),(0,_.jsx)(`div`,{className:`from-background/0 via-background/60 to-background pointer-events-none absolute inset-x-0 bottom-0 h-8 bg-linear-to-b`})]})}q.displayName=`StackedCardsIllustration`;function J({className:e}){return(0,_.jsxs)(`div`,{className:r.cn(`relative flex h-24 w-32 items-center justify-center`,e),"aria-hidden":`true`,children:[(0,_.jsx)(`div`,{className:`bg-muted/70 border-border absolute left-2 size-12 rounded-full border-2`}),(0,_.jsx)(`div`,{className:`bg-muted border-border z-10 size-14 rounded-full border-2 shadow-sm`}),(0,_.jsx)(`div`,{className:`bg-muted/60 border-border absolute right-2 size-10 rounded-full border-2`})]})}J.displayName=`UsersCircleIllustration`;var pe={copySuccess:`Email copied to clipboard`};function Y({email:e,copyable:i=!0,copySuccessMessage:a,emptyLabel:s=`—`,clickable:c=!0,strings:l,size:u,type:d=`main`,tag:p=`span`,className:m,...h}){let{defaultTextSize:g}=n.p(),v=u??g??`sm`,y=t.useStrings(t.useStrings(pe,a?{copySuccess:a}:void 0),l);if(!e||e.trim().length===0)return(0,_.jsx)(o.s,{size:v,type:`secondary`,tag:p,className:r.cn(`email-display--component`,m),...h,children:s});let b=(0,_.jsx)(o.s,{size:v,type:d,tag:`span`,className:r.cn(`font-medium`,`decoration-dotted decoration-border underline underline-offset-4`,`transition-colors duration-200`,c?`hover:decoration-current`:null,m),children:e});if(i){let t=(0,_.jsx)(f.t,{value:e,displayValue:b,successMessage:y.copySuccess,className:`-mx-0`});return c?(0,_.jsx)(`a`,{href:`mailto:${e}`,className:`inline-flex items-center no-underline`,onClick:e=>e.stopPropagation(),children:t}):t}return c?(0,_.jsx)(`a`,{href:`mailto:${e}`,className:`inline-flex items-center no-underline`,children:b}):b}Y.displayName=`EmailDisplay`;var me={copySuccess:`Phone number copied to clipboard`};function he(e){return e.replace(/[\s().-]/g,``)}function ge({phone:e,copyable:i=!0,copySuccessMessage:a,emptyLabel:s=`—`,clickable:c=!0,strings:l,size:u,type:d=`main`,tag:p=`span`,className:m,...h}){let{defaultTextSize:g}=n.p(),v=u??g??`sm`,y=t.useStrings(t.useStrings(me,a?{copySuccess:a}:void 0),l);if(!e||e.trim().length===0)return(0,_.jsx)(o.s,{size:v,type:`secondary`,tag:p,className:r.cn(`phone-display--component`,m),...h,children:s});let b=(0,_.jsx)(o.s,{size:v,type:d,tag:`span`,className:r.cn(`font-medium`,`decoration-dotted decoration-border underline underline-offset-4`,`transition-colors duration-200`,c?`hover:decoration-current`:null,m),children:e});if(i){let t=(0,_.jsx)(f.t,{value:e,displayValue:b,successMessage:y.copySuccess,className:`-mx-0`});return c?(0,_.jsx)(`a`,{href:`tel:${he(e)}`,className:`inline-flex items-center no-underline`,onClick:e=>e.stopPropagation(),children:t}):t}return c?(0,_.jsx)(`a`,{href:`tel:${he(e)}`,className:`inline-flex items-center no-underline`,children:b}):b}ge.displayName=`PhoneDisplay`;var _e={copySuccess:`URL copied to clipboard`,httpWarning:`This URL uses HTTP which is not secure`};function ve(e){try{return new URL(e).protocol===`http:`}catch{return e.toLowerCase().startsWith(`http://`)}}function ye(e,t,n){if(!t||e.length<=n)return e;try{let t=new URL(e),r=t.hostname,i=n-r.length-5;return i>10?`${r}${t.pathname.slice(0,i)}...`:`${e.slice(0,n-3)}...`}catch{return`${e.slice(0,n-3)}...`}}function be({url:e,copyable:i=!0,copySuccessMessage:s,emptyLabel:c=`—`,clickable:l=!0,truncate:u=!1,maxLength:d=50,showExternalIcon:p=!0,httpWarningMessage:m,strings:h,size:g,type:y=`main`,tag:b=`span`,className:x,...S}){let{defaultTextSize:C}=n.p(),w=g??C??`sm`,T=t.useStrings(t.useStrings(_e,s||m?{copySuccess:s,httpWarning:m}:void 0),h);if(!e||e.trim().length===0)return(0,_.jsx)(o.s,{size:w,type:`secondary`,tag:b,className:r.cn(`url-display--component`,x),...S,children:c});let E=ve(e),D=ye(e,u,d),O=u&&e.length>d,k=(0,_.jsxs)(o.s,{size:w,type:y,tag:`span`,className:`inline-flex items-center gap-1.5`,children:[!!E&&(0,_.jsxs)(a.t,{children:[(0,_.jsx)(a.i,{render:e=>{let{type:t,disabled:n,className:i,...a}=e;return(0,_.jsx)(`span`,{...a,tabIndex:0,role:`img`,"aria-label":T.httpWarning,className:r.cn(`inline-flex items-center text-warning`,i),children:(0,_.jsx)(v.ShieldAlert,{className:`size-3.5`,"aria-hidden":`true`})})}}),(0,_.jsx)(a.n,{side:`top`,className:`max-w-xs`,children:(0,_.jsx)(o.s,{size:`xs`,children:T.httpWarning})})]}),(0,_.jsx)(`span`,{className:r.cn(`decoration-dotted underline underline-offset-4`,`transition-colors duration-200`,E?`decoration-warning`:`decoration-border`,l?`hover:decoration-current`:null),title:O&&e||void 0,children:D}),!!l&&!!p&&(0,_.jsx)(v.ExternalLink,{className:`size-3 text-muted-foreground`})]});if(i){let t=(0,_.jsx)(f.t,{value:e,displayValue:k,successMessage:T.copySuccess,className:r.cn(`-mx-0`,x)});return l?(0,_.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center no-underline`,onClick:e=>e.stopPropagation(),children:t}):t}return l?(0,_.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center no-underline`,children:k}):k}be.displayName=`UrlDisplay`;var xe={formatInfoAriaLabel:e=>`${e} info`,infoFallback:`Info`},Se={1:`grid-cols-1`,2:`grid-cols-1 sm:grid-cols-2`,3:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3`,4:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4`},Ce={start:`justify-start`,end:`justify-end`,center:`justify-center`,between:`justify-between`,around:`justify-around`,evenly:`justify-evenly`},X={start:`items-start`,center:`items-center`,end:`items-end`,baseline:`items-baseline`},Z=(e,t)=>e.id?e.id:`metadata-${typeof e.label==`string`?e.label:`${t}`}-${t}`;function Q({triggerProps:e,ariaLabel:t}){let{className:n,...a}=e;return(0,_.jsx)(i.t,{...a,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,className:r.cn(`metadata-list--info-trigger -mx-space-2xs inline-flex size-avatar-sm shrink-0 items-center justify-center rounded-sm`,`text-muted-foreground transition-colors hover:text-foreground`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,n),"aria-label":t,children:(0,_.jsx)(v.Info,{className:`size-icon-sm cursor-help`})})}function we({items:e,columns:n=2,dense:i=!1,emptyLabel:s=`—`,title:c,titleSeparator:l=!1,className:u,gapClassName:f,labelClassName:p,valueClassName:m,descriptionClassName:h,layout:v=`vertical`,justify:y=`start`,align:b=`center`,separator:x=`: `,itemSeparator:S=!1,wrap:C=!0,strings:w}){let T=t.useStrings(xe,w),E=g.default.useMemo(()=>e.filter(Boolean),[e]);if(g.default.useEffect(()=>{},[v,E]),E.length===0)return null;let D=Se[n]??Se[2],O=f??(i?`gap-space-md`:`gap-space-xl`),k=`text-xs`,A=i?`text-xs`:`text-sm`,j=`font-medium text-xs text-muted-foreground uppercase tracking-wide`,M=c!=null,N=M&&l;if(v===`horizontal`){let e=Ce[y]??Ce.start,t=X[b]??X.center,n=typeof S==`string`?S:S?` | `:``,l=i?`gap-space-sm`:`gap-space-md`,f=C?`flex-wrap`:`flex-nowrap`;return(0,_.jsxs)(`div`,{className:r.cn(`metadata-list--component`,`metadata-list-container`,u),children:[!!M&&(0,_.jsx)(o.o,{tag:`h6`,className:r.cn(`mb-space-sm`,j),children:c}),!!N&&(0,_.jsx)(d.t,{className:`mb-2`}),(0,_.jsx)(`div`,{className:r.cn(`flex`,f,e,t,l),children:E.map((e,t)=>{let c=Z(e,t),l=e.emptyLabel??s,u=e.value===null||e.value===void 0,d=e.value??l,f=e.icon,h=e.tooltip!==null&&e.tooltip!==void 0,v=typeof e.render==`function`,y=n&&t<E.length-1;return(0,_.jsxs)(g.default.Fragment,{children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-space-md`,children:[!!f&&(0,_.jsx)(f,{className:r.cn(`flex-shrink-0`,i?`size-icon-sm`:`size-icon`,`text-muted-foreground`)}),(0,_.jsx)(o.s,{size:`inherit`,type:`main`,weight:`semibold`,className:r.cn(`metadata--field tracking-wide whitespace-nowrap`,k,p),children:e.label}),!!h&&(0,_.jsxs)(a.t,{children:[(0,_.jsx)(a.i,{render:t=>(0,_.jsx)(Q,{triggerProps:t,ariaLabel:typeof e.label==`string`?T.formatInfoAriaLabel(e.label):T.infoFallback})}),(0,_.jsx)(a.n,{side:`top`,align:`start`,className:`max-w-xs`,children:(0,_.jsx)(o.s,{type:`inverse`,size:`xs`,children:e.tooltip})})]}),(0,_.jsx)(o.s,{size:`inherit`,type:`secondary`,children:x}),v?e.render?.(e):(0,_.jsx)(o.s,{className:r.cn(A,`leading-tight`,u?`text-foreground/50`:`text-foreground`,m),children:d})]}),!!y&&(0,_.jsx)(o.s,{size:`inherit`,type:`secondary`,children:n})]},c)})})]})}if(v===`rows`){let e=i?`py-row-y-sm`:`py-row-y`;return(0,_.jsxs)(`div`,{className:r.cn(`metadata-list--component`,`metadata-list-container`,u),children:[!!M&&(0,_.jsx)(o.o,{tag:`h6`,className:r.cn(`mb-space-md`,j),children:c}),!!N&&(0,_.jsx)(d.t,{className:`mb-2`}),(0,_.jsx)(`dl`,{className:`divide-y divide-border/50`,children:E.map((t,n)=>{let c=Z(t,n),l=t.emptyLabel??s,u=t.value===null||t.value===void 0,d=t.value??l,f=t.icon,g=t.tooltip!==null&&t.tooltip!==void 0,v=typeof t.render==`function`;return(0,_.jsxs)(`div`,{className:r.cn(`grid items-baseline gap-x-space-xl gap-y-space-sm grid-cols-[minmax(9rem,1fr)_2fr]`,e),children:[(0,_.jsxs)(`dt`,{className:`flex items-center gap-space-sm min-w-0`,children:[!!f&&(0,_.jsx)(f,{className:r.cn(`flex-shrink-0 text-muted-foreground`,i?`size-icon-sm`:`size-icon`)}),(0,_.jsx)(o.s,{type:`main`,weight:`semibold`,className:r.cn(`metadata--field truncate tracking-wide`,k,p),children:t.label}),!!g&&(0,_.jsxs)(a.t,{children:[(0,_.jsx)(a.i,{render:e=>(0,_.jsx)(Q,{triggerProps:e,ariaLabel:typeof t.label==`string`?T.formatInfoAriaLabel(t.label):T.infoFallback})}),(0,_.jsx)(a.n,{side:`top`,align:`start`,className:`max-w-xs`,children:(0,_.jsx)(o.s,{type:`inverse`,size:`xs`,children:t.tooltip})})]})]}),(0,_.jsxs)(`dd`,{className:`min-w-0`,children:[v?t.render?.(t):(0,_.jsx)(o.s,{className:r.cn(A,`break-words leading-tight`,u?`text-foreground/50`:`text-foreground`,m),children:d}),!!t.description&&(0,_.jsx)(o.s,{size:`inherit`,type:`secondary`,className:r.cn(`mt-space-xs text-xs leading-snug`,h),children:t.description})]})]},c)})})]})}return(0,_.jsxs)(`div`,{className:r.cn(`metadata-list--component`,`metadata-list-container`,u),children:[!!M&&(0,_.jsx)(o.o,{tag:`h6`,className:r.cn(`mb-space-sm`,j),children:c}),!!N&&(0,_.jsx)(d.t,{className:`mb-2`}),(0,_.jsx)(`div`,{className:r.cn(`grid`,D,O),children:E.map((e,t)=>{let n=Z(e,t),c=e.emptyLabel??s,l=e.value===null||e.value===void 0,u=e.value??c,d=e.icon,f=e.tooltip!==null&&e.tooltip!==void 0,g=typeof e.render==`function`;return(0,_.jsxs)(`div`,{className:r.cn(`grid min-w-0`,`gap-space-sm`),children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-space-sm`,children:[!!d&&(0,_.jsx)(d,{className:r.cn(`flex-shrink-0`,i?`size-icon-sm`:`size-icon`,`text-muted-foreground`)}),(0,_.jsx)(o.s,{size:`inherit`,type:`main`,weight:`semibold`,className:r.cn(`metadata--field tracking-wide`,k,p),children:e.label}),!!f&&(0,_.jsxs)(a.t,{children:[(0,_.jsx)(a.i,{render:t=>(0,_.jsx)(Q,{triggerProps:t,ariaLabel:typeof e.label==`string`?T.formatInfoAriaLabel(e.label):T.infoFallback})}),(0,_.jsx)(a.n,{side:`top`,align:`start`,className:`max-w-xs`,children:(0,_.jsx)(o.s,{type:`inverse`,size:`xs`,children:e.tooltip})})]})]}),g?e.render?.(e):(0,_.jsx)(o.s,{className:r.cn(A,`leading-tight`,l?`text-foreground/50`:`text-foreground`,m),children:u}),!!e.description&&(0,_.jsx)(o.s,{size:`inherit`,type:`secondary`,className:r.cn(`text-xs leading-snug`,h),children:e.description})]},n)})})]})}we.displayName=`MetadataList`;function $({label:e,value:t,layout:n=`between`,mono:i=!1,className:a,labelClassName:s,valueClassName:c}){return n===`stacked`?(0,_.jsxs)(`div`,{className:r.cn(`inline-stat--component`,`flex flex-col gap-space-2xs`,a),children:[(0,_.jsx)(o.s,{tag:`span`,size:`inherit`,type:`secondary`,className:r.cn(`text-xs leading-tight`,s),children:e}),(0,_.jsx)(o.s,{tag:`span`,size:`inherit`,className:r.cn(`text-sm leading-snug`,i&&`tabular-nums`,c),children:t})]}):(0,_.jsxs)(`div`,{className:r.cn(`inline-stat--component flex items-center gap-space-md`,n===`between`?`justify-between`:`justify-start`,a),children:[(0,_.jsx)(o.s,{tag:`span`,size:`inherit`,type:`secondary`,className:r.cn(`text-xs leading-tight`,s),children:e}),(0,_.jsx)(o.s,{tag:`span`,size:`inherit`,className:r.cn(`text-sm leading-snug`,i&&`tabular-nums`,c),children:t})]})}$.displayName=`InlineStat`;var Te=`—`,Ee=(e,t,n)=>{if(e==null||e===``)return null;if(typeof e==`string`)return e;if(Number.isNaN(e))return null;try{return new Intl.NumberFormat(t,n).format(e)}catch{return String(e)}};function De({value:e,align:t=`right`,locale:i,formatOptions:a,emptyLabel:s=Te,size:c,weight:l,type:u,className:d,...f}){let{defaultTextSize:p}=n.p(),m=c??p??`sm`,h=Ee(e,i,a),g=t===`right`?`text-right`:t===`center`?`text-center`:`text-left`;return h===null?(0,_.jsx)(o.s,{size:m,weight:l,type:u??`secondary`,className:r.cn(`numeric-value--component`,`tabular-nums`,g,d),...f,children:s}):(0,_.jsx)(o.s,{size:m,weight:l,type:u,className:r.cn(`tabular-nums`,g,d),...f,children:h})}De.displayName=`NumericValue`;var Oe={small:{avatar:`size-avatar-sm`,gap:`gap-space-sm`,nameClass:`text-xs`,subtitleClass:`text-xs`},default:{avatar:`size-avatar`,gap:`gap-space-md`,nameClass:`text-sm`,subtitleClass:`text-xs`}};function ke(e){return e===`small`||e==="default"?e:e===`xs`||e===`sm`?`small`:`default`}function Ae({name:e,subtitle:t,avatarUrl:n,avatarAlt:i,initials:a,avatar:s,trailing:c,size:l=`default`,className:u}){let d=Oe[ke(l)],f=s??(0,_.jsxs)(p.t,{className:d.avatar,children:[!!n&&(0,_.jsx)(p.o,{src:n,alt:i??(typeof e==`string`?e:void 0)}),!!a&&(0,_.jsx)(p.r,{children:a})]});return(0,_.jsxs)(`div`,{className:r.cn(`user-cell--component`,`flex items-center`,d.gap,u),children:[f,(0,_.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,_.jsx)(o.s,{size:`inherit`,weight:`semibold`,className:r.cn(`truncate leading-snug`,d.nameClass),children:e}),!!t&&(0,_.jsx)(o.s,{size:`inherit`,type:`secondary`,className:r.cn(`truncate leading-tight`,d.subtitleClass),children:t})]}),!!c&&(0,_.jsx)(`div`,{className:`shrink-0`,children:c})]})}Ae.displayName=`UserCell`;function je({title:e,description:t,badge:n,action:i,dense:a=!1,className:s}){return(0,_.jsxs)(`div`,{className:r.cn(`section-header--component`,`flex items-start justify-between`,a?`gap-2`:`gap-3`,s),children:[(0,_.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,_.jsxs)(`div`,{className:r.cn(`flex items-center`,a?`gap-1.5`:`gap-2`),children:[(0,_.jsx)(o.s,{size:a?`xs`:`sm`,weight:`semibold`,className:`truncate`,children:e}),!!n&&(0,_.jsx)(`span`,{className:`shrink-0`,children:n})]}),!!t&&(0,_.jsx)(o.s,{size:a?`xxs`:`xs`,type:`secondary`,className:a?`mt-0.5`:`mt-1`,children:t})]}),!!i&&(0,_.jsx)(`div`,{className:`shrink-0`,children:i})]})}je.displayName=`SectionHeader`,Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return R}});
2
+ //# sourceMappingURL=data-display-B9Lciun3.cjs.map