admin-ui-starter-kit 0.6.5 → 0.6.7

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 (1204) hide show
  1. package/.agents/skills/component-library-rules/references/components/base__cards.md +7 -8
  2. package/.agents/skills/component-library-rules/references/components/base__carousel.md +4 -4
  3. package/.agents/skills/component-library-rules/references/components/base__combobox.md +1 -1
  4. package/.agents/skills/component-library-rules/references/components/base__css-variables.md +2 -1
  5. package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +1 -1
  6. package/.agents/skills/component-library-rules/references/components/base__table.md +32 -11
  7. package/.agents/skills/component-library-rules/references/components/base__typography.md +1 -1
  8. package/.agents/skills/component-library-rules/references/components/composed__metadata-list.md +3 -3
  9. package/.agents/skills/component-library-rules/references/components/features__activities.md +1 -1
  10. package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +6 -6
  11. package/.agents/skills/component-library-rules/references/components/features__metrics-overview.md +3 -3
  12. package/.agents/skills/component-library-rules/references/components/features__overlays.md +2 -2
  13. package/.agents/skills/component-library-rules/references/components/features__products.md +1 -1
  14. package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +1 -1
  15. package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +3 -3
  16. package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +2 -2
  17. package/dist/_shared/accordion-CxjH2WZG.js +135 -0
  18. package/dist/_shared/accordion-CxjH2WZG.js.map +1 -0
  19. package/dist/_shared/accordion-mTdJmy23.cjs +2 -0
  20. package/dist/_shared/accordion-mTdJmy23.cjs.map +1 -0
  21. package/dist/_shared/action-menu-BrHF4nss.cjs +2 -0
  22. package/dist/_shared/action-menu-BrHF4nss.cjs.map +1 -0
  23. package/dist/_shared/action-menu-Crn22LKo.js +96 -0
  24. package/dist/_shared/action-menu-Crn22LKo.js.map +1 -0
  25. package/dist/_shared/ai-artifact-CS2Pv-bu.js +1099 -0
  26. package/dist/_shared/ai-artifact-CS2Pv-bu.js.map +1 -0
  27. package/dist/_shared/ai-artifact-R4bxz5Iq.cjs +3 -0
  28. package/dist/_shared/ai-artifact-R4bxz5Iq.cjs.map +1 -0
  29. package/dist/_shared/alert-BisCSsOE.cjs +2 -0
  30. package/dist/_shared/alert-BisCSsOE.cjs.map +1 -0
  31. package/dist/_shared/alert-D23Q7I0W.js +81 -0
  32. package/dist/_shared/alert-D23Q7I0W.js.map +1 -0
  33. package/dist/_shared/app-shell-BZQJfTkf.cjs +2 -0
  34. package/dist/_shared/app-shell-BZQJfTkf.cjs.map +1 -0
  35. package/dist/_shared/app-shell-Da6GHxTZ.js +69 -0
  36. package/dist/_shared/app-shell-Da6GHxTZ.js.map +1 -0
  37. package/dist/_shared/auth-BV9Daibu.cjs +2 -0
  38. package/dist/_shared/auth-BV9Daibu.cjs.map +1 -0
  39. package/dist/_shared/auth-DACpcTnL.js +643 -0
  40. package/dist/_shared/auth-DACpcTnL.js.map +1 -0
  41. package/dist/_shared/badge-B4oBB5BJ.js +110 -0
  42. package/dist/_shared/badge-B4oBB5BJ.js.map +1 -0
  43. package/dist/_shared/badge-DvUA9Pr2.cjs +2 -0
  44. package/dist/_shared/badge-DvUA9Pr2.cjs.map +1 -0
  45. package/dist/_shared/breadcrumbs-CuT0YIfo.js +105 -0
  46. package/dist/_shared/breadcrumbs-CuT0YIfo.js.map +1 -0
  47. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs +2 -0
  48. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs.map +1 -0
  49. package/dist/_shared/button-BMiPFJIb.cjs +2 -0
  50. package/dist/_shared/button-BMiPFJIb.cjs.map +1 -0
  51. package/dist/_shared/button-vv59_uS_.js +189 -0
  52. package/dist/_shared/button-vv59_uS_.js.map +1 -0
  53. package/dist/_shared/buttons-CvqIMv3I.js +137 -0
  54. package/dist/_shared/buttons-CvqIMv3I.js.map +1 -0
  55. package/dist/_shared/buttons-tCkWktN3.cjs +2 -0
  56. package/dist/_shared/buttons-tCkWktN3.cjs.map +1 -0
  57. package/dist/_shared/card-radio-group-BL--IyPB.js +150 -0
  58. package/dist/_shared/card-radio-group-BL--IyPB.js.map +1 -0
  59. package/dist/_shared/card-radio-group-Cl5ptR1d.cjs +2 -0
  60. package/dist/_shared/card-radio-group-Cl5ptR1d.cjs.map +1 -0
  61. package/dist/_shared/cards-CMNXFo3Y.js +354 -0
  62. package/dist/_shared/cards-CMNXFo3Y.js.map +1 -0
  63. package/dist/_shared/cards-DQN9fcwo.cjs +2 -0
  64. package/dist/_shared/cards-DQN9fcwo.cjs.map +1 -0
  65. package/dist/_shared/combobox-D0avSXIB.cjs +2 -0
  66. package/dist/_shared/combobox-D0avSXIB.cjs.map +1 -0
  67. package/dist/_shared/combobox-Df0srISK.js +954 -0
  68. package/dist/_shared/combobox-Df0srISK.js.map +1 -0
  69. package/dist/_shared/command-B5BpMgBT.js +39 -0
  70. package/dist/_shared/command-B5BpMgBT.js.map +1 -0
  71. package/dist/_shared/command-en62SpQ7.cjs +2 -0
  72. package/dist/_shared/command-en62SpQ7.cjs.map +1 -0
  73. package/dist/_shared/comments-CfkortDW.js +952 -0
  74. package/dist/_shared/comments-CfkortDW.js.map +1 -0
  75. package/dist/_shared/comments-yVd7QMOu.cjs +2 -0
  76. package/dist/_shared/comments-yVd7QMOu.cjs.map +1 -0
  77. package/dist/_shared/copyable-Cn7tRGL5.js +38 -0
  78. package/dist/_shared/copyable-Cn7tRGL5.js.map +1 -0
  79. package/dist/_shared/copyable-CoKTxMSP.cjs +2 -0
  80. package/dist/_shared/copyable-CoKTxMSP.cjs.map +1 -0
  81. package/dist/_shared/data-display-BG7CD164.js +1873 -0
  82. package/dist/_shared/data-display-BG7CD164.js.map +1 -0
  83. package/dist/_shared/data-display-CXVoX3la.cjs +2 -0
  84. package/dist/_shared/data-display-CXVoX3la.cjs.map +1 -0
  85. package/dist/_shared/date-picker-Bf-nnyi-.js +1361 -0
  86. package/dist/_shared/date-picker-Bf-nnyi-.js.map +1 -0
  87. package/dist/_shared/date-picker-Cox4PAUt.cjs +2 -0
  88. package/dist/_shared/date-picker-Cox4PAUt.cjs.map +1 -0
  89. package/dist/_shared/date-pickers-DbN4q0dn.cjs +2 -0
  90. package/dist/_shared/date-pickers-DbN4q0dn.cjs.map +1 -0
  91. package/dist/_shared/date-pickers-DvrOCP-s.js +329 -0
  92. package/dist/_shared/date-pickers-DvrOCP-s.js.map +1 -0
  93. package/dist/_shared/display-BQijMo37.js +986 -0
  94. package/dist/_shared/display-BQijMo37.js.map +1 -0
  95. package/dist/_shared/display-C0ut-Lew.cjs +2 -0
  96. package/dist/_shared/display-C0ut-Lew.cjs.map +1 -0
  97. package/dist/_shared/form-sizing-DJus3nK3.cjs +2 -0
  98. package/dist/_shared/form-sizing-DJus3nK3.cjs.map +1 -0
  99. package/dist/_shared/form-sizing-DWjJsQSR.js +42 -0
  100. package/dist/_shared/form-sizing-DWjJsQSR.js.map +1 -0
  101. package/dist/_shared/forms-BjG7QIb1.cjs +2 -0
  102. package/dist/_shared/forms-BjG7QIb1.cjs.map +1 -0
  103. package/dist/_shared/forms-DljDdyXR.js +3533 -0
  104. package/dist/_shared/forms-DljDdyXR.js.map +1 -0
  105. package/dist/_shared/header-BpFJRINR.cjs +2 -0
  106. package/dist/_shared/header-BpFJRINR.cjs.map +1 -0
  107. package/dist/_shared/header-CKqQF4_r.js +447 -0
  108. package/dist/_shared/header-CKqQF4_r.js.map +1 -0
  109. package/dist/_shared/hooks-DcCkbP1F.js +95 -0
  110. package/dist/_shared/hooks-DcCkbP1F.js.map +1 -0
  111. package/dist/_shared/hooks-RkLytuGj.cjs +2 -0
  112. package/dist/_shared/hooks-RkLytuGj.cjs.map +1 -0
  113. package/dist/_shared/input-Cin0qpjj.js +182 -0
  114. package/dist/_shared/input-Cin0qpjj.js.map +1 -0
  115. package/dist/_shared/input-uuWeiagN.cjs +2 -0
  116. package/dist/_shared/input-uuWeiagN.cjs.map +1 -0
  117. package/dist/_shared/item-CIlSaQg8.js +226 -0
  118. package/dist/_shared/item-CIlSaQg8.js.map +1 -0
  119. package/dist/_shared/item-CSk9Y2qB.cjs +2 -0
  120. package/dist/_shared/item-CSk9Y2qB.cjs.map +1 -0
  121. package/dist/_shared/layout-Cun0HPL4.cjs +2 -0
  122. package/dist/_shared/layout-Cun0HPL4.cjs.map +1 -0
  123. package/dist/_shared/layout-HrU5gwH3.js +261 -0
  124. package/dist/_shared/layout-HrU5gwH3.js.map +1 -0
  125. package/dist/_shared/mentions-BqN82Fon.cjs +2 -0
  126. package/dist/_shared/mentions-BqN82Fon.cjs.map +1 -0
  127. package/dist/_shared/mentions-DV0FT1Th.js +506 -0
  128. package/dist/_shared/mentions-DV0FT1Th.js.map +1 -0
  129. package/dist/_shared/money-display-D5FCRhzB.cjs +2 -0
  130. package/dist/_shared/money-display-D5FCRhzB.cjs.map +1 -0
  131. package/dist/_shared/money-display-FcCAQDCz.js +198 -0
  132. package/dist/_shared/money-display-FcCAQDCz.js.map +1 -0
  133. package/dist/_shared/navigation-CI_Dd8jM.js +436 -0
  134. package/dist/_shared/navigation-CI_Dd8jM.js.map +1 -0
  135. package/dist/_shared/navigation-DUGhCPzJ.cjs +2 -0
  136. package/dist/_shared/navigation-DUGhCPzJ.cjs.map +1 -0
  137. package/dist/_shared/overlays-BRLemLSn.cjs +2 -0
  138. package/dist/_shared/overlays-BRLemLSn.cjs.map +1 -0
  139. package/dist/_shared/overlays-Bef7VNYY.js +735 -0
  140. package/dist/_shared/overlays-Bef7VNYY.js.map +1 -0
  141. package/dist/_shared/popover-menu-CAjhhTfX.js +93 -0
  142. package/dist/_shared/popover-menu-CAjhhTfX.js.map +1 -0
  143. package/dist/_shared/popover-menu-DlkRgOkR.cjs +2 -0
  144. package/dist/_shared/popover-menu-DlkRgOkR.cjs.map +1 -0
  145. package/dist/_shared/rich-text-editor-Bpt3r3J3.js +620 -0
  146. package/dist/_shared/rich-text-editor-Bpt3r3J3.js.map +1 -0
  147. package/dist/_shared/rich-text-editor-DUTX7kBa.cjs +2 -0
  148. package/dist/_shared/rich-text-editor-DUTX7kBa.cjs.map +1 -0
  149. package/dist/_shared/settings-CNT4-6u8.cjs +2 -0
  150. package/dist/_shared/settings-CNT4-6u8.cjs.map +1 -0
  151. package/dist/_shared/settings-CRP6409J.js +143 -0
  152. package/dist/_shared/settings-CRP6409J.js.map +1 -0
  153. package/dist/_shared/sidebar-B0LcBrfI.cjs +2 -0
  154. package/dist/_shared/sidebar-B0LcBrfI.cjs.map +1 -0
  155. package/dist/_shared/sidebar-Bc6JsOTD.js +548 -0
  156. package/dist/_shared/sidebar-Bc6JsOTD.js.map +1 -0
  157. package/dist/_shared/spinner-CVG62sGs.js +67 -0
  158. package/dist/_shared/spinner-CVG62sGs.js.map +1 -0
  159. package/dist/_shared/spinner-VjdonFU2.cjs +2 -0
  160. package/dist/_shared/spinner-VjdonFU2.cjs.map +1 -0
  161. package/dist/_shared/table-_yujELN3.js +1377 -0
  162. package/dist/_shared/table-_yujELN3.js.map +1 -0
  163. package/dist/_shared/table-iV8H1AE0.cjs +2 -0
  164. package/dist/_shared/table-iV8H1AE0.cjs.map +1 -0
  165. package/dist/_shared/textarea-B4zbbqff.cjs +2 -0
  166. package/dist/_shared/textarea-B4zbbqff.cjs.map +1 -0
  167. package/dist/_shared/textarea-Dp0RU-rc.js +118 -0
  168. package/dist/_shared/textarea-Dp0RU-rc.js.map +1 -0
  169. package/dist/_shared/typography-DXvCmE8w.js +201 -0
  170. package/dist/_shared/typography-DXvCmE8w.js.map +1 -0
  171. package/dist/_shared/typography-pzCKaFOc.cjs +2 -0
  172. package/dist/_shared/typography-pzCKaFOc.cjs.map +1 -0
  173. package/dist/_shared/workspace-C3U57t2a.cjs +2 -0
  174. package/dist/_shared/workspace-C3U57t2a.cjs.map +1 -0
  175. package/dist/_shared/workspace-Db--ow3r.js +357 -0
  176. package/dist/_shared/workspace-Db--ow3r.js.map +1 -0
  177. package/dist/components/base/accordion/index.cjs +1 -1
  178. package/dist/components/base/accordion/index.js +1 -1
  179. package/dist/components/base/badge/badge.d.ts.map +1 -1
  180. package/dist/components/base/badge/index.cjs +1 -1
  181. package/dist/components/base/badge/index.js +1 -1
  182. package/dist/components/base/buttons/index.cjs +1 -1
  183. package/dist/components/base/buttons/index.js +2 -2
  184. package/dist/components/base/cards/index.cjs +1 -1
  185. package/dist/components/base/cards/index.js +1 -1
  186. package/dist/components/base/cards/smart-card.types.d.ts +3 -3
  187. package/dist/components/base/carousel/index.cjs +1 -1
  188. package/dist/components/base/carousel/index.js +1 -1
  189. package/dist/components/base/combobox/index.cjs +1 -1
  190. package/dist/components/base/combobox/index.js +1 -1
  191. package/dist/components/base/command/index.cjs +1 -1
  192. package/dist/components/base/command/index.js +1 -1
  193. package/dist/components/base/copyable/index.cjs +1 -1
  194. package/dist/components/base/copyable/index.js +1 -1
  195. package/dist/components/base/currency/index.cjs +1 -1
  196. package/dist/components/base/currency/index.js +1 -1
  197. package/dist/components/base/date-pickers/index.cjs +1 -1
  198. package/dist/components/base/date-pickers/index.js +2 -2
  199. package/dist/components/base/display/chart.cjs +1 -1
  200. package/dist/components/base/display/chart.js +1 -1
  201. package/dist/components/base/display/index.cjs +1 -1
  202. package/dist/components/base/display/index.js +3 -3
  203. package/dist/components/base/event-calendar/index.cjs +1 -1
  204. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  205. package/dist/components/base/event-calendar/index.js +6 -6
  206. package/dist/components/base/event-calendar/index.js.map +1 -1
  207. package/dist/components/base/forms/index.cjs +1 -1
  208. package/dist/components/base/forms/index.js +5 -5
  209. package/dist/components/base/item/index.cjs +1 -1
  210. package/dist/components/base/item/index.js +1 -1
  211. package/dist/components/base/map/index.cjs +1 -1
  212. package/dist/components/base/map/index.js +2 -2
  213. package/dist/components/base/navigation/index.cjs +1 -1
  214. package/dist/components/base/navigation/index.js +3 -3
  215. package/dist/components/base/popover-menu/index.cjs +1 -1
  216. package/dist/components/base/popover-menu/index.js +1 -1
  217. package/dist/components/base/spinner/index.cjs +1 -1
  218. package/dist/components/base/spinner/index.js +1 -1
  219. package/dist/components/base/table/data-table.d.ts.map +1 -1
  220. package/dist/components/base/table/index.cjs +1 -1
  221. package/dist/components/base/table/index.js +1 -1
  222. package/dist/components/base/table/table-header.d.ts.map +1 -1
  223. package/dist/components/composed/admin/index.cjs +1 -1
  224. package/dist/components/composed/admin/index.cjs.map +1 -1
  225. package/dist/components/composed/admin/index.js +13 -13
  226. package/dist/components/composed/admin/index.js.map +1 -1
  227. package/dist/components/composed/ai/index.cjs +1 -1
  228. package/dist/components/composed/ai/index.cjs.map +1 -1
  229. package/dist/components/composed/ai/index.js +25 -25
  230. package/dist/components/composed/ai/index.js.map +1 -1
  231. package/dist/components/composed/analytics/index.cjs +1 -1
  232. package/dist/components/composed/analytics/index.cjs.map +1 -1
  233. package/dist/components/composed/analytics/index.js +26 -26
  234. package/dist/components/composed/analytics/index.js.map +1 -1
  235. package/dist/components/composed/cards/index.cjs +1 -1
  236. package/dist/components/composed/cards/index.cjs.map +1 -1
  237. package/dist/components/composed/cards/index.js +15 -15
  238. package/dist/components/composed/cards/index.js.map +1 -1
  239. package/dist/components/composed/commerce/index.cjs +1 -1
  240. package/dist/components/composed/commerce/index.cjs.map +1 -1
  241. package/dist/components/composed/commerce/index.js +28 -28
  242. package/dist/components/composed/commerce/index.js.map +1 -1
  243. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  244. package/dist/components/composed/dark-surfaces/index.js +4 -4
  245. package/dist/components/composed/data-display/index.cjs +1 -1
  246. package/dist/components/composed/data-display/index.js +1 -1
  247. package/dist/components/composed/data-display/metadata/metadata-list.d.ts.map +1 -1
  248. package/dist/components/composed/navigation/index.cjs +1 -1
  249. package/dist/components/composed/navigation/index.cjs.map +1 -1
  250. package/dist/components/composed/navigation/index.js +15 -15
  251. package/dist/components/composed/navigation/index.js.map +1 -1
  252. package/dist/components/composed/onboarding/index.cjs +1 -1
  253. package/dist/components/composed/onboarding/index.js +3 -3
  254. package/dist/components/composed/timelines/index.cjs +1 -1
  255. package/dist/components/composed/timelines/index.cjs.map +1 -1
  256. package/dist/components/composed/timelines/index.js +10 -10
  257. package/dist/components/composed/timelines/index.js.map +1 -1
  258. package/dist/components/features/activities/index.cjs +1 -1
  259. package/dist/components/features/activities/index.cjs.map +1 -1
  260. package/dist/components/features/activities/index.js +9 -9
  261. package/dist/components/features/activities/index.js.map +1 -1
  262. package/dist/components/features/ai-chat/index.cjs +2 -2
  263. package/dist/components/features/ai-chat/index.cjs.map +1 -1
  264. package/dist/components/features/ai-chat/index.js +8 -8
  265. package/dist/components/features/ai-chat/index.js.map +1 -1
  266. package/dist/components/features/card/index.cjs +1 -1
  267. package/dist/components/features/card/index.js +4 -4
  268. package/dist/components/features/comments/index.cjs +1 -1
  269. package/dist/components/features/comments/index.js +2 -2
  270. package/dist/components/features/data-view/index.cjs +1 -1
  271. package/dist/components/features/data-view/index.cjs.map +1 -1
  272. package/dist/components/features/data-view/index.js +3 -3
  273. package/dist/components/features/data-view/index.js.map +1 -1
  274. package/dist/components/features/event-log/index.cjs +1 -1
  275. package/dist/components/features/event-log/index.js +4 -4
  276. package/dist/components/features/filters/index.cjs +1 -1
  277. package/dist/components/features/filters/index.cjs.map +1 -1
  278. package/dist/components/features/filters/index.js +11 -11
  279. package/dist/components/features/filters/index.js.map +1 -1
  280. package/dist/components/features/global-search/index.cjs +1 -1
  281. package/dist/components/features/global-search/index.cjs.map +1 -1
  282. package/dist/components/features/global-search/index.js +14 -14
  283. package/dist/components/features/global-search/index.js.map +1 -1
  284. package/dist/components/features/kanban/index.cjs +1 -1
  285. package/dist/components/features/kanban/index.js +3 -3
  286. package/dist/components/features/media-library/index.cjs +1 -1
  287. package/dist/components/features/media-library/index.cjs.map +1 -1
  288. package/dist/components/features/media-library/index.js +23 -23
  289. package/dist/components/features/media-library/index.js.map +1 -1
  290. package/dist/components/features/mentions/index.cjs +1 -1
  291. package/dist/components/features/mentions/index.js +1 -1
  292. package/dist/components/features/overlays/index.cjs +1 -1
  293. package/dist/components/features/overlays/index.js +1 -1
  294. package/dist/components/features/products/index.cjs +1 -1
  295. package/dist/components/features/products/index.cjs.map +1 -1
  296. package/dist/components/features/products/index.js +14 -14
  297. package/dist/components/features/products/index.js.map +1 -1
  298. package/dist/components/features/resource/index.cjs +1 -1
  299. package/dist/components/features/resource/index.cjs.map +1 -1
  300. package/dist/components/features/resource/index.js +5 -5
  301. package/dist/components/features/resource/index.js.map +1 -1
  302. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  303. package/dist/components/features/rich-text-editor/index.js +1 -1
  304. package/dist/components/features/schema-form/index.cjs +1 -1
  305. package/dist/components/features/schema-form/index.js +8 -8
  306. package/dist/components/features/suggestions/index.cjs +1 -1
  307. package/dist/components/features/suggestions/index.js +1 -1
  308. package/dist/components/features/sync/index.cjs +1 -1
  309. package/dist/components/features/sync/index.js +2 -2
  310. package/dist/components/layout/app-shell/index.cjs +1 -1
  311. package/dist/components/layout/app-shell/index.js +1 -1
  312. package/dist/components/layout/auth/index.cjs +1 -1
  313. package/dist/components/layout/auth/index.js +1 -1
  314. package/dist/components/layout/header/index.cjs +1 -1
  315. package/dist/components/layout/header/index.js +1 -1
  316. package/dist/components/layout/hooks/index.cjs +1 -1
  317. package/dist/components/layout/hooks/index.js +1 -1
  318. package/dist/components/layout/index.cjs +1 -1
  319. package/dist/components/layout/index.js +8 -8
  320. package/dist/components/layout/page/index.cjs +1 -1
  321. package/dist/components/layout/page/index.js +1 -1
  322. package/dist/components/layout/settings/index.cjs +1 -1
  323. package/dist/components/layout/settings/index.js +1 -1
  324. package/dist/components/layout/sidebar/index.cjs +1 -1
  325. package/dist/components/layout/sidebar/index.js +2 -2
  326. package/dist/components/layout/workspace/index.cjs +1 -1
  327. package/dist/components/layout/workspace/index.js +1 -1
  328. package/dist/components/typography/index.cjs +1 -1
  329. package/dist/components/typography/index.js +1 -1
  330. package/dist/services/actions/index.cjs +1 -1
  331. package/dist/services/actions/index.js +1 -1
  332. package/dist/showcase/assets/AreaChart-DtVzijR8.js +6 -0
  333. package/dist/showcase/assets/CompositeItem-SL6R0H3r.js +1 -0
  334. package/dist/showcase/assets/CompositeRoot-CTygKc2d.js +1 -0
  335. package/dist/showcase/assets/DialogTrigger-m2m9VdXk.js +1 -0
  336. package/dist/showcase/assets/LabelableContext-D6DcOg5I.js +1 -0
  337. package/dist/showcase/assets/PreviewLayout-CHW8F5uE.js +1 -0
  338. package/dist/showcase/assets/RadioGroup-BAOoU1eO.js +1 -0
  339. package/dist/showcase/assets/ScrollAreaCorner-CrCCP65t.js +1 -0
  340. package/dist/showcase/assets/Separator-DMs71Vib.js +1 -0
  341. package/dist/showcase/assets/ToolbarRootContext-DWKxsCxT.js +1 -0
  342. package/dist/showcase/assets/accordion-Clw5XNXP.js +171 -0
  343. package/dist/showcase/assets/accordion-variants-jiwKaPjE.js +1 -0
  344. package/dist/showcase/assets/action-menu-CW8zR6Ne.js +1 -0
  345. package/dist/showcase/assets/actions-Cf7vl3u0.js +310 -0
  346. package/dist/showcase/assets/activities-CyI5sJuS.js +500 -0
  347. package/dist/showcase/assets/activities-feed-card-Gv-Y4BBq.js +1 -0
  348. package/dist/showcase/assets/admin-CQVbTxGD.js +140 -0
  349. package/dist/showcase/assets/ai-Bkp2BY_z.js +207 -0
  350. package/dist/showcase/assets/ai-artifact-Cf1vEdVD.js +2 -0
  351. package/dist/showcase/assets/ai-chat-Bs3x6cK3.js +568 -0
  352. package/dist/showcase/assets/ai-elements-VbMUV2-i.js +387 -0
  353. package/dist/showcase/assets/ai-tool-call-BQYg4QB_.js +1 -0
  354. package/dist/showcase/assets/alert-BUmpNcXV.js +1 -0
  355. package/dist/showcase/assets/alert-CWPNW7eb.js +93 -0
  356. package/dist/showcase/assets/alert-nUwhk3AB.js +62 -0
  357. package/dist/showcase/assets/api-key-list-B1qVywOP.js +73 -0
  358. package/dist/showcase/assets/api-key-list-BI2FGbzV.js +1 -0
  359. package/dist/showcase/assets/app-sidebar-B35a8HWK.js +1 -0
  360. package/dist/showcase/assets/arrow-down-C1w0M8tE.js +1 -0
  361. package/dist/showcase/assets/arrow-left-DtILDtAv.js +1 -0
  362. package/dist/showcase/assets/arrow-right-TnZMfDbP.js +1 -0
  363. package/dist/showcase/assets/arrow-up-BX-KDIDB.js +1 -0
  364. package/dist/showcase/assets/arrow-up-right-CrnWqXwJ.js +1 -0
  365. package/dist/showcase/assets/avatar-C5YI0roK.js +67 -0
  366. package/dist/showcase/assets/avatar-DsnH-Xmz.js +1 -0
  367. package/dist/showcase/assets/avatar-S4vMi7Be.js +57 -0
  368. package/dist/showcase/assets/avatar-q4wqX6yD.js +1 -0
  369. package/dist/showcase/assets/badge-DJacF8-J.js +31 -0
  370. package/dist/showcase/assets/badge-check-DDJtQHcD.js +1 -0
  371. package/dist/showcase/assets/bell-DiXXE8YI.js +1 -0
  372. package/dist/showcase/assets/bot-bONqc_7j.js +1 -0
  373. package/dist/showcase/assets/box-lhUq3Chj.js +1 -0
  374. package/dist/showcase/assets/braces-IKXiJgb3.js +1 -0
  375. package/dist/showcase/assets/brain-DcXlhbJZ.js +1 -0
  376. package/dist/showcase/assets/brand-CramZg2-.js +36 -0
  377. package/dist/showcase/assets/breadcrumb-BL7UjlLh.js +1 -0
  378. package/dist/showcase/assets/breadcrumb-CZRbcf09.js +52 -0
  379. package/dist/showcase/assets/breadcrumbs-DJzvSt_Z.js +1 -0
  380. package/dist/showcase/assets/briefcase-CQQ0m97G.js +1 -0
  381. package/dist/showcase/assets/building-2-BkQcv8WR.js +1 -0
  382. package/dist/showcase/assets/button-K7M0irWq.js +44 -0
  383. package/dist/showcase/assets/button-group-KCGa38c8.js +1 -0
  384. package/dist/showcase/assets/buttons-CvyBMRD6.js +272 -0
  385. package/dist/showcase/assets/calendar-BJHjhWQX.js +1 -0
  386. package/dist/showcase/assets/calendar-ChMVRsNC.js +16 -0
  387. package/dist/showcase/assets/calendar-days-BgkRJVxQ.js +1 -0
  388. package/dist/showcase/assets/calendar-xpHhfGnq.js +1 -0
  389. package/dist/showcase/assets/camera-C67freYi.js +1 -0
  390. package/dist/showcase/assets/card-CfOqXMVz.js +188 -0
  391. package/dist/showcase/assets/card-bLjedjT5.js +1 -0
  392. package/dist/showcase/assets/card-primitives-FUPmQCsu.js +1 -0
  393. package/dist/showcase/assets/card-radio-group-D_QNJ2Hm.js +1 -0
  394. package/dist/showcase/assets/cards-yHZa0kEf.js +353 -0
  395. package/dist/showcase/assets/carousel-DG1cKry4.js +449 -0
  396. package/dist/showcase/assets/cell-renderers-qfJ-7alN.js +1 -0
  397. package/dist/showcase/assets/chart-B_yVfbWJ.js +358 -0
  398. package/dist/showcase/assets/chart-column-CYrVWmMk.js +1 -0
  399. package/dist/showcase/assets/checkbox-NW6EcvtD.js +1 -0
  400. package/dist/showcase/assets/checkbox-pA_L1P-f.js +1 -0
  401. package/dist/showcase/assets/chevron-down-DLrHjdQ6.js +1 -0
  402. package/dist/showcase/assets/chevron-left-B_NQOEWI.js +1 -0
  403. package/dist/showcase/assets/chevron-up-6hst2jwR.js +1 -0
  404. package/dist/showcase/assets/chevrons-up-down-C_pj9oOa.js +1 -0
  405. package/dist/showcase/assets/circle-Cw9qV72m.js +1 -0
  406. package/dist/showcase/assets/circle-alert-D3Vcma6L.js +1 -0
  407. package/dist/showcase/assets/circle-check-DdjJpGc9.js +1 -0
  408. package/dist/showcase/assets/circle-check-big-Dnq-jwtv.js +1 -0
  409. package/dist/showcase/assets/circle-dot-DN8DFgIP.js +1 -0
  410. package/dist/showcase/assets/circle-question-mark-Dzgiv4oS.js +1 -0
  411. package/dist/showcase/assets/circle-x-BzTSkndC.js +1 -0
  412. package/dist/showcase/assets/clock-3-CVwHXCmo.js +1 -0
  413. package/dist/showcase/assets/clock-BIJ9p953.js +1 -0
  414. package/dist/showcase/assets/code-xml-DrU5ziCA.js +1 -0
  415. package/dist/showcase/assets/collapsible-7rdCo71k.js +27 -0
  416. package/dist/showcase/assets/collapsible-DCcTSlEH.js +1 -0
  417. package/dist/showcase/assets/combobox-mx8o5sV1.js +685 -0
  418. package/dist/showcase/assets/command-CKJDGdA9.js +1 -0
  419. package/dist/showcase/assets/command-CzGLPzoO.js +1 -0
  420. package/dist/showcase/assets/comment-composer-CSoEIapl.js +1 -0
  421. package/dist/showcase/assets/comment-item-pjaH53iB.js +1 -0
  422. package/dist/showcase/assets/comments-_ccotzWA.js +357 -0
  423. package/dist/showcase/assets/commerce-BuiQiRsf.js +267 -0
  424. package/dist/showcase/assets/composite-Bghohd0p.js +1 -0
  425. package/dist/showcase/assets/contact-card-CqM2uz_w.js +65 -0
  426. package/dist/showcase/assets/content-container-fC4z98GI.js +1 -0
  427. package/dist/showcase/assets/copyable-BMQK8sID.js +1 -0
  428. package/dist/showcase/assets/copyable-DVR2FAa0.js +96 -0
  429. package/dist/showcase/assets/course-card-Cku2z18g.js +77 -0
  430. package/dist/showcase/assets/cpu-A072t3kq.js +1 -0
  431. package/dist/showcase/assets/credit-card-BGwhx9Zo.js +1 -0
  432. package/dist/showcase/assets/css-variables-BAW_VrGk.js +1205 -0
  433. package/dist/showcase/assets/currency-Da3C0Uzb.js +149 -0
  434. package/dist/showcase/assets/dark-surfaces-BHYLEj80.js +90 -0
  435. package/dist/showcase/assets/data-view--EAYihh0.js +124 -0
  436. package/dist/showcase/assets/data-view-BAMwKzZO.js +4 -0
  437. package/dist/showcase/assets/database-C489WIbr.js +1 -0
  438. package/dist/showcase/assets/date-block-DuNaPSBU.js +1 -0
  439. package/dist/showcase/assets/date-picker-Dq-9L64y.js +1 -0
  440. package/dist/showcase/assets/date-pickers-D0ReMKc9.js +73 -0
  441. package/dist/showcase/assets/dense-info-CXwjqQB1.js +106 -0
  442. package/dist/showcase/assets/design-system-consistency-CGoKv0Vf.js +264 -0
  443. package/dist/showcase/assets/dialog-DIrJcAzq.js +1 -0
  444. package/dist/showcase/assets/dialog-O45UwQJs.js +1 -0
  445. package/dist/showcase/assets/display-utilities-VKOARJyC.js +267 -0
  446. package/dist/showcase/assets/dist-BavkTE-I.js +1 -0
  447. package/dist/showcase/assets/dist-DPxPKIgU.js +45 -0
  448. package/dist/showcase/assets/dollar-sign-CH2fcyek.js +1 -0
  449. package/dist/showcase/assets/download-whAw79X4.js +1 -0
  450. package/dist/showcase/assets/dropdown-menu-PVKwhWds.js +1 -0
  451. package/dist/showcase/assets/dropzone-B9sc8Mwa.js +1 -0
  452. package/dist/showcase/assets/earth-BpkE9LMh.js +1 -0
  453. package/dist/showcase/assets/ellipsis-CEVdIbhD.js +1 -0
  454. package/dist/showcase/assets/ellipsis-vertical-CBIvtUVz.js +1 -0
  455. package/dist/showcase/assets/empty-Dp1eCMIl.js +1 -0
  456. package/dist/showcase/assets/empty-item--dZz4VlJ.js +49 -0
  457. package/dist/showcase/assets/empty-state-ZOiE-hWY.js +190 -0
  458. package/dist/showcase/assets/empty-state-dsivN4CA.js +1 -0
  459. package/dist/showcase/assets/enhanced-activities-BpzUxaof.js +357 -0
  460. package/dist/showcase/assets/enhanced-combobox-D71BOuiX.js +1 -0
  461. package/dist/showcase/assets/esm-DT-TXPCJ.js +2 -0
  462. package/dist/showcase/assets/event-calendar-aVpAFZFq.js +138 -0
  463. package/dist/showcase/assets/event-log-DVcvyQ-P.js +330 -0
  464. package/dist/showcase/assets/example-CzbL5xoH.js +1 -0
  465. package/dist/showcase/assets/external-link-BaLE1QE5.js +1 -0
  466. package/dist/showcase/assets/eye-Dq0mLKrs.js +1 -0
  467. package/dist/showcase/assets/feature-announcement-sWKBC2fs.js +34 -0
  468. package/dist/showcase/assets/file-CgW3NvCL.js +1 -0
  469. package/dist/showcase/assets/file-text-JGaJQ8Wd.js +1 -0
  470. package/dist/showcase/assets/filter-layout-jfahl8aJ.js +1 -0
  471. package/dist/showcase/assets/filters-D7zegZVD.js +139 -0
  472. package/dist/showcase/assets/flag-H6U1f4wd.js +1 -0
  473. package/dist/showcase/assets/folder-open-sT96wRxJ.js +1 -0
  474. package/dist/showcase/assets/form-field-CQuSWnj8.js +1 -0
  475. package/dist/showcase/assets/form-sizing-Dltt6Fj-.js +1 -0
  476. package/dist/showcase/assets/format-DGPJ5dDq.js +1 -0
  477. package/dist/showcase/assets/forms-CdDJkAFt.js +915 -0
  478. package/dist/showcase/assets/funnel-Bh56GDO0.js +1 -0
  479. package/dist/showcase/assets/generic-CqSABKHr.js +1 -0
  480. package/dist/showcase/assets/getPseudoElementBounds-Cgw3-xUB.js +1 -0
  481. package/dist/showcase/assets/gift-ChVS2ovQ.js +1 -0
  482. package/dist/showcase/assets/giftcard-cards-CuaGn8-J.js +85 -0
  483. package/dist/showcase/assets/git-branch-86jQZnz4.js +1 -0
  484. package/dist/showcase/assets/global-search-C92CjOf8.js +215 -0
  485. package/dist/showcase/assets/global-search-DpVIWyO9.js +1 -0
  486. package/dist/showcase/assets/globe-DmGzYOlq.js +1 -0
  487. package/dist/showcase/assets/gradient-card-BUZzXFdZ.js +58 -0
  488. package/dist/showcase/assets/hash-pc6IIDge.js +1 -0
  489. package/dist/showcase/assets/header-DbM4l1Z6.js +1 -0
  490. package/dist/showcase/assets/header-notifications-CaymUd4n.js +1 -0
  491. package/dist/showcase/assets/heart-DtfPBlXq.js +1 -0
  492. package/dist/showcase/assets/hooks-JiLlGOJ-.js +220 -0
  493. package/dist/showcase/assets/house-CzNWewi5.js +1 -0
  494. package/dist/showcase/assets/icon-badge-G9Fp891n.js +1 -0
  495. package/dist/showcase/assets/icon-badge-e8N5BSYf.js +37 -0
  496. package/dist/showcase/assets/image-9IQW7agU.js +1 -0
  497. package/dist/showcase/assets/inbox-DU4YaGtc.js +1 -0
  498. package/dist/showcase/assets/index-CuXjv2p6.css +2 -0
  499. package/dist/showcase/assets/index-DN09-Vts.js +10 -0
  500. package/dist/showcase/assets/inertValue-kRQb7jwi.js +1 -0
  501. package/dist/showcase/assets/info-B9AXwUDF.js +1 -0
  502. package/dist/showcase/assets/inline-stat-BkLIKCvD.js +1 -0
  503. package/dist/showcase/assets/inline-stat-XqGHDQrK.js +15 -0
  504. package/dist/showcase/assets/input-BXHv6p9P.js +1 -0
  505. package/dist/showcase/assets/input-D_T9s_tn.js +1 -0
  506. package/dist/showcase/assets/input-group-Bs8dmhR6.js +47 -0
  507. package/dist/showcase/assets/input-group-CqkASeoV.js +1 -0
  508. package/dist/showcase/assets/inputs-DY7w_ssI.js +155 -0
  509. package/dist/showcase/assets/installation-Dg3FdGJ1.js +134 -0
  510. package/dist/showcase/assets/invoice-header-Ba-Y55Ag.js +36 -0
  511. package/dist/showcase/assets/invoice-items-CIJ8EfPg.js +36 -0
  512. package/dist/showcase/assets/invoice-mini-BISFvM7J.js +14 -0
  513. package/dist/showcase/assets/invoice-table-DcyVZTvl.js +30 -0
  514. package/dist/showcase/assets/isSameDay-av07hGac.js +1 -0
  515. package/dist/showcase/assets/isToday-GY5FlPL9.js +1 -0
  516. package/dist/showcase/assets/italic-Du0n76Xk.js +1 -0
  517. package/dist/showcase/assets/item-D8Lp4R-T.js +139 -0
  518. package/dist/showcase/assets/item-DTsZnSJG.js +1 -0
  519. package/dist/showcase/assets/item-Di7HZF5G.js +1 -0
  520. package/dist/showcase/assets/kanban-Dcminjsa.js +188 -0
  521. package/dist/showcase/assets/key-round-BBue3xKx.js +1 -0
  522. package/dist/showcase/assets/label-dkUEHYaz.js +1 -0
  523. package/dist/showcase/assets/languages-XxP8Uu82.js +1 -0
  524. package/dist/showcase/assets/layers-Bi_-RuHS.js +1 -0
  525. package/dist/showcase/assets/layout-app-shell-Cr6Ep0Zz.js +608 -0
  526. package/dist/showcase/assets/layout-auth-DffIslnp.js +790 -0
  527. package/dist/showcase/assets/layout-containers-BuSg6L6o.js +101 -0
  528. package/dist/showcase/assets/layout-header-DAxSUI18.js +203 -0
  529. package/dist/showcase/assets/layout-page-CVgVJHf1.js +314 -0
  530. package/dist/showcase/assets/layout-primitives-q8NXbEld.js +34 -0
  531. package/dist/showcase/assets/layout-sidebar-bB6AJaGs.js +224 -0
  532. package/dist/showcase/assets/layout-users-DG5u517t.js +117 -0
  533. package/dist/showcase/assets/layout-workspace-CKMDUM2b.js +191 -0
  534. package/dist/showcase/assets/lib-CaQvPpSJ.js +1 -0
  535. package/dist/showcase/assets/list-checks-Dhr60VvL.js +1 -0
  536. package/dist/showcase/assets/lock-CYVbyBpM.js +1 -0
  537. package/dist/showcase/assets/lock-keyhole-TUVID45I.js +1 -0
  538. package/dist/showcase/assets/mail-DfkwmVKE.js +1 -0
  539. package/dist/showcase/assets/mail-check-CnBhgH_h.js +1 -0
  540. package/dist/showcase/assets/map-Ck14_o-F.js +124 -0
  541. package/dist/showcase/assets/map-pin-Di7TUhai.js +1 -0
  542. package/dist/showcase/assets/media-library-CzM_to29.js +699 -0
  543. package/dist/showcase/assets/mention-inline-suggestions-B1RHUfnH.js +1 -0
  544. package/dist/showcase/assets/mentions-CdaPXOLl.js +138 -0
  545. package/dist/showcase/assets/menus-DuqcLdg1.js +171 -0
  546. package/dist/showcase/assets/message-square-DuW3PrFI.js +1 -0
  547. package/dist/showcase/assets/metadata-list-CCRGSPaS.js +286 -0
  548. package/dist/showcase/assets/metadata-list-Drvz5mwy.js +1 -0
  549. package/dist/showcase/assets/metric-BSaXa3Z_.js +1 -0
  550. package/dist/showcase/assets/metric-bar-CM1Rmk8y.js +1 -0
  551. package/dist/showcase/assets/metric-grid-BBGxdYNJ.js +1 -0
  552. package/dist/showcase/assets/metric-trend-chip-C_LrbPyT.js +1 -0
  553. package/dist/showcase/assets/metrics-analytics-bar-ByvVltQV.js +44 -0
  554. package/dist/showcase/assets/metrics-analytics-cards-CNGiVG1A.js +50 -0
  555. package/dist/showcase/assets/metrics-comparison-BLUvtt5N.js +76 -0
  556. package/dist/showcase/assets/metrics-heatmap-CZWhn4_i.js +27 -0
  557. package/dist/showcase/assets/metrics-inline-badge-CcPm2_ON.js +17 -0
  558. package/dist/showcase/assets/metrics-kpi-row-CitG5Aea.js +31 -0
  559. package/dist/showcase/assets/metrics-micro-grid-CAsplRVI.js +42 -0
  560. package/dist/showcase/assets/metrics-overview-DSRwW-3j.js +192 -0
  561. package/dist/showcase/assets/metrics-stat-cards-BTdSpUV_.js +54 -0
  562. package/dist/showcase/assets/minus-BaXg6nPb.js +1 -0
  563. package/dist/showcase/assets/money-display-HegN6NVU.js +1 -0
  564. package/dist/showcase/assets/month-year-picker-DGSalGea.js +1 -0
  565. package/dist/showcase/assets/navigation-B9kcgNmJ.js +90 -0
  566. package/dist/showcase/assets/navigation-D4OJbw4T.js +231 -0
  567. package/dist/showcase/assets/navigation-extras-xm_wzPZr.js +43 -0
  568. package/dist/showcase/assets/onboarding-checklist-CWuCJKDd.js +119 -0
  569. package/dist/showcase/assets/overflow-tab-bar-Dq-I4MUu.js +1 -0
  570. package/dist/showcase/assets/overlays-BHf9SZOh.js +159 -0
  571. package/dist/showcase/assets/overlays-DziL3nVU.js +408 -0
  572. package/dist/showcase/assets/overview-Cc69up8i.js +184 -0
  573. package/dist/showcase/assets/package-Bc-NuFnd.js +1 -0
  574. package/dist/showcase/assets/package-check-5LQwCfGh.js +1 -0
  575. package/dist/showcase/assets/page-B2o5HSfY.js +1 -0
  576. package/dist/showcase/assets/page-action-button-CfS6vsyC.js +1 -0
  577. package/dist/showcase/assets/page-header-W6quU5pO.js +1 -0
  578. package/dist/showcase/assets/pagination-Bfs7Zszm.js +1 -0
  579. package/dist/showcase/assets/pagination-DHs104ji.js +42 -0
  580. package/dist/showcase/assets/paperclip-CXeiMywc.js +1 -0
  581. package/dist/showcase/assets/password-input-C61t743N.js +1 -0
  582. package/dist/showcase/assets/pencil-C1TXsTfP.js +1 -0
  583. package/dist/showcase/assets/phone-Bh-68R_E.js +1 -0
  584. package/dist/showcase/assets/plus-CKBaO4jG.js +1 -0
  585. package/dist/showcase/assets/popover-C_7qLizt.js +1 -0
  586. package/dist/showcase/assets/popover-hgtHqd0h.js +1 -0
  587. package/dist/showcase/assets/popover-menu-DmYSBsji.js +1 -0
  588. package/dist/showcase/assets/products-DSvcQz-Q.js +423 -0
  589. package/dist/showcase/assets/progress-Chxeo8g4.js +18 -0
  590. package/dist/showcase/assets/progress-fYPoCyf-.js +1 -0
  591. package/dist/showcase/assets/props-table-izArO1Pv.js +1 -0
  592. package/dist/showcase/assets/quote-wvfNu9t7.js +1 -0
  593. package/dist/showcase/assets/receipt-BlXBX4ZJ.js +1 -0
  594. package/dist/showcase/assets/receipt-text-stSsUTV5.js +1 -0
  595. package/dist/showcase/assets/refinement-guide-Bri81J9N.js +189 -0
  596. package/dist/showcase/assets/refresh-cw-tZzNDEGO.js +1 -0
  597. package/dist/showcase/assets/resolveValueLabel-Cti97iX8.js +1 -0
  598. package/dist/showcase/assets/resource-B727CTVi.js +139 -0
  599. package/dist/showcase/assets/resource-DytT_quB.js +1 -0
  600. package/dist/showcase/assets/resource-selector-card-wNuW382N.js +43 -0
  601. package/dist/showcase/assets/rich-text-editor-DdK5YD0y.js +143 -0
  602. package/dist/showcase/assets/rich-text-editor-DqY2H6e0.js +124 -0
  603. package/dist/showcase/assets/rotate-ccw-Bp4aMDrI.js +1 -0
  604. package/dist/showcase/assets/route-D2owHMka.js +1 -0
  605. package/dist/showcase/assets/save-DjC_iy0t.js +1 -0
  606. package/dist/showcase/assets/schema-form-CQtLwGC1.js +327 -0
  607. package/dist/showcase/assets/scroll-area-BQlHFfkG.js +32 -0
  608. package/dist/showcase/assets/scroll-area-D3Rrt85s.js +1 -0
  609. package/dist/showcase/assets/section-DYfGx1Q5.js +1 -0
  610. package/dist/showcase/assets/select-BCJGhRpc.js +1 -0
  611. package/dist/showcase/assets/select-Cf5EigqA.js +1 -0
  612. package/dist/showcase/assets/send-86Vr11Ys.js +1 -0
  613. package/dist/showcase/assets/separator-BHjNVb5O.js +1 -0
  614. package/dist/showcase/assets/separator-BejjbTbO.js +28 -0
  615. package/dist/showcase/assets/settings-2-DNNVOsjP.js +1 -0
  616. package/dist/showcase/assets/settings-Bsi5BLx5.js +1 -0
  617. package/dist/showcase/assets/sheet-BazhMvfb.js +1 -0
  618. package/dist/showcase/assets/shield-alert-D-Jbocfj.js +1 -0
  619. package/dist/showcase/assets/shield-check-D9eDVcJ1.js +1 -0
  620. package/dist/showcase/assets/shield-xI2P9G5d.js +1 -0
  621. package/dist/showcase/assets/shopping-bag-DOGs3sez.js +1 -0
  622. package/dist/showcase/assets/showcase-s-5CuLAJ.js +132 -0
  623. package/dist/showcase/assets/sidebar-Rz44gw_a.js +1 -0
  624. package/dist/showcase/assets/sidebar.context-Bbcdo3o8.js +1 -0
  625. package/dist/showcase/assets/skeleton-CY8ieqD-.js +1 -0
  626. package/dist/showcase/assets/skeleton-CgoH6CPT.js +29 -0
  627. package/dist/showcase/assets/slider-okW2bgkG.js +1 -0
  628. package/dist/showcase/assets/smart-card-CVwEPwfI.js +1 -0
  629. package/dist/showcase/assets/sonner-CixCpxj2.js +22 -0
  630. package/dist/showcase/assets/sortable.esm-DKcVtGTb.js +5 -0
  631. package/dist/showcase/assets/sparkles-DDEVdtmy.js +1 -0
  632. package/dist/showcase/assets/spinner-BVGPoAEv.js +49 -0
  633. package/dist/showcase/assets/spinner-FURXSp1Q.js +1 -0
  634. package/dist/showcase/assets/spinner-u6TwJ3Ii.js +30 -0
  635. package/dist/showcase/assets/square-pen-DVXVT0cQ.js +1 -0
  636. package/dist/showcase/assets/stacked-avatars-CKOQhAx4.js +1 -0
  637. package/dist/showcase/assets/star-B3ZPfxuz.js +1 -0
  638. package/dist/showcase/assets/startOfDay-LwMBRUSU.js +1 -0
  639. package/dist/showcase/assets/styles-UIKkojWJ.js +1 -0
  640. package/dist/showcase/assets/suggestions-DbrzKjbi.js +126 -0
  641. package/dist/showcase/assets/switch-CAw84QpS.js +1 -0
  642. package/dist/showcase/assets/switch-Cjt2MCgr.js +1 -0
  643. package/dist/showcase/assets/sync-DWbqfpBH.js +124 -0
  644. package/dist/showcase/assets/table-Bx5lo5FP.js +686 -0
  645. package/dist/showcase/assets/table-C2RQulDb.js +1 -0
  646. package/dist/showcase/assets/table-actions-Clo3WEfM.js +1 -0
  647. package/dist/showcase/assets/tabs-DRtlcg6b.js +19 -0
  648. package/dist/showcase/assets/tabs-wMPtvuT5.js +1 -0
  649. package/dist/showcase/assets/tags-input-D5FpWOWF.js +1 -0
  650. package/dist/showcase/assets/text-button-Cwh6D6qG.js +1 -0
  651. package/dist/showcase/assets/text-link-DI1uXdGl.js +1 -0
  652. package/dist/showcase/assets/textarea-CGbt4gBZ.js +1 -0
  653. package/dist/showcase/assets/textarea-JPgPLhyk.js +1 -0
  654. package/dist/showcase/assets/timelines-CkHN08n6.js +200 -0
  655. package/dist/showcase/assets/toggle-group-BpXkR9uD.js +1 -0
  656. package/dist/showcase/assets/toggles-DK9iCbki.js +71 -0
  657. package/dist/showcase/assets/toggles-group-DwzRj0f7.js +32 -0
  658. package/dist/showcase/assets/tooltip-PtP1suag.js +31 -0
  659. package/dist/showcase/assets/trash-2-BE4XUI2g.js +1 -0
  660. package/dist/showcase/assets/trending-up-ByxOf-nR.js +1 -0
  661. package/dist/showcase/assets/truck-RTOdcRV0.js +1 -0
  662. package/dist/showcase/assets/typography-BKLgHDxU.js +223 -0
  663. package/dist/showcase/assets/ui-badge-DIh_3Wmo.js +28 -0
  664. package/dist/showcase/assets/ui-card-BOdHnZwv.js +30 -0
  665. package/dist/showcase/assets/ui-table-BW4FCClv.js +42 -0
  666. package/dist/showcase/assets/upload-tray-CV9_5Lpa.js +138 -0
  667. package/dist/showcase/assets/use-layout-link-MyeE-CDj.js +1 -0
  668. package/dist/showcase/assets/useAnchoredPopupScrollLock-DSaog2w5.js +1 -0
  669. package/dist/showcase/assets/useAriaLabelledBy-DSpPzrxG.js +1 -0
  670. package/dist/showcase/assets/useCollapsiblePanel-DsuJtES0.js +1 -0
  671. package/dist/showcase/assets/useCompositeItem-lbAimLrR.js +1 -0
  672. package/dist/showcase/assets/useCompositeListItem-pRXWGj4x.js +1 -0
  673. package/dist/showcase/assets/useLabelableId-IRM1zB5m.js +1 -0
  674. package/dist/showcase/assets/useOpenInteractionType-CHDcTj9f.js +1 -0
  675. package/dist/showcase/assets/useRender-Ogz5zjeJ.js +1 -0
  676. package/dist/showcase/assets/useTriggerFocusGuards-Du6btFNB.js +1 -0
  677. package/dist/showcase/assets/useValueChanged-CXpsR4fl.js +1 -0
  678. package/dist/showcase/assets/user-plus-CLj8AZe1.js +1 -0
  679. package/dist/showcase/assets/user-ymdT26JK.js +1 -0
  680. package/dist/showcase/assets/users-BGba2Xwv.js +1 -0
  681. package/dist/showcase/assets/vendor-profile-Ci6c9mFC.js +37 -0
  682. package/dist/showcase/assets/video-BcKa36-p.js +1 -0
  683. package/dist/showcase/assets/wrench-Cj2hRrih.js +1 -0
  684. package/dist/showcase/assets/x-iCqjAC2D.js +1 -0
  685. package/dist/showcase/assets/zap-H4bc_OhS.js +1 -0
  686. package/dist/showcase/index.html +2 -2
  687. package/dist/style.css +1 -1
  688. package/package.json +1 -1
  689. package/src/css/themes/shadcn.default.css +6 -6
  690. package/src/css/tokens/foundation.css +23 -9
  691. package/dist/_shared/accordion-B9EjlZLY.js +0 -135
  692. package/dist/_shared/accordion-B9EjlZLY.js.map +0 -1
  693. package/dist/_shared/accordion-IFDIc0E7.cjs +0 -2
  694. package/dist/_shared/accordion-IFDIc0E7.cjs.map +0 -1
  695. package/dist/_shared/action-menu-B6yFRDz1.cjs +0 -2
  696. package/dist/_shared/action-menu-B6yFRDz1.cjs.map +0 -1
  697. package/dist/_shared/action-menu-CNS-fwQr.js +0 -96
  698. package/dist/_shared/action-menu-CNS-fwQr.js.map +0 -1
  699. package/dist/_shared/ai-artifact-B3qhuiKC.js +0 -1099
  700. package/dist/_shared/ai-artifact-B3qhuiKC.js.map +0 -1
  701. package/dist/_shared/ai-artifact-Dtr0bnVq.cjs +0 -3
  702. package/dist/_shared/ai-artifact-Dtr0bnVq.cjs.map +0 -1
  703. package/dist/_shared/alert-V0V36Sny.cjs +0 -2
  704. package/dist/_shared/alert-V0V36Sny.cjs.map +0 -1
  705. package/dist/_shared/alert-m-4s0Hqq.js +0 -81
  706. package/dist/_shared/alert-m-4s0Hqq.js.map +0 -1
  707. package/dist/_shared/app-shell-D3eGUtL-.js +0 -69
  708. package/dist/_shared/app-shell-D3eGUtL-.js.map +0 -1
  709. package/dist/_shared/app-shell-QJHARDMB.cjs +0 -2
  710. package/dist/_shared/app-shell-QJHARDMB.cjs.map +0 -1
  711. package/dist/_shared/auth-BZY91F5_.cjs +0 -2
  712. package/dist/_shared/auth-BZY91F5_.cjs.map +0 -1
  713. package/dist/_shared/auth-DcotjEbY.js +0 -643
  714. package/dist/_shared/auth-DcotjEbY.js.map +0 -1
  715. package/dist/_shared/badge-BeSKxX1u.cjs +0 -2
  716. package/dist/_shared/badge-BeSKxX1u.cjs.map +0 -1
  717. package/dist/_shared/badge-a2Z3K5aQ.js +0 -110
  718. package/dist/_shared/badge-a2Z3K5aQ.js.map +0 -1
  719. package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs +0 -2
  720. package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs.map +0 -1
  721. package/dist/_shared/breadcrumbs-B57Unsoe.js +0 -105
  722. package/dist/_shared/breadcrumbs-B57Unsoe.js.map +0 -1
  723. package/dist/_shared/button-Bd5bEIiB.cjs +0 -2
  724. package/dist/_shared/button-Bd5bEIiB.cjs.map +0 -1
  725. package/dist/_shared/button-DHksjMvc.js +0 -189
  726. package/dist/_shared/button-DHksjMvc.js.map +0 -1
  727. package/dist/_shared/buttons-Bek9F7qK.cjs +0 -2
  728. package/dist/_shared/buttons-Bek9F7qK.cjs.map +0 -1
  729. package/dist/_shared/buttons-DcynMPnE.js +0 -137
  730. package/dist/_shared/buttons-DcynMPnE.js.map +0 -1
  731. package/dist/_shared/card-radio-group-C2p_iBal.cjs +0 -2
  732. package/dist/_shared/card-radio-group-C2p_iBal.cjs.map +0 -1
  733. package/dist/_shared/card-radio-group-Fdi1Cz1j.js +0 -150
  734. package/dist/_shared/card-radio-group-Fdi1Cz1j.js.map +0 -1
  735. package/dist/_shared/cards-C1ythc0Q.js +0 -354
  736. package/dist/_shared/cards-C1ythc0Q.js.map +0 -1
  737. package/dist/_shared/cards-GSYfJ-oX.cjs +0 -2
  738. package/dist/_shared/cards-GSYfJ-oX.cjs.map +0 -1
  739. package/dist/_shared/combobox-BIe72dV3.js +0 -954
  740. package/dist/_shared/combobox-BIe72dV3.js.map +0 -1
  741. package/dist/_shared/combobox-CJiFDoTi.cjs +0 -2
  742. package/dist/_shared/combobox-CJiFDoTi.cjs.map +0 -1
  743. package/dist/_shared/command-ByedBajF.js +0 -39
  744. package/dist/_shared/command-ByedBajF.js.map +0 -1
  745. package/dist/_shared/command-EGR0nhGc.cjs +0 -2
  746. package/dist/_shared/command-EGR0nhGc.cjs.map +0 -1
  747. package/dist/_shared/comments-CmljtbAW.js +0 -952
  748. package/dist/_shared/comments-CmljtbAW.js.map +0 -1
  749. package/dist/_shared/comments-ColUq7eh.cjs +0 -2
  750. package/dist/_shared/comments-ColUq7eh.cjs.map +0 -1
  751. package/dist/_shared/copyable-Dopk9pEJ.js +0 -38
  752. package/dist/_shared/copyable-Dopk9pEJ.js.map +0 -1
  753. package/dist/_shared/copyable-rQwxsTJ3.cjs +0 -2
  754. package/dist/_shared/copyable-rQwxsTJ3.cjs.map +0 -1
  755. package/dist/_shared/data-display-BTsCY7A5.js +0 -1873
  756. package/dist/_shared/data-display-BTsCY7A5.js.map +0 -1
  757. package/dist/_shared/data-display-BdGQMXit.cjs +0 -2
  758. package/dist/_shared/data-display-BdGQMXit.cjs.map +0 -1
  759. package/dist/_shared/date-picker-BiUgIkjP.cjs +0 -2
  760. package/dist/_shared/date-picker-BiUgIkjP.cjs.map +0 -1
  761. package/dist/_shared/date-picker-DFkLiveH.js +0 -1361
  762. package/dist/_shared/date-picker-DFkLiveH.js.map +0 -1
  763. package/dist/_shared/date-pickers-C86tVD8e.cjs +0 -2
  764. package/dist/_shared/date-pickers-C86tVD8e.cjs.map +0 -1
  765. package/dist/_shared/date-pickers-D4oxOOHE.js +0 -329
  766. package/dist/_shared/date-pickers-D4oxOOHE.js.map +0 -1
  767. package/dist/_shared/display-B0wLVN8t.js +0 -986
  768. package/dist/_shared/display-B0wLVN8t.js.map +0 -1
  769. package/dist/_shared/display-Bin2vVex.cjs +0 -2
  770. package/dist/_shared/display-Bin2vVex.cjs.map +0 -1
  771. package/dist/_shared/form-sizing-C51oI3Di.js +0 -42
  772. package/dist/_shared/form-sizing-C51oI3Di.js.map +0 -1
  773. package/dist/_shared/form-sizing-Co53Drri.cjs +0 -2
  774. package/dist/_shared/form-sizing-Co53Drri.cjs.map +0 -1
  775. package/dist/_shared/forms-CEE1te78.cjs +0 -2
  776. package/dist/_shared/forms-CEE1te78.cjs.map +0 -1
  777. package/dist/_shared/forms-CQoGvG7q.js +0 -3533
  778. package/dist/_shared/forms-CQoGvG7q.js.map +0 -1
  779. package/dist/_shared/header-B9IPDQRW.js +0 -447
  780. package/dist/_shared/header-B9IPDQRW.js.map +0 -1
  781. package/dist/_shared/header-C_1x4-rd.cjs +0 -2
  782. package/dist/_shared/header-C_1x4-rd.cjs.map +0 -1
  783. package/dist/_shared/hooks---vunGQ6.js +0 -95
  784. package/dist/_shared/hooks---vunGQ6.js.map +0 -1
  785. package/dist/_shared/hooks-CjVzmgvY.cjs +0 -2
  786. package/dist/_shared/hooks-CjVzmgvY.cjs.map +0 -1
  787. package/dist/_shared/input-CB6hxh-5.cjs +0 -2
  788. package/dist/_shared/input-CB6hxh-5.cjs.map +0 -1
  789. package/dist/_shared/input-CfnHBT--.js +0 -182
  790. package/dist/_shared/input-CfnHBT--.js.map +0 -1
  791. package/dist/_shared/item-Xs-fgzaT.js +0 -226
  792. package/dist/_shared/item-Xs-fgzaT.js.map +0 -1
  793. package/dist/_shared/item-eUP9Rtmg.cjs +0 -2
  794. package/dist/_shared/item-eUP9Rtmg.cjs.map +0 -1
  795. package/dist/_shared/layout-BXrQqUKq.js +0 -262
  796. package/dist/_shared/layout-BXrQqUKq.js.map +0 -1
  797. package/dist/_shared/layout-DWicdsPI.cjs +0 -2
  798. package/dist/_shared/layout-DWicdsPI.cjs.map +0 -1
  799. package/dist/_shared/mentions-BahbwDwU.js +0 -506
  800. package/dist/_shared/mentions-BahbwDwU.js.map +0 -1
  801. package/dist/_shared/mentions-aHalksbt.cjs +0 -2
  802. package/dist/_shared/mentions-aHalksbt.cjs.map +0 -1
  803. package/dist/_shared/money-display-BLPNMmiT.cjs +0 -2
  804. package/dist/_shared/money-display-BLPNMmiT.cjs.map +0 -1
  805. package/dist/_shared/money-display-D_-Cb8-9.js +0 -198
  806. package/dist/_shared/money-display-D_-Cb8-9.js.map +0 -1
  807. package/dist/_shared/navigation-BcYAwgzo.js +0 -436
  808. package/dist/_shared/navigation-BcYAwgzo.js.map +0 -1
  809. package/dist/_shared/navigation-DAB7uuBj.cjs +0 -2
  810. package/dist/_shared/navigation-DAB7uuBj.cjs.map +0 -1
  811. package/dist/_shared/overlays-DW8OIK5R.js +0 -735
  812. package/dist/_shared/overlays-DW8OIK5R.js.map +0 -1
  813. package/dist/_shared/overlays-Du65iCkx.cjs +0 -2
  814. package/dist/_shared/overlays-Du65iCkx.cjs.map +0 -1
  815. package/dist/_shared/popover-menu-qxBZlTck.js +0 -93
  816. package/dist/_shared/popover-menu-qxBZlTck.js.map +0 -1
  817. package/dist/_shared/popover-menu-z9QTjl4o.cjs +0 -2
  818. package/dist/_shared/popover-menu-z9QTjl4o.cjs.map +0 -1
  819. package/dist/_shared/rich-text-editor-DeIiIDn7.cjs +0 -2
  820. package/dist/_shared/rich-text-editor-DeIiIDn7.cjs.map +0 -1
  821. package/dist/_shared/rich-text-editor-VIBlL0x3.js +0 -620
  822. package/dist/_shared/rich-text-editor-VIBlL0x3.js.map +0 -1
  823. package/dist/_shared/settings-Bfr6PgSi.cjs +0 -2
  824. package/dist/_shared/settings-Bfr6PgSi.cjs.map +0 -1
  825. package/dist/_shared/settings-CrPaYr4A.js +0 -143
  826. package/dist/_shared/settings-CrPaYr4A.js.map +0 -1
  827. package/dist/_shared/sidebar-CDOLD8fN.js +0 -548
  828. package/dist/_shared/sidebar-CDOLD8fN.js.map +0 -1
  829. package/dist/_shared/sidebar-DcsxeNml.cjs +0 -2
  830. package/dist/_shared/sidebar-DcsxeNml.cjs.map +0 -1
  831. package/dist/_shared/spinner-D35zNriU.cjs +0 -2
  832. package/dist/_shared/spinner-D35zNriU.cjs.map +0 -1
  833. package/dist/_shared/spinner-DMC2IIml.js +0 -67
  834. package/dist/_shared/spinner-DMC2IIml.js.map +0 -1
  835. package/dist/_shared/table-B_pqCQxC.js +0 -1377
  836. package/dist/_shared/table-B_pqCQxC.js.map +0 -1
  837. package/dist/_shared/table-CGVOXtdv.cjs +0 -2
  838. package/dist/_shared/table-CGVOXtdv.cjs.map +0 -1
  839. package/dist/_shared/textarea-B24qgdmd.cjs +0 -2
  840. package/dist/_shared/textarea-B24qgdmd.cjs.map +0 -1
  841. package/dist/_shared/textarea-ChLRmmVU.js +0 -118
  842. package/dist/_shared/textarea-ChLRmmVU.js.map +0 -1
  843. package/dist/_shared/typography-CO9uwZhF.cjs +0 -2
  844. package/dist/_shared/typography-CO9uwZhF.cjs.map +0 -1
  845. package/dist/_shared/typography-DE0NGEIE.js +0 -201
  846. package/dist/_shared/typography-DE0NGEIE.js.map +0 -1
  847. package/dist/_shared/workspace-C1twu23r.cjs +0 -2
  848. package/dist/_shared/workspace-C1twu23r.cjs.map +0 -1
  849. package/dist/_shared/workspace-CkOZLdcN.js +0 -357
  850. package/dist/_shared/workspace-CkOZLdcN.js.map +0 -1
  851. package/dist/showcase/assets/AreaChart-WJREayr9.js +0 -6
  852. package/dist/showcase/assets/CompositeItem-CY3XmFuI.js +0 -1
  853. package/dist/showcase/assets/CompositeRoot-BPMF0t1F.js +0 -1
  854. package/dist/showcase/assets/DialogTrigger-BzaF3YN8.js +0 -1
  855. package/dist/showcase/assets/LabelableContext-LKvvFFnV.js +0 -1
  856. package/dist/showcase/assets/PreviewLayout-B0n7l00P.js +0 -1
  857. package/dist/showcase/assets/RadioGroup-VBtGFETg.js +0 -1
  858. package/dist/showcase/assets/ScrollAreaCorner-BimGwdGs.js +0 -1
  859. package/dist/showcase/assets/Separator-BfKe0YiY.js +0 -1
  860. package/dist/showcase/assets/ToolbarRootContext-Cscyv1PN.js +0 -1
  861. package/dist/showcase/assets/accordion-BEN0VkL4.js +0 -171
  862. package/dist/showcase/assets/accordion-variants-QFG3H38z.js +0 -1
  863. package/dist/showcase/assets/action-menu-Bfw1tFqM.js +0 -1
  864. package/dist/showcase/assets/actions-CFpHs5IC.js +0 -310
  865. package/dist/showcase/assets/activities-CDxlaghU.js +0 -500
  866. package/dist/showcase/assets/activities-feed-card-BO1kcjRK.js +0 -1
  867. package/dist/showcase/assets/admin-DFpHXeuv.js +0 -140
  868. package/dist/showcase/assets/ai-DyO6VqQP.js +0 -207
  869. package/dist/showcase/assets/ai-artifact-MVA3ikv6.js +0 -2
  870. package/dist/showcase/assets/ai-chat-D-xcp6Jf.js +0 -568
  871. package/dist/showcase/assets/ai-elements-DlFqIOYp.js +0 -387
  872. package/dist/showcase/assets/ai-tool-call-DedG9TdK.js +0 -1
  873. package/dist/showcase/assets/alert-CmRK2lOe.js +0 -1
  874. package/dist/showcase/assets/alert-DCIVryEp.js +0 -62
  875. package/dist/showcase/assets/alert-DDP3Ktic.js +0 -93
  876. package/dist/showcase/assets/api-key-list-CWa997YX.js +0 -1
  877. package/dist/showcase/assets/api-key-list-mTPebHF3.js +0 -73
  878. package/dist/showcase/assets/app-sidebar-Cnfk9z5K.js +0 -1
  879. package/dist/showcase/assets/arrow-down-CCYWFimd.js +0 -1
  880. package/dist/showcase/assets/arrow-left-CrYjfZJ0.js +0 -1
  881. package/dist/showcase/assets/arrow-right-eLxbBrdm.js +0 -1
  882. package/dist/showcase/assets/arrow-up-kA33fcPv.js +0 -1
  883. package/dist/showcase/assets/arrow-up-right-BSWGQVDB.js +0 -1
  884. package/dist/showcase/assets/avatar-BDGhB3aA.js +0 -57
  885. package/dist/showcase/assets/avatar-CLBQvnYG.js +0 -1
  886. package/dist/showcase/assets/avatar-WUMW3Qjo.js +0 -1
  887. package/dist/showcase/assets/avatar-cKSNuTzf.js +0 -67
  888. package/dist/showcase/assets/badge--mqVg8Ry.js +0 -31
  889. package/dist/showcase/assets/badge-check-D7YjWqnm.js +0 -1
  890. package/dist/showcase/assets/bell-6YyocFK6.js +0 -1
  891. package/dist/showcase/assets/bot-BC4pGAB3.js +0 -1
  892. package/dist/showcase/assets/box-CPGIu4Nv.js +0 -1
  893. package/dist/showcase/assets/braces-9jywZtTA.js +0 -1
  894. package/dist/showcase/assets/brain-wf_S427C.js +0 -1
  895. package/dist/showcase/assets/brand-78lhbKSW.js +0 -36
  896. package/dist/showcase/assets/breadcrumb-6XHObtqO.js +0 -1
  897. package/dist/showcase/assets/breadcrumb-BVrrS53_.js +0 -52
  898. package/dist/showcase/assets/breadcrumbs-BwC3Iaae.js +0 -1
  899. package/dist/showcase/assets/briefcase-BViWYew9.js +0 -1
  900. package/dist/showcase/assets/building-2-CwR3gV1I.js +0 -1
  901. package/dist/showcase/assets/button-BWwsy37B.js +0 -44
  902. package/dist/showcase/assets/button-group-BTiMRQIO.js +0 -1
  903. package/dist/showcase/assets/buttons-D9pH8hPs.js +0 -272
  904. package/dist/showcase/assets/calendar-Bzl2i1lu.js +0 -1
  905. package/dist/showcase/assets/calendar-CNMlC7Fn.js +0 -16
  906. package/dist/showcase/assets/calendar-D5NdEmaD.js +0 -1
  907. package/dist/showcase/assets/calendar-days-j8QDBUc5.js +0 -1
  908. package/dist/showcase/assets/camera-Cwb84N8a.js +0 -1
  909. package/dist/showcase/assets/card-CX3vQ2Te.js +0 -1
  910. package/dist/showcase/assets/card-FLJkfdKP.js +0 -188
  911. package/dist/showcase/assets/card-primitives-C2s13Uvp.js +0 -1
  912. package/dist/showcase/assets/card-radio-group-BP27dErL.js +0 -1
  913. package/dist/showcase/assets/cards-DcdxRM9W.js +0 -354
  914. package/dist/showcase/assets/carousel-CTKyiHD2.js +0 -449
  915. package/dist/showcase/assets/cell-renderers-ouSypXTE.js +0 -1
  916. package/dist/showcase/assets/chart-CMsMyCah.js +0 -358
  917. package/dist/showcase/assets/chart-column-BrwpEFzy.js +0 -1
  918. package/dist/showcase/assets/checkbox-4qgEfnjv.js +0 -1
  919. package/dist/showcase/assets/checkbox-ratLYBAF.js +0 -1
  920. package/dist/showcase/assets/chevron-down-BInaIfd1.js +0 -1
  921. package/dist/showcase/assets/chevron-left-Bjy3FJ_M.js +0 -1
  922. package/dist/showcase/assets/chevron-up-Ufl6UEyV.js +0 -1
  923. package/dist/showcase/assets/chevrons-up-down-CrOH-P5z.js +0 -1
  924. package/dist/showcase/assets/circle-G0dEx2Ay.js +0 -1
  925. package/dist/showcase/assets/circle-alert-CiibDCe8.js +0 -1
  926. package/dist/showcase/assets/circle-check-Bqm54c03.js +0 -1
  927. package/dist/showcase/assets/circle-check-big-BfiY_qy_.js +0 -1
  928. package/dist/showcase/assets/circle-dot-VNm7CEgH.js +0 -1
  929. package/dist/showcase/assets/circle-question-mark-mM7PKy4G.js +0 -1
  930. package/dist/showcase/assets/circle-x-2tzzp_vB.js +0 -1
  931. package/dist/showcase/assets/clock-3-CfdZnMP2.js +0 -1
  932. package/dist/showcase/assets/clock-ByB7C11p.js +0 -1
  933. package/dist/showcase/assets/code-xml-D2fN-BaU.js +0 -1
  934. package/dist/showcase/assets/collapsible-B2lI_uVI.js +0 -1
  935. package/dist/showcase/assets/collapsible-Bs5YFx-M.js +0 -27
  936. package/dist/showcase/assets/combobox-BqNSwFaM.js +0 -685
  937. package/dist/showcase/assets/command-Dcbh_YP-.js +0 -1
  938. package/dist/showcase/assets/command-Mb30xkwq.js +0 -1
  939. package/dist/showcase/assets/comment-composer-DqTw0zIM.js +0 -1
  940. package/dist/showcase/assets/comment-item-DbQAZ3yP.js +0 -1
  941. package/dist/showcase/assets/comments-CGMOOi7k.js +0 -357
  942. package/dist/showcase/assets/commerce-bVpLHwpS.js +0 -267
  943. package/dist/showcase/assets/composite-CTpmYme_.js +0 -1
  944. package/dist/showcase/assets/contact-card-nuS10UKK.js +0 -65
  945. package/dist/showcase/assets/content-container-NexBp0FV.js +0 -1
  946. package/dist/showcase/assets/copyable-CNltkC2A.js +0 -1
  947. package/dist/showcase/assets/copyable-qr6--oJx.js +0 -96
  948. package/dist/showcase/assets/course-card-0kkl37FX.js +0 -77
  949. package/dist/showcase/assets/cpu-DSD9h0l5.js +0 -1
  950. package/dist/showcase/assets/credit-card-CN0E6FU8.js +0 -1
  951. package/dist/showcase/assets/css-variables-CzmmLWxt.js +0 -1190
  952. package/dist/showcase/assets/currency-BtofP745.js +0 -149
  953. package/dist/showcase/assets/dark-surfaces-BU7kfTIi.js +0 -90
  954. package/dist/showcase/assets/data-view-3W7_KBli.js +0 -124
  955. package/dist/showcase/assets/data-view-snL5QtHe.js +0 -4
  956. package/dist/showcase/assets/database-BarEYzaF.js +0 -1
  957. package/dist/showcase/assets/date-block-dTt9Rcfd.js +0 -1
  958. package/dist/showcase/assets/date-picker-BKzZeQGc.js +0 -1
  959. package/dist/showcase/assets/date-pickers-CYERVYRo.js +0 -73
  960. package/dist/showcase/assets/dense-info-hnKZfRnQ.js +0 -106
  961. package/dist/showcase/assets/design-system-consistency-D6qngflS.js +0 -264
  962. package/dist/showcase/assets/dialog-mO0FpHmT.js +0 -1
  963. package/dist/showcase/assets/dialog-xbuhPXmf.js +0 -1
  964. package/dist/showcase/assets/display-utilities-C4IflxoK.js +0 -267
  965. package/dist/showcase/assets/dist-BFChHTWK.js +0 -45
  966. package/dist/showcase/assets/dist-BkVfs5PY.js +0 -1
  967. package/dist/showcase/assets/dollar-sign-BES-Y4q8.js +0 -1
  968. package/dist/showcase/assets/download-CuEg-4DT.js +0 -1
  969. package/dist/showcase/assets/dropdown-menu-C4Fcfk9z.js +0 -1
  970. package/dist/showcase/assets/dropzone-CrJ_k9fJ.js +0 -1
  971. package/dist/showcase/assets/earth-Cmx-Axig.js +0 -1
  972. package/dist/showcase/assets/ellipsis-Co7iTzp_.js +0 -1
  973. package/dist/showcase/assets/ellipsis-vertical-DMYJFiqQ.js +0 -1
  974. package/dist/showcase/assets/empty-Dw4ozyll.js +0 -1
  975. package/dist/showcase/assets/empty-item-DQwAsl0J.js +0 -49
  976. package/dist/showcase/assets/empty-state-BKvbnAy1.js +0 -1
  977. package/dist/showcase/assets/empty-state-Dv6f2fmP.js +0 -190
  978. package/dist/showcase/assets/enhanced-activities-Ctmivg46.js +0 -357
  979. package/dist/showcase/assets/enhanced-combobox-D0AsPZ-b.js +0 -1
  980. package/dist/showcase/assets/esm-oZ6qcNoa.js +0 -2
  981. package/dist/showcase/assets/event-calendar-ChXdeehr.js +0 -138
  982. package/dist/showcase/assets/event-log-DeOCb2tT.js +0 -330
  983. package/dist/showcase/assets/example-CDvNeHNP.js +0 -1
  984. package/dist/showcase/assets/external-link-BaiCqIx3.js +0 -1
  985. package/dist/showcase/assets/eye-zG-fqYfd.js +0 -1
  986. package/dist/showcase/assets/feature-announcement-C2XGWNgI.js +0 -34
  987. package/dist/showcase/assets/file-sAbDfDuO.js +0 -1
  988. package/dist/showcase/assets/file-text-Boa9IOND.js +0 -1
  989. package/dist/showcase/assets/filter-layout-tZmZz-2B.js +0 -1
  990. package/dist/showcase/assets/filters-D8gEkDAE.js +0 -139
  991. package/dist/showcase/assets/flag-Cu20rcE4.js +0 -1
  992. package/dist/showcase/assets/folder-open-Cuk6KKLi.js +0 -1
  993. package/dist/showcase/assets/form-field-D8sL8tat.js +0 -1
  994. package/dist/showcase/assets/form-sizing-C3UG5WKC.js +0 -1
  995. package/dist/showcase/assets/format-CaRklI--.js +0 -1
  996. package/dist/showcase/assets/forms-CNk2oX65.js +0 -915
  997. package/dist/showcase/assets/funnel-B2kBprKZ.js +0 -1
  998. package/dist/showcase/assets/generic-oWYKMvId.js +0 -1
  999. package/dist/showcase/assets/getPseudoElementBounds-GjucWEcD.js +0 -1
  1000. package/dist/showcase/assets/gift-C_D_-5GL.js +0 -1
  1001. package/dist/showcase/assets/giftcard-cards-B4DDGzdi.js +0 -85
  1002. package/dist/showcase/assets/git-branch-DlTTLnjW.js +0 -1
  1003. package/dist/showcase/assets/global-search-BjHAfaqS.js +0 -215
  1004. package/dist/showcase/assets/global-search-hKQWHfrf.js +0 -1
  1005. package/dist/showcase/assets/globe-D-gH7XQ2.js +0 -1
  1006. package/dist/showcase/assets/gradient-card-jVxEisUP.js +0 -58
  1007. package/dist/showcase/assets/hash-DySqEhph.js +0 -1
  1008. package/dist/showcase/assets/header-B8hHkAVl.js +0 -1
  1009. package/dist/showcase/assets/header-notifications-s180jNb1.js +0 -1
  1010. package/dist/showcase/assets/heart-DDFCk8Tb.js +0 -1
  1011. package/dist/showcase/assets/hooks-0A_FzYrt.js +0 -220
  1012. package/dist/showcase/assets/house-BqE1X-Wf.js +0 -1
  1013. package/dist/showcase/assets/icon-badge-CyiMjD7j.js +0 -37
  1014. package/dist/showcase/assets/icon-badge-fJVhEHym.js +0 -1
  1015. package/dist/showcase/assets/image-DCtwKHqe.js +0 -1
  1016. package/dist/showcase/assets/inbox-DZA-pAGB.js +0 -1
  1017. package/dist/showcase/assets/index-B37z19z3.js +0 -10
  1018. package/dist/showcase/assets/index-CIsKgiSF.css +0 -2
  1019. package/dist/showcase/assets/inertValue-SPYMBsOM.js +0 -1
  1020. package/dist/showcase/assets/info-DrfDr3GT.js +0 -1
  1021. package/dist/showcase/assets/inline-stat-BVJNx4xR.js +0 -1
  1022. package/dist/showcase/assets/inline-stat-C3cWbSUK.js +0 -15
  1023. package/dist/showcase/assets/input-CKTTGrnR.js +0 -1
  1024. package/dist/showcase/assets/input-UHuWYPMF.js +0 -1
  1025. package/dist/showcase/assets/input-group-BR_lU__a.js +0 -1
  1026. package/dist/showcase/assets/input-group-iZaLbsTP.js +0 -47
  1027. package/dist/showcase/assets/inputs-C7j8Xivm.js +0 -155
  1028. package/dist/showcase/assets/installation-DYnTwaPR.js +0 -134
  1029. package/dist/showcase/assets/invoice-header-D_0KvXQe.js +0 -36
  1030. package/dist/showcase/assets/invoice-items-jcNb-sST.js +0 -36
  1031. package/dist/showcase/assets/invoice-mini-DrZAbjPq.js +0 -14
  1032. package/dist/showcase/assets/invoice-table-DlAw0U4U.js +0 -30
  1033. package/dist/showcase/assets/isSameDay-Cl6v_syG.js +0 -1
  1034. package/dist/showcase/assets/isToday-BBoFjSnJ.js +0 -1
  1035. package/dist/showcase/assets/italic-j2U8krYa.js +0 -1
  1036. package/dist/showcase/assets/item-B2WoC1SD.js +0 -139
  1037. package/dist/showcase/assets/item-BMJ5hfT5.js +0 -1
  1038. package/dist/showcase/assets/item-C_5-EHNK.js +0 -1
  1039. package/dist/showcase/assets/kanban-Cv64Szxq.js +0 -188
  1040. package/dist/showcase/assets/key-round-CORDYqE2.js +0 -1
  1041. package/dist/showcase/assets/label-B0UjYqfw.js +0 -1
  1042. package/dist/showcase/assets/languages-Njdo5y8i.js +0 -1
  1043. package/dist/showcase/assets/layers-Dyew-8IP.js +0 -1
  1044. package/dist/showcase/assets/layout-app-shell-DEZt0d84.js +0 -608
  1045. package/dist/showcase/assets/layout-auth-BT84haSd.js +0 -790
  1046. package/dist/showcase/assets/layout-containers-D6SP4vRB.js +0 -101
  1047. package/dist/showcase/assets/layout-header-kLYjJnHz.js +0 -203
  1048. package/dist/showcase/assets/layout-page-CmS4d8jw.js +0 -314
  1049. package/dist/showcase/assets/layout-primitives-BW858Ymj.js +0 -34
  1050. package/dist/showcase/assets/layout-sidebar-eIDEoyzV.js +0 -224
  1051. package/dist/showcase/assets/layout-users-HyZHQIov.js +0 -117
  1052. package/dist/showcase/assets/layout-workspace-BrDwVUvn.js +0 -191
  1053. package/dist/showcase/assets/lib-Dhty05ZR.js +0 -1
  1054. package/dist/showcase/assets/list-checks-CcWjdDq8.js +0 -1
  1055. package/dist/showcase/assets/lock-CwH3bXx5.js +0 -1
  1056. package/dist/showcase/assets/lock-keyhole-BdBxeIkW.js +0 -1
  1057. package/dist/showcase/assets/mail-Cn94c8yp.js +0 -1
  1058. package/dist/showcase/assets/mail-check-D-q_vPxD.js +0 -1
  1059. package/dist/showcase/assets/map-BfUZMScw.js +0 -124
  1060. package/dist/showcase/assets/map-pin-BZB9GUXP.js +0 -1
  1061. package/dist/showcase/assets/media-library-DguE2q94.js +0 -699
  1062. package/dist/showcase/assets/mention-inline-suggestions-CyGplHOl.js +0 -1
  1063. package/dist/showcase/assets/mentions-lmr_XmfN.js +0 -138
  1064. package/dist/showcase/assets/menus-D0qYbzKk.js +0 -171
  1065. package/dist/showcase/assets/message-square-7VpiUwcS.js +0 -1
  1066. package/dist/showcase/assets/metadata-list-B8O2ljIS.js +0 -1
  1067. package/dist/showcase/assets/metadata-list-BcYg9Ru3.js +0 -286
  1068. package/dist/showcase/assets/metric-HzQnjCpO.js +0 -1
  1069. package/dist/showcase/assets/metric-bar-Fr1TDnSu.js +0 -1
  1070. package/dist/showcase/assets/metric-grid-CM-P894v.js +0 -1
  1071. package/dist/showcase/assets/metric-trend-chip-DqYH_U8e.js +0 -1
  1072. package/dist/showcase/assets/metrics-analytics-bar-DKRLzyXq.js +0 -44
  1073. package/dist/showcase/assets/metrics-analytics-cards-qMbAYBbk.js +0 -50
  1074. package/dist/showcase/assets/metrics-comparison-GSWVebL_.js +0 -76
  1075. package/dist/showcase/assets/metrics-heatmap-Fj5QZoO3.js +0 -27
  1076. package/dist/showcase/assets/metrics-inline-badge-BuyhiYDl.js +0 -17
  1077. package/dist/showcase/assets/metrics-kpi-row-xNn4bjZc.js +0 -31
  1078. package/dist/showcase/assets/metrics-micro-grid-W_ZYCffp.js +0 -42
  1079. package/dist/showcase/assets/metrics-overview-D-km110k.js +0 -192
  1080. package/dist/showcase/assets/metrics-stat-cards-odVtufFY.js +0 -54
  1081. package/dist/showcase/assets/minus-DZsXg5PW.js +0 -1
  1082. package/dist/showcase/assets/money-display-C7Hp2pT3.js +0 -1
  1083. package/dist/showcase/assets/month-year-picker-Dnr4J0mO.js +0 -1
  1084. package/dist/showcase/assets/navigation-0nrtBP5O.js +0 -90
  1085. package/dist/showcase/assets/navigation-BaWNq9oa.js +0 -231
  1086. package/dist/showcase/assets/navigation-extras-B22W1Vkk.js +0 -43
  1087. package/dist/showcase/assets/onboarding-checklist-BFj7rmdZ.js +0 -119
  1088. package/dist/showcase/assets/overflow-tab-bar-D_rltswa.js +0 -1
  1089. package/dist/showcase/assets/overlays-CNfiB-zF.js +0 -408
  1090. package/dist/showcase/assets/overlays-CuxuFGC8.js +0 -159
  1091. package/dist/showcase/assets/overview-CBmdAWO6.js +0 -184
  1092. package/dist/showcase/assets/package-BwwfLMWb.js +0 -1
  1093. package/dist/showcase/assets/package-check-BepTKJLy.js +0 -1
  1094. package/dist/showcase/assets/page-_JDFUWqe.js +0 -1
  1095. package/dist/showcase/assets/page-action-button-Cf34I-B2.js +0 -1
  1096. package/dist/showcase/assets/page-header-pdHFvyTo.js +0 -1
  1097. package/dist/showcase/assets/pagination-Db1WJvjK.js +0 -42
  1098. package/dist/showcase/assets/pagination-s8_MGk9D.js +0 -1
  1099. package/dist/showcase/assets/paperclip-B9HQ47_2.js +0 -1
  1100. package/dist/showcase/assets/password-input-D-eZWMGX.js +0 -1
  1101. package/dist/showcase/assets/pencil-Dm53P6Db.js +0 -1
  1102. package/dist/showcase/assets/phone-a4Ja9xAp.js +0 -1
  1103. package/dist/showcase/assets/plus-DbOlx2x0.js +0 -1
  1104. package/dist/showcase/assets/popover-B8qrRgt3.js +0 -1
  1105. package/dist/showcase/assets/popover-Bm5wETUP.js +0 -1
  1106. package/dist/showcase/assets/popover-menu-EH4P-BuI.js +0 -1
  1107. package/dist/showcase/assets/products-n6VBSMDh.js +0 -423
  1108. package/dist/showcase/assets/progress-D9r6PSCF.js +0 -1
  1109. package/dist/showcase/assets/progress-DVnMcpeq.js +0 -18
  1110. package/dist/showcase/assets/props-table-udnF7Z46.js +0 -1
  1111. package/dist/showcase/assets/quote-qVQF4JC7.js +0 -1
  1112. package/dist/showcase/assets/receipt-DaC4l-Mr.js +0 -1
  1113. package/dist/showcase/assets/receipt-text-BnwhWHdU.js +0 -1
  1114. package/dist/showcase/assets/refinement-guide-zBbAE-vw.js +0 -189
  1115. package/dist/showcase/assets/refresh-cw-CX6ghqEe.js +0 -1
  1116. package/dist/showcase/assets/resolveValueLabel-Cjbd_80A.js +0 -1
  1117. package/dist/showcase/assets/resource-D1fXD_Pt.js +0 -139
  1118. package/dist/showcase/assets/resource-i2YV9aHL.js +0 -1
  1119. package/dist/showcase/assets/resource-selector-card-CdQEPr9U.js +0 -43
  1120. package/dist/showcase/assets/rich-text-editor-DJ2i03XV.js +0 -143
  1121. package/dist/showcase/assets/rich-text-editor-Wh8r117d.js +0 -124
  1122. package/dist/showcase/assets/rotate-ccw-2_FhUcdG.js +0 -1
  1123. package/dist/showcase/assets/route-EGSdKgEp.js +0 -1
  1124. package/dist/showcase/assets/save-nXKvyYEx.js +0 -1
  1125. package/dist/showcase/assets/schema-form-D_9UkVBe.js +0 -327
  1126. package/dist/showcase/assets/scroll-area-CB7X4JqZ.js +0 -1
  1127. package/dist/showcase/assets/scroll-area-DCHN9iYj.js +0 -32
  1128. package/dist/showcase/assets/section-C2ovQgbv.js +0 -1
  1129. package/dist/showcase/assets/select-BTOraQSw.js +0 -1
  1130. package/dist/showcase/assets/select-CE0BbUs7.js +0 -1
  1131. package/dist/showcase/assets/send-CI0r12bX.js +0 -1
  1132. package/dist/showcase/assets/separator-CmGfh7lI.js +0 -1
  1133. package/dist/showcase/assets/separator-PhQTNRIB.js +0 -28
  1134. package/dist/showcase/assets/settings-2-qkVb0lyz.js +0 -1
  1135. package/dist/showcase/assets/settings-YXjlZ9zs.js +0 -1
  1136. package/dist/showcase/assets/sheet-CFDUB2H1.js +0 -1
  1137. package/dist/showcase/assets/shield-Dr_UeG6H.js +0 -1
  1138. package/dist/showcase/assets/shield-alert-7rAVXg-K.js +0 -1
  1139. package/dist/showcase/assets/shield-check-BbzHL-nM.js +0 -1
  1140. package/dist/showcase/assets/shopping-bag-DeprN0fB.js +0 -1
  1141. package/dist/showcase/assets/showcase-BU6Fvpg_.js +0 -132
  1142. package/dist/showcase/assets/sidebar-CudnhnWN.js +0 -1
  1143. package/dist/showcase/assets/sidebar.context-CZaDhRhh.js +0 -1
  1144. package/dist/showcase/assets/skeleton-DD6VPVrv.js +0 -1
  1145. package/dist/showcase/assets/skeleton-Dc5LvW7E.js +0 -29
  1146. package/dist/showcase/assets/slider-BxvP9nxk.js +0 -1
  1147. package/dist/showcase/assets/smart-card-B0Llbpiy.js +0 -1
  1148. package/dist/showcase/assets/sonner-mszFoDWT.js +0 -22
  1149. package/dist/showcase/assets/sortable.esm-J5bJPtH9.js +0 -5
  1150. package/dist/showcase/assets/sparkles-CQSdl3Gw.js +0 -1
  1151. package/dist/showcase/assets/spinner-BSxBn2qs.js +0 -49
  1152. package/dist/showcase/assets/spinner-DJxoGJtq.js +0 -30
  1153. package/dist/showcase/assets/spinner-DihTCcve.js +0 -1
  1154. package/dist/showcase/assets/square-pen-CGMSA_p6.js +0 -1
  1155. package/dist/showcase/assets/stacked-avatars-Ct8B4doW.js +0 -1
  1156. package/dist/showcase/assets/star-DFlmmJdh.js +0 -1
  1157. package/dist/showcase/assets/startOfDay-BedffeNt.js +0 -1
  1158. package/dist/showcase/assets/styles-jR6uS97D.js +0 -1
  1159. package/dist/showcase/assets/suggestions-DnjJ-U9n.js +0 -126
  1160. package/dist/showcase/assets/switch-Dkojf4Yd.js +0 -1
  1161. package/dist/showcase/assets/switch-bTb6CSLr.js +0 -1
  1162. package/dist/showcase/assets/sync-rk8eFwoJ.js +0 -124
  1163. package/dist/showcase/assets/table-4qIerTVI.js +0 -686
  1164. package/dist/showcase/assets/table-BjMmmYd7.js +0 -1
  1165. package/dist/showcase/assets/table-actions-DqofOI1V.js +0 -1
  1166. package/dist/showcase/assets/tabs-BV6mMsfk.js +0 -19
  1167. package/dist/showcase/assets/tabs-u2fkHRw8.js +0 -1
  1168. package/dist/showcase/assets/tags-input-Cu_UwlwT.js +0 -1
  1169. package/dist/showcase/assets/text-button-Fyy21evq.js +0 -1
  1170. package/dist/showcase/assets/text-link-WRyY3ZZo.js +0 -1
  1171. package/dist/showcase/assets/textarea-BbCxWNzV.js +0 -1
  1172. package/dist/showcase/assets/textarea-CtD7JQsv.js +0 -1
  1173. package/dist/showcase/assets/timelines-BBPQpCFX.js +0 -200
  1174. package/dist/showcase/assets/toggle-group-B8mQ6wer.js +0 -1
  1175. package/dist/showcase/assets/toggles-CCClWVXZ.js +0 -71
  1176. package/dist/showcase/assets/toggles-group-DgCilPMo.js +0 -32
  1177. package/dist/showcase/assets/tooltip-ClJCWWTI.js +0 -31
  1178. package/dist/showcase/assets/trash-2-Cs7y4-K-.js +0 -1
  1179. package/dist/showcase/assets/trending-up-spYhMxs6.js +0 -1
  1180. package/dist/showcase/assets/truck-DENWgqxK.js +0 -1
  1181. package/dist/showcase/assets/typography-DMmYNFQj.js +0 -223
  1182. package/dist/showcase/assets/ui-badge-BJEtsa7X.js +0 -28
  1183. package/dist/showcase/assets/ui-card-CrPKoi3P.js +0 -30
  1184. package/dist/showcase/assets/ui-table-2HhDwPcu.js +0 -42
  1185. package/dist/showcase/assets/upload-tray-CUZAErkI.js +0 -138
  1186. package/dist/showcase/assets/use-layout-link-Co3GiFmb.js +0 -1
  1187. package/dist/showcase/assets/useAnchoredPopupScrollLock-DgIA0IXg.js +0 -1
  1188. package/dist/showcase/assets/useAriaLabelledBy-CDdoyQgg.js +0 -1
  1189. package/dist/showcase/assets/useCollapsiblePanel-BT0RSjGM.js +0 -1
  1190. package/dist/showcase/assets/useCompositeItem-DFghnuRZ.js +0 -1
  1191. package/dist/showcase/assets/useCompositeListItem-vXyRoJ2x.js +0 -1
  1192. package/dist/showcase/assets/useLabelableId-D__l5sQX.js +0 -1
  1193. package/dist/showcase/assets/useOpenInteractionType-bZIaLWfE.js +0 -1
  1194. package/dist/showcase/assets/useRender-BV0akLbc.js +0 -1
  1195. package/dist/showcase/assets/useTriggerFocusGuards-dYriJrQP.js +0 -1
  1196. package/dist/showcase/assets/useValueChanged-Dg0AWST0.js +0 -1
  1197. package/dist/showcase/assets/user-B9eCi5Vl.js +0 -1
  1198. package/dist/showcase/assets/user-plus-Uo4IAY7e.js +0 -1
  1199. package/dist/showcase/assets/users-DLep-WjV.js +0 -1
  1200. package/dist/showcase/assets/vendor-profile-BbcE51Pa.js +0 -37
  1201. package/dist/showcase/assets/video-BasdlaQE.js +0 -1
  1202. package/dist/showcase/assets/wrench-BYUVe1-z.js +0 -1
  1203. package/dist/showcase/assets/x-Bx9ayVXr.js +0 -1
  1204. package/dist/showcase/assets/zap-Mgu5HEtF.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/activities/activities.config.ts","../../../../src/components/features/activities/activities.strings.ts","../../../../src/components/features/activities/hooks/use-activity-feed.ts","../../../../src/components/features/activities/hooks/use-activity-resources.ts","../../../../src/components/features/activities/partials/activity-actions-menu.tsx","../../../../src/components/features/activities/partials/activity-changes.tsx","../../../../src/components/features/activities/partials/activity-date-label.tsx","../../../../src/components/features/activities/partials/activity-empty-state.tsx","../../../../src/components/features/activities/partials/tone-tokens.ts","../../../../src/components/features/activities/partials/activity-resource-tag.tsx","../../../../src/components/features/activities/partials/activity-headline.tsx","../../../../src/components/features/activities/partials/activity-marker.tsx","../../../../src/components/features/activities/partials/activity-row.tsx","../../../../src/components/features/activities/activities-feed.tsx","../../../../src/components/features/activities/partials/activities-feed-card.tsx"],"sourcesContent":["/**\n * Default per-event configuration. Consumers override individual events by\n * spreading this map and overwriting the keys they care about, e.g.:\n *\n * import { defaultActivityEventConfig } from '@/components/features/activities';\n *\n * const eventConfig = {\n * ...defaultActivityEventConfig,\n * order_refunded: { icon: Receipt, tone: 'warning', label: 'Refunded' },\n * };\n *\n * The mass `eventConfig` prop on `<ActivityFeed />` is shallow-merged on top\n * of these defaults, so any unspecified event falls back to the library\n * default and ultimately to the neutral `defaultEvent` entry below.\n */\nimport {\n AlertTriangle,\n ArrowLeftRight,\n Ban,\n Check,\n CircleDot,\n FileEdit,\n Flag,\n Heart,\n LinkIcon,\n Mail,\n MailCheck,\n MailOpen,\n MailX,\n MessageSquare,\n Pencil,\n Plus,\n ShieldCheck,\n ShoppingBag,\n Sparkles,\n Star,\n Trash2,\n UserMinus,\n UserPlus,\n} from 'lucide-react';\n\nimport type { ActivityEventConfig, ActivityEventConfigMap } from './activities.types';\n\n/** Neutral fallback used when an event has no entry in the registry. */\nexport const defaultEventConfig: ActivityEventConfig = {\n icon: CircleDot,\n tone: 'neutral',\n};\n\nexport const defaultActivityEventConfig: ActivityEventConfigMap = {\n // Lifecycle\n created: { icon: Plus, tone: 'success', label: 'Created' },\n updated: { icon: Pencil, tone: 'info', label: 'Updated' },\n edited: { icon: FileEdit, tone: 'info', label: 'Edited' },\n deleted: { icon: Trash2, tone: 'destructive', label: 'Deleted' },\n cancelled: { icon: Ban, tone: 'destructive', label: 'Cancelled' },\n restored: { icon: Sparkles, tone: 'success', label: 'Restored' },\n\n // Status transitions\n status_changed: { icon: ArrowLeftRight, tone: 'primary', label: 'Status changed' },\n status_transition: { icon: ArrowLeftRight, tone: 'primary', label: 'Status changed' },\n status_override: { icon: ArrowLeftRight, tone: 'warning', label: 'Status overridden' },\n\n // People\n assigned: { icon: UserPlus, tone: 'info', label: 'Assigned' },\n unassigned: { icon: UserMinus, tone: 'destructive', label: 'Unassigned' },\n\n // Mail\n mail_sent: { icon: Mail, tone: 'info', label: 'Email sent' },\n mail_delivered: { icon: MailCheck, tone: 'success', label: 'Email delivered' },\n mail_opened: { icon: MailOpen, tone: 'info', label: 'Email opened' },\n mail_clicked: { icon: MailOpen, tone: 'info', label: 'Email clicked' },\n mail_bounced: { icon: MailX, tone: 'destructive', label: 'Email bounced' },\n mail_failed: { icon: MailX, tone: 'destructive', label: 'Email failed' },\n\n // Comments\n comment_created: { icon: MessageSquare, tone: 'warning', label: 'Comment posted' },\n comment_deleted: { icon: MessageSquare, tone: 'destructive', label: 'Comment deleted' },\n\n // Commerce\n paid: { icon: Check, tone: 'success', label: 'Paid' },\n refunded: { icon: ArrowLeftRight, tone: 'warning', label: 'Refunded' },\n confirmed: { icon: ShieldCheck, tone: 'success', label: 'Confirmed' },\n favorited: { icon: Heart, tone: 'warning', label: 'Favorited' },\n ordered: { icon: ShoppingBag, tone: 'primary', label: 'Order placed' },\n\n // Publishing\n published: { icon: Star, tone: 'success', label: 'Published' },\n flagged: { icon: Flag, tone: 'warning', label: 'Flagged' },\n linked: { icon: LinkIcon, tone: 'info', label: 'Linked' },\n\n // Failures\n failed: { icon: AlertTriangle, tone: 'destructive', label: 'Failed' },\n health_check_failed: { icon: AlertTriangle, tone: 'destructive', label: 'Health check failed' },\n};\n\n/** Resolve `eventConfig[event]` with override + default fallback. */\nexport function resolveEventConfig(\n event: string,\n map: ActivityEventConfigMap,\n): ActivityEventConfig {\n return map[event] ?? defaultEventConfig;\n}\n","/**\n * Strings for the Activities feature. Consumers override via the `strings`\n * prop on `<ActivityFeed>` / `<ActivityFeedCard>`. Values are deep-merged\n * over these defaults — `sources` and `events` merge one level deep so a\n * consumer can override a single source/event label without rewriting the\n * whole map.\n */\nexport interface ActivitiesStrings {\n /** Card title — usually \"Activity\". */\n title: string;\n /** Empty-state copy. */\n empty: string;\n /** Loading-state copy. */\n loading: string;\n /** Date-group label for today. */\n today: string;\n /** Date-group label for yesterday. */\n yesterday: string;\n /** Fallback label for activities without a timestamp. */\n undated: string;\n /** Replacement for actor name when `actorId === currentUserId`. */\n you: string;\n /** Toggle button label — collapsed state. */\n showChanges: string;\n /** Toggle button label — expanded state. */\n hideChanges: string;\n /** aria-label for the actions menu trigger. */\n actionsLabel: string;\n /** Generic \"more\" affordance label. */\n moreLabel: string;\n /** Map of `source` → display label. */\n sources: Record<string, string>;\n /** Map of `event` → display label. Used as a fallback for headlines. */\n events: Record<string, string>;\n}\n\nexport const defaultActivitiesStrings: ActivitiesStrings = {\n title: 'Activity',\n empty: 'No activity yet.',\n loading: 'Loading activity…',\n today: 'Today',\n yesterday: 'Yesterday',\n undated: 'Undated',\n you: 'You',\n showChanges: 'Show changes',\n hideChanges: 'Hide changes',\n actionsLabel: 'Activity actions',\n moreLabel: 'More',\n sources: {\n comment: 'Comment',\n mail: 'Mail',\n booking_log: 'Booking log',\n activity_log: '',\n system: 'System',\n },\n events: {},\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolate(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useActivityFeed — headless state machine for the Activities feature.\n *\n * Returns date-grouped activities with stable React keys, plus the expand /\n * collapse map for change-detail rows. Consumers wanting a fully custom UI\n * can call this hook directly and bypass `<ActivityFeed />`.\n */\nimport { isToday, isYesterday } from 'date-fns';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport type { ActivitiesStrings } from '../activities.strings';\nimport type { ActivityItem } from '../activities.types';\n\nexport interface ActivityKeyedItem<TData = unknown> {\n activity: ActivityItem<TData>;\n key: string;\n}\n\nexport interface ActivityDateGroup<TData = unknown> {\n label: string;\n items: ActivityKeyedItem<TData>[];\n}\n\nexport interface UseActivityFeedOptions<TData = unknown> {\n activities: ReadonlyArray<ActivityItem<TData>>;\n groupByDate?: boolean;\n expandedByDefault?: boolean;\n locale?: string;\n strings: ActivitiesStrings;\n formatDateGroupLabel?: (\n iso: string | null,\n strings: ActivitiesStrings,\n ) => string;\n}\n\nexport interface UseActivityFeedReturn<TData = unknown> {\n groups: ActivityDateGroup<TData>[];\n total: number;\n isExpanded: (id: string) => boolean;\n toggleExpanded: (id: string) => void;\n setExpanded: (id: string, value: boolean) => void;\n expandAll: () => void;\n collapseAll: () => void;\n}\n\nfunction defaultDateGroupLabel(\n iso: string | null,\n strings: ActivitiesStrings,\n locale?: string,\n): string {\n if (!iso) return strings.undated;\n const date = new Date(iso);\n if (isToday(date)) return strings.today;\n if (isYesterday(date)) return strings.yesterday;\n try {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(date);\n } catch {\n return new Intl.DateTimeFormat(undefined, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(date);\n }\n}\n\nexport function useActivityFeed<TData = unknown>({\n activities,\n groupByDate = true,\n expandedByDefault = false,\n locale,\n strings,\n formatDateGroupLabel,\n}: UseActivityFeedOptions<TData>): UseActivityFeedReturn<TData> {\n const [expandedMap, setExpandedMap] = useState<Record<string, boolean>>({});\n\n const keyed = useMemo<ActivityKeyedItem<TData>[]>(() => {\n const seen = new Map<string, number>();\n return activities.map((activity) => {\n const baseId = String(activity.id ?? '').trim();\n const createdAt = String(activity.createdAt ?? '').trim();\n const event = String(activity.event ?? '').trim();\n const source = String(activity.source ?? '').trim();\n const keyBase = [baseId, createdAt, event, source].join(':');\n const occurrence = (seen.get(keyBase) ?? 0) + 1;\n seen.set(keyBase, occurrence);\n return { activity, key: `${keyBase}:${occurrence}` };\n });\n }, [activities]);\n\n const groups = useMemo<ActivityDateGroup<TData>[]>(() => {\n if (!groupByDate) {\n return keyed.length > 0 ? [{ label: '', items: keyed }] : [];\n }\n const out: ActivityDateGroup<TData>[] = [];\n let currentLabel = '__init__';\n let currentItems: ActivityKeyedItem<TData>[] = [];\n\n const labelFor = (iso: string | null) =>\n formatDateGroupLabel\n ? formatDateGroupLabel(iso, strings)\n : defaultDateGroupLabel(iso, strings, locale);\n\n for (const item of keyed) {\n const iso = item.activity.createdAt ?? null;\n const label = labelFor(iso);\n if (label !== currentLabel) {\n if (currentItems.length > 0) {\n out.push({ label: currentLabel, items: currentItems });\n }\n currentLabel = label;\n currentItems = [item];\n } else {\n currentItems.push(item);\n }\n }\n if (currentItems.length > 0) {\n out.push({ label: currentLabel, items: currentItems });\n }\n return out;\n }, [keyed, groupByDate, locale, strings, formatDateGroupLabel]);\n\n const isExpanded = useCallback(\n (id: string) => expandedMap[id] ?? expandedByDefault,\n [expandedMap, expandedByDefault],\n );\n\n const toggleExpanded = useCallback((id: string) => {\n setExpandedMap((current) => ({\n ...current,\n [id]: !(current[id] ?? false),\n }));\n }, []);\n\n const setExpanded = useCallback((id: string, value: boolean) => {\n setExpandedMap((current) => ({ ...current, [id]: value }));\n }, []);\n\n const expandAll = useCallback(() => {\n const next: Record<string, boolean> = {};\n for (const k of keyed) next[k.activity.id] = true;\n setExpandedMap(next);\n }, [keyed]);\n\n const collapseAll = useCallback(() => setExpandedMap({}), []);\n\n return {\n groups,\n total: keyed.length,\n isExpanded,\n toggleExpanded,\n setExpanded,\n expandAll,\n collapseAll,\n };\n}\n","/**\n * useActivityResources — registry hook for the rich-resource feature.\n *\n * The registry maps `key → ActivityResourceConfig`. Activity items reference\n * resources by `key`; the row renderer looks up the live config so badges,\n * icons, and links can be edited globally without touching individual rows.\n *\n * The hook re-seeds whenever the `resources` prop reference changes and emits\n * the full registry on every mutation via `onResourcesChange`. Wire that\n * callback to localStorage / a backend mutation to persist the user's\n * resource customisations across sessions.\n */\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type {\n ActivityResourceConfig,\n ActivityResourceRef,\n} from '../activities.types';\n\nexport type ActivityResourceRegistry = Readonly<\n Record<string, ActivityResourceConfig>\n>;\n\nexport interface UseActivityResourcesOptions {\n resources?: ActivityResourceRegistry;\n onResourcesChange?: (registry: ActivityResourceRegistry) => void;\n}\n\nexport interface UseActivityResourcesReturn {\n registry: ActivityResourceRegistry;\n /** Look up a resource by ref or key. */\n get: (\n ref: ActivityResourceRef | string,\n ) => ActivityResourceConfig | undefined;\n /** Replace a resource entry wholesale (or insert new). */\n register: (key: string, config: ActivityResourceConfig) => void;\n /** Shallow-merge a partial update over an existing entry. */\n update: (key: string, partial: Partial<ActivityResourceConfig>) => void;\n /** Remove an entry. */\n remove: (key: string) => void;\n /** Replace the entire registry. */\n setAll: (registry: ActivityResourceRegistry) => void;\n /** Reset to the original `resources` prop (or empty if none). */\n reset: () => void;\n}\n\nexport function useActivityResources({\n resources,\n onResourcesChange,\n}: UseActivityResourcesOptions = {}): UseActivityResourcesReturn {\n const [registry, setRegistry] = useState<ActivityResourceRegistry>(\n () => resources ?? {},\n );\n\n const seedRef = useRef(resources);\n useEffect(() => {\n if (resources !== seedRef.current) {\n seedRef.current = resources;\n setRegistry(resources ?? {});\n }\n }, [resources]);\n\n const onChangeRef = useRef(onResourcesChange);\n useEffect(() => {\n onChangeRef.current = onResourcesChange;\n }, [onResourcesChange]);\n\n const emit = useCallback((next: ActivityResourceRegistry) => {\n onChangeRef.current?.(next);\n }, []);\n\n const register = useCallback(\n (key: string, config: ActivityResourceConfig) => {\n setRegistry((current) => {\n const next = { ...current, [key]: config };\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const update = useCallback(\n (key: string, partial: Partial<ActivityResourceConfig>) => {\n setRegistry((current) => {\n const existing = current[key];\n if (!existing) return current;\n const next = {\n ...current,\n [key]: { ...existing, ...partial },\n };\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const remove = useCallback(\n (key: string) => {\n setRegistry((current) => {\n if (!(key in current)) return current;\n const next = { ...current };\n delete next[key];\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const setAll = useCallback(\n (next: ActivityResourceRegistry) => {\n setRegistry(next);\n emit(next);\n },\n [emit],\n );\n\n const reset = useCallback(() => {\n const next = seedRef.current ?? {};\n setRegistry(next);\n emit(next);\n }, [emit]);\n\n const get = useCallback(\n (ref: ActivityResourceRef | string) => {\n const key = typeof ref === 'string' ? ref : ref.key;\n return registry[key];\n },\n [registry],\n );\n\n return { registry, get, register, update, remove, setAll, reset };\n}\n","/**\n * ActivityActionsMenu — inline overflow menu rendered on rich rows.\n *\n * Backed by the shadcn DropdownMenu primitive; each item fires the\n * activity's per-row `onClick` and forwards `actionId` through `onAction` so\n * consumers can route actions centrally.\n */\nimport { MoreHorizontal } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/base/navigation';\n\nimport type { ActivityAction, ActivityItem } from '../activities.types';\n\nexport interface ActivityActionsMenuProps<TData = unknown> {\n activity: ActivityItem<TData>;\n actions: readonly ActivityAction<TData>[];\n onAction?: (actionId: string, activity: ActivityItem<TData>) => void;\n label: string;\n}\n\nexport function ActivityActionsMenu<TData = unknown>({\n activity,\n actions,\n onAction,\n label,\n}: ActivityActionsMenuProps<TData>) {\n if (actions.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <Button\n {...(triggerProps as Record<string, unknown>)}\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"icon-small\"\n aria-label={label}\n className=\"h-7 w-7 text-muted-foreground\"\n >\n <MoreHorizontal className=\"size-4\" />\n </Button>\n )}\n />\n <DropdownMenuContent align=\"end\" className=\"min-w-40\">\n {actions.map((action) => {\n const Icon = action.icon;\n return (\n <DropdownMenuItem\n key={action.id}\n onClick={() => {\n if (action.disabled) return;\n action.onClick(activity);\n onAction?.(action.id, activity);\n }}\n disabled={action.disabled}\n variant={action.tone === 'destructive' ? 'destructive' : 'default'}\n className=\"gap-2 px-2 py-1.5 text-xs\"\n >\n {!!Icon && <Icon className=\"size-3.5\" />}\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","/**\n * ActivityChanges — collapsible old → new diff block.\n *\n * Each entry shows the attribute label, the previous value (line-through, on\n * a destructive tint), an arrow, and the new value (on a success tint). When\n * neither old nor new is set, falls back to `description`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { ActivityChange } from '../activities.types';\n\nexport interface ActivityChangesProps {\n changes: readonly ActivityChange[];\n className?: string;\n}\n\nfunction ChangeValue({ change }: { change: ActivityChange }) {\n const hasOld = change.old !== null && change.old !== undefined;\n const hasNew = change.new !== null && change.new !== undefined;\n\n if (!hasOld && !hasNew) {\n return (\n <Text size=\"xs\" tag=\"span\">\n {change.description}\n </Text>\n );\n }\n\n return (\n <Text tag=\"span\" size=\"xs\" className=\"inline-flex flex-wrap items-baseline gap-1\">\n {!!hasOld && (\n <Text\n tag=\"span\"\n size=\"xs\"\n className=\"rounded bg-destructive/10 text-destructive line-through px-1 py-px\"\n >\n {change.old}\n </Text>\n )}\n {hasOld && hasNew && (\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n →\n </Text>\n )}\n {!!hasNew && (\n <Text\n tag=\"span\"\n size=\"xs\"\n className=\"rounded bg-success/15 text-success px-1 py-px\"\n >\n {change.new}\n </Text>\n )}\n </Text>\n );\n}\n\nexport function ActivityChanges({ changes, className }: ActivityChangesProps) {\n if (changes.length === 0) return null;\n return (\n <div\n className={cn(\n 'space-y-1.5 rounded-lg border border-border/60 bg-muted/30 px-3 py-2',\n className,\n )}\n >\n {changes.map((change) => (\n <div\n key={`${change.key}-${change.label}`}\n className=\"flex items-baseline gap-2\"\n >\n <Text\n size=\"xs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"shrink-0\"\n >\n {change.label}\n </Text>\n <ChangeValue change={change} />\n </div>\n ))}\n </div>\n );\n}\n","/**\n * ActivityDateLabel — eyebrow rendered above each date group.\n *\n * Consumers can override via `slots.renderDateLabel`. Default: small\n * uppercase eyebrow above each group, with extra top margin between groups.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface ActivityDateLabelProps {\n label: string;\n isFirst: boolean;\n className?: string;\n}\n\nexport function ActivityDateLabel({\n label,\n isFirst,\n className,\n}: ActivityDateLabelProps) {\n if (label === '') return null;\n return (\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className={cn(\n 'uppercase tracking-wider',\n !isFirst && 'mt-5',\n className,\n )}\n >\n {label}\n </Text>\n );\n}\n","/**\n * ActivityEmptyState — neutral empty surface used when no activities are\n * available. Consumers replace via `slots.empty`.\n */\nimport { Activity } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface ActivityEmptyStateProps {\n title: string;\n hint?: string;\n className?: string;\n}\n\nexport function ActivityEmptyState({\n title,\n hint,\n className,\n}: ActivityEmptyStateProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center gap-2 px-6 py-10 text-center',\n className,\n )}\n >\n <span className=\"flex size-9 items-center justify-center rounded-full bg-muted text-muted-foreground\">\n <Activity className=\"size-4\" />\n </span>\n <Text weight=\"medium\">\n {title}\n </Text>\n {!!hint && (\n <Text size=\"xs\" type=\"secondary\">\n {hint}\n </Text>\n )}\n </div>\n );\n}\n","/**\n * Tone palettes shared by the marker, headline status segments, and the\n * resource tag. Tones map to semantic shadcn tokens — never to raw colours —\n * so a consumer rebrand at `:root` flows through the activities feature\n * automatically.\n */\nimport type { ActivityTone } from '../activities.types';\nimport type { ComposedBadgeVariant } from '@/components/base/badge/badge';\n\nexport interface ActivityToneStyle {\n /** Filled background — used by the rich icon marker. */\n bg: string;\n /** Foreground text colour matching the bg. */\n fg: string;\n /** Solid colour used by the compact dot. */\n dot: string;\n /** Border tint used by the connector line. */\n line: string;\n /** Background for chips / tags. */\n chipBg: string;\n /** Text colour for chips / tags. */\n chipFg: string;\n}\n\nexport const ACTIVITY_TONE: Record<ActivityTone, ActivityToneStyle> = {\n primary: {\n bg: 'bg-primary/10',\n fg: 'text-primary',\n dot: 'bg-primary',\n line: 'bg-primary/30',\n chipBg: 'bg-primary/5',\n chipFg: 'text-primary',\n },\n success: {\n bg: 'bg-success/10',\n fg: 'text-success',\n dot: 'bg-success',\n line: 'bg-success/30',\n chipBg: 'bg-success/10',\n chipFg: 'text-success',\n },\n warning: {\n bg: 'bg-warning/30',\n fg: 'text-warning-foreground',\n dot: 'bg-warning',\n line: 'bg-warning/40',\n chipBg: 'bg-warning/30',\n chipFg: 'text-warning-foreground',\n },\n destructive: {\n bg: 'bg-destructive/10',\n fg: 'text-destructive',\n dot: 'bg-destructive',\n line: 'bg-destructive/30',\n chipBg: 'bg-destructive/10',\n chipFg: 'text-destructive',\n },\n info: {\n bg: 'bg-info/10',\n fg: 'text-info',\n dot: 'bg-info',\n line: 'bg-info/30',\n chipBg: 'bg-info/10',\n chipFg: 'text-info',\n },\n neutral: {\n bg: 'bg-muted',\n fg: 'text-muted-foreground',\n dot: 'bg-muted-foreground/60',\n line: 'bg-border',\n chipBg: 'bg-muted',\n chipFg: 'text-muted-foreground',\n },\n};\n\n/** Map an activity tone onto the closest base/Badge variant. */\nexport const TONE_TO_BADGE_VARIANT: Record<ActivityTone, ComposedBadgeVariant> = {\n primary: 'primary',\n success: 'success',\n warning: 'warning',\n destructive: 'destructive',\n info: 'info',\n neutral: 'secondary',\n};\n","/**\n * ActivityResourceTag — chip rendering for a registered resource.\n *\n * The resource registry stores per-key `ActivityResourceConfig` (label, icon,\n * tone, badge, tags). This component renders those as a single inline chip\n * suitable for embedding into a headline. Falls back gracefully when the\n * registry has no entry — uses the segment's text/label.\n */\nimport { CircleDot } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\n\nimport type {\n ActivityResourceConfig,\n ActivityResourceRef,\n ActivityTone,\n} from '../activities.types';\n\nimport { ACTIVITY_TONE, TONE_TO_BADGE_VARIANT } from './tone-tokens';\n\nexport interface ActivityResourceTagProps {\n resource: ActivityResourceRef;\n config?: ActivityResourceConfig;\n /** Fallback label if neither config nor segment text are present. */\n fallbackText?: string;\n onClick?: () => void;\n}\n\nexport function ActivityResourceTag({\n resource,\n config,\n fallbackText,\n onClick,\n}: ActivityResourceTagProps) {\n const tone: ActivityTone = config?.tone ?? 'neutral';\n const palette = ACTIVITY_TONE[tone];\n const Icon = config?.icon ?? CircleDot;\n const label = config?.label ?? fallbackText ?? resource.label ?? resource.key;\n const interactive = typeof onClick === 'function';\n\n const inner = (\n <>\n <Icon className={cn('size-icon-sm shrink-0', palette.fg)} />\n <Text tag=\"span\" size=\"inherit\" weight=\"medium\" className={palette.chipFg}>\n {label}\n </Text>\n {!!config?.tags && config.tags.length > 0 && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"ml-space-2xs border-l border-current/20 pl-space-sm\"\n >\n {config.tags.join(' · ')}\n </Text>\n )}\n {!!config?.badge && (\n <Badge\n inline\n variant={TONE_TO_BADGE_VARIANT[config.badge.tone ?? 'neutral']}\n className=\"ml-space-2xs\"\n >\n {config.badge.label}\n </Badge>\n )}\n </>\n );\n\n const chipClass = cn(\n 'inline-flex items-center gap-space-sm rounded-full px-space-md py-space-2xs align-baseline text-xxs',\n 'border border-border/60',\n palette.chipBg,\n interactive &&\n 'cursor-pointer transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n );\n\n if (interactive) {\n return (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n onClick?.();\n }}\n className={cn(chipClass, 'h-auto rounded-full')}\n title={config?.note}\n >\n {inner}\n </Button>\n );\n }\n\n return (\n <span className={chipClass} title={config?.note}>\n {inner}\n </span>\n );\n}\n","/**\n * ActivityHeadline — segment renderer for the headline line.\n *\n * Renders typed segments (`actor` / `field` / `value` / `status` / `resource`\n * / `text`) into mixed inline content with proper typography and tone.\n *\n * When no segments are provided, falls back to splitting `headline` around\n * the actor's name so the actor still becomes interactive when possible.\n */\nimport { Fragment, type ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\n\nimport type {\n ActivityActor,\n ActivityHeadlineSegment,\n ActivityItem,\n ActivityResourceConfig,\n ActivityResourceRef,\n} from '../activities.types';\nimport { ActivityResourceTag } from './activity-resource-tag';\nimport { TONE_TO_BADGE_VARIANT } from './tone-tokens';\n\nexport interface ActivityHeadlineProps<TData = unknown> {\n activity: ActivityItem<TData>;\n currentUserId?: string;\n youLabel: string;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n onResourceClick?: (\n resource: ActivityResourceRef,\n config: ActivityResourceConfig | undefined,\n activity: ActivityItem<TData>,\n ) => void;\n /** Live registry lookup for resource segments. */\n getResourceConfig?: (\n ref: ActivityResourceRef,\n ) => ActivityResourceConfig | undefined;\n}\n\nfunction ActorNode<TData>({\n actorId,\n text,\n href,\n activity,\n youLabel,\n currentUserId,\n onActorClick,\n}: {\n actorId?: string;\n text: string;\n href?: string;\n activity: ActivityItem<TData>;\n youLabel: string;\n currentUserId?: string;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n}) {\n const isYou =\n currentUserId !== undefined &&\n actorId !== undefined &&\n currentUserId === actorId;\n const display = isYou ? youLabel : text;\n const actor: ActivityActor = activity.actor ?? { id: actorId, name: text };\n\n if (href) {\n return (\n <a\n href={href}\n onClick={(e) => {\n if (onActorClick) {\n e.preventDefault();\n e.stopPropagation();\n onActorClick(actor, activity);\n }\n }}\n className=\"font-semibold text-foreground underline-offset-2 hover:underline\"\n >\n {display}\n </a>\n );\n }\n\n if (onActorClick) {\n return (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n onActorClick(actor, activity);\n }}\n className=\"h-auto rounded px-0 py-0 font-semibold text-foreground underline-offset-2 hover:underline\"\n >\n {display}\n </Button>\n );\n }\n\n return (\n <Text tag=\"span\" weight=\"semibold\">\n {display}\n </Text>\n );\n}\n\nfunction renderSegments<TData>(\n segments: readonly ActivityHeadlineSegment[],\n props: ActivityHeadlineProps<TData>,\n): ReactNode {\n return segments.map((segment, index) => {\n const key = `seg-${index}-${segment.type}`;\n switch (segment.type) {\n case 'actor':\n return (\n <Fragment key={key}>\n <ActorNode<TData>\n actorId={segment.actorId}\n text={segment.text}\n href={segment.href}\n activity={props.activity}\n youLabel={props.youLabel}\n currentUserId={props.currentUserId}\n onActorClick={props.onActorClick}\n />{' '}\n </Fragment>\n );\n case 'field':\n case 'value':\n return (\n <Fragment key={key}>\n <Text tag=\"span\" weight=\"semibold\">\n {segment.text}\n </Text>{' '}\n </Fragment>\n );\n case 'status':\n return (\n <Fragment key={key}>\n <Badge\n inline\n variant={TONE_TO_BADGE_VARIANT[segment.tone ?? 'neutral']}\n >\n {segment.text}\n </Badge>{' '}\n </Fragment>\n );\n case 'resource': {\n const config = props.getResourceConfig?.(segment.resource);\n return (\n <Fragment key={key}>\n <ActivityResourceTag\n resource={segment.resource}\n config={config}\n fallbackText={segment.text}\n onClick={\n props.onResourceClick\n ? () =>\n props.onResourceClick?.(\n segment.resource,\n config,\n props.activity,\n )\n : undefined\n }\n />{' '}\n </Fragment>\n );\n }\n case 'text':\n default:\n return (\n <Fragment key={key}>\n <Text tag=\"span\">\n {segment.text}\n </Text>{' '}\n </Fragment>\n );\n }\n });\n}\n\nfunction renderFallback<TData>(props: ActivityHeadlineProps<TData>): ReactNode {\n const { activity } = props;\n const fallbackHeadline =\n activity.headline ?? activity.event;\n const actorName = activity.actor?.name;\n if (!actorName || !fallbackHeadline.includes(actorName)) {\n return (\n <Text tag=\"span\">\n {fallbackHeadline}\n </Text>\n );\n }\n const [before, ...after] = fallbackHeadline.split(actorName);\n return (\n <>\n {!!before && (\n <Text tag=\"span\">\n {before}\n </Text>\n )}\n <ActorNode<TData>\n actorId={activity.actor?.id}\n text={actorName}\n href={activity.actor?.href}\n activity={activity}\n youLabel={props.youLabel}\n currentUserId={props.currentUserId}\n onActorClick={props.onActorClick}\n />\n {after.length > 0 && (\n <Text tag=\"span\">\n {after.join(actorName)}\n </Text>\n )}\n </>\n );\n}\n\nexport function ActivityHeadline<TData = unknown>(\n props: ActivityHeadlineProps<TData>,\n) {\n const segments = props.activity.segments;\n if (segments && segments.length > 0) {\n return (\n <span className=\"leading-snug [&>span]:leading-snug\">\n {renderSegments<TData>(segments, props)}\n </span>\n );\n }\n return <span className=\"leading-snug\">{renderFallback<TData>(props)}</span>;\n}\n","/**\n * ActivityMarker — left-edge visual for a row.\n *\n * Density mapping:\n * - `compact` → small tone-coloured dot\n * - `default` → 22px tone-tinted square with the event icon\n * - `rich` → 28px tone-tinted circle with the event icon\n *\n * Always renders the connector line beneath unless `isLast` is true.\n */\nimport type { LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nimport type { ActivityDensity, ActivityTone } from '../activities.types';\n\nimport { ACTIVITY_TONE } from './tone-tokens';\n\nexport interface ActivityMarkerProps {\n icon: LucideIcon;\n tone: ActivityTone;\n density: ActivityDensity;\n isLast: boolean;\n}\n\nexport function ActivityMarker({\n icon: Icon,\n tone,\n density,\n isLast,\n}: ActivityMarkerProps) {\n const palette = ACTIVITY_TONE[tone];\n\n if (density === 'compact') {\n return (\n <div className=\"flex flex-col items-center\">\n <span\n aria-hidden\n className={cn('mt-1.5 size-2 shrink-0 rounded-full', palette.dot)}\n />\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n }\n\n if (density === 'rich') {\n return (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(\n 'flex size-7 shrink-0 items-center justify-center rounded-full ring-1 ring-border/60',\n palette.bg,\n palette.fg,\n )}\n >\n <Icon className=\"size-3.5\" />\n </span>\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(\n 'flex size-5 shrink-0 items-center justify-center rounded-full',\n palette.bg,\n palette.fg,\n )}\n >\n <Icon className=\"size-3\" />\n </span>\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n}\n","/**\n * ActivityRow — single row layout used by `<ActivityFeed />`.\n *\n * Composes the marker, headline, optional description, metadata chips,\n * source badge, timestamp, and (rich-only) the change-detail block plus\n * action menu. Per-density layout follows the design-system rules:\n * compact (dot, single line) / default (icon, headline + meta line) /\n * rich (icon, full header + body + actions).\n */\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n ActivityAction,\n ActivityActor,\n ActivityDensity,\n ActivityEventConfig,\n ActivityItem,\n ActivityResourceConfig,\n ActivityResourceRef,\n ActivityTone,\n} from '../activities.types';\n\nimport { ActivityActionsMenu } from './activity-actions-menu';\nimport { ActivityChanges } from './activity-changes';\nimport { ActivityHeadline } from './activity-headline';\nimport { ActivityMarker } from './activity-marker';\nimport { ActivityResourceTag } from './activity-resource-tag';\n\nexport interface ActivityRowProps<TData = unknown> {\n activity: ActivityItem<TData>;\n density: ActivityDensity;\n eventConfig: ActivityEventConfig;\n tone: ActivityTone;\n isLast: boolean;\n expanded: boolean;\n onToggleExpanded: () => void;\n relativeTime: string | null;\n absoluteTime: string | null;\n sourceLabel: string | null;\n youLabel: string;\n showChangesLabel: string;\n hideChangesLabel: string;\n actionsLabel: string;\n currentUserId?: string;\n actions: readonly ActivityAction<TData>[];\n onActivityClick?: (activity: ActivityItem<TData>) => void;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n onResourceClick?: (\n resource: ActivityResourceRef,\n config: ActivityResourceConfig | undefined,\n activity: ActivityItem<TData>,\n ) => void;\n onAction?: (actionId: string, activity: ActivityItem<TData>) => void;\n getResourceConfig?: (\n ref: ActivityResourceRef,\n ) => ActivityResourceConfig | undefined;\n /** Slot override for the headline only. */\n headlineOverride?: ReactNode;\n /** Slot override for the marker only. */\n markerOverride?: ReactNode;\n}\n\nexport function ActivityRow<TData = unknown>(props: ActivityRowProps<TData>) {\n const {\n activity,\n density,\n eventConfig,\n tone,\n isLast,\n expanded,\n onToggleExpanded,\n relativeTime,\n absoluteTime,\n sourceLabel,\n youLabel,\n showChangesLabel,\n hideChangesLabel,\n actionsLabel,\n currentUserId,\n actions,\n onActivityClick,\n onActorClick,\n onResourceClick,\n onAction,\n getResourceConfig,\n headlineOverride,\n markerOverride,\n } = props;\n\n const Icon = activity.iconOverride ?? eventConfig.icon;\n const hasChanges = (activity.changes?.length ?? 0) > 0;\n const hasMetadata = (activity.metadata?.length ?? 0) > 0;\n const hasResources = (activity.resources?.length ?? 0) > 0;\n const hasDescription =\n activity.description !== undefined &&\n activity.description !== null &&\n activity.description !== '';\n const showSecondaryRow = density !== 'compact';\n const showRichBody = density === 'rich';\n\n const headlineNode =\n headlineOverride ??\n (\n <ActivityHeadline<TData>\n activity={activity}\n currentUserId={currentUserId}\n youLabel={youLabel}\n onActorClick={onActorClick}\n onResourceClick={onResourceClick}\n getResourceConfig={getResourceConfig}\n />\n );\n\n const markerNode =\n markerOverride ?? (\n <ActivityMarker\n icon={Icon}\n tone={tone}\n density={density}\n isLast={isLast}\n />\n );\n\n const interactive = typeof onActivityClick === 'function';\n const hasNestedInteractive = (\n hasChanges ||\n hasResources ||\n actions.length > 0 ||\n typeof onActorClick === 'function' ||\n typeof onResourceClick === 'function'\n );\n const keyboardInteractive = interactive && !hasNestedInteractive;\n\n return (\n <div\n className={cn(\n 'relative flex gap-space-lg',\n interactive && 'cursor-pointer rounded-md hover:bg-muted/40',\n )}\n onClick={interactive ? () => onActivityClick?.(activity) : undefined}\n role={keyboardInteractive ? 'button' : undefined}\n tabIndex={keyboardInteractive ? 0 : undefined}\n onKeyDown={\n keyboardInteractive\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onActivityClick?.(activity);\n }\n }\n : undefined\n }\n >\n {markerNode}\n\n <div\n className={cn(\n 'min-w-0 flex-1',\n !isLast && (density === 'rich' ? 'pb-row-y-lg' : density === 'compact' ? 'pb-row-y' : 'pb-row-y-lg'),\n )}\n >\n <div className=\"flex flex-col gap-space-sm sm:flex-row sm:items-start sm:justify-between sm:gap-space-lg\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-space-sm gap-y-space-sm\">\n <Text tag=\"span\" size=\"inherit\" lineHeight=\"snug\">\n {headlineNode}\n </Text>\n {!!sourceLabel && (\n <Badge inline variant=\"secondary\">\n {sourceLabel}\n </Badge>\n )}\n {showRichBody && hasChanges && (\n <Button\n type=\"button\"\n size=\"icon-small\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n className=\"h-5 w-5 text-muted-foreground\"\n onClick={(e) => {\n e.stopPropagation();\n onToggleExpanded();\n }}\n title={expanded ? hideChangesLabel : showChangesLabel}\n aria-label={expanded ? hideChangesLabel : showChangesLabel}\n aria-expanded={expanded}\n >\n {expanded ? (\n <ChevronDown className=\"size-3.5\" />\n ) : (\n <ChevronRight className=\"size-3.5\" />\n )}\n </Button>\n )}\n </div>\n\n <div className=\"flex shrink-0 items-center gap-space-sm\">\n {!!relativeTime && (\n <Text\n size=\"inherit\"\n type=\"secondary\"\n className=\"whitespace-nowrap tabular-nums pt-space-2xs text-xxs\"\n title={absoluteTime ?? undefined}\n >\n {relativeTime}\n </Text>\n )}\n {showRichBody && actions.length > 0 && (\n <ActivityActionsMenu<TData>\n activity={activity}\n actions={actions}\n onAction={onAction}\n label={actionsLabel}\n />\n )}\n </div>\n </div>\n\n {!!showSecondaryRow && hasDescription && (\n <Text tag=\"div\" size=\"inherit\" type=\"secondary\" className=\"mt-space-sm text-xs\">\n {activity.description}\n </Text>\n )}\n\n {!!showRichBody && hasMetadata && activity.metadata && (\n <div className=\"mt-space-md flex flex-wrap gap-x-space-lg gap-y-space-sm\">\n {activity.metadata.map((m) => (\n <Text key={m.label} size=\"inherit\" type=\"secondary\" className=\"text-xs\">\n <Text tag=\"span\" size=\"inherit\" type=\"discrete\" className=\"text-xxs\">\n {m.label}:{' '}\n </Text>\n {m.value}\n </Text>\n ))}\n </div>\n )}\n\n {!!showRichBody && hasResources && activity.resources && (\n <div className=\"mt-space-md flex flex-wrap gap-space-sm\">\n {activity.resources.map((res) => {\n const cfg = getResourceConfig?.(res);\n return (\n <ActivityResourceTag\n key={res.key}\n resource={res}\n config={cfg}\n onClick={\n onResourceClick\n ? () =>\n onResourceClick(\n res,\n cfg,\n activity,\n )\n : undefined\n }\n />\n );\n })}\n </div>\n )}\n\n {!!showRichBody && hasChanges && expanded && activity.changes && (\n <div className=\"mt-space-md\">\n <ActivityChanges changes={activity.changes} />\n </div>\n )}\n </div>\n </div>\n );\n}\n","/**\n * ActivityFeed — framework-agnostic activity timeline.\n *\n * Composition seams:\n * - `strings` — deep-partial override of every label\n * - `eventConfig` — mass-configurable per-event icon/tone/labels\n * - `slots` — replace any region (row / headline / marker /\n * dateLabel / empty / loading / header / footer)\n * - `slots.renderRow` — full per-row override\n * - `accessors` — formatRelative/Absolute, getEventLabel, …\n * - `actionsForActivity` — surface a per-row action menu (rich density)\n * - `resources` + `onResourcesChange` — registry-driven rich resource\n * tags (icons, badges, links, tags) with save\n * and restore semantics for the consumer\n *\n * Headless usage:\n * - Call `useActivityFeed({ activities, ... })` directly to drive a\n * completely custom UI against the same grouping/expand state machine.\n * - Call `useActivityResources({ resources, onResourcesChange })` to\n * drive the registry independently.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Wire actor / resource navigation\n * via callbacks at the call site.\n */\nimport { useMemo, type ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { useDatesConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultActivityEventConfig,\n resolveEventConfig,\n} from './activities.config';\nimport {\n defaultActivitiesStrings,\n} from './activities.strings';\nimport type {\n ActivityAction,\n ActivityFeedProps,\n ActivityItem,\n ActivityRenderRowContext,\n ActivityTone,\n} from './activities.types';\nimport { useActivityFeed } from './hooks/use-activity-feed';\nimport { useActivityResources } from './hooks/use-activity-resources';\nimport {\n ActivityDateLabel,\n ActivityEmptyState,\n ActivityRow,\n} from './partials';\n\nfunction defaultFormatAbsolute(iso: string, locale?: string): string {\n try {\n return new Intl.DateTimeFormat(locale, {\n dateStyle: 'medium',\n timeStyle: 'short',\n }).format(new Date(iso));\n } catch {\n return iso;\n }\n}\n\nfunction resolveTone<TData>(\n activity: ActivityItem<TData>,\n eventTone: ActivityTone,\n): ActivityTone {\n return activity.toneOverride ?? eventTone;\n}\n\nexport function ActivityFeed<TData = unknown>(props: ActivityFeedProps<TData>) {\n const {\n activities = [],\n density = 'default',\n groupByDate = true,\n expandedByDefault = false,\n currentUserId,\n loading = false,\n eventConfig: eventConfigOverride,\n strings: stringsProp,\n slots,\n className,\n locale,\n // accessors\n formatRelativeTime,\n formatAbsoluteTime,\n formatDateGroupLabel,\n getEventLabel: _getEventLabel,\n getSourceLabel,\n actionsForActivity,\n // callbacks\n onActivityClick,\n onActorClick,\n onResourceClick,\n onAction,\n // resources\n resources,\n onResourcesChange,\n } = props;\n\n const strings = useStrings(defaultActivitiesStrings, stringsProp);\n\n const eventConfigMap = useMemo(\n () => ({ ...defaultActivityEventConfig, ...eventConfigOverride }),\n [eventConfigOverride],\n );\n\n const registry = useActivityResources({\n resources,\n onResourcesChange,\n });\n\n const feed = useActivityFeed<TData>({\n activities,\n groupByDate,\n expandedByDefault,\n locale,\n strings,\n formatDateGroupLabel,\n });\n\n const { formatRelativeTime: storeFormatRelative } = useDatesConfig();\n const fmtRelative = formatRelativeTime ?? storeFormatRelative ?? ((iso: string) => iso);\n const fmtAbsolute = formatAbsoluteTime ?? ((iso: string) => defaultFormatAbsolute(iso, locale));\n\n if (loading) {\n return (\n <div className={cn('activities-feed--component', 'px-2 py-4', className)}>\n {slots?.loading ?? (\n <Text type=\"secondary\" align=\"center\">\n {strings.loading}\n </Text>\n )}\n </div>\n );\n }\n\n if (activities.length === 0) {\n return (\n <div className={cn('activities-feed--component', 'px-2 py-2', className)}>\n {slots?.empty ?? <ActivityEmptyState title={strings.empty} />}\n </div>\n );\n }\n\n const totalRendered = feed.groups.reduce((acc, g) => acc + g.items.length, 0);\n let renderedSoFar = 0;\n\n return (\n <div className={cn('activities-feed--component flex flex-col', className)}>\n {!!slots?.header && <div className=\"mb-3\">{slots.header}</div>}\n\n <div className=\"flex flex-col\">\n {feed.groups.map((group, gi) => {\n const isFirstGroup = gi === 0;\n return (\n <div key={`${group.label}-${gi}`} className={cn(isFirstGroup ? '' : 'mt-1')}>\n {slots?.renderDateLabel\n ? slots.renderDateLabel(group.label, isFirstGroup)\n : (\n <ActivityDateLabel\n label={group.label}\n isFirst={isFirstGroup}\n className={isFirstGroup ? '' : 'mb-2'}\n />\n )}\n\n <div className={cn('flex flex-col', !!group.label && 'mt-2')}>\n {group.items.map((keyed, ii) => {\n const activity = keyed.activity;\n const isFirstInGroup = ii === 0;\n const isLast =\n ++renderedSoFar === totalRendered;\n const eventCfg = resolveEventConfig(\n activity.event,\n eventConfigMap,\n );\n const tone = resolveTone(activity, eventCfg.tone);\n const relativeTime = activity.timestamp\n ?? (activity.createdAt\n ? fmtRelative(activity.createdAt)\n : null);\n const absoluteTime = activity.createdAt\n ? fmtAbsolute(activity.createdAt)\n : null;\n const sourceLabel = activity.source\n ? (getSourceLabel?.(activity.source)\n ?? strings.sources[activity.source]\n ?? eventCfg.sourceLabel\n ?? null)\n : eventCfg.sourceLabel ?? null;\n const sourceLabelTrimmed =\n sourceLabel && sourceLabel.trim().length > 0\n ? sourceLabel\n : null;\n const actions: readonly ActivityAction<TData>[] =\n actionsForActivity?.(activity) ?? [];\n\n const ctx: ActivityRenderRowContext<TData> = {\n density,\n isLast,\n isFirstInGroup,\n activity,\n eventConfig: eventCfg,\n tone,\n relativeTime,\n absoluteTime,\n sourceLabel: sourceLabelTrimmed,\n expanded: feed.isExpanded(activity.id),\n toggleExpanded: () =>\n feed.toggleExpanded(activity.id),\n };\n\n const customRow = slots?.renderRow?.(activity, ctx);\n if (customRow !== undefined) {\n return (\n <div key={keyed.key}>{customRow}</div>\n );\n }\n\n const headlineOverride =\n slots?.renderHeadline?.(activity, ctx);\n const markerOverride =\n slots?.renderMarker?.(activity, ctx);\n\n return (\n <ActivityRow<TData>\n key={keyed.key}\n activity={activity}\n density={density}\n eventConfig={eventCfg}\n tone={tone}\n isLast={isLast}\n expanded={ctx.expanded}\n onToggleExpanded={ctx.toggleExpanded}\n relativeTime={relativeTime}\n absoluteTime={absoluteTime}\n sourceLabel={sourceLabelTrimmed}\n youLabel={strings.you}\n showChangesLabel={strings.showChanges}\n hideChangesLabel={strings.hideChanges}\n actionsLabel={strings.actionsLabel}\n currentUserId={currentUserId}\n actions={actions}\n onActivityClick={onActivityClick}\n onActorClick={onActorClick}\n onResourceClick={onResourceClick}\n onAction={onAction}\n getResourceConfig={(ref) =>\n registry.get(ref)\n }\n headlineOverride={\n headlineOverride as ReactNode | undefined\n }\n markerOverride={\n markerOverride as ReactNode | undefined\n }\n />\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n\n {!!slots?.footer && <div className=\"mt-3\">{slots.footer}</div>}\n </div>\n );\n}\n\nActivityFeed.displayName = 'ActivityFeed';\n","/**\n * ActivityFeedCard — `<ActivityFeed />` wrapped in `SmartCard`.\n *\n * Use this when you want the canonical card chrome (title + description +\n * actions menu + content padding). For embedded surfaces (sidebars, panels)\n * use `<ActivityFeed />` directly.\n */\nimport { Activity } from 'lucide-react';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { useStrings } from '@/lib/strings';\n\nimport { ActivityFeed } from '../activities-feed';\nimport { defaultActivitiesStrings } from '../activities.strings';\nimport type { ActivityFeedCardProps } from '../activities.types';\n\nexport function ActivityFeedCard<TData = unknown>({\n title,\n titleSuffix,\n description,\n padding = 'default',\n composerSlot,\n className,\n strings: stringsProp,\n slots,\n ...feedProps\n}: ActivityFeedCardProps<TData>) {\n const strings = useStrings(defaultActivitiesStrings, stringsProp);\n\n const cardTitle = title ?? strings.title;\n\n return (\n <SmartCard\n icon={<Activity className=\"size-4\" />}\n title={cardTitle}\n titleSuffix={titleSuffix}\n description={description}\n padding={padding}\n className={className}\n >\n <ActivityFeed<TData>\n {...feedProps}\n strings={stringsProp}\n slots={{\n ...slots,\n header: composerSlot ?? slots?.header,\n }}\n />\n </SmartCard>\n );\n}\n\nActivityFeedCard.displayName = 'ActivityFeedCard';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/activities/activities.config.ts","../../../../src/components/features/activities/activities.strings.ts","../../../../src/components/features/activities/hooks/use-activity-feed.ts","../../../../src/components/features/activities/hooks/use-activity-resources.ts","../../../../src/components/features/activities/partials/activity-actions-menu.tsx","../../../../src/components/features/activities/partials/activity-changes.tsx","../../../../src/components/features/activities/partials/activity-date-label.tsx","../../../../src/components/features/activities/partials/activity-empty-state.tsx","../../../../src/components/features/activities/partials/tone-tokens.ts","../../../../src/components/features/activities/partials/activity-resource-tag.tsx","../../../../src/components/features/activities/partials/activity-headline.tsx","../../../../src/components/features/activities/partials/activity-marker.tsx","../../../../src/components/features/activities/partials/activity-row.tsx","../../../../src/components/features/activities/activities-feed.tsx","../../../../src/components/features/activities/partials/activities-feed-card.tsx"],"sourcesContent":["/**\n * Default per-event configuration. Consumers override individual events by\n * spreading this map and overwriting the keys they care about, e.g.:\n *\n * import { defaultActivityEventConfig } from '@/components/features/activities';\n *\n * const eventConfig = {\n * ...defaultActivityEventConfig,\n * order_refunded: { icon: Receipt, tone: 'warning', label: 'Refunded' },\n * };\n *\n * The mass `eventConfig` prop on `<ActivityFeed />` is shallow-merged on top\n * of these defaults, so any unspecified event falls back to the library\n * default and ultimately to the neutral `defaultEvent` entry below.\n */\nimport {\n AlertTriangle,\n ArrowLeftRight,\n Ban,\n Check,\n CircleDot,\n FileEdit,\n Flag,\n Heart,\n LinkIcon,\n Mail,\n MailCheck,\n MailOpen,\n MailX,\n MessageSquare,\n Pencil,\n Plus,\n ShieldCheck,\n ShoppingBag,\n Sparkles,\n Star,\n Trash2,\n UserMinus,\n UserPlus,\n} from 'lucide-react';\n\nimport type { ActivityEventConfig, ActivityEventConfigMap } from './activities.types';\n\n/** Neutral fallback used when an event has no entry in the registry. */\nexport const defaultEventConfig: ActivityEventConfig = {\n icon: CircleDot,\n tone: 'neutral',\n};\n\nexport const defaultActivityEventConfig: ActivityEventConfigMap = {\n // Lifecycle\n created: { icon: Plus, tone: 'success', label: 'Created' },\n updated: { icon: Pencil, tone: 'info', label: 'Updated' },\n edited: { icon: FileEdit, tone: 'info', label: 'Edited' },\n deleted: { icon: Trash2, tone: 'destructive', label: 'Deleted' },\n cancelled: { icon: Ban, tone: 'destructive', label: 'Cancelled' },\n restored: { icon: Sparkles, tone: 'success', label: 'Restored' },\n\n // Status transitions\n status_changed: { icon: ArrowLeftRight, tone: 'primary', label: 'Status changed' },\n status_transition: { icon: ArrowLeftRight, tone: 'primary', label: 'Status changed' },\n status_override: { icon: ArrowLeftRight, tone: 'warning', label: 'Status overridden' },\n\n // People\n assigned: { icon: UserPlus, tone: 'info', label: 'Assigned' },\n unassigned: { icon: UserMinus, tone: 'destructive', label: 'Unassigned' },\n\n // Mail\n mail_sent: { icon: Mail, tone: 'info', label: 'Email sent' },\n mail_delivered: { icon: MailCheck, tone: 'success', label: 'Email delivered' },\n mail_opened: { icon: MailOpen, tone: 'info', label: 'Email opened' },\n mail_clicked: { icon: MailOpen, tone: 'info', label: 'Email clicked' },\n mail_bounced: { icon: MailX, tone: 'destructive', label: 'Email bounced' },\n mail_failed: { icon: MailX, tone: 'destructive', label: 'Email failed' },\n\n // Comments\n comment_created: { icon: MessageSquare, tone: 'warning', label: 'Comment posted' },\n comment_deleted: { icon: MessageSquare, tone: 'destructive', label: 'Comment deleted' },\n\n // Commerce\n paid: { icon: Check, tone: 'success', label: 'Paid' },\n refunded: { icon: ArrowLeftRight, tone: 'warning', label: 'Refunded' },\n confirmed: { icon: ShieldCheck, tone: 'success', label: 'Confirmed' },\n favorited: { icon: Heart, tone: 'warning', label: 'Favorited' },\n ordered: { icon: ShoppingBag, tone: 'primary', label: 'Order placed' },\n\n // Publishing\n published: { icon: Star, tone: 'success', label: 'Published' },\n flagged: { icon: Flag, tone: 'warning', label: 'Flagged' },\n linked: { icon: LinkIcon, tone: 'info', label: 'Linked' },\n\n // Failures\n failed: { icon: AlertTriangle, tone: 'destructive', label: 'Failed' },\n health_check_failed: { icon: AlertTriangle, tone: 'destructive', label: 'Health check failed' },\n};\n\n/** Resolve `eventConfig[event]` with override + default fallback. */\nexport function resolveEventConfig(\n event: string,\n map: ActivityEventConfigMap,\n): ActivityEventConfig {\n return map[event] ?? defaultEventConfig;\n}\n","/**\n * Strings for the Activities feature. Consumers override via the `strings`\n * prop on `<ActivityFeed>` / `<ActivityFeedCard>`. Values are deep-merged\n * over these defaults — `sources` and `events` merge one level deep so a\n * consumer can override a single source/event label without rewriting the\n * whole map.\n */\nexport interface ActivitiesStrings {\n /** Card title — usually \"Activity\". */\n title: string;\n /** Empty-state copy. */\n empty: string;\n /** Loading-state copy. */\n loading: string;\n /** Date-group label for today. */\n today: string;\n /** Date-group label for yesterday. */\n yesterday: string;\n /** Fallback label for activities without a timestamp. */\n undated: string;\n /** Replacement for actor name when `actorId === currentUserId`. */\n you: string;\n /** Toggle button label — collapsed state. */\n showChanges: string;\n /** Toggle button label — expanded state. */\n hideChanges: string;\n /** aria-label for the actions menu trigger. */\n actionsLabel: string;\n /** Generic \"more\" affordance label. */\n moreLabel: string;\n /** Map of `source` → display label. */\n sources: Record<string, string>;\n /** Map of `event` → display label. Used as a fallback for headlines. */\n events: Record<string, string>;\n}\n\nexport const defaultActivitiesStrings: ActivitiesStrings = {\n title: 'Activity',\n empty: 'No activity yet.',\n loading: 'Loading activity…',\n today: 'Today',\n yesterday: 'Yesterday',\n undated: 'Undated',\n you: 'You',\n showChanges: 'Show changes',\n hideChanges: 'Hide changes',\n actionsLabel: 'Activity actions',\n moreLabel: 'More',\n sources: {\n comment: 'Comment',\n mail: 'Mail',\n booking_log: 'Booking log',\n activity_log: '',\n system: 'System',\n },\n events: {},\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolate(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useActivityFeed — headless state machine for the Activities feature.\n *\n * Returns date-grouped activities with stable React keys, plus the expand /\n * collapse map for change-detail rows. Consumers wanting a fully custom UI\n * can call this hook directly and bypass `<ActivityFeed />`.\n */\nimport { isToday, isYesterday } from 'date-fns';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport type { ActivitiesStrings } from '../activities.strings';\nimport type { ActivityItem } from '../activities.types';\n\nexport interface ActivityKeyedItem<TData = unknown> {\n activity: ActivityItem<TData>;\n key: string;\n}\n\nexport interface ActivityDateGroup<TData = unknown> {\n label: string;\n items: ActivityKeyedItem<TData>[];\n}\n\nexport interface UseActivityFeedOptions<TData = unknown> {\n activities: ReadonlyArray<ActivityItem<TData>>;\n groupByDate?: boolean;\n expandedByDefault?: boolean;\n locale?: string;\n strings: ActivitiesStrings;\n formatDateGroupLabel?: (\n iso: string | null,\n strings: ActivitiesStrings,\n ) => string;\n}\n\nexport interface UseActivityFeedReturn<TData = unknown> {\n groups: ActivityDateGroup<TData>[];\n total: number;\n isExpanded: (id: string) => boolean;\n toggleExpanded: (id: string) => void;\n setExpanded: (id: string, value: boolean) => void;\n expandAll: () => void;\n collapseAll: () => void;\n}\n\nfunction defaultDateGroupLabel(\n iso: string | null,\n strings: ActivitiesStrings,\n locale?: string,\n): string {\n if (!iso) return strings.undated;\n const date = new Date(iso);\n if (isToday(date)) return strings.today;\n if (isYesterday(date)) return strings.yesterday;\n try {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(date);\n } catch {\n return new Intl.DateTimeFormat(undefined, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(date);\n }\n}\n\nexport function useActivityFeed<TData = unknown>({\n activities,\n groupByDate = true,\n expandedByDefault = false,\n locale,\n strings,\n formatDateGroupLabel,\n}: UseActivityFeedOptions<TData>): UseActivityFeedReturn<TData> {\n const [expandedMap, setExpandedMap] = useState<Record<string, boolean>>({});\n\n const keyed = useMemo<ActivityKeyedItem<TData>[]>(() => {\n const seen = new Map<string, number>();\n return activities.map((activity) => {\n const baseId = String(activity.id ?? '').trim();\n const createdAt = String(activity.createdAt ?? '').trim();\n const event = String(activity.event ?? '').trim();\n const source = String(activity.source ?? '').trim();\n const keyBase = [baseId, createdAt, event, source].join(':');\n const occurrence = (seen.get(keyBase) ?? 0) + 1;\n seen.set(keyBase, occurrence);\n return { activity, key: `${keyBase}:${occurrence}` };\n });\n }, [activities]);\n\n const groups = useMemo<ActivityDateGroup<TData>[]>(() => {\n if (!groupByDate) {\n return keyed.length > 0 ? [{ label: '', items: keyed }] : [];\n }\n const out: ActivityDateGroup<TData>[] = [];\n let currentLabel = '__init__';\n let currentItems: ActivityKeyedItem<TData>[] = [];\n\n const labelFor = (iso: string | null) =>\n formatDateGroupLabel\n ? formatDateGroupLabel(iso, strings)\n : defaultDateGroupLabel(iso, strings, locale);\n\n for (const item of keyed) {\n const iso = item.activity.createdAt ?? null;\n const label = labelFor(iso);\n if (label !== currentLabel) {\n if (currentItems.length > 0) {\n out.push({ label: currentLabel, items: currentItems });\n }\n currentLabel = label;\n currentItems = [item];\n } else {\n currentItems.push(item);\n }\n }\n if (currentItems.length > 0) {\n out.push({ label: currentLabel, items: currentItems });\n }\n return out;\n }, [keyed, groupByDate, locale, strings, formatDateGroupLabel]);\n\n const isExpanded = useCallback(\n (id: string) => expandedMap[id] ?? expandedByDefault,\n [expandedMap, expandedByDefault],\n );\n\n const toggleExpanded = useCallback((id: string) => {\n setExpandedMap((current) => ({\n ...current,\n [id]: !(current[id] ?? false),\n }));\n }, []);\n\n const setExpanded = useCallback((id: string, value: boolean) => {\n setExpandedMap((current) => ({ ...current, [id]: value }));\n }, []);\n\n const expandAll = useCallback(() => {\n const next: Record<string, boolean> = {};\n for (const k of keyed) next[k.activity.id] = true;\n setExpandedMap(next);\n }, [keyed]);\n\n const collapseAll = useCallback(() => setExpandedMap({}), []);\n\n return {\n groups,\n total: keyed.length,\n isExpanded,\n toggleExpanded,\n setExpanded,\n expandAll,\n collapseAll,\n };\n}\n","/**\n * useActivityResources — registry hook for the rich-resource feature.\n *\n * The registry maps `key → ActivityResourceConfig`. Activity items reference\n * resources by `key`; the row renderer looks up the live config so badges,\n * icons, and links can be edited globally without touching individual rows.\n *\n * The hook re-seeds whenever the `resources` prop reference changes and emits\n * the full registry on every mutation via `onResourcesChange`. Wire that\n * callback to localStorage / a backend mutation to persist the user's\n * resource customisations across sessions.\n */\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type {\n ActivityResourceConfig,\n ActivityResourceRef,\n} from '../activities.types';\n\nexport type ActivityResourceRegistry = Readonly<\n Record<string, ActivityResourceConfig>\n>;\n\nexport interface UseActivityResourcesOptions {\n resources?: ActivityResourceRegistry;\n onResourcesChange?: (registry: ActivityResourceRegistry) => void;\n}\n\nexport interface UseActivityResourcesReturn {\n registry: ActivityResourceRegistry;\n /** Look up a resource by ref or key. */\n get: (\n ref: ActivityResourceRef | string,\n ) => ActivityResourceConfig | undefined;\n /** Replace a resource entry wholesale (or insert new). */\n register: (key: string, config: ActivityResourceConfig) => void;\n /** Shallow-merge a partial update over an existing entry. */\n update: (key: string, partial: Partial<ActivityResourceConfig>) => void;\n /** Remove an entry. */\n remove: (key: string) => void;\n /** Replace the entire registry. */\n setAll: (registry: ActivityResourceRegistry) => void;\n /** Reset to the original `resources` prop (or empty if none). */\n reset: () => void;\n}\n\nexport function useActivityResources({\n resources,\n onResourcesChange,\n}: UseActivityResourcesOptions = {}): UseActivityResourcesReturn {\n const [registry, setRegistry] = useState<ActivityResourceRegistry>(\n () => resources ?? {},\n );\n\n const seedRef = useRef(resources);\n useEffect(() => {\n if (resources !== seedRef.current) {\n seedRef.current = resources;\n setRegistry(resources ?? {});\n }\n }, [resources]);\n\n const onChangeRef = useRef(onResourcesChange);\n useEffect(() => {\n onChangeRef.current = onResourcesChange;\n }, [onResourcesChange]);\n\n const emit = useCallback((next: ActivityResourceRegistry) => {\n onChangeRef.current?.(next);\n }, []);\n\n const register = useCallback(\n (key: string, config: ActivityResourceConfig) => {\n setRegistry((current) => {\n const next = { ...current, [key]: config };\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const update = useCallback(\n (key: string, partial: Partial<ActivityResourceConfig>) => {\n setRegistry((current) => {\n const existing = current[key];\n if (!existing) return current;\n const next = {\n ...current,\n [key]: { ...existing, ...partial },\n };\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const remove = useCallback(\n (key: string) => {\n setRegistry((current) => {\n if (!(key in current)) return current;\n const next = { ...current };\n delete next[key];\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const setAll = useCallback(\n (next: ActivityResourceRegistry) => {\n setRegistry(next);\n emit(next);\n },\n [emit],\n );\n\n const reset = useCallback(() => {\n const next = seedRef.current ?? {};\n setRegistry(next);\n emit(next);\n }, [emit]);\n\n const get = useCallback(\n (ref: ActivityResourceRef | string) => {\n const key = typeof ref === 'string' ? ref : ref.key;\n return registry[key];\n },\n [registry],\n );\n\n return { registry, get, register, update, remove, setAll, reset };\n}\n","/**\n * ActivityActionsMenu — inline overflow menu rendered on rich rows.\n *\n * Backed by the shadcn DropdownMenu primitive; each item fires the\n * activity's per-row `onClick` and forwards `actionId` through `onAction` so\n * consumers can route actions centrally.\n */\nimport { MoreHorizontal } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/base/navigation';\n\nimport type { ActivityAction, ActivityItem } from '../activities.types';\n\nexport interface ActivityActionsMenuProps<TData = unknown> {\n activity: ActivityItem<TData>;\n actions: readonly ActivityAction<TData>[];\n onAction?: (actionId: string, activity: ActivityItem<TData>) => void;\n label: string;\n}\n\nexport function ActivityActionsMenu<TData = unknown>({\n activity,\n actions,\n onAction,\n label,\n}: ActivityActionsMenuProps<TData>) {\n if (actions.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <Button\n {...(triggerProps as Record<string, unknown>)}\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"icon-small\"\n aria-label={label}\n className=\"h-7 w-7 text-muted-foreground\"\n >\n <MoreHorizontal className=\"size-4\" />\n </Button>\n )}\n />\n <DropdownMenuContent align=\"end\" className=\"min-w-40\">\n {actions.map((action) => {\n const Icon = action.icon;\n return (\n <DropdownMenuItem\n key={action.id}\n onClick={() => {\n if (action.disabled) return;\n action.onClick(activity);\n onAction?.(action.id, activity);\n }}\n disabled={action.disabled}\n variant={action.tone === 'destructive' ? 'destructive' : 'default'}\n className=\"gap-2 px-2 py-1.5 text-xs\"\n >\n {!!Icon && <Icon className=\"size-3.5\" />}\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","/**\n * ActivityChanges — collapsible old → new diff block.\n *\n * Each entry shows the attribute label, the previous value (line-through, on\n * a destructive tint), an arrow, and the new value (on a success tint). When\n * neither old nor new is set, falls back to `description`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { ActivityChange } from '../activities.types';\n\nexport interface ActivityChangesProps {\n changes: readonly ActivityChange[];\n className?: string;\n}\n\nfunction ChangeValue({ change }: { change: ActivityChange }) {\n const hasOld = change.old !== null && change.old !== undefined;\n const hasNew = change.new !== null && change.new !== undefined;\n\n if (!hasOld && !hasNew) {\n return (\n <Text size=\"xs\" tag=\"span\">\n {change.description}\n </Text>\n );\n }\n\n return (\n <Text tag=\"span\" size=\"xs\" className=\"inline-flex flex-wrap items-baseline gap-1\">\n {!!hasOld && (\n <Text\n tag=\"span\"\n size=\"xs\"\n className=\"rounded bg-destructive/10 text-destructive line-through px-1 py-px\"\n >\n {change.old}\n </Text>\n )}\n {hasOld && hasNew && (\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n →\n </Text>\n )}\n {!!hasNew && (\n <Text\n tag=\"span\"\n size=\"xs\"\n className=\"rounded bg-success/15 text-success px-1 py-px\"\n >\n {change.new}\n </Text>\n )}\n </Text>\n );\n}\n\nexport function ActivityChanges({ changes, className }: ActivityChangesProps) {\n if (changes.length === 0) return null;\n return (\n <div\n className={cn(\n 'space-y-1.5 rounded-lg border border-border/60 bg-muted/30 px-3 py-2',\n className,\n )}\n >\n {changes.map((change) => (\n <div\n key={`${change.key}-${change.label}`}\n className=\"flex items-baseline gap-2\"\n >\n <Text\n size=\"xs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"shrink-0\"\n >\n {change.label}\n </Text>\n <ChangeValue change={change} />\n </div>\n ))}\n </div>\n );\n}\n","/**\n * ActivityDateLabel — eyebrow rendered above each date group.\n *\n * Consumers can override via `slots.renderDateLabel`. Default: small\n * uppercase eyebrow above each group, with extra top margin between groups.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface ActivityDateLabelProps {\n label: string;\n isFirst: boolean;\n className?: string;\n}\n\nexport function ActivityDateLabel({\n label,\n isFirst,\n className,\n}: ActivityDateLabelProps) {\n if (label === '') return null;\n return (\n <Text\n size=\"xs\"\n type=\"secondary\"\n weight=\"medium\"\n className={cn(\n 'uppercase tracking-wider',\n !isFirst && 'mt-5',\n className,\n )}\n >\n {label}\n </Text>\n );\n}\n","/**\n * ActivityEmptyState — neutral empty surface used when no activities are\n * available. Consumers replace via `slots.empty`.\n */\nimport { Activity } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface ActivityEmptyStateProps {\n title: string;\n hint?: string;\n className?: string;\n}\n\nexport function ActivityEmptyState({\n title,\n hint,\n className,\n}: ActivityEmptyStateProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center gap-2 px-6 py-10 text-center',\n className,\n )}\n >\n <span className=\"flex size-9 items-center justify-center rounded-full bg-muted text-muted-foreground\">\n <Activity className=\"size-4\" />\n </span>\n <Text weight=\"medium\">\n {title}\n </Text>\n {!!hint && (\n <Text size=\"xs\" type=\"secondary\">\n {hint}\n </Text>\n )}\n </div>\n );\n}\n","/**\n * Tone palettes shared by the marker, headline status segments, and the\n * resource tag. Tones map to semantic shadcn tokens — never to raw colours —\n * so a consumer rebrand at `:root` flows through the activities feature\n * automatically.\n */\nimport type { ActivityTone } from '../activities.types';\nimport type { ComposedBadgeVariant } from '@/components/base/badge/badge';\n\nexport interface ActivityToneStyle {\n /** Filled background — used by the rich icon marker. */\n bg: string;\n /** Foreground text colour matching the bg. */\n fg: string;\n /** Solid colour used by the compact dot. */\n dot: string;\n /** Border tint used by the connector line. */\n line: string;\n /** Background for chips / tags. */\n chipBg: string;\n /** Text colour for chips / tags. */\n chipFg: string;\n}\n\nexport const ACTIVITY_TONE: Record<ActivityTone, ActivityToneStyle> = {\n primary: {\n bg: 'bg-primary/10',\n fg: 'text-primary',\n dot: 'bg-primary',\n line: 'bg-primary/30',\n chipBg: 'bg-primary/5',\n chipFg: 'text-primary',\n },\n success: {\n bg: 'bg-success/10',\n fg: 'text-success',\n dot: 'bg-success',\n line: 'bg-success/30',\n chipBg: 'bg-success/10',\n chipFg: 'text-success',\n },\n warning: {\n bg: 'bg-warning/30',\n fg: 'text-warning-foreground',\n dot: 'bg-warning',\n line: 'bg-warning/40',\n chipBg: 'bg-warning/30',\n chipFg: 'text-warning-foreground',\n },\n destructive: {\n bg: 'bg-destructive/10',\n fg: 'text-destructive',\n dot: 'bg-destructive',\n line: 'bg-destructive/30',\n chipBg: 'bg-destructive/10',\n chipFg: 'text-destructive',\n },\n info: {\n bg: 'bg-info/10',\n fg: 'text-info',\n dot: 'bg-info',\n line: 'bg-info/30',\n chipBg: 'bg-info/10',\n chipFg: 'text-info',\n },\n neutral: {\n bg: 'bg-muted',\n fg: 'text-muted-foreground',\n dot: 'bg-muted-foreground/60',\n line: 'bg-border',\n chipBg: 'bg-muted',\n chipFg: 'text-muted-foreground',\n },\n};\n\n/** Map an activity tone onto the closest base/Badge variant. */\nexport const TONE_TO_BADGE_VARIANT: Record<ActivityTone, ComposedBadgeVariant> = {\n primary: 'primary',\n success: 'success',\n warning: 'warning',\n destructive: 'destructive',\n info: 'info',\n neutral: 'secondary',\n};\n","/**\n * ActivityResourceTag — chip rendering for a registered resource.\n *\n * The resource registry stores per-key `ActivityResourceConfig` (label, icon,\n * tone, badge, tags). This component renders those as a single inline chip\n * suitable for embedding into a headline. Falls back gracefully when the\n * registry has no entry — uses the segment's text/label.\n */\nimport { CircleDot } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\n\nimport type {\n ActivityResourceConfig,\n ActivityResourceRef,\n ActivityTone,\n} from '../activities.types';\n\nimport { ACTIVITY_TONE, TONE_TO_BADGE_VARIANT } from './tone-tokens';\n\nexport interface ActivityResourceTagProps {\n resource: ActivityResourceRef;\n config?: ActivityResourceConfig;\n /** Fallback label if neither config nor segment text are present. */\n fallbackText?: string;\n onClick?: () => void;\n}\n\nexport function ActivityResourceTag({\n resource,\n config,\n fallbackText,\n onClick,\n}: ActivityResourceTagProps) {\n const tone: ActivityTone = config?.tone ?? 'neutral';\n const palette = ACTIVITY_TONE[tone];\n const Icon = config?.icon ?? CircleDot;\n const label = config?.label ?? fallbackText ?? resource.label ?? resource.key;\n const interactive = typeof onClick === 'function';\n\n const inner = (\n <>\n <Icon className={cn('size-icon-sm shrink-0', palette.fg)} />\n <Text tag=\"span\" size=\"inherit\" weight=\"medium\" className={palette.chipFg}>\n {label}\n </Text>\n {!!config?.tags && config.tags.length > 0 && (\n <Text\n tag=\"span\"\n size=\"xs\"\n type=\"secondary\"\n className=\"ml-space-2xs border-l border-current/20 pl-space-sm\"\n >\n {config.tags.join(' · ')}\n </Text>\n )}\n {!!config?.badge && (\n <Badge\n inline\n variant={TONE_TO_BADGE_VARIANT[config.badge.tone ?? 'neutral']}\n className=\"ml-space-2xs\"\n >\n {config.badge.label}\n </Badge>\n )}\n </>\n );\n\n const chipClass = cn(\n 'inline-flex items-center gap-space-sm rounded-full px-space-md py-space-2xs align-baseline text-xs',\n 'border border-border/60',\n palette.chipBg,\n interactive &&\n 'cursor-pointer transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n );\n\n if (interactive) {\n return (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n onClick?.();\n }}\n className={cn(chipClass, 'h-auto rounded-full')}\n title={config?.note}\n >\n {inner}\n </Button>\n );\n }\n\n return (\n <span className={chipClass} title={config?.note}>\n {inner}\n </span>\n );\n}\n","/**\n * ActivityHeadline — segment renderer for the headline line.\n *\n * Renders typed segments (`actor` / `field` / `value` / `status` / `resource`\n * / `text`) into mixed inline content with proper typography and tone.\n *\n * When no segments are provided, falls back to splitting `headline` around\n * the actor's name so the actor still becomes interactive when possible.\n */\nimport { Fragment, type ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\n\nimport type {\n ActivityActor,\n ActivityHeadlineSegment,\n ActivityItem,\n ActivityResourceConfig,\n ActivityResourceRef,\n} from '../activities.types';\nimport { ActivityResourceTag } from './activity-resource-tag';\nimport { TONE_TO_BADGE_VARIANT } from './tone-tokens';\n\nexport interface ActivityHeadlineProps<TData = unknown> {\n activity: ActivityItem<TData>;\n currentUserId?: string;\n youLabel: string;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n onResourceClick?: (\n resource: ActivityResourceRef,\n config: ActivityResourceConfig | undefined,\n activity: ActivityItem<TData>,\n ) => void;\n /** Live registry lookup for resource segments. */\n getResourceConfig?: (\n ref: ActivityResourceRef,\n ) => ActivityResourceConfig | undefined;\n}\n\nfunction ActorNode<TData>({\n actorId,\n text,\n href,\n activity,\n youLabel,\n currentUserId,\n onActorClick,\n}: {\n actorId?: string;\n text: string;\n href?: string;\n activity: ActivityItem<TData>;\n youLabel: string;\n currentUserId?: string;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n}) {\n const isYou =\n currentUserId !== undefined &&\n actorId !== undefined &&\n currentUserId === actorId;\n const display = isYou ? youLabel : text;\n const actor: ActivityActor = activity.actor ?? { id: actorId, name: text };\n\n if (href) {\n return (\n <a\n href={href}\n onClick={(e) => {\n if (onActorClick) {\n e.preventDefault();\n e.stopPropagation();\n onActorClick(actor, activity);\n }\n }}\n className=\"font-semibold text-foreground underline-offset-2 hover:underline\"\n >\n {display}\n </a>\n );\n }\n\n if (onActorClick) {\n return (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n onActorClick(actor, activity);\n }}\n className=\"h-auto rounded px-0 py-0 font-semibold text-foreground underline-offset-2 hover:underline\"\n >\n {display}\n </Button>\n );\n }\n\n return (\n <Text tag=\"span\" weight=\"semibold\">\n {display}\n </Text>\n );\n}\n\nfunction renderSegments<TData>(\n segments: readonly ActivityHeadlineSegment[],\n props: ActivityHeadlineProps<TData>,\n): ReactNode {\n return segments.map((segment, index) => {\n const key = `seg-${index}-${segment.type}`;\n switch (segment.type) {\n case 'actor':\n return (\n <Fragment key={key}>\n <ActorNode<TData>\n actorId={segment.actorId}\n text={segment.text}\n href={segment.href}\n activity={props.activity}\n youLabel={props.youLabel}\n currentUserId={props.currentUserId}\n onActorClick={props.onActorClick}\n />{' '}\n </Fragment>\n );\n case 'field':\n case 'value':\n return (\n <Fragment key={key}>\n <Text tag=\"span\" weight=\"semibold\">\n {segment.text}\n </Text>{' '}\n </Fragment>\n );\n case 'status':\n return (\n <Fragment key={key}>\n <Badge\n inline\n variant={TONE_TO_BADGE_VARIANT[segment.tone ?? 'neutral']}\n >\n {segment.text}\n </Badge>{' '}\n </Fragment>\n );\n case 'resource': {\n const config = props.getResourceConfig?.(segment.resource);\n return (\n <Fragment key={key}>\n <ActivityResourceTag\n resource={segment.resource}\n config={config}\n fallbackText={segment.text}\n onClick={\n props.onResourceClick\n ? () =>\n props.onResourceClick?.(\n segment.resource,\n config,\n props.activity,\n )\n : undefined\n }\n />{' '}\n </Fragment>\n );\n }\n case 'text':\n default:\n return (\n <Fragment key={key}>\n <Text tag=\"span\">\n {segment.text}\n </Text>{' '}\n </Fragment>\n );\n }\n });\n}\n\nfunction renderFallback<TData>(props: ActivityHeadlineProps<TData>): ReactNode {\n const { activity } = props;\n const fallbackHeadline =\n activity.headline ?? activity.event;\n const actorName = activity.actor?.name;\n if (!actorName || !fallbackHeadline.includes(actorName)) {\n return (\n <Text tag=\"span\">\n {fallbackHeadline}\n </Text>\n );\n }\n const [before, ...after] = fallbackHeadline.split(actorName);\n return (\n <>\n {!!before && (\n <Text tag=\"span\">\n {before}\n </Text>\n )}\n <ActorNode<TData>\n actorId={activity.actor?.id}\n text={actorName}\n href={activity.actor?.href}\n activity={activity}\n youLabel={props.youLabel}\n currentUserId={props.currentUserId}\n onActorClick={props.onActorClick}\n />\n {after.length > 0 && (\n <Text tag=\"span\">\n {after.join(actorName)}\n </Text>\n )}\n </>\n );\n}\n\nexport function ActivityHeadline<TData = unknown>(\n props: ActivityHeadlineProps<TData>,\n) {\n const segments = props.activity.segments;\n if (segments && segments.length > 0) {\n return (\n <span className=\"leading-snug [&>span]:leading-snug\">\n {renderSegments<TData>(segments, props)}\n </span>\n );\n }\n return <span className=\"leading-snug\">{renderFallback<TData>(props)}</span>;\n}\n","/**\n * ActivityMarker — left-edge visual for a row.\n *\n * Density mapping:\n * - `compact` → small tone-coloured dot\n * - `default` → 22px tone-tinted square with the event icon\n * - `rich` → 28px tone-tinted circle with the event icon\n *\n * Always renders the connector line beneath unless `isLast` is true.\n */\nimport type { LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nimport type { ActivityDensity, ActivityTone } from '../activities.types';\n\nimport { ACTIVITY_TONE } from './tone-tokens';\n\nexport interface ActivityMarkerProps {\n icon: LucideIcon;\n tone: ActivityTone;\n density: ActivityDensity;\n isLast: boolean;\n}\n\nexport function ActivityMarker({\n icon: Icon,\n tone,\n density,\n isLast,\n}: ActivityMarkerProps) {\n const palette = ACTIVITY_TONE[tone];\n\n if (density === 'compact') {\n return (\n <div className=\"flex flex-col items-center\">\n <span\n aria-hidden\n className={cn('mt-1.5 size-2 shrink-0 rounded-full', palette.dot)}\n />\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n }\n\n if (density === 'rich') {\n return (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(\n 'flex size-7 shrink-0 items-center justify-center rounded-full ring-1 ring-border/60',\n palette.bg,\n palette.fg,\n )}\n >\n <Icon className=\"size-3.5\" />\n </span>\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(\n 'flex size-5 shrink-0 items-center justify-center rounded-full',\n palette.bg,\n palette.fg,\n )}\n >\n <Icon className=\"size-3\" />\n </span>\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n}\n","/**\n * ActivityRow — single row layout used by `<ActivityFeed />`.\n *\n * Composes the marker, headline, optional description, metadata chips,\n * source badge, timestamp, and (rich-only) the change-detail block plus\n * action menu. Per-density layout follows the design-system rules:\n * compact (dot, single line) / default (icon, headline + meta line) /\n * rich (icon, full header + body + actions).\n */\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n ActivityAction,\n ActivityActor,\n ActivityDensity,\n ActivityEventConfig,\n ActivityItem,\n ActivityResourceConfig,\n ActivityResourceRef,\n ActivityTone,\n} from '../activities.types';\n\nimport { ActivityActionsMenu } from './activity-actions-menu';\nimport { ActivityChanges } from './activity-changes';\nimport { ActivityHeadline } from './activity-headline';\nimport { ActivityMarker } from './activity-marker';\nimport { ActivityResourceTag } from './activity-resource-tag';\n\nexport interface ActivityRowProps<TData = unknown> {\n activity: ActivityItem<TData>;\n density: ActivityDensity;\n eventConfig: ActivityEventConfig;\n tone: ActivityTone;\n isLast: boolean;\n expanded: boolean;\n onToggleExpanded: () => void;\n relativeTime: string | null;\n absoluteTime: string | null;\n sourceLabel: string | null;\n youLabel: string;\n showChangesLabel: string;\n hideChangesLabel: string;\n actionsLabel: string;\n currentUserId?: string;\n actions: readonly ActivityAction<TData>[];\n onActivityClick?: (activity: ActivityItem<TData>) => void;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n onResourceClick?: (\n resource: ActivityResourceRef,\n config: ActivityResourceConfig | undefined,\n activity: ActivityItem<TData>,\n ) => void;\n onAction?: (actionId: string, activity: ActivityItem<TData>) => void;\n getResourceConfig?: (\n ref: ActivityResourceRef,\n ) => ActivityResourceConfig | undefined;\n /** Slot override for the headline only. */\n headlineOverride?: ReactNode;\n /** Slot override for the marker only. */\n markerOverride?: ReactNode;\n}\n\nexport function ActivityRow<TData = unknown>(props: ActivityRowProps<TData>) {\n const {\n activity,\n density,\n eventConfig,\n tone,\n isLast,\n expanded,\n onToggleExpanded,\n relativeTime,\n absoluteTime,\n sourceLabel,\n youLabel,\n showChangesLabel,\n hideChangesLabel,\n actionsLabel,\n currentUserId,\n actions,\n onActivityClick,\n onActorClick,\n onResourceClick,\n onAction,\n getResourceConfig,\n headlineOverride,\n markerOverride,\n } = props;\n\n const Icon = activity.iconOverride ?? eventConfig.icon;\n const hasChanges = (activity.changes?.length ?? 0) > 0;\n const hasMetadata = (activity.metadata?.length ?? 0) > 0;\n const hasResources = (activity.resources?.length ?? 0) > 0;\n const hasDescription =\n activity.description !== undefined &&\n activity.description !== null &&\n activity.description !== '';\n const showSecondaryRow = density !== 'compact';\n const showRichBody = density === 'rich';\n\n const headlineNode =\n headlineOverride ??\n (\n <ActivityHeadline<TData>\n activity={activity}\n currentUserId={currentUserId}\n youLabel={youLabel}\n onActorClick={onActorClick}\n onResourceClick={onResourceClick}\n getResourceConfig={getResourceConfig}\n />\n );\n\n const markerNode =\n markerOverride ?? (\n <ActivityMarker\n icon={Icon}\n tone={tone}\n density={density}\n isLast={isLast}\n />\n );\n\n const interactive = typeof onActivityClick === 'function';\n const hasNestedInteractive = (\n hasChanges ||\n hasResources ||\n actions.length > 0 ||\n typeof onActorClick === 'function' ||\n typeof onResourceClick === 'function'\n );\n const keyboardInteractive = interactive && !hasNestedInteractive;\n\n return (\n <div\n className={cn(\n 'relative flex gap-space-lg',\n interactive && 'cursor-pointer rounded-md hover:bg-muted/40',\n )}\n onClick={interactive ? () => onActivityClick?.(activity) : undefined}\n role={keyboardInteractive ? 'button' : undefined}\n tabIndex={keyboardInteractive ? 0 : undefined}\n onKeyDown={\n keyboardInteractive\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onActivityClick?.(activity);\n }\n }\n : undefined\n }\n >\n {markerNode}\n\n <div\n className={cn(\n 'min-w-0 flex-1',\n !isLast && (density === 'rich' ? 'pb-row-y-lg' : density === 'compact' ? 'pb-row-y' : 'pb-row-y-lg'),\n )}\n >\n <div className=\"flex flex-col gap-space-sm sm:flex-row sm:items-start sm:justify-between sm:gap-space-lg\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-space-sm gap-y-space-sm\">\n <Text tag=\"span\" size=\"inherit\" lineHeight=\"snug\">\n {headlineNode}\n </Text>\n {!!sourceLabel && (\n <Badge inline variant=\"secondary\">\n {sourceLabel}\n </Badge>\n )}\n {showRichBody && hasChanges && (\n <Button\n type=\"button\"\n size=\"icon-small\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n className=\"h-5 w-5 text-muted-foreground\"\n onClick={(e) => {\n e.stopPropagation();\n onToggleExpanded();\n }}\n title={expanded ? hideChangesLabel : showChangesLabel}\n aria-label={expanded ? hideChangesLabel : showChangesLabel}\n aria-expanded={expanded}\n >\n {expanded ? (\n <ChevronDown className=\"size-3.5\" />\n ) : (\n <ChevronRight className=\"size-3.5\" />\n )}\n </Button>\n )}\n </div>\n\n <div className=\"flex shrink-0 items-center gap-space-sm\">\n {!!relativeTime && (\n <Text\n size=\"inherit\"\n type=\"secondary\"\n className=\"whitespace-nowrap tabular-nums pt-space-2xs text-xs\"\n title={absoluteTime ?? undefined}\n >\n {relativeTime}\n </Text>\n )}\n {showRichBody && actions.length > 0 && (\n <ActivityActionsMenu<TData>\n activity={activity}\n actions={actions}\n onAction={onAction}\n label={actionsLabel}\n />\n )}\n </div>\n </div>\n\n {!!showSecondaryRow && hasDescription && (\n <Text tag=\"div\" size=\"inherit\" type=\"secondary\" className=\"mt-space-sm text-xs\">\n {activity.description}\n </Text>\n )}\n\n {!!showRichBody && hasMetadata && activity.metadata && (\n <div className=\"mt-space-md flex flex-wrap gap-x-space-lg gap-y-space-sm\">\n {activity.metadata.map((m) => (\n <Text key={m.label} size=\"inherit\" type=\"secondary\" className=\"text-xs\">\n <Text tag=\"span\" size=\"inherit\" type=\"discrete\" className=\"text-xs\">\n {m.label}:{' '}\n </Text>\n {m.value}\n </Text>\n ))}\n </div>\n )}\n\n {!!showRichBody && hasResources && activity.resources && (\n <div className=\"mt-space-md flex flex-wrap gap-space-sm\">\n {activity.resources.map((res) => {\n const cfg = getResourceConfig?.(res);\n return (\n <ActivityResourceTag\n key={res.key}\n resource={res}\n config={cfg}\n onClick={\n onResourceClick\n ? () =>\n onResourceClick(\n res,\n cfg,\n activity,\n )\n : undefined\n }\n />\n );\n })}\n </div>\n )}\n\n {!!showRichBody && hasChanges && expanded && activity.changes && (\n <div className=\"mt-space-md\">\n <ActivityChanges changes={activity.changes} />\n </div>\n )}\n </div>\n </div>\n );\n}\n","/**\n * ActivityFeed — framework-agnostic activity timeline.\n *\n * Composition seams:\n * - `strings` — deep-partial override of every label\n * - `eventConfig` — mass-configurable per-event icon/tone/labels\n * - `slots` — replace any region (row / headline / marker /\n * dateLabel / empty / loading / header / footer)\n * - `slots.renderRow` — full per-row override\n * - `accessors` — formatRelative/Absolute, getEventLabel, …\n * - `actionsForActivity` — surface a per-row action menu (rich density)\n * - `resources` + `onResourcesChange` — registry-driven rich resource\n * tags (icons, badges, links, tags) with save\n * and restore semantics for the consumer\n *\n * Headless usage:\n * - Call `useActivityFeed({ activities, ... })` directly to drive a\n * completely custom UI against the same grouping/expand state machine.\n * - Call `useActivityResources({ resources, onResourcesChange })` to\n * drive the registry independently.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Wire actor / resource navigation\n * via callbacks at the call site.\n */\nimport { useMemo, type ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { useDatesConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultActivityEventConfig,\n resolveEventConfig,\n} from './activities.config';\nimport {\n defaultActivitiesStrings,\n} from './activities.strings';\nimport type {\n ActivityAction,\n ActivityFeedProps,\n ActivityItem,\n ActivityRenderRowContext,\n ActivityTone,\n} from './activities.types';\nimport { useActivityFeed } from './hooks/use-activity-feed';\nimport { useActivityResources } from './hooks/use-activity-resources';\nimport {\n ActivityDateLabel,\n ActivityEmptyState,\n ActivityRow,\n} from './partials';\n\nfunction defaultFormatAbsolute(iso: string, locale?: string): string {\n try {\n return new Intl.DateTimeFormat(locale, {\n dateStyle: 'medium',\n timeStyle: 'short',\n }).format(new Date(iso));\n } catch {\n return iso;\n }\n}\n\nfunction resolveTone<TData>(\n activity: ActivityItem<TData>,\n eventTone: ActivityTone,\n): ActivityTone {\n return activity.toneOverride ?? eventTone;\n}\n\nexport function ActivityFeed<TData = unknown>(props: ActivityFeedProps<TData>) {\n const {\n activities = [],\n density = 'default',\n groupByDate = true,\n expandedByDefault = false,\n currentUserId,\n loading = false,\n eventConfig: eventConfigOverride,\n strings: stringsProp,\n slots,\n className,\n locale,\n // accessors\n formatRelativeTime,\n formatAbsoluteTime,\n formatDateGroupLabel,\n getEventLabel: _getEventLabel,\n getSourceLabel,\n actionsForActivity,\n // callbacks\n onActivityClick,\n onActorClick,\n onResourceClick,\n onAction,\n // resources\n resources,\n onResourcesChange,\n } = props;\n\n const strings = useStrings(defaultActivitiesStrings, stringsProp);\n\n const eventConfigMap = useMemo(\n () => ({ ...defaultActivityEventConfig, ...eventConfigOverride }),\n [eventConfigOverride],\n );\n\n const registry = useActivityResources({\n resources,\n onResourcesChange,\n });\n\n const feed = useActivityFeed<TData>({\n activities,\n groupByDate,\n expandedByDefault,\n locale,\n strings,\n formatDateGroupLabel,\n });\n\n const { formatRelativeTime: storeFormatRelative } = useDatesConfig();\n const fmtRelative = formatRelativeTime ?? storeFormatRelative ?? ((iso: string) => iso);\n const fmtAbsolute = formatAbsoluteTime ?? ((iso: string) => defaultFormatAbsolute(iso, locale));\n\n if (loading) {\n return (\n <div className={cn('activities-feed--component', 'px-2 py-4', className)}>\n {slots?.loading ?? (\n <Text type=\"secondary\" align=\"center\">\n {strings.loading}\n </Text>\n )}\n </div>\n );\n }\n\n if (activities.length === 0) {\n return (\n <div className={cn('activities-feed--component', 'px-2 py-2', className)}>\n {slots?.empty ?? <ActivityEmptyState title={strings.empty} />}\n </div>\n );\n }\n\n const totalRendered = feed.groups.reduce((acc, g) => acc + g.items.length, 0);\n let renderedSoFar = 0;\n\n return (\n <div className={cn('activities-feed--component flex flex-col', className)}>\n {!!slots?.header && <div className=\"mb-3\">{slots.header}</div>}\n\n <div className=\"flex flex-col\">\n {feed.groups.map((group, gi) => {\n const isFirstGroup = gi === 0;\n return (\n <div key={`${group.label}-${gi}`} className={cn(isFirstGroup ? '' : 'mt-1')}>\n {slots?.renderDateLabel\n ? slots.renderDateLabel(group.label, isFirstGroup)\n : (\n <ActivityDateLabel\n label={group.label}\n isFirst={isFirstGroup}\n className={isFirstGroup ? '' : 'mb-2'}\n />\n )}\n\n <div className={cn('flex flex-col', !!group.label && 'mt-2')}>\n {group.items.map((keyed, ii) => {\n const activity = keyed.activity;\n const isFirstInGroup = ii === 0;\n const isLast =\n ++renderedSoFar === totalRendered;\n const eventCfg = resolveEventConfig(\n activity.event,\n eventConfigMap,\n );\n const tone = resolveTone(activity, eventCfg.tone);\n const relativeTime = activity.timestamp\n ?? (activity.createdAt\n ? fmtRelative(activity.createdAt)\n : null);\n const absoluteTime = activity.createdAt\n ? fmtAbsolute(activity.createdAt)\n : null;\n const sourceLabel = activity.source\n ? (getSourceLabel?.(activity.source)\n ?? strings.sources[activity.source]\n ?? eventCfg.sourceLabel\n ?? null)\n : eventCfg.sourceLabel ?? null;\n const sourceLabelTrimmed =\n sourceLabel && sourceLabel.trim().length > 0\n ? sourceLabel\n : null;\n const actions: readonly ActivityAction<TData>[] =\n actionsForActivity?.(activity) ?? [];\n\n const ctx: ActivityRenderRowContext<TData> = {\n density,\n isLast,\n isFirstInGroup,\n activity,\n eventConfig: eventCfg,\n tone,\n relativeTime,\n absoluteTime,\n sourceLabel: sourceLabelTrimmed,\n expanded: feed.isExpanded(activity.id),\n toggleExpanded: () =>\n feed.toggleExpanded(activity.id),\n };\n\n const customRow = slots?.renderRow?.(activity, ctx);\n if (customRow !== undefined) {\n return (\n <div key={keyed.key}>{customRow}</div>\n );\n }\n\n const headlineOverride =\n slots?.renderHeadline?.(activity, ctx);\n const markerOverride =\n slots?.renderMarker?.(activity, ctx);\n\n return (\n <ActivityRow<TData>\n key={keyed.key}\n activity={activity}\n density={density}\n eventConfig={eventCfg}\n tone={tone}\n isLast={isLast}\n expanded={ctx.expanded}\n onToggleExpanded={ctx.toggleExpanded}\n relativeTime={relativeTime}\n absoluteTime={absoluteTime}\n sourceLabel={sourceLabelTrimmed}\n youLabel={strings.you}\n showChangesLabel={strings.showChanges}\n hideChangesLabel={strings.hideChanges}\n actionsLabel={strings.actionsLabel}\n currentUserId={currentUserId}\n actions={actions}\n onActivityClick={onActivityClick}\n onActorClick={onActorClick}\n onResourceClick={onResourceClick}\n onAction={onAction}\n getResourceConfig={(ref) =>\n registry.get(ref)\n }\n headlineOverride={\n headlineOverride as ReactNode | undefined\n }\n markerOverride={\n markerOverride as ReactNode | undefined\n }\n />\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n\n {!!slots?.footer && <div className=\"mt-3\">{slots.footer}</div>}\n </div>\n );\n}\n\nActivityFeed.displayName = 'ActivityFeed';\n","/**\n * ActivityFeedCard — `<ActivityFeed />` wrapped in `SmartCard`.\n *\n * Use this when you want the canonical card chrome (title + description +\n * actions menu + content padding). For embedded surfaces (sidebars, panels)\n * use `<ActivityFeed />` directly.\n */\nimport { Activity } from 'lucide-react';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { useStrings } from '@/lib/strings';\n\nimport { ActivityFeed } from '../activities-feed';\nimport { defaultActivitiesStrings } from '../activities.strings';\nimport type { ActivityFeedCardProps } from '../activities.types';\n\nexport function ActivityFeedCard<TData = unknown>({\n title,\n titleSuffix,\n description,\n padding = 'default',\n composerSlot,\n className,\n strings: stringsProp,\n slots,\n ...feedProps\n}: ActivityFeedCardProps<TData>) {\n const strings = useStrings(defaultActivitiesStrings, stringsProp);\n\n const cardTitle = title ?? strings.title;\n\n return (\n <SmartCard\n icon={<Activity className=\"size-4\" />}\n title={cardTitle}\n titleSuffix={titleSuffix}\n description={description}\n padding={padding}\n className={className}\n >\n <ActivityFeed<TData>\n {...feedProps}\n strings={stringsProp}\n slots={{\n ...slots,\n header: composerSlot ?? slots?.header,\n }}\n />\n </SmartCard>\n );\n}\n\nActivityFeedCard.displayName = 'ActivityFeedCard';\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/button-Bd5bEIiB.cjs"),r=require("../../../_shared/typography-CO9uwZhF.cjs"),i=require("../../../_shared/icon-badge-CU6ZkcER.cjs"),a=require("../../../_shared/badge-BeSKxX1u.cjs"),o=require("../../../_shared/textarea-B24qgdmd.cjs"),s=require("../../../_shared/ai-artifact-Dtr0bnVq.cjs");let c=require("react"),l=require("react/jsx-runtime"),u=require("lucide-react");var d={placeholder:`Ask anything…`,attachAria:`Attach files`,submitAria:`Send message`,stopAria:`Stop generating`,modelPickerAria:`Choose model`,hint:`Press {{submitKey}} to send · {{newlineKey}} for newline`},f={scrollToBottom:`Jump to latest`,scrollToBottomAria:`Scroll to bottom`},p={header:`In queue`,cancelAria:`Remove from queue`,queuedLabel:`Queued`,runningLabel:`Running`},m={header:`Try`},h={pending:`Thinking…`},g={prompt:d,conversation:f,queue:p,suggestions:m,message:h,emptyTitle:`Start a conversation`,emptyDescription:`Ask a question, share context, or attach a file to get going.`};function _(e,t){return e.replace(/\{\{\s*(\w+)\s*\}\}/g,(e,n)=>{let r=t[n];return r===void 0?e:String(r)})}function v({attachments:e,onRemove:n,onOpen:r,className:i}){return e.length===0?null:(0,l.jsx)(`div`,{className:t.cn(`flex flex-wrap gap-2`,i),children:e.map(e=>(0,l.jsx)(s.h,{name:e.name,meta:e.meta,kind:e.kind,icon:e.icon,thumbnailUrl:e.thumbnailUrl,progress:e.progress,errored:e.errored,onOpen:r?()=>r(e):void 0,onRemove:n?()=>n(e.id):void 0},e.id))})}v.displayName=`AiChatAttachmentsStrip`;function y({threshold:e=80,dependency:t,disableAutoScroll:n=!1}={}){let r=(0,c.useRef)(null),i=(0,c.useRef)(null),[a,o]=(0,c.useState)(!0),s=(0,c.useCallback)((e=`smooth`)=>{i.current?.scrollIntoView({behavior:e,block:`end`})},[]);return(0,c.useEffect)(()=>{let t=r.current;if(!t)return;let n=()=>{o(t.scrollHeight-t.clientHeight-t.scrollTop<=e)};return n(),t.addEventListener(`scroll`,n,{passive:!0}),()=>t.removeEventListener(`scroll`,n)},[e]),(0,c.useEffect)(()=>{if(n||!a)return;let e=window.requestAnimationFrame(()=>s(`auto`));return()=>window.cancelAnimationFrame(e)},[t,n]),{containerRef:r,endRef:i,isAtBottom:a,scrollToBottom:s}}function b({messages:i,renderMessage:a,intro:o,footer:s,empty:c,disableAutoScroll:d,className:p,strings:m}){let h=e.useStrings(f,m),{containerRef:g,endRef:_,isAtBottom:v,scrollToBottom:b}=y({dependency:i.length,disableAutoScroll:d}),x=i.length===0&&!o;return(0,l.jsxs)(`div`,{className:t.cn(`relative flex h-full min-h-0 flex-col`,p),children:[(0,l.jsxs)(`div`,{ref:g,className:`flex-1 overflow-y-auto px-3 py-4 sm:px-4`,children:[!!o&&(0,l.jsx)(`div`,{className:`mb-4`,children:o}),x?c??(0,l.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 py-12`,children:(0,l.jsx)(r.s,{type:`secondary`,children:`No messages yet.`})}):(0,l.jsx)(`ol`,{className:`space-y-4`,children:i.map((e,t)=>(0,l.jsx)(`li`,{children:a(e,{isLast:t===i.length-1,index:t})},e.id))}),!!s&&(0,l.jsx)(`div`,{className:`mt-4`,children:s}),(0,l.jsx)(`div`,{ref:_,"aria-hidden":!0,className:`h-px`})]}),!v&&(0,l.jsx)(`div`,{className:`pointer-events-none absolute bottom-3 left-1/2 -translate-x-1/2`,children:(0,l.jsxs)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,"aria-label":h.scrollToBottomAria,onClick:()=>b(`smooth`),className:t.cn(`pointer-events-auto rounded-full shadow-md`,`border border-border/60`),children:[(0,l.jsx)(u.ArrowDown,{className:`size-3.5`}),h.scrollToBottom]})})]})}b.displayName=`AiChatConversation`;function x({title:e=`Start a conversation`,description:n,icon:a=u.Sparkles,below:o,className:s}){return(0,l.jsxs)(`div`,{className:t.cn(`flex h-full flex-col items-center justify-center gap-3 px-4 py-10 text-center`,s),children:[(0,l.jsx)(i.t,{icon:a,tone:`primary`,size:`default`,shape:`square`}),(0,l.jsxs)(`div`,{className:`max-w-md space-y-1`,children:[(0,l.jsx)(r.o,{tag:`h4`,children:e}),!!n&&(0,l.jsx)(r.s,{type:`secondary`,children:n})]}),!!o&&(0,l.jsx)(`div`,{className:`mt-4 w-full max-w-2xl`,children:o})]})}x.displayName=`AiChatEmptyState`;function S({message:n,onCopy:r,onRegenerate:i,onAttachmentOpen:a,className:o,strings:c}){let u=e.useStrings(h,c),d=[],f=[];for(let e of n.parts)e.type===`text`?d.push(e):f.push(e);let p=d.map(e=>e.type===`text`?e.plain??w(e.content):``).filter(Boolean).join(`
2
- `)||void 0,m=n.pending?(0,l.jsx)(s.y,{children:u.pending}):d.length===0&&f.length>0?null:(0,l.jsx)(`div`,{className:`space-y-2`,children:d.map((e,t)=>e.type===`text`?(0,l.jsx)(`div`,{className:`whitespace-pre-wrap`,children:e.content},t):null)});return(0,l.jsxs)(`div`,{className:t.cn(`space-y-2`,o),children:[(m!==null||n.pending)&&(0,l.jsx)(s.S,{role:n.role,avatar:n.avatar,authorName:n.authorName,timestamp:n.timestamp,plainText:p,loading:n.loading,onCopy:p?r??(()=>void 0):void 0,onRegenerate:i,children:m}),f.length>0&&(0,l.jsx)(`div`,{className:t.cn(`space-y-2`,n.role===`user`?`pr-9 sm:pl-12`:`pl-9 sm:pr-12`),children:f.map((e,t)=>(0,l.jsx)(C,{part:e,onAttachmentOpen:a},t))}),!!n.trailing&&(0,l.jsx)(`div`,{className:t.cn(n.role===`user`?`pr-9 sm:pl-12`:`pl-9 sm:pr-12`),children:n.trailing})]})}S.displayName=`AiChatMessage`;function C({part:e,onAttachmentOpen:t}){switch(e.type){case`text`:return(0,l.jsx)(r.s,{children:e.content});case`reasoning`:return(0,l.jsx)(s.s,{streaming:e.streaming,durationSeconds:e.durationSeconds,children:e.content});case`chain-of-thought`:return(0,l.jsx)(s.a,{steps:e.steps,streaming:e.streaming});case`tool`:return(0,l.jsx)(s.b,{name:e.name,status:e.status,icon:e.icon,args:e.args,result:e.result,error:e.error,durationMs:e.durationMs,defaultExpanded:e.defaultExpanded});case`code`:return(0,l.jsx)(s._,{code:e.code,language:e.language,filename:e.filename,showLineNumbers:e.showLineNumbers,highlightLines:e.highlightLines});case`attachments`:return(0,l.jsx)(v,{attachments:e.items,onOpen:t?e=>t(e.id):void 0});case`sources`:return(0,l.jsx)(s.l,{sources:e.items,variant:e.variant,defaultExpanded:e.defaultExpanded});case`task`:return(0,l.jsx)(s.r,{task:e.task});case`artifact`:return(0,l.jsx)(s.t,{title:e.title,subtitle:e.subtitle,icon:e.icon,copyText:e.copyText,actions:e.actions,onOpen:e.onOpen,onDownload:e.onDownload,children:e.body});case`confirmation`:return(0,l.jsx)(s.d,{title:e.title,description:e.description,tone:e.tone,status:e.status,details:e.details,onApprove:e.onApprove,onReject:e.onReject});case`custom`:return(0,l.jsx)(l.Fragment,{children:e.render()});default:return null}}function w(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(w).join(``):``}function T({value:i,onChange:a,onSubmit:s,onStop:f,streaming:p=!1,disabled:m=!1,attachments:h=[],onRemoveAttachment:g,onAttach:y,showAttach:b,leadingActions:x,trailingActions:S,hideHint:C=!1,minRows:w=1,maxRows:T=8,autoFocus:E=!1,className:D,strings:O}){let k=e.useStrings(d,O),A=(0,c.useRef)(null),j=!p&&!m&&(i.trim().length>0||h.length>0),M=(0,c.useCallback)(()=>{j&&s?.({text:i,attachments:h})},[j,s,i,h]),N=(0,c.useCallback)(e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),M())},[M]),P=b??!!y,F=typeof navigator<`u`&&navigator.platform?.toLowerCase().includes(`mac`)?`⌘↩`:`↩`;return(0,l.jsxs)(`div`,{className:t.cn(`rounded-xl border border-border bg-card transition-colors duration-150`,`focus-within:border-foreground/20 focus-within:ring-2 focus-within:ring-ring/30`,m&&`opacity-60 pointer-events-none`,D),children:[h.length>0&&(0,l.jsx)(`div`,{className:`border-b border-border/60 p-2`,children:(0,l.jsx)(v,{attachments:h,onRemove:g})}),(0,l.jsx)(o.t,{ref:A,value:i,onChange:e=>a(e.target.value),onKeyDown:N,placeholder:k.placeholder,autoResize:!0,minRows:w,maxRows:T,autoFocus:E,disabled:m,className:t.cn(`!border-0 !bg-transparent !shadow-none focus-visible:!ring-0 resize-none px-3 py-2.5`)}),(0,l.jsxs)(`div`,{className:`flex items-center gap-1 border-t border-border/60 px-2 py-1.5`,children:[x,P&&(0,l.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":k.attachAria,onClick:y,disabled:m,children:(0,l.jsx)(u.Paperclip,{className:`size-4`})}),(0,l.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[S,p?(0,l.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,size:`icon-small`,"aria-label":k.stopAria,onClick:f,children:(0,l.jsx)(u.Square,{className:`size-3.5 fill-current`})}):(0,l.jsx)(n.t,{type:`button`,variant:`primary`,buttonStyle:`solid`,size:`icon-small`,"aria-label":k.submitAria,onClick:M,disabled:!j,children:(0,l.jsx)(u.ArrowUp,{className:`size-4`})})]})]}),!C&&(0,l.jsx)(`div`,{className:`px-3 pb-2`,children:(0,l.jsx)(r.s,{size:`xxs`,type:`discrete`,children:_(k.hint,{submitKey:F,newlineKey:`⇧↩`})})})]})}T.displayName=`AiChatPromptInput`;function E({items:i,hideHeader:o=!1,onCancel:s,className:c,strings:d}){let f=e.useStrings(p,d);return i.length===0?null:(0,l.jsxs)(`div`,{className:t.cn(`rounded-lg border border-border/60 bg-muted/20 px-2.5 py-2`,c),children:[!o&&(0,l.jsxs)(r.s,{size:`xxs`,type:`secondary`,weight:`medium`,className:`mb-1.5 px-1 uppercase tracking-wider`,children:[f.header,` · `,i.length]}),(0,l.jsx)(`ul`,{className:`space-y-1`,children:i.map(e=>{let t=e.status??`queued`;return(0,l.jsxs)(`li`,{className:`flex items-center gap-2 rounded-md bg-card px-2 py-1.5`,children:[t===`running`?(0,l.jsx)(u.Loader2,{className:`size-3.5 shrink-0 animate-spin text-primary`}):(0,l.jsx)(`span`,{"aria-hidden":!0,className:`size-2 shrink-0 rounded-full bg-muted-foreground/50`}),(0,l.jsx)(r.s,{size:`xs`,className:`flex-1 truncate`,children:e.label}),(0,l.jsx)(a.t,{variant:t===`running`?`primary`:`secondary`,children:t===`running`?f.runningLabel:f.queuedLabel}),(!!e.onCancel||!!s)&&(0,l.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":f.cancelAria,onClick:()=>{e.onCancel?.(),s?.(e.id)},children:(0,l.jsx)(u.X,{className:`size-3.5`})})]},e.id)})})]})}E.displayName=`AiChatQueue`;function D({suggestions:i,onPick:a,hideHeader:o=!1,className:s,strings:c}){let d=e.useStrings(m,c);return i.length===0?null:(0,l.jsxs)(`div`,{className:t.cn(`flex items-center gap-2`,s),children:[!o&&(0,l.jsxs)(`div`,{className:`inline-flex shrink-0 items-center gap-1.5`,children:[(0,l.jsx)(u.Sparkles,{className:`size-3.5 text-muted-foreground`}),(0,l.jsx)(r.s,{size:`xxs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:d.header})]}),(0,l.jsx)(`div`,{className:`-mx-1 flex flex-1 items-center gap-1.5 overflow-x-auto px-1 py-0.5 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:i.map(e=>{let i=e.icon;return(0,l.jsxs)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`small`,onClick:()=>a?.(e),className:t.cn(`h-auto shrink-0 gap-1.5 rounded-full border border-border/60 bg-card px-2.5 py-1`,`transition-[border-color,background] duration-150`,`hover:border-foreground/20 hover:bg-muted/40`),children:[!!i&&(0,l.jsx)(i,{className:`size-3 text-muted-foreground`}),(0,l.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,children:e.label})]},e.id)})})]})}D.displayName=`AiChatSuggestionsRow`;function O({messages:n,inputValue:i,onInputChange:a,onSubmit:o,onStop:u,streaming:d=!1,disabled:f=!1,attachments:p=[],onRemoveAttachment:m,onAttach:h,showAttach:_,agent:v,headerActions:y,queue:C=[],onCancelQueueItem:w,suggestions:O=[],onPickSuggestion:k,onMessageCopy:A,onMessageRegenerate:j,onAttachmentOpen:M,disableAutoScroll:N,slots:P,strings:F,className:I}){let L=e.useStrings(g,F),[,R]=(0,c.useState)(0),z=(0,c.useCallback)((e,t)=>P?.renderMessage?P.renderMessage(e,t):(0,l.jsx)(S,{className:`ai-chat-message--component`,message:e,strings:L.message,onCopy:A?()=>A(e):void 0,onRegenerate:j?()=>j(e):void 0,onAttachmentOpen:M?t=>M(e.id,t):void 0}),[M,A,j,P,L.message]),B=P?.header??(v?(0,l.jsxs)(`div`,{className:`flex items-center gap-3 border-b border-border bg-card px-3 py-2 sm:px-4`,children:[(0,l.jsx)(s.p,{name:v.name,icon:v.icon,avatar:v.avatar,subtitle:v.subtitle,tone:v.tone,status:v.status,variant:`inline`}),!!y&&(0,l.jsx)(`div`,{className:`ml-auto flex items-center gap-1`,children:y})]}):null),V=P?.empty??(n.length===0?(0,l.jsx)(x,{title:L.emptyTitle,description:L.emptyDescription}):null),H=P?.queue??(C.length>0?(0,l.jsx)(E,{items:C,onCancel:w,strings:L.queue}):null),U=P?.suggestions??(O.length>0?(0,l.jsx)(D,{suggestions:O,onPick:k,strings:L.suggestions}):null),W=P?.input??(0,l.jsx)(T,{value:i,onChange:a,onSubmit:e=>{o?.(e),R(e=>e+1)},onStop:u,streaming:d,disabled:f,attachments:p,onRemoveAttachment:m,onAttach:h,showAttach:_,strings:L.prompt});return(0,l.jsxs)(`div`,{className:t.cn(`ai-chat--component flex h-full flex-col overflow-hidden rounded-xl border border-border bg-background`,I),children:[B,(0,l.jsx)(b,{messages:n,renderMessage:z,intro:P?.intro,footer:P?.belowMessages,empty:V,disableAutoScroll:N,strings:L.conversation}),(H||U||W)&&(0,l.jsxs)(`div`,{className:`border-t border-border bg-card/60`,children:[H&&(0,l.jsx)(`div`,{className:`px-3 pb-2 pt-3 sm:px-4`,children:H}),U&&(0,l.jsx)(`div`,{className:t.cn(`px-3 sm:px-4`,!H&&`pt-3`,`pb-2`),children:U}),W&&(0,l.jsx)(`div`,{className:`px-3 pb-3 pt-2 sm:px-4 sm:pb-4`,children:W})]}),f&&(0,l.jsx)(r.s,{className:`sr-only`,"aria-live":`polite`,children:`Chat is disabled`})]})}O.displayName=`AiChat`,exports.AiChat=O,exports.AiChatAttachmentsStrip=v,exports.AiChatConversation=b,exports.AiChatEmptyState=x,exports.AiChatMessageView=S,exports.AiChatPromptInput=T,exports.AiChatQueue=E,exports.AiChatSuggestionsRow=D,exports.defaultAiChatConversationStrings=f,exports.defaultAiChatMessageStrings=h,exports.defaultAiChatPromptInputStrings=d,exports.defaultAiChatQueueStrings=p,exports.defaultAiChatStrings=g,exports.defaultAiChatSuggestionsStrings=m,exports.interpolateString=_,exports.useAiChatScroll=y;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/button-BMiPFJIb.cjs"),r=require("../../../_shared/typography-pzCKaFOc.cjs"),i=require("../../../_shared/icon-badge-CU6ZkcER.cjs"),a=require("../../../_shared/badge-DvUA9Pr2.cjs"),o=require("../../../_shared/textarea-B4zbbqff.cjs"),s=require("../../../_shared/ai-artifact-R4bxz5Iq.cjs");let c=require("react"),l=require("react/jsx-runtime"),u=require("lucide-react");var d={placeholder:`Ask anything…`,attachAria:`Attach files`,submitAria:`Send message`,stopAria:`Stop generating`,modelPickerAria:`Choose model`,hint:`Press {{submitKey}} to send · {{newlineKey}} for newline`},f={scrollToBottom:`Jump to latest`,scrollToBottomAria:`Scroll to bottom`},p={header:`In queue`,cancelAria:`Remove from queue`,queuedLabel:`Queued`,runningLabel:`Running`},m={header:`Try`},h={pending:`Thinking…`},g={prompt:d,conversation:f,queue:p,suggestions:m,message:h,emptyTitle:`Start a conversation`,emptyDescription:`Ask a question, share context, or attach a file to get going.`};function _(e,t){return e.replace(/\{\{\s*(\w+)\s*\}\}/g,(e,n)=>{let r=t[n];return r===void 0?e:String(r)})}function v({attachments:e,onRemove:n,onOpen:r,className:i}){return e.length===0?null:(0,l.jsx)(`div`,{className:t.cn(`flex flex-wrap gap-2`,i),children:e.map(e=>(0,l.jsx)(s.h,{name:e.name,meta:e.meta,kind:e.kind,icon:e.icon,thumbnailUrl:e.thumbnailUrl,progress:e.progress,errored:e.errored,onOpen:r?()=>r(e):void 0,onRemove:n?()=>n(e.id):void 0},e.id))})}v.displayName=`AiChatAttachmentsStrip`;function y({threshold:e=80,dependency:t,disableAutoScroll:n=!1}={}){let r=(0,c.useRef)(null),i=(0,c.useRef)(null),[a,o]=(0,c.useState)(!0),s=(0,c.useCallback)((e=`smooth`)=>{i.current?.scrollIntoView({behavior:e,block:`end`})},[]);return(0,c.useEffect)(()=>{let t=r.current;if(!t)return;let n=()=>{o(t.scrollHeight-t.clientHeight-t.scrollTop<=e)};return n(),t.addEventListener(`scroll`,n,{passive:!0}),()=>t.removeEventListener(`scroll`,n)},[e]),(0,c.useEffect)(()=>{if(n||!a)return;let e=window.requestAnimationFrame(()=>s(`auto`));return()=>window.cancelAnimationFrame(e)},[t,n]),{containerRef:r,endRef:i,isAtBottom:a,scrollToBottom:s}}function b({messages:i,renderMessage:a,intro:o,footer:s,empty:c,disableAutoScroll:d,className:p,strings:m}){let h=e.useStrings(f,m),{containerRef:g,endRef:_,isAtBottom:v,scrollToBottom:b}=y({dependency:i.length,disableAutoScroll:d}),x=i.length===0&&!o;return(0,l.jsxs)(`div`,{className:t.cn(`relative flex h-full min-h-0 flex-col`,p),children:[(0,l.jsxs)(`div`,{ref:g,className:`flex-1 overflow-y-auto px-3 py-4 sm:px-4`,children:[!!o&&(0,l.jsx)(`div`,{className:`mb-4`,children:o}),x?c??(0,l.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 py-12`,children:(0,l.jsx)(r.s,{type:`secondary`,children:`No messages yet.`})}):(0,l.jsx)(`ol`,{className:`space-y-4`,children:i.map((e,t)=>(0,l.jsx)(`li`,{children:a(e,{isLast:t===i.length-1,index:t})},e.id))}),!!s&&(0,l.jsx)(`div`,{className:`mt-4`,children:s}),(0,l.jsx)(`div`,{ref:_,"aria-hidden":!0,className:`h-px`})]}),!v&&(0,l.jsx)(`div`,{className:`pointer-events-none absolute bottom-3 left-1/2 -translate-x-1/2`,children:(0,l.jsxs)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,"aria-label":h.scrollToBottomAria,onClick:()=>b(`smooth`),className:t.cn(`pointer-events-auto rounded-full shadow-md`,`border border-border/60`),children:[(0,l.jsx)(u.ArrowDown,{className:`size-3.5`}),h.scrollToBottom]})})]})}b.displayName=`AiChatConversation`;function x({title:e=`Start a conversation`,description:n,icon:a=u.Sparkles,below:o,className:s}){return(0,l.jsxs)(`div`,{className:t.cn(`flex h-full flex-col items-center justify-center gap-3 px-4 py-10 text-center`,s),children:[(0,l.jsx)(i.t,{icon:a,tone:`primary`,size:`default`,shape:`square`}),(0,l.jsxs)(`div`,{className:`max-w-md space-y-1`,children:[(0,l.jsx)(r.o,{tag:`h4`,children:e}),!!n&&(0,l.jsx)(r.s,{type:`secondary`,children:n})]}),!!o&&(0,l.jsx)(`div`,{className:`mt-4 w-full max-w-2xl`,children:o})]})}x.displayName=`AiChatEmptyState`;function S({message:n,onCopy:r,onRegenerate:i,onAttachmentOpen:a,className:o,strings:c}){let u=e.useStrings(h,c),d=[],f=[];for(let e of n.parts)e.type===`text`?d.push(e):f.push(e);let p=d.map(e=>e.type===`text`?e.plain??w(e.content):``).filter(Boolean).join(`
2
+ `)||void 0,m=n.pending?(0,l.jsx)(s.y,{children:u.pending}):d.length===0&&f.length>0?null:(0,l.jsx)(`div`,{className:`space-y-2`,children:d.map((e,t)=>e.type===`text`?(0,l.jsx)(`div`,{className:`whitespace-pre-wrap`,children:e.content},t):null)});return(0,l.jsxs)(`div`,{className:t.cn(`space-y-2`,o),children:[(m!==null||n.pending)&&(0,l.jsx)(s.S,{role:n.role,avatar:n.avatar,authorName:n.authorName,timestamp:n.timestamp,plainText:p,loading:n.loading,onCopy:p?r??(()=>void 0):void 0,onRegenerate:i,children:m}),f.length>0&&(0,l.jsx)(`div`,{className:t.cn(`space-y-2`,n.role===`user`?`pr-9 sm:pl-12`:`pl-9 sm:pr-12`),children:f.map((e,t)=>(0,l.jsx)(C,{part:e,onAttachmentOpen:a},t))}),!!n.trailing&&(0,l.jsx)(`div`,{className:t.cn(n.role===`user`?`pr-9 sm:pl-12`:`pl-9 sm:pr-12`),children:n.trailing})]})}S.displayName=`AiChatMessage`;function C({part:e,onAttachmentOpen:t}){switch(e.type){case`text`:return(0,l.jsx)(r.s,{children:e.content});case`reasoning`:return(0,l.jsx)(s.s,{streaming:e.streaming,durationSeconds:e.durationSeconds,children:e.content});case`chain-of-thought`:return(0,l.jsx)(s.a,{steps:e.steps,streaming:e.streaming});case`tool`:return(0,l.jsx)(s.b,{name:e.name,status:e.status,icon:e.icon,args:e.args,result:e.result,error:e.error,durationMs:e.durationMs,defaultExpanded:e.defaultExpanded});case`code`:return(0,l.jsx)(s._,{code:e.code,language:e.language,filename:e.filename,showLineNumbers:e.showLineNumbers,highlightLines:e.highlightLines});case`attachments`:return(0,l.jsx)(v,{attachments:e.items,onOpen:t?e=>t(e.id):void 0});case`sources`:return(0,l.jsx)(s.l,{sources:e.items,variant:e.variant,defaultExpanded:e.defaultExpanded});case`task`:return(0,l.jsx)(s.r,{task:e.task});case`artifact`:return(0,l.jsx)(s.t,{title:e.title,subtitle:e.subtitle,icon:e.icon,copyText:e.copyText,actions:e.actions,onOpen:e.onOpen,onDownload:e.onDownload,children:e.body});case`confirmation`:return(0,l.jsx)(s.d,{title:e.title,description:e.description,tone:e.tone,status:e.status,details:e.details,onApprove:e.onApprove,onReject:e.onReject});case`custom`:return(0,l.jsx)(l.Fragment,{children:e.render()});default:return null}}function w(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(w).join(``):``}function T({value:i,onChange:a,onSubmit:s,onStop:f,streaming:p=!1,disabled:m=!1,attachments:h=[],onRemoveAttachment:g,onAttach:y,showAttach:b,leadingActions:x,trailingActions:S,hideHint:C=!1,minRows:w=1,maxRows:T=8,autoFocus:E=!1,className:D,strings:O}){let k=e.useStrings(d,O),A=(0,c.useRef)(null),j=!p&&!m&&(i.trim().length>0||h.length>0),M=(0,c.useCallback)(()=>{j&&s?.({text:i,attachments:h})},[j,s,i,h]),N=(0,c.useCallback)(e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),M())},[M]),P=b??!!y,F=typeof navigator<`u`&&navigator.platform?.toLowerCase().includes(`mac`)?`⌘↩`:`↩`;return(0,l.jsxs)(`div`,{className:t.cn(`rounded-xl border border-border bg-card transition-colors duration-150`,`focus-within:border-foreground/20 focus-within:ring-2 focus-within:ring-ring/30`,m&&`opacity-60 pointer-events-none`,D),children:[h.length>0&&(0,l.jsx)(`div`,{className:`border-b border-border/60 p-2`,children:(0,l.jsx)(v,{attachments:h,onRemove:g})}),(0,l.jsx)(o.t,{ref:A,value:i,onChange:e=>a(e.target.value),onKeyDown:N,placeholder:k.placeholder,autoResize:!0,minRows:w,maxRows:T,autoFocus:E,disabled:m,className:t.cn(`!border-0 !bg-transparent !shadow-none focus-visible:!ring-0 resize-none px-3 py-2.5`)}),(0,l.jsxs)(`div`,{className:`flex items-center gap-1 border-t border-border/60 px-2 py-1.5`,children:[x,P&&(0,l.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":k.attachAria,onClick:y,disabled:m,children:(0,l.jsx)(u.Paperclip,{className:`size-4`})}),(0,l.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[S,p?(0,l.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,size:`icon-small`,"aria-label":k.stopAria,onClick:f,children:(0,l.jsx)(u.Square,{className:`size-3.5 fill-current`})}):(0,l.jsx)(n.t,{type:`button`,variant:`primary`,buttonStyle:`solid`,size:`icon-small`,"aria-label":k.submitAria,onClick:M,disabled:!j,children:(0,l.jsx)(u.ArrowUp,{className:`size-4`})})]})]}),!C&&(0,l.jsx)(`div`,{className:`px-3 pb-2`,children:(0,l.jsx)(r.s,{size:`xs`,type:`discrete`,children:_(k.hint,{submitKey:F,newlineKey:`⇧↩`})})})]})}T.displayName=`AiChatPromptInput`;function E({items:i,hideHeader:o=!1,onCancel:s,className:c,strings:d}){let f=e.useStrings(p,d);return i.length===0?null:(0,l.jsxs)(`div`,{className:t.cn(`rounded-lg border border-border/60 bg-muted/20 px-2.5 py-2`,c),children:[!o&&(0,l.jsxs)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`mb-1.5 px-1 uppercase tracking-wider`,children:[f.header,` · `,i.length]}),(0,l.jsx)(`ul`,{className:`space-y-1`,children:i.map(e=>{let t=e.status??`queued`;return(0,l.jsxs)(`li`,{className:`flex items-center gap-2 rounded-md bg-card px-2 py-1.5`,children:[t===`running`?(0,l.jsx)(u.Loader2,{className:`size-3.5 shrink-0 animate-spin text-primary`}):(0,l.jsx)(`span`,{"aria-hidden":!0,className:`size-2 shrink-0 rounded-full bg-muted-foreground/50`}),(0,l.jsx)(r.s,{size:`xs`,className:`flex-1 truncate`,children:e.label}),(0,l.jsx)(a.t,{variant:t===`running`?`primary`:`secondary`,children:t===`running`?f.runningLabel:f.queuedLabel}),(!!e.onCancel||!!s)&&(0,l.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":f.cancelAria,onClick:()=>{e.onCancel?.(),s?.(e.id)},children:(0,l.jsx)(u.X,{className:`size-3.5`})})]},e.id)})})]})}E.displayName=`AiChatQueue`;function D({suggestions:i,onPick:a,hideHeader:o=!1,className:s,strings:c}){let d=e.useStrings(m,c);return i.length===0?null:(0,l.jsxs)(`div`,{className:t.cn(`flex items-center gap-2`,s),children:[!o&&(0,l.jsxs)(`div`,{className:`inline-flex shrink-0 items-center gap-1.5`,children:[(0,l.jsx)(u.Sparkles,{className:`size-3.5 text-muted-foreground`}),(0,l.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:d.header})]}),(0,l.jsx)(`div`,{className:`-mx-1 flex flex-1 items-center gap-1.5 overflow-x-auto px-1 py-0.5 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:i.map(e=>{let i=e.icon;return(0,l.jsxs)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`small`,onClick:()=>a?.(e),className:t.cn(`h-auto shrink-0 gap-1.5 rounded-full border border-border/60 bg-card px-2.5 py-1`,`transition-[border-color,background] duration-150`,`hover:border-foreground/20 hover:bg-muted/40`),children:[!!i&&(0,l.jsx)(i,{className:`size-3 text-muted-foreground`}),(0,l.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,children:e.label})]},e.id)})})]})}D.displayName=`AiChatSuggestionsRow`;function O({messages:n,inputValue:i,onInputChange:a,onSubmit:o,onStop:u,streaming:d=!1,disabled:f=!1,attachments:p=[],onRemoveAttachment:m,onAttach:h,showAttach:_,agent:v,headerActions:y,queue:C=[],onCancelQueueItem:w,suggestions:O=[],onPickSuggestion:k,onMessageCopy:A,onMessageRegenerate:j,onAttachmentOpen:M,disableAutoScroll:N,slots:P,strings:F,className:I}){let L=e.useStrings(g,F),[,R]=(0,c.useState)(0),z=(0,c.useCallback)((e,t)=>P?.renderMessage?P.renderMessage(e,t):(0,l.jsx)(S,{className:`ai-chat-message--component`,message:e,strings:L.message,onCopy:A?()=>A(e):void 0,onRegenerate:j?()=>j(e):void 0,onAttachmentOpen:M?t=>M(e.id,t):void 0}),[M,A,j,P,L.message]),B=P?.header??(v?(0,l.jsxs)(`div`,{className:`flex items-center gap-3 border-b border-border bg-card px-3 py-2 sm:px-4`,children:[(0,l.jsx)(s.p,{name:v.name,icon:v.icon,avatar:v.avatar,subtitle:v.subtitle,tone:v.tone,status:v.status,variant:`inline`}),!!y&&(0,l.jsx)(`div`,{className:`ml-auto flex items-center gap-1`,children:y})]}):null),V=P?.empty??(n.length===0?(0,l.jsx)(x,{title:L.emptyTitle,description:L.emptyDescription}):null),H=P?.queue??(C.length>0?(0,l.jsx)(E,{items:C,onCancel:w,strings:L.queue}):null),U=P?.suggestions??(O.length>0?(0,l.jsx)(D,{suggestions:O,onPick:k,strings:L.suggestions}):null),W=P?.input??(0,l.jsx)(T,{value:i,onChange:a,onSubmit:e=>{o?.(e),R(e=>e+1)},onStop:u,streaming:d,disabled:f,attachments:p,onRemoveAttachment:m,onAttach:h,showAttach:_,strings:L.prompt});return(0,l.jsxs)(`div`,{className:t.cn(`ai-chat--component flex h-full flex-col overflow-hidden rounded-xl border border-border bg-background`,I),children:[B,(0,l.jsx)(b,{messages:n,renderMessage:z,intro:P?.intro,footer:P?.belowMessages,empty:V,disableAutoScroll:N,strings:L.conversation}),(H||U||W)&&(0,l.jsxs)(`div`,{className:`border-t border-border bg-card/60`,children:[H&&(0,l.jsx)(`div`,{className:`px-3 pb-2 pt-3 sm:px-4`,children:H}),U&&(0,l.jsx)(`div`,{className:t.cn(`px-3 sm:px-4`,!H&&`pt-3`,`pb-2`),children:U}),W&&(0,l.jsx)(`div`,{className:`px-3 pb-3 pt-2 sm:px-4 sm:pb-4`,children:W})]}),f&&(0,l.jsx)(r.s,{className:`sr-only`,"aria-live":`polite`,children:`Chat is disabled`})]})}O.displayName=`AiChat`,exports.AiChat=O,exports.AiChatAttachmentsStrip=v,exports.AiChatConversation=b,exports.AiChatEmptyState=x,exports.AiChatMessageView=S,exports.AiChatPromptInput=T,exports.AiChatQueue=E,exports.AiChatSuggestionsRow=D,exports.defaultAiChatConversationStrings=f,exports.defaultAiChatMessageStrings=h,exports.defaultAiChatPromptInputStrings=d,exports.defaultAiChatQueueStrings=p,exports.defaultAiChatStrings=g,exports.defaultAiChatSuggestionsStrings=m,exports.interpolateString=_,exports.useAiChatScroll=y;
3
3
  //# sourceMappingURL=index.cjs.map