admin-ui-starter-kit 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1121) hide show
  1. package/.agents/skills/component-library-rules/SKILL.md +24 -0
  2. package/.agents/skills/component-library-rules/references/components/base__metadata-list.md +2 -2
  3. package/.agents/skills/component-library-rules/references/import-paths.md +27 -0
  4. package/AGENTS.md +8 -3
  5. package/INTEGRATION.md +33 -2
  6. package/PUBLISHING.md +3 -1
  7. package/README.md +33 -6
  8. package/dist/_shared/accordion-CztqyaIN.js +130 -0
  9. package/dist/_shared/accordion-CztqyaIN.js.map +1 -0
  10. package/dist/_shared/accordion-D5uTCLCB.cjs +2 -0
  11. package/dist/_shared/accordion-D5uTCLCB.cjs.map +1 -0
  12. package/dist/_shared/action-menu-Yrj6VzFS.js +96 -0
  13. package/dist/_shared/action-menu-Yrj6VzFS.js.map +1 -0
  14. package/dist/_shared/action-menu-eVP8GGlv.cjs +2 -0
  15. package/dist/_shared/action-menu-eVP8GGlv.cjs.map +1 -0
  16. package/dist/_shared/ai-artifact-DaHXJTKg.cjs +3 -0
  17. package/dist/_shared/ai-artifact-DaHXJTKg.cjs.map +1 -0
  18. package/dist/_shared/ai-artifact-DyLn3JAs.js +1068 -0
  19. package/dist/_shared/ai-artifact-DyLn3JAs.js.map +1 -0
  20. package/dist/_shared/alert-BVw4Mq6H.js +48 -0
  21. package/dist/_shared/alert-BVw4Mq6H.js.map +1 -0
  22. package/dist/_shared/alert-DXSlR9ja.cjs +2 -0
  23. package/dist/_shared/alert-DXSlR9ja.cjs.map +1 -0
  24. package/dist/_shared/avatar-CpBz9pTv.js +52 -0
  25. package/dist/_shared/avatar-CpBz9pTv.js.map +1 -0
  26. package/dist/_shared/avatar-dg20YFFs.cjs +2 -0
  27. package/dist/_shared/avatar-dg20YFFs.cjs.map +1 -0
  28. package/dist/_shared/badge-BVCh_hfL.js +108 -0
  29. package/dist/_shared/badge-BVCh_hfL.js.map +1 -0
  30. package/dist/_shared/badge-C49SSz-6.cjs +2 -0
  31. package/dist/_shared/badge-C49SSz-6.cjs.map +1 -0
  32. package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs +2 -0
  33. package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs.map +1 -0
  34. package/dist/_shared/breadcrumbs-Dc93fqqE.js +111 -0
  35. package/dist/_shared/breadcrumbs-Dc93fqqE.js.map +1 -0
  36. package/dist/_shared/button-2xglT7yf.cjs +2 -0
  37. package/dist/_shared/button-2xglT7yf.cjs.map +1 -0
  38. package/dist/_shared/button-ChCkwoOD.js +176 -0
  39. package/dist/_shared/button-ChCkwoOD.js.map +1 -0
  40. package/dist/_shared/button-D0nF99a9.cjs +2 -0
  41. package/dist/_shared/button-D0nF99a9.cjs.map +1 -0
  42. package/dist/_shared/button-DBR4QI9E.js +46 -0
  43. package/dist/_shared/button-DBR4QI9E.js.map +1 -0
  44. package/dist/_shared/buttons-Bcnt1md_.js +143 -0
  45. package/dist/_shared/buttons-Bcnt1md_.js.map +1 -0
  46. package/dist/_shared/buttons-km9xqXJv.cjs +2 -0
  47. package/dist/_shared/buttons-km9xqXJv.cjs.map +1 -0
  48. package/dist/_shared/card-radio-group-BGH93O5-.js +158 -0
  49. package/dist/_shared/card-radio-group-BGH93O5-.js.map +1 -0
  50. package/dist/_shared/card-radio-group-Vq741uhL.cjs +2 -0
  51. package/dist/_shared/card-radio-group-Vq741uhL.cjs.map +1 -0
  52. package/dist/_shared/combobox-BgXAxjU2.js +746 -0
  53. package/dist/_shared/combobox-BgXAxjU2.js.map +1 -0
  54. package/dist/_shared/combobox-DuIyh3xJ.cjs +2 -0
  55. package/dist/_shared/combobox-DuIyh3xJ.cjs.map +1 -0
  56. package/dist/_shared/command-BbiijN61.js +39 -0
  57. package/dist/_shared/command-BbiijN61.js.map +1 -0
  58. package/dist/_shared/command-D7zTvyBJ.cjs +2 -0
  59. package/dist/_shared/command-D7zTvyBJ.cjs.map +1 -0
  60. package/dist/_shared/command-DGNtTI-V.cjs +2 -0
  61. package/dist/_shared/command-DGNtTI-V.cjs.map +1 -0
  62. package/dist/_shared/command-jKbwFRtS.js +123 -0
  63. package/dist/_shared/command-jKbwFRtS.js.map +1 -0
  64. package/dist/_shared/comments-CNUsdwGW.cjs +2 -0
  65. package/dist/_shared/comments-CNUsdwGW.cjs.map +1 -0
  66. package/dist/_shared/comments-CvmS7zG3.js +945 -0
  67. package/dist/_shared/comments-CvmS7zG3.js.map +1 -0
  68. package/dist/_shared/containers-BFDv7cCV.cjs +2 -0
  69. package/dist/_shared/containers-BFDv7cCV.cjs.map +1 -0
  70. package/dist/_shared/containers-C1-A_2PT.js +19 -0
  71. package/dist/_shared/containers-C1-A_2PT.js.map +1 -0
  72. package/dist/_shared/content-container-CwqFnaI0.cjs +2 -0
  73. package/dist/_shared/content-container-CwqFnaI0.cjs.map +1 -0
  74. package/dist/_shared/content-container-D_3JGBSc.js +33 -0
  75. package/dist/_shared/content-container-D_3JGBSc.js.map +1 -0
  76. package/dist/_shared/copyable-CHhCGMfW.js +38 -0
  77. package/dist/_shared/copyable-CHhCGMfW.js.map +1 -0
  78. package/dist/_shared/copyable-ndaiocYq.cjs +2 -0
  79. package/dist/_shared/copyable-ndaiocYq.cjs.map +1 -0
  80. package/dist/_shared/date-picker-B8O_qbik.js +1353 -0
  81. package/dist/_shared/date-picker-B8O_qbik.js.map +1 -0
  82. package/dist/_shared/date-picker-BnOjyuKS.cjs +2 -0
  83. package/dist/_shared/date-picker-BnOjyuKS.cjs.map +1 -0
  84. package/dist/_shared/date-pickers-Cas9cPlj.js +330 -0
  85. package/dist/_shared/date-pickers-Cas9cPlj.js.map +1 -0
  86. package/dist/_shared/date-pickers-Dk-G3RMy.cjs +2 -0
  87. package/dist/_shared/date-pickers-Dk-G3RMy.cjs.map +1 -0
  88. package/dist/_shared/dialog-67GmkMLC.js +101 -0
  89. package/dist/_shared/dialog-67GmkMLC.js.map +1 -0
  90. package/dist/_shared/dialog-BF_4uAhE.cjs +2 -0
  91. package/dist/_shared/dialog-BF_4uAhE.cjs.map +1 -0
  92. package/dist/_shared/display-B9xVWboG.cjs +8 -0
  93. package/dist/_shared/display-B9xVWboG.cjs.map +1 -0
  94. package/dist/_shared/display-BM_GxDAo.js +1237 -0
  95. package/dist/_shared/display-BM_GxDAo.js.map +1 -0
  96. package/dist/_shared/dropdown-menu-4nxEBMnd.js +147 -0
  97. package/dist/_shared/dropdown-menu-4nxEBMnd.js.map +1 -0
  98. package/dist/_shared/dropdown-menu-DZlWHqWS.cjs +2 -0
  99. package/dist/_shared/dropdown-menu-DZlWHqWS.cjs.map +1 -0
  100. package/dist/_shared/form-field-BQlki-8s.js +319 -0
  101. package/dist/_shared/form-field-BQlki-8s.js.map +1 -0
  102. package/dist/_shared/form-field-DzpwVS99.cjs +2 -0
  103. package/dist/_shared/form-field-DzpwVS99.cjs.map +1 -0
  104. package/dist/_shared/form-sizing-CcbB-OHF.js +21 -0
  105. package/dist/_shared/form-sizing-CcbB-OHF.js.map +1 -0
  106. package/dist/_shared/form-sizing-Cw12UeI6.cjs +2 -0
  107. package/dist/_shared/form-sizing-Cw12UeI6.cjs.map +1 -0
  108. package/dist/_shared/format-B2AdSQVn.cjs +2 -0
  109. package/dist/_shared/format-B2AdSQVn.cjs.map +1 -0
  110. package/dist/_shared/format-CP65h1vK.js +48 -0
  111. package/dist/_shared/format-CP65h1vK.js.map +1 -0
  112. package/dist/_shared/forms-B8aaNG44.cjs +2 -0
  113. package/dist/_shared/forms-B8aaNG44.cjs.map +1 -0
  114. package/dist/_shared/forms-BusuTZZ2.js +3374 -0
  115. package/dist/_shared/forms-BusuTZZ2.js.map +1 -0
  116. package/dist/_shared/header-DWfOUjFL.cjs +2 -0
  117. package/dist/_shared/header-DWfOUjFL.cjs.map +1 -0
  118. package/dist/_shared/header-KpdoLtP9.js +369 -0
  119. package/dist/_shared/header-KpdoLtP9.js.map +1 -0
  120. package/dist/_shared/heading-BprqyzDs.js +39 -0
  121. package/dist/_shared/heading-BprqyzDs.js.map +1 -0
  122. package/dist/_shared/heading-mZc_jan1.cjs +2 -0
  123. package/dist/_shared/heading-mZc_jan1.cjs.map +1 -0
  124. package/dist/_shared/hooks-C-uWoRq5.cjs +2 -0
  125. package/dist/_shared/hooks-C-uWoRq5.cjs.map +1 -0
  126. package/dist/_shared/hooks-D5HJtvvP.js +118 -0
  127. package/dist/_shared/hooks-D5HJtvvP.js.map +1 -0
  128. package/dist/_shared/icon-badge-BBqDyAUz.cjs +2 -0
  129. package/dist/_shared/icon-badge-BBqDyAUz.cjs.map +1 -0
  130. package/dist/_shared/icon-badge-Bi63T-bj.js +52 -0
  131. package/dist/_shared/icon-badge-Bi63T-bj.js.map +1 -0
  132. package/dist/_shared/input-B2YXTHqz.cjs +2 -0
  133. package/dist/_shared/input-B2YXTHqz.cjs.map +1 -0
  134. package/dist/_shared/input-BJb10xb9.cjs +2 -0
  135. package/dist/_shared/input-BJb10xb9.cjs.map +1 -0
  136. package/dist/_shared/input-CZxP5Xgj.js +17 -0
  137. package/dist/_shared/input-CZxP5Xgj.js.map +1 -0
  138. package/dist/_shared/input-DQahu2sm.js +182 -0
  139. package/dist/_shared/input-DQahu2sm.js.map +1 -0
  140. package/dist/_shared/item-Cu5JbZyZ.js +224 -0
  141. package/dist/_shared/item-Cu5JbZyZ.js.map +1 -0
  142. package/dist/_shared/item-Cx_7QZ2o.cjs +2 -0
  143. package/dist/_shared/item-Cx_7QZ2o.cjs.map +1 -0
  144. package/dist/_shared/mentions-CS3rIhze.js +493 -0
  145. package/dist/_shared/mentions-CS3rIhze.js.map +1 -0
  146. package/dist/_shared/mentions-D7gnP3Nf.cjs +2 -0
  147. package/dist/_shared/mentions-D7gnP3Nf.cjs.map +1 -0
  148. package/dist/_shared/metadata-CRsVWE8Y.cjs +2 -0
  149. package/dist/_shared/metadata-CRsVWE8Y.cjs.map +1 -0
  150. package/dist/_shared/metadata-CfG0FdFZ.js +236 -0
  151. package/dist/_shared/metadata-CfG0FdFZ.js.map +1 -0
  152. package/dist/_shared/money-display-Bd0rkjc9.js +198 -0
  153. package/dist/_shared/money-display-Bd0rkjc9.js.map +1 -0
  154. package/dist/_shared/money-display-DSFft9Mi.cjs +2 -0
  155. package/dist/_shared/money-display-DSFft9Mi.cjs.map +1 -0
  156. package/dist/_shared/navigation-Do9k5Xh1.js +420 -0
  157. package/dist/_shared/navigation-Do9k5Xh1.js.map +1 -0
  158. package/dist/_shared/navigation-QAAD3HJd.cjs +2 -0
  159. package/dist/_shared/navigation-QAAD3HJd.cjs.map +1 -0
  160. package/dist/_shared/overlays-B8AH8fNv.js +633 -0
  161. package/dist/_shared/overlays-B8AH8fNv.js.map +1 -0
  162. package/dist/_shared/overlays-DOcoRy8k.cjs +2 -0
  163. package/dist/_shared/overlays-DOcoRy8k.cjs.map +1 -0
  164. package/dist/_shared/page-BPCeKX9X.js +263 -0
  165. package/dist/_shared/page-BPCeKX9X.js.map +1 -0
  166. package/dist/_shared/page-DMM32sxi.cjs +2 -0
  167. package/dist/_shared/page-DMM32sxi.cjs.map +1 -0
  168. package/dist/_shared/popover-B1f_EUQS.cjs +2 -0
  169. package/dist/_shared/popover-B1f_EUQS.cjs.map +1 -0
  170. package/dist/_shared/popover-CgRGcFk9.js +83 -0
  171. package/dist/_shared/popover-CgRGcFk9.js.map +1 -0
  172. package/dist/_shared/popover-menu-BEKIT3LR.cjs +2 -0
  173. package/dist/_shared/popover-menu-BEKIT3LR.cjs.map +1 -0
  174. package/dist/_shared/popover-menu-BHdHLEVL.js +95 -0
  175. package/dist/_shared/popover-menu-BHdHLEVL.js.map +1 -0
  176. package/dist/_shared/rich-text-editor-0uoIoYXU.js +608 -0
  177. package/dist/_shared/rich-text-editor-0uoIoYXU.js.map +1 -0
  178. package/dist/_shared/rich-text-editor-wTiARGuB.cjs +2 -0
  179. package/dist/_shared/rich-text-editor-wTiARGuB.cjs.map +1 -0
  180. package/dist/_shared/scroll-area-Bo17wtZD.cjs +2 -0
  181. package/dist/_shared/scroll-area-Bo17wtZD.cjs.map +1 -0
  182. package/dist/_shared/scroll-area-Cj-hmB5D.js +41 -0
  183. package/dist/_shared/scroll-area-Cj-hmB5D.js.map +1 -0
  184. package/dist/_shared/select-07RRiTWc.js +85 -0
  185. package/dist/_shared/select-07RRiTWc.js.map +1 -0
  186. package/dist/_shared/select-BfiU7a4n.cjs +2 -0
  187. package/dist/_shared/select-BfiU7a4n.cjs.map +1 -0
  188. package/dist/_shared/separator-CN9zAJfs.cjs +2 -0
  189. package/dist/_shared/separator-CN9zAJfs.cjs.map +1 -0
  190. package/dist/_shared/separator-DR0uUMKa.js +16 -0
  191. package/dist/_shared/separator-DR0uUMKa.js.map +1 -0
  192. package/dist/_shared/sheet-B5FoGJAZ.cjs +2 -0
  193. package/dist/_shared/sheet-B5FoGJAZ.cjs.map +1 -0
  194. package/dist/_shared/sheet-cUI8cypP.js +100 -0
  195. package/dist/_shared/sheet-cUI8cypP.js.map +1 -0
  196. package/dist/_shared/sidebar-Bq7yKLrG.cjs +2 -0
  197. package/dist/_shared/sidebar-Bq7yKLrG.cjs.map +1 -0
  198. package/dist/_shared/sidebar-Da20tCUc.cjs +2 -0
  199. package/dist/_shared/sidebar-Da20tCUc.cjs.map +1 -0
  200. package/dist/_shared/sidebar-Q6TYE8Ux.js +371 -0
  201. package/dist/_shared/sidebar-Q6TYE8Ux.js.map +1 -0
  202. package/dist/_shared/sidebar-WmnQ55YY.js +537 -0
  203. package/dist/_shared/sidebar-WmnQ55YY.js.map +1 -0
  204. package/dist/_shared/skeleton-B3HWEc6G.js +14 -0
  205. package/dist/_shared/skeleton-B3HWEc6G.js.map +1 -0
  206. package/dist/_shared/skeleton-Cz_l8-fc.cjs +2 -0
  207. package/dist/_shared/skeleton-Cz_l8-fc.cjs.map +1 -0
  208. package/dist/_shared/slot-BgnZtKR5.js +18 -0
  209. package/dist/_shared/slot-BgnZtKR5.js.map +1 -0
  210. package/dist/_shared/slot-Dac1ipUC.cjs +2 -0
  211. package/dist/_shared/slot-Dac1ipUC.cjs.map +1 -0
  212. package/dist/_shared/smart-card-Bm_VxYUG.cjs +2 -0
  213. package/dist/_shared/smart-card-Bm_VxYUG.cjs.map +1 -0
  214. package/dist/_shared/smart-card-MT6JjkoI.js +360 -0
  215. package/dist/_shared/smart-card-MT6JjkoI.js.map +1 -0
  216. package/dist/_shared/spinner-BQjxJ_Kx.js +67 -0
  217. package/dist/_shared/spinner-BQjxJ_Kx.js.map +1 -0
  218. package/dist/_shared/spinner-Dvaa6GUm.cjs +2 -0
  219. package/dist/_shared/spinner-Dvaa6GUm.cjs.map +1 -0
  220. package/dist/_shared/switch-C0yyhsXZ.js +51 -0
  221. package/dist/_shared/switch-C0yyhsXZ.js.map +1 -0
  222. package/dist/_shared/switch-DozkSQNn.cjs +2 -0
  223. package/dist/_shared/switch-DozkSQNn.cjs.map +1 -0
  224. package/dist/_shared/textarea-Cgl-FPwu.js +119 -0
  225. package/dist/_shared/textarea-Cgl-FPwu.js.map +1 -0
  226. package/dist/_shared/textarea-D8wC0XlZ.cjs +2 -0
  227. package/dist/_shared/textarea-D8wC0XlZ.cjs.map +1 -0
  228. package/dist/_shared/tooltip-Cws4BiPT.js +49 -0
  229. package/dist/_shared/tooltip-Cws4BiPT.js.map +1 -0
  230. package/dist/_shared/tooltip-DyUi-Tac.cjs +2 -0
  231. package/dist/_shared/tooltip-DyUi-Tac.cjs.map +1 -0
  232. package/dist/_shared/typography-BW7iZBx7.cjs +2 -0
  233. package/dist/_shared/typography-BW7iZBx7.cjs.map +1 -0
  234. package/dist/_shared/typography-a3hydyvI.js +102 -0
  235. package/dist/_shared/typography-a3hydyvI.js.map +1 -0
  236. package/dist/components/base/accordion/index.cjs +1 -1
  237. package/dist/components/base/accordion/index.js +1 -1
  238. package/dist/components/base/badge/index.cjs +1 -1
  239. package/dist/components/base/badge/index.js +1 -1
  240. package/dist/components/base/buttons/index.cjs +1 -1
  241. package/dist/components/base/buttons/index.js +2 -2
  242. package/dist/components/base/cards/index.cjs +1 -1
  243. package/dist/components/base/cards/index.js +1 -1
  244. package/dist/components/base/combobox/index.cjs +1 -1
  245. package/dist/components/base/combobox/index.js +1 -1
  246. package/dist/components/base/command/index.cjs +1 -1
  247. package/dist/components/base/command/index.js +2 -2
  248. package/dist/components/base/copyable/index.cjs +1 -1
  249. package/dist/components/base/copyable/index.js +1 -1
  250. package/dist/components/base/currency/index.cjs +1 -1
  251. package/dist/components/base/currency/index.js +1 -1
  252. package/dist/components/base/date-pickers/index.cjs +1 -1
  253. package/dist/components/base/date-pickers/index.js +2 -2
  254. package/dist/components/base/display/index.cjs +1 -1
  255. package/dist/components/base/display/index.js +12 -11
  256. package/dist/components/base/display/metadata/index.cjs +1 -0
  257. package/dist/components/base/display/metadata/index.js +2 -0
  258. package/dist/components/base/event-calendar/index.cjs +1 -1
  259. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  260. package/dist/components/base/event-calendar/index.js +4 -4
  261. package/dist/components/base/forms/index.cjs +1 -1
  262. package/dist/components/base/forms/index.js +6 -6
  263. package/dist/components/base/item/index.cjs +1 -1
  264. package/dist/components/base/item/index.js +1 -1
  265. package/dist/components/base/map/index.cjs +1 -1
  266. package/dist/components/base/map/index.js +3 -3
  267. package/dist/components/base/navigation/index.cjs +1 -1
  268. package/dist/components/base/navigation/index.js +4 -4
  269. package/dist/components/base/popover/index.cjs +1 -1
  270. package/dist/components/base/popover/index.js +1 -1
  271. package/dist/components/base/popover-menu/index.cjs +1 -1
  272. package/dist/components/base/popover-menu/index.js +1 -1
  273. package/dist/components/base/sheet/index.cjs +1 -1
  274. package/dist/components/base/sheet/index.js +1 -1
  275. package/dist/components/base/sidebar/index.cjs +1 -1
  276. package/dist/components/base/sidebar/index.js +1 -1
  277. package/dist/components/base/spinner/index.cjs +1 -1
  278. package/dist/components/base/spinner/index.js +1 -1
  279. package/dist/components/base/table/index.cjs +1 -1
  280. package/dist/components/base/table/index.js +7 -7
  281. package/dist/components/composed/admin/index.cjs +1 -1
  282. package/dist/components/composed/admin/index.cjs.map +1 -1
  283. package/dist/components/composed/admin/index.js +12 -12
  284. package/dist/components/composed/ai/index.cjs +1 -1
  285. package/dist/components/composed/ai/index.js +9 -9
  286. package/dist/components/composed/analytics/index.cjs +1 -1
  287. package/dist/components/composed/analytics/index.cjs.map +1 -1
  288. package/dist/components/composed/analytics/index.js +4 -4
  289. package/dist/components/composed/cards/index.cjs +1 -1
  290. package/dist/components/composed/cards/index.cjs.map +1 -1
  291. package/dist/components/composed/cards/index.js +8 -8
  292. package/dist/components/composed/commerce/index.cjs +1 -1
  293. package/dist/components/composed/commerce/index.cjs.map +1 -1
  294. package/dist/components/composed/commerce/index.js +9 -9
  295. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  296. package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
  297. package/dist/components/composed/dark-surfaces/index.js +6 -6
  298. package/dist/components/composed/data-display/index.cjs +1 -1
  299. package/dist/components/composed/data-display/index.cjs.map +1 -1
  300. package/dist/components/composed/data-display/index.js +7 -7
  301. package/dist/components/composed/navigation/index.cjs +1 -1
  302. package/dist/components/composed/navigation/index.js +4 -4
  303. package/dist/components/composed/onboarding/index.cjs +1 -1
  304. package/dist/components/composed/onboarding/index.js +2 -2
  305. package/dist/components/composed/timelines/index.cjs +1 -1
  306. package/dist/components/composed/timelines/index.js +2 -2
  307. package/dist/components/features/activities/index.cjs +1 -1
  308. package/dist/components/features/activities/index.js +4 -4
  309. package/dist/components/features/ai-chat/index.cjs +1 -1
  310. package/dist/components/features/ai-chat/index.cjs.map +1 -1
  311. package/dist/components/features/ai-chat/index.js +6 -6
  312. package/dist/components/features/card/index.cjs +1 -1
  313. package/dist/components/features/card/index.js +3 -3
  314. package/dist/components/features/comments/index.cjs +1 -1
  315. package/dist/components/features/comments/index.js +2 -2
  316. package/dist/components/features/event-log/index.cjs +1 -1
  317. package/dist/components/features/event-log/index.js +3 -3
  318. package/dist/components/features/filters/index.cjs +1 -1
  319. package/dist/components/features/filters/index.js +9 -9
  320. package/dist/components/features/global-search/index.cjs +1 -1
  321. package/dist/components/features/global-search/index.js +2 -2
  322. package/dist/components/features/kanban/index.cjs +1 -1
  323. package/dist/components/features/kanban/index.js +1 -1
  324. package/dist/components/features/mentions/index.cjs +1 -1
  325. package/dist/components/features/mentions/index.js +1 -1
  326. package/dist/components/features/overlays/index.cjs +1 -1
  327. package/dist/components/features/overlays/index.js +1 -1
  328. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  329. package/dist/components/features/rich-text-editor/index.js +1 -1
  330. package/dist/components/features/suggestions/index.cjs +1 -1
  331. package/dist/components/features/suggestions/index.js +1 -1
  332. package/dist/components/features/sync/index.cjs +1 -1
  333. package/dist/components/features/sync/index.js +2 -2
  334. package/dist/components/layout/containers/index.cjs +1 -1
  335. package/dist/components/layout/containers/index.js +2 -2
  336. package/dist/components/layout/header/index.cjs +1 -1
  337. package/dist/components/layout/header/index.js +1 -1
  338. package/dist/components/layout/hooks/index.cjs +1 -1
  339. package/dist/components/layout/hooks/index.js +1 -1
  340. package/dist/components/layout/index.cjs +1 -1
  341. package/dist/components/layout/index.js +6 -6
  342. package/dist/components/layout/page/index.cjs +1 -1
  343. package/dist/components/layout/page/index.js +1 -1
  344. package/dist/components/layout/sidebar/index.cjs +1 -1
  345. package/dist/components/layout/sidebar/index.js +2 -2
  346. package/dist/components/typography/index.cjs +1 -1
  347. package/dist/components/typography/index.js +3 -2
  348. package/dist/showcase/assets/AreaChart-CJ57G5Ub.js +6 -0
  349. package/dist/showcase/assets/CSPContext-BA7DfnCI.js +1 -0
  350. package/dist/showcase/assets/CompositeItem-PwzgE4va.js +1 -0
  351. package/dist/showcase/assets/CompositeRoot-Du4CMlK7.js +1 -0
  352. package/dist/showcase/assets/DialogTrigger-FkENgwo6.js +1 -0
  353. package/dist/showcase/assets/FormContext-ChygLayp.js +1 -0
  354. package/dist/showcase/assets/PreviewLayout-z6vpJJGt.js +1 -0
  355. package/dist/showcase/assets/RadioGroup-CcDmbxOw.js +1 -0
  356. package/dist/showcase/assets/Separator-Dk4eN76U.js +1 -0
  357. package/dist/showcase/assets/ToolbarRootContext-D_KAA5hZ.js +1 -0
  358. package/dist/showcase/assets/accordion-dQszzfmw.js +172 -0
  359. package/dist/showcase/assets/accordion-variants-Dp4wxic-.js +1 -0
  360. package/dist/showcase/assets/action-menu-CBi2Eiy0.js +1 -0
  361. package/dist/showcase/assets/activities-DoXsgP4G.js +501 -0
  362. package/dist/showcase/assets/activities-feed-card-xz5FtkOm.js +1 -0
  363. package/dist/showcase/assets/admin-CxklUqAG.js +80 -0
  364. package/dist/showcase/assets/ai-artifact-DkhUdEbM.js +2 -0
  365. package/dist/showcase/assets/ai-chat-B6PuqkEu.js +568 -0
  366. package/dist/showcase/assets/ai-elements-D_rpj_ds.js +379 -0
  367. package/dist/showcase/assets/ai-new-CUPrAbOK.js +167 -0
  368. package/dist/showcase/assets/ai-tool-call-CEr-dGVx.js +1 -0
  369. package/dist/showcase/assets/ai-zxF_msJF.js +41 -0
  370. package/dist/showcase/assets/alert-771BE3Ny.js +59 -0
  371. package/dist/showcase/assets/alert-CG42DAlX.js +1 -0
  372. package/dist/showcase/assets/api-key-list-D6jUN7Fq.js +73 -0
  373. package/dist/showcase/assets/arrow-down-CUoXUyN1.js +1 -0
  374. package/dist/showcase/assets/arrow-left-Cdq69X6h.js +1 -0
  375. package/dist/showcase/assets/arrow-right-i25q9L2H.js +1 -0
  376. package/dist/showcase/assets/arrow-up-pnezegnF.js +1 -0
  377. package/dist/showcase/assets/arrow-up-right-CK3XnMah.js +1 -0
  378. package/dist/showcase/assets/avatar-LPmQqZQv.js +1 -0
  379. package/dist/showcase/assets/avatar-ZVFIQouy.js +57 -0
  380. package/dist/showcase/assets/badge-DK4bsgZC.js +28 -0
  381. package/dist/showcase/assets/badge-check-Cw5gkVcG.js +1 -0
  382. package/dist/showcase/assets/bell-BvJELoaV.js +1 -0
  383. package/dist/showcase/assets/bot-DRj6sdSR.js +1 -0
  384. package/dist/showcase/assets/box-BNND3M2m.js +1 -0
  385. package/dist/showcase/assets/brain-Cy3o-12l.js +1 -0
  386. package/dist/showcase/assets/brand-DvipEpFn.js +40 -0
  387. package/dist/showcase/assets/breadcrumb-B-LNuOyv.js +1 -0
  388. package/dist/showcase/assets/breadcrumb-Lzpc0yo4.js +52 -0
  389. package/dist/showcase/assets/breadcrumbs-DD6msKFZ.js +1 -0
  390. package/dist/showcase/assets/briefcase-LcAwoEmu.js +1 -0
  391. package/dist/showcase/assets/button-CuwcGzk1.js +44 -0
  392. package/dist/showcase/assets/button-group-CAImjDrl.js +1 -0
  393. package/dist/showcase/assets/buttons-DTjNHCMl.js +259 -0
  394. package/dist/showcase/assets/calendar-B1zW0q6I.js +1 -0
  395. package/dist/showcase/assets/calendar-Dlv72ytt.js +1 -0
  396. package/dist/showcase/assets/calendar-ls2A08Pn.js +16 -0
  397. package/dist/showcase/assets/card-BhtkM1BT.js +1 -0
  398. package/dist/showcase/assets/cards-BRpRXzGk.js +328 -0
  399. package/dist/showcase/assets/chart-column-BpQkEi1H.js +1 -0
  400. package/dist/showcase/assets/chevron-down-DyObdfSb.js +1 -0
  401. package/dist/showcase/assets/chevron-left-T7dHNxYM.js +1 -0
  402. package/dist/showcase/assets/chevron-right-D_EcqHpT.js +1 -0
  403. package/dist/showcase/assets/chevron-up-B38ivdGO.js +1 -0
  404. package/dist/showcase/assets/chevrons-up-down-SdRARzoq.js +1 -0
  405. package/dist/showcase/assets/circle-BrCPAmDA.js +1 -0
  406. package/dist/showcase/assets/circle-alert-DdhzLPY_.js +1 -0
  407. package/dist/showcase/assets/circle-check-DlA6zidQ.js +1 -0
  408. package/dist/showcase/assets/circle-check-big-DFGJANQF.js +1 -0
  409. package/dist/showcase/assets/circle-dot-BKmnVUqM.js +1 -0
  410. package/dist/showcase/assets/circle-question-mark-BNREvgVC.js +1 -0
  411. package/dist/showcase/assets/circle-x-C45QjHEs.js +1 -0
  412. package/dist/showcase/assets/clock-D1nKQzQo.js +1 -0
  413. package/dist/showcase/assets/code-xml-B8N3GRSu.js +1 -0
  414. package/dist/showcase/assets/collapsible-4TfcWyNs.js +1 -0
  415. package/dist/showcase/assets/collapsible-CKbZtvTj.js +27 -0
  416. package/dist/showcase/assets/combobox-DTdGPaU0.js +622 -0
  417. package/dist/showcase/assets/command-DymTXwL1.js +1 -0
  418. package/dist/showcase/assets/command-ksVIHQKJ.js +45 -0
  419. package/dist/showcase/assets/comment-composer-DC9oS1Yy.js +1 -0
  420. package/dist/showcase/assets/comment-item-CAmKnJa7.js +1 -0
  421. package/dist/showcase/assets/comments-Benk-2mV.js +349 -0
  422. package/dist/showcase/assets/commerce-Qz-mq8mQ.js +78 -0
  423. package/dist/showcase/assets/commerce-extras-CQRc3Bna.js +179 -0
  424. package/dist/showcase/assets/composite-DBDXLPyz.js +1 -0
  425. package/dist/showcase/assets/contact-card-DkL2nI3r.js +65 -0
  426. package/dist/showcase/assets/content-container-mRm6oJEa.js +1 -0
  427. package/dist/showcase/assets/copyable-DmLlmwzy.js +96 -0
  428. package/dist/showcase/assets/course-card-CJJoeZj9.js +113 -0
  429. package/dist/showcase/assets/cpu-BXJnF2Xy.js +1 -0
  430. package/dist/showcase/assets/credit-card-BQK3KKb2.js +1 -0
  431. package/dist/showcase/assets/currency-DBPUh8ee.js +149 -0
  432. package/dist/showcase/assets/dark-surfaces-LpPuIeYy.js +90 -0
  433. package/dist/showcase/assets/database-BZerpzGE.js +1 -0
  434. package/dist/showcase/assets/date-block-iiHUpbNX.js +1 -0
  435. package/dist/showcase/assets/date-picker-BQeBGL7T.js +1 -0
  436. package/dist/showcase/assets/date-pickers-CKcUEMMF.js +110 -0
  437. package/dist/showcase/assets/dense-info-DATmxRU8.js +106 -0
  438. package/dist/showcase/assets/dialog-Bqu5KDYH.js +1 -0
  439. package/dist/showcase/assets/display-Bj7uPXD4.js +392 -0
  440. package/dist/showcase/assets/dist-QK7JxeYv.js +1 -0
  441. package/dist/showcase/assets/dollar-sign-DFZs6vfz.js +1 -0
  442. package/dist/showcase/assets/download-5oGw_WbW.js +1 -0
  443. package/dist/showcase/assets/dropdown-menu-1CJgYn0S.js +1 -0
  444. package/dist/showcase/assets/dropzone-Co1uhsDn.js +1 -0
  445. package/dist/showcase/assets/ellipsis-cKRcvuyL.js +1 -0
  446. package/dist/showcase/assets/ellipsis-vertical-B1RErEkj.js +1 -0
  447. package/dist/showcase/assets/empty-Y2-4nCBr.js +1 -0
  448. package/dist/showcase/assets/empty-item-USa6xcUv.js +49 -0
  449. package/dist/showcase/assets/empty-state-DfhZ9AT5.js +188 -0
  450. package/dist/showcase/assets/enhanced-activities-DmAPVUSu.js +359 -0
  451. package/dist/showcase/assets/esm-BeGQ_ZTM.js +2 -0
  452. package/dist/showcase/assets/event-calendar-D-jGrrZS.js +138 -0
  453. package/dist/showcase/assets/event-log-tA_i4eR9.js +326 -0
  454. package/dist/showcase/assets/example-6phCHGsN.js +1 -0
  455. package/dist/showcase/assets/external-link-BuVHkCy0.js +1 -0
  456. package/dist/showcase/assets/eye-DC5HfGm6.js +1 -0
  457. package/dist/showcase/assets/feature-announcement-DwvxLytd.js +34 -0
  458. package/dist/showcase/assets/file-D-xM4vLy.js +1 -0
  459. package/dist/showcase/assets/file-text-tmG5vNbr.js +1 -0
  460. package/dist/showcase/assets/filters-CrGRXmq6.js +78 -0
  461. package/dist/showcase/assets/flag-CWrEtkY5.js +1 -0
  462. package/dist/showcase/assets/folder-open-Br-x1pjP.js +1 -0
  463. package/dist/showcase/assets/form-sizing-Bb5hiM45.js +1 -0
  464. package/dist/showcase/assets/format-D_ETCyg4.js +1 -0
  465. package/dist/showcase/assets/forms-B_MkQ3rm.js +790 -0
  466. package/dist/showcase/assets/generic-CdmsyXV3.js +1 -0
  467. package/dist/showcase/assets/getPseudoElementBounds-CZnCbCFP.js +1 -0
  468. package/dist/showcase/assets/gift-NkuklfU2.js +1 -0
  469. package/dist/showcase/assets/giftcard-cards-BAvevZ0i.js +85 -0
  470. package/dist/showcase/assets/git-branch-B_CBqPeO.js +1 -0
  471. package/dist/showcase/assets/global-search-D9teAbPe.js +90 -0
  472. package/dist/showcase/assets/globe-gzw45GU2.js +1 -0
  473. package/dist/showcase/assets/gradient-card-Xk2r7R5H.js +58 -0
  474. package/dist/showcase/assets/header-notifications-_aZCpE5A.js +1 -0
  475. package/dist/showcase/assets/heart-CEMKbRaZ.js +1 -0
  476. package/dist/showcase/assets/house-BlGXAcMH.js +1 -0
  477. package/dist/showcase/assets/icon-badge-z6N9reH_.js +1 -0
  478. package/dist/showcase/assets/image-B8mzmVBr.js +1 -0
  479. package/dist/showcase/assets/inbox-qdSnP4UV.js +1 -0
  480. package/dist/showcase/assets/index-B4ubXfly.js +10 -0
  481. package/dist/showcase/assets/inertValue-D5Q8cLku.js +1 -0
  482. package/dist/showcase/assets/info-DBvvNjc_.js +1 -0
  483. package/dist/showcase/assets/inline-stat-Bm1zVT8D.js +1 -0
  484. package/dist/showcase/assets/input-CBQR0aeX.js +1 -0
  485. package/dist/showcase/assets/input-OrUzpI55.js +1 -0
  486. package/dist/showcase/assets/input-group-DhqOen2N.js +47 -0
  487. package/dist/showcase/assets/input-group-l8xa5nUq.js +1 -0
  488. package/dist/showcase/assets/inputs-DbiJ0qy2.js +49 -0
  489. package/dist/showcase/assets/invoice-header-C6youIbL.js +36 -0
  490. package/dist/showcase/assets/invoice-items-g6dgryF-.js +36 -0
  491. package/dist/showcase/assets/invoice-mini-0iWhufpt.js +14 -0
  492. package/dist/showcase/assets/invoice-table-Bvdh3rRq.js +30 -0
  493. package/dist/showcase/assets/isSameDay-BpZEtJe8.js +1 -0
  494. package/dist/showcase/assets/isToday-F0CS28oK.js +1 -0
  495. package/dist/showcase/assets/italic-CJOEwjdc.js +1 -0
  496. package/dist/showcase/assets/item-BiMm1PPB.js +1 -0
  497. package/dist/showcase/assets/item-CN0cwdj_.js +1 -0
  498. package/dist/showcase/assets/item-DNqEUYLT.js +117 -0
  499. package/dist/showcase/assets/kanban-DxePEUiQ.js +175 -0
  500. package/dist/showcase/assets/label-Dx4WO-fg.js +1 -0
  501. package/dist/showcase/assets/layout-containers-DDl8rG8S.js +96 -0
  502. package/dist/showcase/assets/layout-header-Bu6IcDWu.js +170 -0
  503. package/dist/showcase/assets/layout-page-D-88Qnoy.js +122 -0
  504. package/dist/showcase/assets/layout-sidebar-Ctft10pk.js +224 -0
  505. package/dist/showcase/assets/layout-users-DtbZduBG.js +104 -0
  506. package/dist/showcase/assets/lib-D9BoOYUd.js +1 -0
  507. package/dist/showcase/assets/lock-CHurDI0n.js +1 -0
  508. package/dist/showcase/assets/mail-DZ1o1RLW.js +1 -0
  509. package/dist/showcase/assets/map-C8xiyT9X.js +124 -0
  510. package/dist/showcase/assets/map-pin-CAKaoYod.js +1 -0
  511. package/dist/showcase/assets/menus-C6mnp636.js +89 -0
  512. package/dist/showcase/assets/message-square-Zo5J_zU1.js +1 -0
  513. package/dist/showcase/assets/metadata-list-W83-UMhc.js +278 -0
  514. package/dist/showcase/assets/metric-BSvxidIX.js +1 -0
  515. package/dist/showcase/assets/metric-grid-Dtqx_3Lg.js +1 -0
  516. package/dist/showcase/assets/metric-trend-chip-mtvcJ_M9.js +1 -0
  517. package/dist/showcase/assets/metrics-analytics-bar-DQbyss7i.js +44 -0
  518. package/dist/showcase/assets/metrics-analytics-cards-CEBu5Uw0.js +77 -0
  519. package/dist/showcase/assets/metrics-comparison-Bs-R6v4y.js +76 -0
  520. package/dist/showcase/assets/metrics-heatmap-BKHWH8sM.js +27 -0
  521. package/dist/showcase/assets/metrics-inline-badge-BxVn0Y2p.js +17 -0
  522. package/dist/showcase/assets/metrics-kpi-row-DtACYEds.js +31 -0
  523. package/dist/showcase/assets/metrics-micro-grid-BkwUGOUR.js +42 -0
  524. package/dist/showcase/assets/metrics-overview-BAtrlzsI.js +192 -0
  525. package/dist/showcase/assets/metrics-stat-cards-iCRCNyHY.js +54 -0
  526. package/dist/showcase/assets/minus-C6eBW-2t.js +1 -0
  527. package/dist/showcase/assets/money-display-DjGRJ16l.js +1 -0
  528. package/dist/showcase/assets/month-year-picker-DTDebPqf.js +1 -0
  529. package/dist/showcase/assets/navigation-BrG8Chig.js +86 -0
  530. package/dist/showcase/assets/navigation-CfXQJbyM.js +230 -0
  531. package/dist/showcase/assets/navigation-extras-D_gzLlZ5.js +43 -0
  532. package/dist/showcase/assets/onboarding-checklist-1EerUwAo.js +119 -0
  533. package/dist/showcase/assets/overlays-2AB9-S1Z.js +88 -0
  534. package/dist/showcase/assets/overlays-CYt9o3Xq.js +393 -0
  535. package/dist/showcase/assets/package-BJMP-Fcr.js +1 -0
  536. package/dist/showcase/assets/page-action-button-BZxJ0X1j.js +1 -0
  537. package/dist/showcase/assets/page-header-B_rqHJhe.js +1 -0
  538. package/dist/showcase/assets/pagination-BHiQvvka.js +1 -0
  539. package/dist/showcase/assets/pagination-Dq0GruQd.js +42 -0
  540. package/dist/showcase/assets/paperclip-BMYKrUQo.js +1 -0
  541. package/dist/showcase/assets/pencil-BJ3VS_FO.js +1 -0
  542. package/dist/showcase/assets/phone-CsRIyvep.js +1 -0
  543. package/dist/showcase/assets/plus-D2JuXYLg.js +1 -0
  544. package/dist/showcase/assets/popover-DNT9755r.js +1 -0
  545. package/dist/showcase/assets/popover-KvGgcPNg.js +1 -0
  546. package/dist/showcase/assets/popover-menu-CJx30R65.js +1 -0
  547. package/dist/showcase/assets/progress-B7WuXcJR.js +1 -0
  548. package/dist/showcase/assets/progress-CweCSAUv.js +18 -0
  549. package/dist/showcase/assets/props-table-uDY4eIzt.js +1 -0
  550. package/dist/showcase/assets/quote-DAyyfzQd.js +1 -0
  551. package/dist/showcase/assets/receipt-C0mMZGbF.js +1 -0
  552. package/dist/showcase/assets/refresh-cw-X06JbXb-.js +1 -0
  553. package/dist/showcase/assets/resolveValueLabel-Bks7UDko.js +1 -0
  554. package/dist/showcase/assets/rich-text-editor-QJsb-qIe.js +124 -0
  555. package/dist/showcase/assets/rich-text-editor-h07VBNI9.js +141 -0
  556. package/dist/showcase/assets/rotate-ccw-D84bdX_x.js +1 -0
  557. package/dist/showcase/assets/scroll-area-0rT06pXZ.js +1 -0
  558. package/dist/showcase/assets/scroll-area-YXwdzGpN.js +32 -0
  559. package/dist/showcase/assets/select-BoWQDtUf.js +1 -0
  560. package/dist/showcase/assets/send-DJsk3cr1.js +1 -0
  561. package/dist/showcase/assets/separator-CLSnRcJa.js +28 -0
  562. package/dist/showcase/assets/separator-DWv-twD-.js +1 -0
  563. package/dist/showcase/assets/settings-Cb2MsAmN.js +1 -0
  564. package/dist/showcase/assets/sheet-Dn1-MYus.js +1 -0
  565. package/dist/showcase/assets/shield-DwLjF5ch.js +1 -0
  566. package/dist/showcase/assets/shield-alert-D8i6gzMK.js +1 -0
  567. package/dist/showcase/assets/shield-check-D5YRSBIz.js +1 -0
  568. package/dist/showcase/assets/shopping-bag-BqlAP4vn.js +1 -0
  569. package/dist/showcase/assets/sidebar.context-BAp_pBEB.js +1 -0
  570. package/dist/showcase/assets/skeleton-CeNPp4hr.js +1 -0
  571. package/dist/showcase/assets/skeleton-QPsnM_NR.js +29 -0
  572. package/dist/showcase/assets/smart-card-BisUbLPt.js +1 -0
  573. package/dist/showcase/assets/sonner-B7GzbBK2.js +22 -0
  574. package/dist/showcase/assets/sortable.esm-BDcEOHT7.js +5 -0
  575. package/dist/showcase/assets/sparkles-CF9P5Tqh.js +1 -0
  576. package/dist/showcase/assets/spinner-BeamEyJd.js +49 -0
  577. package/dist/showcase/assets/spinner-DoYBfalR.js +1 -0
  578. package/dist/showcase/assets/spinner-UsLsOYzn.js +30 -0
  579. package/dist/showcase/assets/square-pen-BGTVdnt1.js +1 -0
  580. package/dist/showcase/assets/stacked-avatars-BWfVX1Ov.js +1 -0
  581. package/dist/showcase/assets/star-NsPNO9gR.js +1 -0
  582. package/dist/showcase/assets/startOfDay-zJBpxLuW.js +1 -0
  583. package/dist/showcase/assets/styles-DA7a7hVy.js +1 -0
  584. package/dist/showcase/assets/switch-C62S4U2o.js +1 -0
  585. package/dist/showcase/assets/switch-CYQcinJZ.js +1 -0
  586. package/dist/showcase/assets/table-w4IABkpa.js +1 -0
  587. package/dist/showcase/assets/table-xgB63UrY.js +390 -0
  588. package/dist/showcase/assets/tabs-BFTEaTXj.js +19 -0
  589. package/dist/showcase/assets/tabs-oMJn9Ujq.js +1 -0
  590. package/dist/showcase/assets/text-button-BgcutPuu.js +1 -0
  591. package/dist/showcase/assets/text-link-CS9thOWL.js +1 -0
  592. package/dist/showcase/assets/textarea-BOBx4EM6.js +1 -0
  593. package/dist/showcase/assets/textarea-CTzYZZqa.js +1 -0
  594. package/dist/showcase/assets/timelines-CK07mEBK.js +186 -0
  595. package/dist/showcase/assets/toggle-group-CSPdPT6G.js +1 -0
  596. package/dist/showcase/assets/toggles-DDSdl-gA.js +71 -0
  597. package/dist/showcase/assets/toggles-group-Y2BdKEFB.js +32 -0
  598. package/dist/showcase/assets/trash-2-C-FAptQP.js +1 -0
  599. package/dist/showcase/assets/trending-up-BmLhdF_w.js +1 -0
  600. package/dist/showcase/assets/truck-pZdUS_as.js +1 -0
  601. package/dist/showcase/assets/typography-CnBH2z7f.js +214 -0
  602. package/dist/showcase/assets/ui-badge-Cl6INRO5.js +28 -0
  603. package/dist/showcase/assets/ui-card-B5P-thNu.js +30 -0
  604. package/dist/showcase/assets/ui-table-B32RILKk.js +42 -0
  605. package/dist/showcase/assets/upload-tray-mu6bR2ZE.js +138 -0
  606. package/dist/showcase/assets/useAnchoredPopupScrollLock-CzDaXxmM.js +1 -0
  607. package/dist/showcase/assets/useCollapsiblePanel-B0DZvDFu.js +1 -0
  608. package/dist/showcase/assets/useCompositeItem-BVIVLT9X.js +1 -0
  609. package/dist/showcase/assets/useCompositeListItem-JEMeTFPx.js +1 -0
  610. package/dist/showcase/assets/useControlled-ZjqBfPCn.js +1 -0
  611. package/dist/showcase/assets/useLabelableId-D8CZq8Bm.js +1 -0
  612. package/dist/showcase/assets/useOpenInteractionType-CopGCf3q.js +1 -0
  613. package/dist/showcase/assets/useRender-zuKv6JQF.js +1 -0
  614. package/dist/showcase/assets/useRole-08KeyiD3.js +1 -0
  615. package/dist/showcase/assets/useTriggerFocusGuards-DEuz5CGe.js +1 -0
  616. package/dist/showcase/assets/useValueChanged-BxFi_qyj.js +1 -0
  617. package/dist/showcase/assets/user-Bgc2t2_e.js +1 -0
  618. package/dist/showcase/assets/user-plus-F_TfagnP.js +1 -0
  619. package/dist/showcase/assets/users-B7G4yTCR.js +1 -0
  620. package/dist/showcase/assets/vendor-profile-BTQmsKM6.js +37 -0
  621. package/dist/showcase/assets/wrench-BdzICmjR.js +1 -0
  622. package/dist/showcase/assets/x-B156Wr-5.js +1 -0
  623. package/dist/showcase/assets/zap-B3iByjNV.js +1 -0
  624. package/dist/showcase/index.html +1 -1
  625. package/package.json +254 -19
  626. package/dist/_shared/accordion-7rwpgJ1k.cjs +0 -2
  627. package/dist/_shared/accordion-7rwpgJ1k.cjs.map +0 -1
  628. package/dist/_shared/accordion-DcduCEIo.js +0 -130
  629. package/dist/_shared/accordion-DcduCEIo.js.map +0 -1
  630. package/dist/_shared/action-menu-D0u-q0q-.cjs +0 -2
  631. package/dist/_shared/action-menu-D0u-q0q-.cjs.map +0 -1
  632. package/dist/_shared/action-menu-DUBXdReV.js +0 -96
  633. package/dist/_shared/action-menu-DUBXdReV.js.map +0 -1
  634. package/dist/_shared/ai-artifact-C3R0god0.cjs +0 -3
  635. package/dist/_shared/ai-artifact-C3R0god0.cjs.map +0 -1
  636. package/dist/_shared/ai-artifact-DMjQv_Si.js +0 -1068
  637. package/dist/_shared/ai-artifact-DMjQv_Si.js.map +0 -1
  638. package/dist/_shared/alert-B2cuJGAA.cjs +0 -2
  639. package/dist/_shared/alert-B2cuJGAA.cjs.map +0 -1
  640. package/dist/_shared/alert-BKUmOI2e.js +0 -48
  641. package/dist/_shared/alert-BKUmOI2e.js.map +0 -1
  642. package/dist/_shared/avatar-BcYcRORH.cjs +0 -2
  643. package/dist/_shared/avatar-BcYcRORH.cjs.map +0 -1
  644. package/dist/_shared/avatar-CNzG6jSZ.js +0 -52
  645. package/dist/_shared/avatar-CNzG6jSZ.js.map +0 -1
  646. package/dist/_shared/badge-BbUN6W7E.js +0 -108
  647. package/dist/_shared/badge-BbUN6W7E.js.map +0 -1
  648. package/dist/_shared/badge-BjtDcU1M.cjs +0 -2
  649. package/dist/_shared/badge-BjtDcU1M.cjs.map +0 -1
  650. package/dist/_shared/breadcrumbs-DctwTld5.js +0 -111
  651. package/dist/_shared/breadcrumbs-DctwTld5.js.map +0 -1
  652. package/dist/_shared/breadcrumbs-m0-gCdNj.cjs +0 -2
  653. package/dist/_shared/breadcrumbs-m0-gCdNj.cjs.map +0 -1
  654. package/dist/_shared/button-BCABTFLE.js +0 -46
  655. package/dist/_shared/button-BCABTFLE.js.map +0 -1
  656. package/dist/_shared/button-Ck2qS42n.js +0 -176
  657. package/dist/_shared/button-Ck2qS42n.js.map +0 -1
  658. package/dist/_shared/button-DjJ-mDI1.cjs +0 -2
  659. package/dist/_shared/button-DjJ-mDI1.cjs.map +0 -1
  660. package/dist/_shared/button-DjacsNTg.cjs +0 -2
  661. package/dist/_shared/button-DjacsNTg.cjs.map +0 -1
  662. package/dist/_shared/buttons-BVnjQ-uE.js +0 -143
  663. package/dist/_shared/buttons-BVnjQ-uE.js.map +0 -1
  664. package/dist/_shared/buttons-BdY6igTr.cjs +0 -2
  665. package/dist/_shared/buttons-BdY6igTr.cjs.map +0 -1
  666. package/dist/_shared/card-radio-group--GP1xrz_.js +0 -158
  667. package/dist/_shared/card-radio-group--GP1xrz_.js.map +0 -1
  668. package/dist/_shared/card-radio-group-DnQsWozr.cjs +0 -2
  669. package/dist/_shared/card-radio-group-DnQsWozr.cjs.map +0 -1
  670. package/dist/_shared/combobox-DBrRE1Dr.cjs +0 -2
  671. package/dist/_shared/combobox-DBrRE1Dr.cjs.map +0 -1
  672. package/dist/_shared/combobox-DYztEJaw.js +0 -746
  673. package/dist/_shared/combobox-DYztEJaw.js.map +0 -1
  674. package/dist/_shared/command-COvgXQ8r.cjs +0 -2
  675. package/dist/_shared/command-COvgXQ8r.cjs.map +0 -1
  676. package/dist/_shared/command-CvZ6Emb8.js +0 -39
  677. package/dist/_shared/command-CvZ6Emb8.js.map +0 -1
  678. package/dist/_shared/command-DTFQIUVG.cjs +0 -2
  679. package/dist/_shared/command-DTFQIUVG.cjs.map +0 -1
  680. package/dist/_shared/command-Sq8XbHbA.js +0 -123
  681. package/dist/_shared/command-Sq8XbHbA.js.map +0 -1
  682. package/dist/_shared/comments-BOFU1GYY.js +0 -945
  683. package/dist/_shared/comments-BOFU1GYY.js.map +0 -1
  684. package/dist/_shared/comments-BbTYFzx6.cjs +0 -2
  685. package/dist/_shared/comments-BbTYFzx6.cjs.map +0 -1
  686. package/dist/_shared/containers-BthqdOhA.cjs +0 -2
  687. package/dist/_shared/containers-BthqdOhA.cjs.map +0 -1
  688. package/dist/_shared/containers-CD2xs1nk.js +0 -19
  689. package/dist/_shared/containers-CD2xs1nk.js.map +0 -1
  690. package/dist/_shared/content-container-CFfYbWoa.js +0 -33
  691. package/dist/_shared/content-container-CFfYbWoa.js.map +0 -1
  692. package/dist/_shared/content-container-CReiVugL.cjs +0 -2
  693. package/dist/_shared/content-container-CReiVugL.cjs.map +0 -1
  694. package/dist/_shared/copyable-CweQ72QI.cjs +0 -2
  695. package/dist/_shared/copyable-CweQ72QI.cjs.map +0 -1
  696. package/dist/_shared/copyable-JgsTp6ev.js +0 -38
  697. package/dist/_shared/copyable-JgsTp6ev.js.map +0 -1
  698. package/dist/_shared/date-picker-DI4b-SeE.cjs +0 -2
  699. package/dist/_shared/date-picker-DI4b-SeE.cjs.map +0 -1
  700. package/dist/_shared/date-picker-DTazvODY.js +0 -1352
  701. package/dist/_shared/date-picker-DTazvODY.js.map +0 -1
  702. package/dist/_shared/date-pickers-CLzuzmuc.cjs +0 -2
  703. package/dist/_shared/date-pickers-CLzuzmuc.cjs.map +0 -1
  704. package/dist/_shared/date-pickers-CWPxP3zy.js +0 -330
  705. package/dist/_shared/date-pickers-CWPxP3zy.js.map +0 -1
  706. package/dist/_shared/dialog-2MJmaj_d.js +0 -101
  707. package/dist/_shared/dialog-2MJmaj_d.js.map +0 -1
  708. package/dist/_shared/dialog-KKD0i1T8.cjs +0 -2
  709. package/dist/_shared/dialog-KKD0i1T8.cjs.map +0 -1
  710. package/dist/_shared/display-BCy1Ti7T.cjs +0 -8
  711. package/dist/_shared/display-BCy1Ti7T.cjs.map +0 -1
  712. package/dist/_shared/display-DUpkE2aS.js +0 -1462
  713. package/dist/_shared/display-DUpkE2aS.js.map +0 -1
  714. package/dist/_shared/dropdown-menu-BebBffUH.cjs +0 -2
  715. package/dist/_shared/dropdown-menu-BebBffUH.cjs.map +0 -1
  716. package/dist/_shared/dropdown-menu-xdGEynC8.js +0 -147
  717. package/dist/_shared/dropdown-menu-xdGEynC8.js.map +0 -1
  718. package/dist/_shared/form-field-rOj3cm6C.js +0 -319
  719. package/dist/_shared/form-field-rOj3cm6C.js.map +0 -1
  720. package/dist/_shared/form-field-rcyIIHjR.cjs +0 -2
  721. package/dist/_shared/form-field-rcyIIHjR.cjs.map +0 -1
  722. package/dist/_shared/form-sizing--bs_xPe2.cjs +0 -2
  723. package/dist/_shared/form-sizing--bs_xPe2.cjs.map +0 -1
  724. package/dist/_shared/form-sizing-CkKcs5fi.js +0 -21
  725. package/dist/_shared/form-sizing-CkKcs5fi.js.map +0 -1
  726. package/dist/_shared/format-BlVEsPyT.js +0 -48
  727. package/dist/_shared/format-BlVEsPyT.js.map +0 -1
  728. package/dist/_shared/format-DYVtSA2I.cjs +0 -2
  729. package/dist/_shared/format-DYVtSA2I.cjs.map +0 -1
  730. package/dist/_shared/forms-BAVsxxRk.js +0 -3374
  731. package/dist/_shared/forms-BAVsxxRk.js.map +0 -1
  732. package/dist/_shared/forms-DaZ3LsYc.cjs +0 -2
  733. package/dist/_shared/forms-DaZ3LsYc.cjs.map +0 -1
  734. package/dist/_shared/header-BtTMsQ5P.cjs +0 -2
  735. package/dist/_shared/header-BtTMsQ5P.cjs.map +0 -1
  736. package/dist/_shared/header-DpW4UWV6.js +0 -369
  737. package/dist/_shared/header-DpW4UWV6.js.map +0 -1
  738. package/dist/_shared/hooks-Bsm917yh.cjs +0 -2
  739. package/dist/_shared/hooks-Bsm917yh.cjs.map +0 -1
  740. package/dist/_shared/hooks-CX-SICd4.js +0 -118
  741. package/dist/_shared/hooks-CX-SICd4.js.map +0 -1
  742. package/dist/_shared/icon-badge-DGKpbo9_.cjs +0 -2
  743. package/dist/_shared/icon-badge-DGKpbo9_.cjs.map +0 -1
  744. package/dist/_shared/icon-badge-DoClA_9q.js +0 -52
  745. package/dist/_shared/icon-badge-DoClA_9q.js.map +0 -1
  746. package/dist/_shared/input-BXt-YtVs.cjs +0 -2
  747. package/dist/_shared/input-BXt-YtVs.cjs.map +0 -1
  748. package/dist/_shared/input-Bx4LeLhn.js +0 -17
  749. package/dist/_shared/input-Bx4LeLhn.js.map +0 -1
  750. package/dist/_shared/input-ChZGIhtS.cjs +0 -2
  751. package/dist/_shared/input-ChZGIhtS.cjs.map +0 -1
  752. package/dist/_shared/input-Cwv1-5jt.js +0 -182
  753. package/dist/_shared/input-Cwv1-5jt.js.map +0 -1
  754. package/dist/_shared/item-BmTYKzEb.js +0 -224
  755. package/dist/_shared/item-BmTYKzEb.js.map +0 -1
  756. package/dist/_shared/item-BtR-bz96.cjs +0 -2
  757. package/dist/_shared/item-BtR-bz96.cjs.map +0 -1
  758. package/dist/_shared/mentions-DVCjaO_z.cjs +0 -2
  759. package/dist/_shared/mentions-DVCjaO_z.cjs.map +0 -1
  760. package/dist/_shared/mentions-DzG8mX5H.js +0 -493
  761. package/dist/_shared/mentions-DzG8mX5H.js.map +0 -1
  762. package/dist/_shared/money-display-B5oxCs_0.cjs +0 -2
  763. package/dist/_shared/money-display-B5oxCs_0.cjs.map +0 -1
  764. package/dist/_shared/money-display-C0wI02ou.js +0 -198
  765. package/dist/_shared/money-display-C0wI02ou.js.map +0 -1
  766. package/dist/_shared/navigation-BA2nsTgU.cjs +0 -2
  767. package/dist/_shared/navigation-BA2nsTgU.cjs.map +0 -1
  768. package/dist/_shared/navigation-DHyaf-RZ.js +0 -420
  769. package/dist/_shared/navigation-DHyaf-RZ.js.map +0 -1
  770. package/dist/_shared/overlays-Kl6Gp6WR.js +0 -633
  771. package/dist/_shared/overlays-Kl6Gp6WR.js.map +0 -1
  772. package/dist/_shared/overlays-W6j-Pe1L.cjs +0 -2
  773. package/dist/_shared/overlays-W6j-Pe1L.cjs.map +0 -1
  774. package/dist/_shared/page-DROZhtWT.js +0 -263
  775. package/dist/_shared/page-DROZhtWT.js.map +0 -1
  776. package/dist/_shared/page-lh9Rcx_d.cjs +0 -2
  777. package/dist/_shared/page-lh9Rcx_d.cjs.map +0 -1
  778. package/dist/_shared/popover-BTEwjJZS.cjs +0 -2
  779. package/dist/_shared/popover-BTEwjJZS.cjs.map +0 -1
  780. package/dist/_shared/popover-CF9VWt-l.js +0 -83
  781. package/dist/_shared/popover-CF9VWt-l.js.map +0 -1
  782. package/dist/_shared/popover-menu-BYesl29w.js +0 -95
  783. package/dist/_shared/popover-menu-BYesl29w.js.map +0 -1
  784. package/dist/_shared/popover-menu-DF9sWz61.cjs +0 -2
  785. package/dist/_shared/popover-menu-DF9sWz61.cjs.map +0 -1
  786. package/dist/_shared/rich-text-editor-UZghkgsh.cjs +0 -2
  787. package/dist/_shared/rich-text-editor-UZghkgsh.cjs.map +0 -1
  788. package/dist/_shared/rich-text-editor-fUeuK-rY.js +0 -608
  789. package/dist/_shared/rich-text-editor-fUeuK-rY.js.map +0 -1
  790. package/dist/_shared/scroll-area-XJLcCczs.js +0 -41
  791. package/dist/_shared/scroll-area-XJLcCczs.js.map +0 -1
  792. package/dist/_shared/scroll-area-y8ZJoS97.cjs +0 -2
  793. package/dist/_shared/scroll-area-y8ZJoS97.cjs.map +0 -1
  794. package/dist/_shared/select-D8MYF4f7.js +0 -85
  795. package/dist/_shared/select-D8MYF4f7.js.map +0 -1
  796. package/dist/_shared/select-DxAiUfpM.cjs +0 -2
  797. package/dist/_shared/select-DxAiUfpM.cjs.map +0 -1
  798. package/dist/_shared/separator-BazqiQ9s.js +0 -16
  799. package/dist/_shared/separator-BazqiQ9s.js.map +0 -1
  800. package/dist/_shared/separator-DSkXMOXq.cjs +0 -2
  801. package/dist/_shared/separator-DSkXMOXq.cjs.map +0 -1
  802. package/dist/_shared/sheet-7iHOs-IU.js +0 -100
  803. package/dist/_shared/sheet-7iHOs-IU.js.map +0 -1
  804. package/dist/_shared/sheet-qKtoyxgi.cjs +0 -2
  805. package/dist/_shared/sheet-qKtoyxgi.cjs.map +0 -1
  806. package/dist/_shared/sidebar-CaTUJ3t-.js +0 -537
  807. package/dist/_shared/sidebar-CaTUJ3t-.js.map +0 -1
  808. package/dist/_shared/sidebar-DVjfsm-f.cjs +0 -2
  809. package/dist/_shared/sidebar-DVjfsm-f.cjs.map +0 -1
  810. package/dist/_shared/sidebar-aV5DVAVg.js +0 -371
  811. package/dist/_shared/sidebar-aV5DVAVg.js.map +0 -1
  812. package/dist/_shared/sidebar-mL0jSJ8u.cjs +0 -2
  813. package/dist/_shared/sidebar-mL0jSJ8u.cjs.map +0 -1
  814. package/dist/_shared/skeleton-Bwv_j9jJ.cjs +0 -2
  815. package/dist/_shared/skeleton-Bwv_j9jJ.cjs.map +0 -1
  816. package/dist/_shared/skeleton-DyKa-Ed-.js +0 -14
  817. package/dist/_shared/skeleton-DyKa-Ed-.js.map +0 -1
  818. package/dist/_shared/slot-ClIPTht1.cjs +0 -2
  819. package/dist/_shared/slot-ClIPTht1.cjs.map +0 -1
  820. package/dist/_shared/slot-CrS_VEVl.js +0 -18
  821. package/dist/_shared/slot-CrS_VEVl.js.map +0 -1
  822. package/dist/_shared/smart-card-Ddsjvf7r.cjs +0 -2
  823. package/dist/_shared/smart-card-Ddsjvf7r.cjs.map +0 -1
  824. package/dist/_shared/smart-card-hJ01usWt.js +0 -360
  825. package/dist/_shared/smart-card-hJ01usWt.js.map +0 -1
  826. package/dist/_shared/spinner-D-pcMBt1.js +0 -67
  827. package/dist/_shared/spinner-D-pcMBt1.js.map +0 -1
  828. package/dist/_shared/spinner-zbmhn0vE.cjs +0 -2
  829. package/dist/_shared/spinner-zbmhn0vE.cjs.map +0 -1
  830. package/dist/_shared/switch-C5J37LMI.cjs +0 -2
  831. package/dist/_shared/switch-C5J37LMI.cjs.map +0 -1
  832. package/dist/_shared/switch-ClGgHcEb.js +0 -51
  833. package/dist/_shared/switch-ClGgHcEb.js.map +0 -1
  834. package/dist/_shared/textarea-DeISZfHw.js +0 -119
  835. package/dist/_shared/textarea-DeISZfHw.js.map +0 -1
  836. package/dist/_shared/textarea-iR9txrty.cjs +0 -2
  837. package/dist/_shared/textarea-iR9txrty.cjs.map +0 -1
  838. package/dist/_shared/tooltip-CEqxHWxQ.js +0 -49
  839. package/dist/_shared/tooltip-CEqxHWxQ.js.map +0 -1
  840. package/dist/_shared/tooltip-DPv0LGr9.cjs +0 -2
  841. package/dist/_shared/tooltip-DPv0LGr9.cjs.map +0 -1
  842. package/dist/_shared/typography-BtPQBvSm.js +0 -135
  843. package/dist/_shared/typography-BtPQBvSm.js.map +0 -1
  844. package/dist/_shared/typography-DClleVWi.cjs +0 -2
  845. package/dist/_shared/typography-DClleVWi.cjs.map +0 -1
  846. package/dist/showcase/assets/AreaChart-D-RqNtqG.js +0 -6
  847. package/dist/showcase/assets/CSPContext-t69BXyB7.js +0 -1
  848. package/dist/showcase/assets/CompositeItem-DHNLgEeV.js +0 -1
  849. package/dist/showcase/assets/CompositeRoot-xq_0ZFev.js +0 -1
  850. package/dist/showcase/assets/DialogTrigger-Cl7n_3xX.js +0 -1
  851. package/dist/showcase/assets/FormContext-CXdwDz7F.js +0 -1
  852. package/dist/showcase/assets/PreviewLayout-BHemtKEf.js +0 -1
  853. package/dist/showcase/assets/RadioGroup-DXAt4VZN.js +0 -1
  854. package/dist/showcase/assets/Separator-C9vXwWmZ.js +0 -1
  855. package/dist/showcase/assets/ToolbarRootContext-iF4ctnIz.js +0 -1
  856. package/dist/showcase/assets/accordion-DzkNgNcB.js +0 -172
  857. package/dist/showcase/assets/accordion-variants-DP5-oxLe.js +0 -1
  858. package/dist/showcase/assets/action-menu-CyA2e9TF.js +0 -1
  859. package/dist/showcase/assets/activities-Dt-dO5ew.js +0 -501
  860. package/dist/showcase/assets/activities-feed-card-DZdFekXl.js +0 -1
  861. package/dist/showcase/assets/admin-C2SeJmE7.js +0 -80
  862. package/dist/showcase/assets/ai-Cwo0h_Xn.js +0 -41
  863. package/dist/showcase/assets/ai-artifact-3UJofyU5.js +0 -2
  864. package/dist/showcase/assets/ai-chat-CrFtG_Vg.js +0 -568
  865. package/dist/showcase/assets/ai-elements-iJ15Y7pS.js +0 -379
  866. package/dist/showcase/assets/ai-new-DuznZydd.js +0 -167
  867. package/dist/showcase/assets/ai-tool-call-CTcGGAQU.js +0 -1
  868. package/dist/showcase/assets/alert-CUGGckOX.js +0 -1
  869. package/dist/showcase/assets/alert-tWped3Sw.js +0 -59
  870. package/dist/showcase/assets/api-key-list-Q5LAqzMn.js +0 -73
  871. package/dist/showcase/assets/arrow-down-CfwCPcHL.js +0 -1
  872. package/dist/showcase/assets/arrow-left-BKx9qNX6.js +0 -1
  873. package/dist/showcase/assets/arrow-right-DlEpbqEk.js +0 -1
  874. package/dist/showcase/assets/arrow-up-BYQ4F9L1.js +0 -1
  875. package/dist/showcase/assets/arrow-up-right-C8r6vYfE.js +0 -1
  876. package/dist/showcase/assets/avatar-BuZ3zTbH.js +0 -57
  877. package/dist/showcase/assets/avatar-DR2mqPpY.js +0 -1
  878. package/dist/showcase/assets/badge-D1HLfP93.js +0 -28
  879. package/dist/showcase/assets/badge-check-oP2z_95u.js +0 -1
  880. package/dist/showcase/assets/bell-BTX2D-ES.js +0 -1
  881. package/dist/showcase/assets/bot-CKh5XgUG.js +0 -1
  882. package/dist/showcase/assets/box-F1uaZ6iw.js +0 -1
  883. package/dist/showcase/assets/brain-dD_ppLUa.js +0 -1
  884. package/dist/showcase/assets/brand-zisZOFKf.js +0 -40
  885. package/dist/showcase/assets/breadcrumb-C7vv0L8K.js +0 -52
  886. package/dist/showcase/assets/breadcrumb-fay5sLba.js +0 -1
  887. package/dist/showcase/assets/breadcrumbs-DklRXepp.js +0 -1
  888. package/dist/showcase/assets/briefcase-D9M4aNmi.js +0 -1
  889. package/dist/showcase/assets/button-DbhXfR1N.js +0 -44
  890. package/dist/showcase/assets/button-group-BpdhyMif.js +0 -1
  891. package/dist/showcase/assets/buttons-XexbmUtN.js +0 -259
  892. package/dist/showcase/assets/calendar-BADJgjpI.js +0 -16
  893. package/dist/showcase/assets/calendar-Djh3xLVx.js +0 -1
  894. package/dist/showcase/assets/calendar-dWZ2-0gU.js +0 -1
  895. package/dist/showcase/assets/card-BUSAPPkx.js +0 -1
  896. package/dist/showcase/assets/cards-DHBPe01w.js +0 -328
  897. package/dist/showcase/assets/chart-column-6l5wIZ0h.js +0 -1
  898. package/dist/showcase/assets/chevron-down-at2vrt1V.js +0 -1
  899. package/dist/showcase/assets/chevron-left-DIs3WYNO.js +0 -1
  900. package/dist/showcase/assets/chevron-right-BNy0Or0x.js +0 -1
  901. package/dist/showcase/assets/chevron-up-CX7619BJ.js +0 -1
  902. package/dist/showcase/assets/chevrons-up-down-Be6eciau.js +0 -1
  903. package/dist/showcase/assets/circle-C0Yd1DDS.js +0 -1
  904. package/dist/showcase/assets/circle-alert-DfQp_X3_.js +0 -1
  905. package/dist/showcase/assets/circle-check-BkqQe1tv.js +0 -1
  906. package/dist/showcase/assets/circle-check-big-BXxHUhuc.js +0 -1
  907. package/dist/showcase/assets/circle-dot-HeRgxZxN.js +0 -1
  908. package/dist/showcase/assets/circle-question-mark-BgS4fb6N.js +0 -1
  909. package/dist/showcase/assets/circle-x-CMzwDsaf.js +0 -1
  910. package/dist/showcase/assets/clock-ynCzs_rR.js +0 -1
  911. package/dist/showcase/assets/code-xml-B8aVstrJ.js +0 -1
  912. package/dist/showcase/assets/collapsible-C8CKdiRn.js +0 -27
  913. package/dist/showcase/assets/collapsible-u43HxDHB.js +0 -1
  914. package/dist/showcase/assets/combobox-D-6ff0VG.js +0 -622
  915. package/dist/showcase/assets/command-BsHudlBe.js +0 -1
  916. package/dist/showcase/assets/command-DZqmBolX.js +0 -45
  917. package/dist/showcase/assets/comment-composer-OnxlkC5y.js +0 -1
  918. package/dist/showcase/assets/comment-item-DmZ1AJ2Y.js +0 -1
  919. package/dist/showcase/assets/comments-BjIVksjE.js +0 -349
  920. package/dist/showcase/assets/commerce-3T1GxvrA.js +0 -78
  921. package/dist/showcase/assets/commerce-extras-CYv_uRQR.js +0 -179
  922. package/dist/showcase/assets/composite-mol0-2zZ.js +0 -1
  923. package/dist/showcase/assets/contact-card-CWAANJqn.js +0 -65
  924. package/dist/showcase/assets/content-container-D3Phw6h8.js +0 -1
  925. package/dist/showcase/assets/copyable-BdzUH3U3.js +0 -96
  926. package/dist/showcase/assets/course-card-Cb6Y2vJ6.js +0 -113
  927. package/dist/showcase/assets/cpu-CRrekbGQ.js +0 -1
  928. package/dist/showcase/assets/credit-card--5vg7bQy.js +0 -1
  929. package/dist/showcase/assets/currency-VuqnKj_Y.js +0 -149
  930. package/dist/showcase/assets/dark-surfaces-DEyBimFz.js +0 -90
  931. package/dist/showcase/assets/database-Bnvw0wVV.js +0 -1
  932. package/dist/showcase/assets/date-block-IhoCVl_d.js +0 -1
  933. package/dist/showcase/assets/date-picker-DnJpsnaF.js +0 -1
  934. package/dist/showcase/assets/date-pickers-CEbieq-R.js +0 -110
  935. package/dist/showcase/assets/dense-info-B04QmrOd.js +0 -106
  936. package/dist/showcase/assets/dialog-DotEO3IO.js +0 -1
  937. package/dist/showcase/assets/display-hK7Dtm-B.js +0 -392
  938. package/dist/showcase/assets/dist-DQgGKvzA.js +0 -1
  939. package/dist/showcase/assets/dollar-sign-gJtl-XaL.js +0 -1
  940. package/dist/showcase/assets/download-CMrNgeil.js +0 -1
  941. package/dist/showcase/assets/dropdown-menu-Cqv6D7Sb.js +0 -1
  942. package/dist/showcase/assets/dropzone-v69fWHZJ.js +0 -1
  943. package/dist/showcase/assets/ellipsis-CgqPlt6Z.js +0 -1
  944. package/dist/showcase/assets/ellipsis-vertical-CiJqC0n2.js +0 -1
  945. package/dist/showcase/assets/empty-DYHzk-Gb.js +0 -1
  946. package/dist/showcase/assets/empty-item-CTwvC_3M.js +0 -49
  947. package/dist/showcase/assets/empty-state-eUgJ4h41.js +0 -188
  948. package/dist/showcase/assets/enhanced-activities-XU2u5gO6.js +0 -359
  949. package/dist/showcase/assets/esm-B7xAMXnv.js +0 -2
  950. package/dist/showcase/assets/event-calendar-D2rjpzq1.js +0 -138
  951. package/dist/showcase/assets/event-log-BxER62Ds.js +0 -326
  952. package/dist/showcase/assets/example-DPfw-R7_.js +0 -1
  953. package/dist/showcase/assets/external-link-DJNGkjZ0.js +0 -1
  954. package/dist/showcase/assets/eye-BQU3UqWi.js +0 -1
  955. package/dist/showcase/assets/feature-announcement-CjGQEODB.js +0 -34
  956. package/dist/showcase/assets/file-DBpbC8g-.js +0 -1
  957. package/dist/showcase/assets/file-text-DokBif5V.js +0 -1
  958. package/dist/showcase/assets/filters-DM2olMKy.js +0 -78
  959. package/dist/showcase/assets/flag-hAuZbHU1.js +0 -1
  960. package/dist/showcase/assets/folder-open-DqubQ0ts.js +0 -1
  961. package/dist/showcase/assets/form-sizing-CfbZF8Ja.js +0 -1
  962. package/dist/showcase/assets/format-gCABLair.js +0 -1
  963. package/dist/showcase/assets/forms-FsAT0C-I.js +0 -790
  964. package/dist/showcase/assets/generic-BUuo7j09.js +0 -1
  965. package/dist/showcase/assets/getPseudoElementBounds-l8uxcPNL.js +0 -1
  966. package/dist/showcase/assets/gift-CS7Tg3kD.js +0 -1
  967. package/dist/showcase/assets/giftcard-cards-h1ffLs9F.js +0 -85
  968. package/dist/showcase/assets/git-branch-D4-6vv6t.js +0 -1
  969. package/dist/showcase/assets/global-search-BUyhhsQv.js +0 -90
  970. package/dist/showcase/assets/globe-CqLYhUfl.js +0 -1
  971. package/dist/showcase/assets/gradient-card-Bwr9OLIL.js +0 -58
  972. package/dist/showcase/assets/header-notifications-BWla1yhM.js +0 -1
  973. package/dist/showcase/assets/heart-DfZtXfIP.js +0 -1
  974. package/dist/showcase/assets/house-DhIReDt8.js +0 -1
  975. package/dist/showcase/assets/icon-badge-BgRFYZEc.js +0 -1
  976. package/dist/showcase/assets/image-D_eNEZWQ.js +0 -1
  977. package/dist/showcase/assets/inbox-5sFkO7gC.js +0 -1
  978. package/dist/showcase/assets/index-B-Z7p0So.js +0 -10
  979. package/dist/showcase/assets/inertValue-NU_Amr-x.js +0 -1
  980. package/dist/showcase/assets/info-DyB6KH3Z.js +0 -1
  981. package/dist/showcase/assets/inline-stat-D2aaM1Vt.js +0 -1
  982. package/dist/showcase/assets/input-BS64kyoq.js +0 -1
  983. package/dist/showcase/assets/input-DWLyniGt.js +0 -1
  984. package/dist/showcase/assets/input-group-BS8j5Eek.js +0 -47
  985. package/dist/showcase/assets/input-group-B_E_3EGS.js +0 -1
  986. package/dist/showcase/assets/inputs-DOQ2foig.js +0 -49
  987. package/dist/showcase/assets/invoice-header-C2-uQE_s.js +0 -36
  988. package/dist/showcase/assets/invoice-items-BUunRJqA.js +0 -36
  989. package/dist/showcase/assets/invoice-mini-BrLMrzN6.js +0 -14
  990. package/dist/showcase/assets/invoice-table-CaB9Z8jI.js +0 -30
  991. package/dist/showcase/assets/isSameDay-rwvIyLOL.js +0 -1
  992. package/dist/showcase/assets/isToday-CIAzBrb5.js +0 -1
  993. package/dist/showcase/assets/italic-B02a4PdD.js +0 -1
  994. package/dist/showcase/assets/item-C-0RObvI.js +0 -117
  995. package/dist/showcase/assets/item-CCu0Ufaq.js +0 -1
  996. package/dist/showcase/assets/item-DF4m_56j.js +0 -1
  997. package/dist/showcase/assets/kanban-BgW23a7P.js +0 -175
  998. package/dist/showcase/assets/label-MdV7pglj.js +0 -1
  999. package/dist/showcase/assets/layout-containers-nKVReEJB.js +0 -96
  1000. package/dist/showcase/assets/layout-header-CKyxHHPC.js +0 -170
  1001. package/dist/showcase/assets/layout-page-ClD2yMnK.js +0 -122
  1002. package/dist/showcase/assets/layout-sidebar-jdQnYDiT.js +0 -224
  1003. package/dist/showcase/assets/layout-users-Cv849xnU.js +0 -104
  1004. package/dist/showcase/assets/lib-BHW4JERQ.js +0 -1
  1005. package/dist/showcase/assets/lock-B8bfl9sZ.js +0 -1
  1006. package/dist/showcase/assets/mail-DmOBTX4I.js +0 -1
  1007. package/dist/showcase/assets/map-ButgRl8f.js +0 -124
  1008. package/dist/showcase/assets/map-pin-o3egisLq.js +0 -1
  1009. package/dist/showcase/assets/menus-DdXgYKVA.js +0 -89
  1010. package/dist/showcase/assets/message-square-Bl6P4TA0.js +0 -1
  1011. package/dist/showcase/assets/metadata-list-aXo96h_U.js +0 -278
  1012. package/dist/showcase/assets/metric-BLHKuZtE.js +0 -1
  1013. package/dist/showcase/assets/metric-grid-6Dpj5eV3.js +0 -1
  1014. package/dist/showcase/assets/metric-trend-chip-m389ipmG.js +0 -1
  1015. package/dist/showcase/assets/metrics-analytics-bar-B-1IUlHf.js +0 -44
  1016. package/dist/showcase/assets/metrics-analytics-cards-B8tvK_RB.js +0 -77
  1017. package/dist/showcase/assets/metrics-comparison-DKJ7Js3F.js +0 -76
  1018. package/dist/showcase/assets/metrics-heatmap-BlRnJoI0.js +0 -27
  1019. package/dist/showcase/assets/metrics-inline-badge-COI7f64X.js +0 -17
  1020. package/dist/showcase/assets/metrics-kpi-row-LRfmKhsy.js +0 -31
  1021. package/dist/showcase/assets/metrics-micro-grid-DmqIQVVR.js +0 -42
  1022. package/dist/showcase/assets/metrics-overview-Dbf5RM2k.js +0 -192
  1023. package/dist/showcase/assets/metrics-stat-cards-D5oevQvv.js +0 -54
  1024. package/dist/showcase/assets/minus-D-jmUi0G.js +0 -1
  1025. package/dist/showcase/assets/money-display-C__61373.js +0 -1
  1026. package/dist/showcase/assets/month-year-picker-BfBQePUY.js +0 -1
  1027. package/dist/showcase/assets/navigation-DUAe-sQV.js +0 -86
  1028. package/dist/showcase/assets/navigation-extras-itSAf6QT.js +0 -43
  1029. package/dist/showcase/assets/navigation-fAOvwIlP.js +0 -230
  1030. package/dist/showcase/assets/onboarding-checklist-1gmzk3_J.js +0 -119
  1031. package/dist/showcase/assets/overlays-BMTBOIEI.js +0 -88
  1032. package/dist/showcase/assets/overlays-Lu16yJWM.js +0 -393
  1033. package/dist/showcase/assets/package-BIa1hPVQ.js +0 -1
  1034. package/dist/showcase/assets/page-action-button-C5NiQHnP.js +0 -1
  1035. package/dist/showcase/assets/page-header-Cwf9DuhD.js +0 -1
  1036. package/dist/showcase/assets/pagination-9iSNmdCx.js +0 -1
  1037. package/dist/showcase/assets/pagination-MjniF-7j.js +0 -42
  1038. package/dist/showcase/assets/paperclip-CaNLUOIA.js +0 -1
  1039. package/dist/showcase/assets/pencil-DTLGPoc_.js +0 -1
  1040. package/dist/showcase/assets/phone-XvU6LndA.js +0 -1
  1041. package/dist/showcase/assets/plus-BDSCn8ol.js +0 -1
  1042. package/dist/showcase/assets/popover-CvhuubS6.js +0 -1
  1043. package/dist/showcase/assets/popover-DUQqLZN2.js +0 -1
  1044. package/dist/showcase/assets/popover-menu-DVGBuFpL.js +0 -1
  1045. package/dist/showcase/assets/progress-BQopCRpV.js +0 -1
  1046. package/dist/showcase/assets/progress-CvSUR260.js +0 -18
  1047. package/dist/showcase/assets/props-table-BzUnIcv-.js +0 -1
  1048. package/dist/showcase/assets/quote-D55lkoXn.js +0 -1
  1049. package/dist/showcase/assets/receipt-D3ilhl9U.js +0 -1
  1050. package/dist/showcase/assets/refresh-cw-Csl2LQ4l.js +0 -1
  1051. package/dist/showcase/assets/resolveValueLabel-CM5i142y.js +0 -1
  1052. package/dist/showcase/assets/rich-text-editor-Bz7jWvPv.js +0 -124
  1053. package/dist/showcase/assets/rich-text-editor-DWKFpgNI.js +0 -141
  1054. package/dist/showcase/assets/rotate-ccw-BnkpK7eq.js +0 -1
  1055. package/dist/showcase/assets/scroll-area-BTVLd58j.js +0 -1
  1056. package/dist/showcase/assets/scroll-area-CgFEDepJ.js +0 -32
  1057. package/dist/showcase/assets/select-B7-tZDlG.js +0 -1
  1058. package/dist/showcase/assets/send-BhjEdZ06.js +0 -1
  1059. package/dist/showcase/assets/separator-CJayjKGP.js +0 -28
  1060. package/dist/showcase/assets/separator-CZ_sPWQj.js +0 -1
  1061. package/dist/showcase/assets/settings-Duj7gAZe.js +0 -1
  1062. package/dist/showcase/assets/sheet-BMabZ_Gj.js +0 -1
  1063. package/dist/showcase/assets/shield-C22sWOf4.js +0 -1
  1064. package/dist/showcase/assets/shield-alert-DgZ6UO46.js +0 -1
  1065. package/dist/showcase/assets/shield-check-jGSgmijm.js +0 -1
  1066. package/dist/showcase/assets/shopping-bag-Cd09Ga6D.js +0 -1
  1067. package/dist/showcase/assets/sidebar.context-CXTHS3vn.js +0 -1
  1068. package/dist/showcase/assets/skeleton-Dmp4eC1A.js +0 -1
  1069. package/dist/showcase/assets/skeleton-FLNbc7QP.js +0 -29
  1070. package/dist/showcase/assets/smart-card-50WN9sCI.js +0 -1
  1071. package/dist/showcase/assets/sonner-DR_DYpqb.js +0 -22
  1072. package/dist/showcase/assets/sortable.esm-C_l8_Iqt.js +0 -5
  1073. package/dist/showcase/assets/sparkles-C-fyahzv.js +0 -1
  1074. package/dist/showcase/assets/spinner-B8jgVQNj.js +0 -30
  1075. package/dist/showcase/assets/spinner-C4zPRpI0.js +0 -49
  1076. package/dist/showcase/assets/spinner-DFjHsQlR.js +0 -1
  1077. package/dist/showcase/assets/square-pen-Dp7lCfI3.js +0 -1
  1078. package/dist/showcase/assets/stacked-avatars-CTckbUiW.js +0 -1
  1079. package/dist/showcase/assets/star-l00ivfkD.js +0 -1
  1080. package/dist/showcase/assets/startOfDay-Xmododib.js +0 -1
  1081. package/dist/showcase/assets/styles-zuwR0q1z.js +0 -1
  1082. package/dist/showcase/assets/switch-D3LrIrTQ.js +0 -1
  1083. package/dist/showcase/assets/switch-ylXVyh_N.js +0 -1
  1084. package/dist/showcase/assets/table-Cn3-19zb.js +0 -1
  1085. package/dist/showcase/assets/table-ao3IcAnF.js +0 -390
  1086. package/dist/showcase/assets/tabs-CTLQKtiu.js +0 -19
  1087. package/dist/showcase/assets/tabs-lc1fX94A.js +0 -1
  1088. package/dist/showcase/assets/text-button-Fu8UY1A8.js +0 -1
  1089. package/dist/showcase/assets/text-link--EyGasJN.js +0 -1
  1090. package/dist/showcase/assets/textarea-BdhnlNrF.js +0 -1
  1091. package/dist/showcase/assets/textarea-D1kG3a9B.js +0 -1
  1092. package/dist/showcase/assets/timelines-DF3tNgyG.js +0 -186
  1093. package/dist/showcase/assets/toggle-group-CfxuWsv9.js +0 -1
  1094. package/dist/showcase/assets/toggles-CacdBPlV.js +0 -71
  1095. package/dist/showcase/assets/toggles-group-CRhgTGmL.js +0 -32
  1096. package/dist/showcase/assets/trash-2-B0_GprQM.js +0 -1
  1097. package/dist/showcase/assets/trending-up-B202l1b6.js +0 -1
  1098. package/dist/showcase/assets/truck-Bl1pNrHi.js +0 -1
  1099. package/dist/showcase/assets/typography-DEtOxBlR.js +0 -214
  1100. package/dist/showcase/assets/ui-badge-n4RA0J5b.js +0 -28
  1101. package/dist/showcase/assets/ui-card-Ck-kzrTh.js +0 -30
  1102. package/dist/showcase/assets/ui-table-gzOp82pf.js +0 -42
  1103. package/dist/showcase/assets/upload-tray-VvKdTZSi.js +0 -138
  1104. package/dist/showcase/assets/useAnchoredPopupScrollLock-Cu2ZwN7Z.js +0 -1
  1105. package/dist/showcase/assets/useCollapsiblePanel-C6_cdQ7B.js +0 -1
  1106. package/dist/showcase/assets/useCompositeItem-BfUPqXoj.js +0 -1
  1107. package/dist/showcase/assets/useCompositeListItem-Cf2lpKB8.js +0 -1
  1108. package/dist/showcase/assets/useControlled-C6q3nmcf.js +0 -1
  1109. package/dist/showcase/assets/useLabelableId-CfPT16c1.js +0 -1
  1110. package/dist/showcase/assets/useOpenInteractionType-CGeqRuuY.js +0 -1
  1111. package/dist/showcase/assets/useRender-CoUlh0uZ.js +0 -1
  1112. package/dist/showcase/assets/useRole-DSPUSyVX.js +0 -1
  1113. package/dist/showcase/assets/useTriggerFocusGuards-BwZ1HD24.js +0 -1
  1114. package/dist/showcase/assets/useValueChanged-Dej794I1.js +0 -1
  1115. package/dist/showcase/assets/user-3L762Mec.js +0 -1
  1116. package/dist/showcase/assets/user-plus-9WRYjS04.js +0 -1
  1117. package/dist/showcase/assets/users-CxKZ7gt8.js +0 -1
  1118. package/dist/showcase/assets/vendor-profile-BaCptdMF.js +0 -37
  1119. package/dist/showcase/assets/wrench-Duh91tnW.js +0 -1
  1120. package/dist/showcase/assets/x-t42iKYpL.js +0 -1
  1121. package/dist/showcase/assets/zap-D0z3Tv_L.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/composed/analytics/analytics.strings.ts","../../../../src/components/composed/analytics/format-metric-value.ts","../../../../src/components/composed/analytics/atoms/metric-trend-chip.tsx","../../../../src/components/composed/analytics/atoms/metric-sparkline.tsx","../../../../src/components/composed/analytics/atoms/metric-skeleton.tsx","../../../../src/components/composed/analytics/metric/metric.tsx","../../../../src/components/composed/analytics/metric-bar/metric-bar.tsx","../../../../src/components/composed/analytics/metric-grid/metric-grid.tsx","../../../../src/components/composed/analytics/metric-comparison/metric-comparison.tsx","../../../../src/components/composed/analytics/metric-micro-grid/metric-micro-grid.tsx","../../../../src/components/composed/analytics/metric-gradient/metric-gradient.tsx","../../../../src/components/composed/analytics/activity-heatmap/activity-heatmap.tsx"],"sourcesContent":["/**\n * Shared default strings for `composed/analytics` components.\n *\n * Each component accepts a `strings` prop deep-merged over these defaults\n * so consumers override per-component without touching the rest. Day/month\n * labels live here too because they're localisable in the same way.\n */\nexport interface AnalyticsStrings {\n /** Fallback shown by `<Metric />` when `error` is true. */\n metricErrorLabel: string;\n /** Default title for `<MetricComparison />` when no `title` prop is passed. */\n comparisonTitle: string;\n /** Labels for the activity heatmap weekday rows (Mon–Sun, length 7). */\n heatmapDayLabels: readonly [string, string, string, string, string, string, string];\n /** Short month names for the activity heatmap header (Jan–Dec, length 12). */\n heatmapMonthNames: readonly [\n string, string, string, string, string, string,\n string, string, string, string, string, string,\n ];\n /** Heatmap legend \"less\" label (left edge of intensity legend). */\n heatmapLegendLess: string;\n /** Heatmap legend \"more\" label (right edge of intensity legend). */\n heatmapLegendMore: string;\n}\n\nexport const defaultAnalyticsStrings: AnalyticsStrings = {\n metricErrorLabel: 'Unable to load metric',\n comparisonTitle: 'Comparison',\n heatmapDayLabels: ['Mon', '', 'Wed', '', 'Fri', '', ''],\n heatmapMonthNames: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',\n ],\n heatmapLegendLess: 'Less',\n heatmapLegendMore: 'More',\n};\n","/**\n * formatMetricValue — single canonical formatter for every metric surface.\n *\n * Keeps formatting logic out of the layout components so the same dataset\n * renders identically regardless of which `Metric*` variant displays it.\n */\nimport {\n\tEMPTY,\n\tformatCurrency,\n\tformatDuration,\n\tformatNumber,\n\tformatPercentage,\n} from '@/lib/format';\nimport type { MetricData } from './types';\n\nexport function formatMetricValue(data: MetricData): string {\n\tif (data.value === null || data.value === undefined) return EMPTY;\n\n\tconst value = data.value;\n\tconst numeric = typeof value === 'number' ? value : null;\n\n\tswitch (data.valueType) {\n\t\tcase 'currency':\n\t\t\treturn numeric !== null\n\t\t\t\t? formatCurrency(numeric, { currency: data.currency })\n\t\t\t\t: String(value);\n\t\tcase 'percentage':\n\t\t\treturn numeric !== null ? formatPercentage(numeric) : String(value);\n\t\tcase 'duration':\n\t\t\treturn numeric !== null ? formatDuration(numeric) : String(value);\n\t\tcase 'number':\n\t\t\treturn numeric !== null ? formatNumber(numeric) : String(value);\n\t\tcase 'text':\n\t\tdefault:\n\t\t\treturn String(value);\n\t}\n}\n\n/**\n * Resolve the effective `MetricTrend` for a metric — explicit `trend` wins,\n * otherwise we infer from `change.direction` (`up` → positive, `down` →\n * negative, `neutral`/missing → neutral).\n */\nexport function resolveTrend(data: MetricData): 'positive' | 'negative' | 'neutral' {\n\tif (data.trend) return data.trend;\n\tif (data.change?.direction === 'up') return 'positive';\n\tif (data.change?.direction === 'down') return 'negative';\n\treturn 'neutral';\n}\n","/**\n * MetricTrendChip — compact ↑/↓/→ delta indicator.\n *\n * Decouples direction (up/down/neutral) from tone (positive/negative/neutral)\n * so consumers can flip the colour for inverted metrics like churn or refund\n * rate. Four variants:\n * - `default` — coloured icon + value, no chrome\n * - `badge` — pill with tinted bg + arrow icon\n * - `compact` — coloured arrow + value, no spacing\n * - `inline` — value only with sign prefix, no icon\n */\nimport { ArrowDown, ArrowUp, Minus } from 'lucide-react';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { MetricChange, MetricSize, MetricTrend, MetricTrendVariant } from '../types';\n\ninterface MetricTrendChipProps {\n\tchange: MetricChange;\n\ttrend?: MetricTrend;\n\tsize?: MetricSize;\n\tvariant?: MetricTrendVariant;\n\tclassName?: string;\n}\n\nconst TONE_CLASSES: Record<MetricTrend, { text: string; badge: string; arrow: string }> = {\n\tpositive: { text: 'text-success', badge: 'bg-success/10 text-success', arrow: 'text-success' },\n\tnegative: { text: 'text-destructive', badge: 'bg-destructive/10 text-destructive', arrow: 'text-destructive' },\n\tneutral: { text: 'text-muted-foreground', badge: 'bg-muted text-muted-foreground', arrow: 'text-muted-foreground' },\n};\n\nconst ICON_SIZE: Record<MetricSize, string> = {\n\tsm: 'size-3',\n\tmd: 'size-3.5',\n\tlg: 'size-4',\n};\n\nconst TEXT_SIZE: Record<MetricSize, 'xxs' | 'xs' | 'sm'> = {\n\tsm: 'xxs',\n\tmd: 'xs',\n\tlg: 'sm',\n};\n\nconst BADGE_PADDING: Record<MetricSize, string> = {\n\tsm: 'px-1.5 py-0.5',\n\tmd: 'px-2 py-0.5',\n\tlg: 'px-2.5 py-1',\n};\n\nfunction resolveTone(trend: MetricTrend | undefined, direction: MetricChange['direction']): MetricTrend {\n\tif (trend) return trend;\n\tif (direction === 'up') return 'positive';\n\tif (direction === 'down') return 'negative';\n\treturn 'neutral';\n}\n\nexport function MetricTrendChip({\n\tchange,\n\ttrend,\n\tsize = 'md',\n\tvariant = 'default',\n\tclassName,\n}: MetricTrendChipProps) {\n\tconst tone = resolveTone(trend, change.direction);\n\tconst Icon = change.direction === 'up' ? ArrowUp : change.direction === 'down' ? ArrowDown : Minus;\n\tconst palette = TONE_CLASSES[tone];\n\tconst valueText = String(change.value);\n\tconst sign = change.direction === 'up' ? '+' : change.direction === 'down' ? '' : '';\n\n\tif (variant === 'inline') {\n\t\treturn (\n\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} weight=\"medium\" className={cn('metric-trend-chip--component', palette.text, 'tabular-nums', className)}>\n\t\t\t\t{sign}{valueText}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tif (variant === 'compact') {\n\t\treturn (\n\t\t\t<span className={cn('inline-flex items-center gap-0.5', palette.text, className)}>\n\t\t\t\t<Icon className={ICON_SIZE[size]} strokeWidth={2.5} aria-hidden=\"true\" />\n\t\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t{valueText}\n\t\t\t\t</Text>\n\t\t\t</span>\n\t\t);\n\t}\n\n\tif (variant === 'badge') {\n\t\treturn (\n\t\t\t<span className={cn('inline-flex items-center gap-1 rounded-full font-medium tabular-nums', palette.badge, BADGE_PADDING[size], className)}>\n\t\t\t\t<Icon className={ICON_SIZE[size]} strokeWidth={2.5} aria-hidden=\"true\" />\n\t\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t{valueText}\n\t\t\t\t</Text>\n\t\t\t\t{!!change.label && (\n\t\t\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} className=\"opacity-70\">{change.label}</Text>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t);\n\t}\n\n\t// default\n\treturn (\n\t\t<span className={cn('inline-flex items-center gap-1', palette.text, className)}>\n\t\t\t<Icon className={ICON_SIZE[size]} strokeWidth={2.5} aria-hidden=\"true\" />\n\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t{valueText}\n\t\t\t</Text>\n\t\t\t{!!change.label && (\n\t\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} type=\"secondary\">{change.label}</Text>\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nMetricTrendChip.displayName = 'MetricTrendChip';\n","/**\n * MetricSparkline — recharts-backed mini area chart used inside Metric\n * variants. Auto-stretches to its container; pass a fixed height (e.g.\n * `h-8 w-full`) on the wrapper. `trend` colours the stroke + gradient\n * (positive/negative/neutral); `color` overrides with any CSS colour\n * (semantic var, hex, rgb).\n */\nimport { useId, useMemo } from 'react';\nimport { Area, AreaChart, ResponsiveContainer } from 'recharts';\nimport { cn } from '@/lib/utils';\n\nimport type { MetricTrend } from '../types';\n\ninterface MetricSparklineProps {\n\tdata: readonly number[];\n\ttrend?: MetricTrend;\n\tcolor?: string;\n\tclassName?: string;\n\tanimated?: boolean;\n\t'aria-label'?: string;\n}\n\nconst TREND_COLORS: Record<MetricTrend, string> = {\n\tpositive: 'var(--success)',\n\tnegative: 'var(--destructive)',\n\tneutral: 'var(--muted-foreground)',\n};\n\nexport function MetricSparkline({\n\tdata,\n\ttrend = 'neutral',\n\tcolor,\n\tclassName,\n\tanimated = true,\n\t'aria-label': ariaLabel = 'Trend sparkline',\n}: MetricSparklineProps) {\n\tconst id = useId();\n\tconst gradientId = useMemo(() => `metric-spark-${id.replaceAll(':', '')}`, [id]);\n\tconst stroke = color ?? TREND_COLORS[trend];\n\n\tconst chartData = useMemo(() => {\n\t\tif (!Array.isArray(data) || data.length === 0) return [];\n\t\treturn data.map((value, i) => ({ i, v: value }));\n\t}, [data]);\n\n\tif (chartData.length === 0) {\n\t\treturn <div className={cn('metric-sparkline--component', 'w-full', className)} aria-hidden=\"true\" />;\n\t}\n\n\treturn (\n\t\t<div className={cn('w-full', className)} role=\"img\" aria-label={ariaLabel}>\n\t\t\t<ResponsiveContainer width=\"100%\" height=\"100%\" initialDimension={{ width: 1, height: 1 }}>\n\t\t\t\t<AreaChart data={chartData} margin={{ top: 2, right: 0, bottom: 0, left: 0 }}>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t<stop offset=\"0%\" stopColor={stroke} stopOpacity={0.25} />\n\t\t\t\t\t\t\t<stop offset=\"100%\" stopColor={stroke} stopOpacity={0} />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t</defs>\n\t\t\t\t\t<Area\n\t\t\t\t\t\ttype=\"monotone\"\n\t\t\t\t\t\tdataKey=\"v\"\n\t\t\t\t\t\tstroke={stroke}\n\t\t\t\t\t\tstrokeWidth={1.75}\n\t\t\t\t\t\tfill={`url(#${gradientId})`}\n\t\t\t\t\t\tdot={false}\n\t\t\t\t\t\tactiveDot={false}\n\t\t\t\t\t\tisAnimationActive={animated}\n\t\t\t\t\t\tanimationDuration={600}\n\t\t\t\t\t/>\n\t\t\t\t</AreaChart>\n\t\t\t</ResponsiveContainer>\n\t\t</div>\n\t);\n}\n\nMetricSparkline.displayName = 'MetricSparkline';\n","/**\n * MetricSkeleton — loading placeholder matching the height/spacing of every\n * `Metric` variant so the layout doesn't jump when data resolves.\n */\nimport { cn } from '@/lib/utils';\nimport type { MetricSize, MetricVariant } from '../types';\n\ninterface MetricSkeletonProps {\n\tvariant?: MetricVariant;\n\tsize?: MetricSize;\n\tclassName?: string;\n}\n\nconst Bar = ({ className }: { className?: string }) => (\n\t<div className={cn('animate-pulse rounded bg-muted', className)} />\n);\n\nexport function MetricSkeleton({\n\tvariant = 'default',\n\tsize = 'md',\n\tclassName,\n}: MetricSkeletonProps) {\n\tconst padding = size === 'sm' ? 'p-3' : size === 'lg' ? 'p-5' : 'p-4';\n\n\tif (variant === 'card' || variant === 'bordered' || variant === 'accent' || variant === 'colored') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn('metric-skeleton--component', \n\t\t\t\t\t'rounded-xl border border-border bg-card shadow-sm',\n\t\t\t\t\tpadding,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\taria-busy=\"true\"\n\t\t\t\taria-live=\"polite\"\n\t\t\t>\n\t\t\t\t<Bar className=\"h-3 w-24\" />\n\t\t\t\t<Bar className={cn('mt-3', size === 'lg' ? 'h-9 w-40' : 'h-7 w-32')} />\n\t\t\t\t<Bar className=\"mt-2 h-3 w-20\" />\n\t\t\t\t<Bar className=\"mt-3 h-8 w-full\" />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (variant === 'compact') {\n\t\treturn (\n\t\t\t<div className={cn('flex items-center gap-3', className)} aria-busy=\"true\">\n\t\t\t\t<Bar className=\"size-9 rounded-lg\" />\n\t\t\t\t<div className=\"flex-1 space-y-1.5\">\n\t\t\t\t\t<Bar className=\"h-3 w-20\" />\n\t\t\t\t\t<Bar className=\"h-4 w-28\" />\n\t\t\t\t</div>\n\t\t\t\t<Bar className=\"h-5 w-12 rounded-full\" />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (variant === 'minimal') {\n\t\treturn (\n\t\t\t<div className={cn('inline-flex items-baseline gap-2', className)} aria-busy=\"true\">\n\t\t\t\t<Bar className=\"h-3 w-12\" />\n\t\t\t\t<Bar className=\"h-3 w-16\" />\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// default\n\treturn (\n\t\t<div className={cn('flex flex-col gap-1.5', padding, className)} aria-busy=\"true\">\n\t\t\t<Bar className=\"h-3 w-20\" />\n\t\t\t<Bar className=\"h-5 w-28\" />\n\t\t\t<Bar className=\"mt-1 h-6 w-full\" />\n\t\t</div>\n\t);\n}\n\nMetricSkeleton.displayName = 'MetricSkeleton';\n","/**\n * Metric — canonical single-metric surface. One component, seven variants:\n *\n * default — flat tile (label / value / trend / sparkline) for use inside\n * MetricBar or other composed surfaces.\n * card — wrapped in SmartCard with shadow, padding, optional tooltip.\n * Use as a standalone hero in a row of three.\n * compact — single-row icon + label + value + chip. Sidebar / list use.\n * minimal — inline `Label: value ↑12%` chip for in-flow copy.\n * bordered — soft tinted border keyed off `colorScheme`.\n * accent — dark surface card with bottom-aligned area sparkline.\n * colored — segmented progress bar (driven by `progress` prop).\n *\n * All variants share the same `MetricData` shape; only the layout changes.\n */\nimport { useMemo } from 'react';\nimport { ArrowUpRight } from 'lucide-react';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAnalyticsStrings } from '../analytics.strings';\nimport { MetricSkeleton } from '../atoms/metric-skeleton';\nimport { MetricSparkline } from '../atoms/metric-sparkline';\nimport { MetricTrendChip } from '../atoms/metric-trend-chip';\nimport { formatMetricValue, resolveTrend } from '../format-metric-value';\nimport type {\n\tMetricColorScheme,\n\tMetricData,\n\tMetricSize,\n\tMetricVariant,\n} from '../types';\n\nexport interface MetricProps {\n\tdata: MetricData;\n\tvariant?: MetricVariant;\n\tsize?: MetricSize;\n\tcolorScheme?: MetricColorScheme;\n\tshowSparkline?: boolean;\n\tshowChange?: boolean;\n\tshowIcon?: boolean;\n\tloading?: boolean;\n\terror?: boolean;\n\terrorLabel?: string;\n\t/** `colored` variant only — 0-100 fill percentage. */\n\tprogress?: number;\n\tclassName?: string;\n\t'aria-label'?: string;\n}\n\n// ── colour-scheme palettes (shared between bordered + colored variants) ──\nconst SCHEME_TINT: Record<MetricColorScheme, { border: string; bg: string; bar: string; dot: string; ring: string }> = {\n\tdefault: { border: 'border-border', bg: 'bg-card', bar: 'bg-foreground', dot: 'bg-foreground', ring: 'ring-border' },\n\tprimary: { border: 'border-primary/25', bg: 'bg-primary/5', bar: 'bg-primary', dot: 'bg-primary', ring: 'ring-primary/20' },\n\tsuccess: { border: 'border-success/30', bg: 'bg-success/5', bar: 'bg-success', dot: 'bg-success', ring: 'ring-success/20' },\n\twarning: { border: 'border-warning/40', bg: 'bg-warning/10', bar: 'bg-warning', dot: 'bg-warning', ring: 'ring-warning/30' },\n\tdanger: { border: 'border-destructive/30', bg: 'bg-destructive/5', bar: 'bg-destructive', dot: 'bg-destructive', ring: 'ring-destructive/20' },\n\tinfo: { border: 'border-info/30', bg: 'bg-info/5', bar: 'bg-info', dot: 'bg-info', ring: 'ring-info/20' },\n};\n\n/** Compact value sizes for in-grid / in-bar usage where horizontal space is tight. */\nconst VALUE_FONT_SIZE: Record<MetricSize, string> = {\n\tsm: 'text-sm',\n\tmd: 'text-lg',\n\tlg: 'text-xl',\n};\n\n/** Hero value sizes for standalone card / bordered / accent variants. */\nconst VALUE_FONT_SIZE_HERO: Record<MetricSize, string> = {\n\tsm: 'text-xl',\n\tmd: 'text-3xl',\n\tlg: 'text-4xl',\n};\n\nconst SPARKLINE_HEIGHT: Record<MetricSize, string> = {\n\tsm: 'h-6',\n\tmd: 'h-8',\n\tlg: 'h-10',\n};\n\nconst SEGMENT_COUNT = 16;\n\nexport function Metric(props: MetricProps) {\n\tconst {\n\t\tdata,\n\t\tvariant = 'default',\n\t\tsize = 'md',\n\t\tcolorScheme = 'default',\n\t\tshowSparkline = true,\n\t\tshowChange = true,\n\t\tshowIcon = true,\n\t\tloading = false,\n\t\terror = false,\n\t\terrorLabel,\n\t\tprogress = 0,\n\t\tclassName,\n\t\t'aria-label': ariaLabel,\n\t} = props;\n\n\tconst formattedValue = useMemo(() => formatMetricValue(data), [data]);\n\tconst trend = useMemo(() => resolveTrend(data), [data]);\n\n\tif (loading) return <MetricSkeleton variant={variant} size={size} className={cn('metric--component', className)} />;\n\tif (error) {\n\t\treturn (\n\t\t\t<div className={cn('flex items-center justify-center rounded-lg border border-border bg-card p-4 text-muted-foreground', className)}>\n\t\t\t\t<Text>{errorLabel ?? defaultAnalyticsStrings.metricErrorLabel}</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst sharedProps = {\n\t\tdata,\n\t\tformattedValue,\n\t\ttrend,\n\t\tsize,\n\t\tshowSparkline,\n\t\tshowChange,\n\t\tshowIcon,\n\t\tcolorScheme,\n\t\tariaLabel: ariaLabel ?? data.label,\n\t\tclassName,\n\t};\n\n\tswitch (variant) {\n\t\tcase 'card':\n\t\t\treturn <MetricCard {...sharedProps} />;\n\t\tcase 'compact':\n\t\t\treturn <MetricCompact {...sharedProps} />;\n\t\tcase 'minimal':\n\t\t\treturn <MetricMinimal {...sharedProps} />;\n\t\tcase 'bordered':\n\t\t\treturn <MetricBordered {...sharedProps} />;\n\t\tcase 'accent':\n\t\t\treturn <MetricAccent {...sharedProps} />;\n\t\tcase 'colored':\n\t\t\treturn <MetricColored {...sharedProps} progress={progress} />;\n\t\tdefault:\n\t\t\treturn <MetricDefault {...sharedProps} />;\n\t}\n}\n\nMetric.displayName = 'Metric';\n\n// ─────────────────────────────────────────────────────────────────────────\n// Internal sub-components — kept private. Each handles one variant only.\n// ─────────────────────────────────────────────────────────────────────────\n\ninterface SubProps {\n\tdata: MetricData;\n\tformattedValue: string;\n\ttrend: 'positive' | 'negative' | 'neutral';\n\tsize: MetricSize;\n\tshowSparkline: boolean;\n\tshowChange: boolean;\n\tshowIcon: boolean;\n\tcolorScheme: MetricColorScheme;\n\tariaLabel: string;\n\tclassName?: string;\n}\n\nfunction MetricDefault({ data, formattedValue, trend, size, showSparkline, showChange, showIcon, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\treturn (\n\t\t<div className={cn('flex min-w-0 flex-col gap-1', className)} aria-label={ariaLabel}>\n\t\t\t<div className=\"flex items-center gap-1.5 min-w-0 text-muted-foreground\">\n\t\t\t\t{!!showIcon && !!Icon && <Icon className=\"size-3.5 shrink-0\" aria-hidden=\"true\" />}\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"truncate\">{data.label}</Text>\n\t\t\t</div>\n\t\t\t<Heading\n\t\t\t\ttag=\"h5\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'font-bold tabular-nums tracking-tight border-none pb-0 leading-tight truncate',\n\t\t\t\t\tVALUE_FONT_SIZE[size],\n\t\t\t\t)}\n\t\t\t\ttitle={formattedValue}\n\t\t\t>\n\t\t\t\t{formattedValue}\n\t\t\t</Heading>\n\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"compact\" />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!data.subtitle && <Text size=\"xs\" type=\"secondary\" className=\"truncate\">{data.subtitle}</Text>}\n\t\t\t{!!showSparkline && !!data.sparkline?.length && (\n\t\t\t\t<MetricSparkline data={data.sparkline} trend={trend} className={cn('mt-auto', SPARKLINE_HEIGHT[size])} />\n\t\t\t)}\n\t\t\t{!!data.footer && <Text size=\"xxs\" type=\"discrete\" className=\"truncate\">{data.footer}</Text>}\n\t\t</div>\n\t);\n}\n\nfunction MetricCard({ data, formattedValue, trend, size, showSparkline, showChange, showIcon, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\tconst isInteractive = Boolean(data.href || data.onClick);\n\tconst padding: 'sm' | 'base' | 'lg' = size === 'sm' ? 'sm' : size === 'lg' ? 'lg' : 'base';\n\n\tconst card = (\n\t\t<SmartCard\n\t\t\ttitle={data.label}\n\t\t\ticon={!!showIcon && !!Icon ? <Icon className=\"size-4\" aria-hidden=\"true\" /> : null}\n\t\t\ttooltip={data.tooltip}\n\t\t\tpadding={padding}\n\t\t\tclassName={cn(isInteractive && 'cursor-pointer transition-shadow hover:shadow-md', className)}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t<div className=\"flex items-baseline justify-between gap-3\">\n\t\t\t\t<Heading\n\t\t\t\t\ttag={size === 'sm' ? 'h5' : size === 'lg' ? 'h3' : 'h4'}\n\t\t\t\t\tclassName={cn('font-bold tabular-nums tracking-tight border-none pb-0 leading-none', VALUE_FONT_SIZE_HERO[size])}\n\t\t\t\t>\n\t\t\t\t\t{formattedValue}\n\t\t\t\t</Heading>\n\t\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"badge\" />\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{!!data.subtitle && <Text type=\"secondary\" className=\"mt-2\">{data.subtitle}</Text>}\n\t\t\t{!!showSparkline && !!data.sparkline?.length && (\n\t\t\t\t<MetricSparkline\n\t\t\t\t\tdata={data.sparkline}\n\t\t\t\t\ttrend={trend}\n\t\t\t\t\tclassName={cn('mt-3', size === 'lg' ? 'h-12' : 'h-10')}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{!!data.footer && <Text size=\"xs\" type=\"secondary\" className=\"mt-2\">{data.footer}</Text>}\n\t\t</SmartCard>\n\t);\n\n\tif (isInteractive && data.onClick) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\trole=\"button\"\n\t\t\t\ttabIndex={0}\n\t\t\t\tonClick={data.onClick}\n\t\t\t\tonKeyDown={(e) => (e.key === 'Enter' || e.key === ' ') && data.onClick?.()}\n\t\t\t\tclassName=\"rounded-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40\"\n\t\t\t>\n\t\t\t\t{card}\n\t\t\t</div>\n\t\t);\n\t}\n\treturn card;\n}\n\nfunction MetricCompact({ data, formattedValue, size, showChange, showIcon, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\treturn (\n\t\t<div className={cn('flex items-center gap-3', className)} aria-label={ariaLabel}>\n\t\t\t{!!showIcon && !!Icon && (\n\t\t\t\t<span className=\"inline-flex size-9 shrink-0 items-center justify-center rounded-lg bg-muted/60 text-muted-foreground\">\n\t\t\t\t\t<Icon className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"truncate\">{data.label}</Text>\n\t\t\t\t<Text tag=\"span\" size={size === 'sm' ? 'sm' : 'lg'} weight=\"bold\" className=\"block truncate tabular-nums\">\n\t\t\t\t\t{formattedValue}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"badge\" className=\"shrink-0\" />\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction MetricMinimal({ data, formattedValue, size, showChange, ariaLabel, className }: SubProps) {\n\treturn (\n\t\t<span className={cn('inline-flex items-baseline gap-2', className)} aria-label={ariaLabel}>\n\t\t\t<Text tag=\"span\" size={size === 'lg' ? 'sm' : 'xs'} type=\"secondary\">{data.label}:</Text>\n\t\t\t<Text tag=\"span\" size={size === 'lg' ? 'sm' : 'xs'} weight=\"semibold\" className=\"tabular-nums\">{formattedValue}</Text>\n\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size=\"sm\" variant=\"inline\" />\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nfunction MetricBordered({ data, formattedValue, trend, size, showSparkline, showChange, showIcon, colorScheme, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\tconst tint = SCHEME_TINT[colorScheme];\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('flex flex-col gap-3 rounded-xl border p-4 shadow-sm', tint.border, tint.bg, className)}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t<div className=\"flex items-center justify-between gap-2\">\n\t\t\t\t<div className=\"flex items-center gap-2 text-muted-foreground\">\n\t\t\t\t\t{!!showIcon && !!Icon && <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" />}\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\">{data.label}</Text>\n\t\t\t\t</div>\n\t\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"badge\" />\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<Heading\n\t\t\t\ttag={size === 'lg' ? 'h3' : 'h4'}\n\t\t\t\tclassName={cn('font-bold tabular-nums tracking-tight border-none pb-0 leading-none', VALUE_FONT_SIZE_HERO[size])}\n\t\t\t>\n\t\t\t\t{formattedValue}\n\t\t\t</Heading>\n\t\t\t{!!data.subtitle && <Text size=\"xs\" type=\"secondary\">{data.subtitle}</Text>}\n\t\t\t{!!showSparkline && !!data.sparkline?.length && (\n\t\t\t\t<MetricSparkline data={data.sparkline} trend={trend} className={SPARKLINE_HEIGHT[size]} />\n\t\t\t)}\n\t\t\t{!!data.footer && <Text size=\"xxs\" type=\"discrete\">{data.footer}</Text>}\n\t\t</div>\n\t);\n}\n\nfunction MetricAccent({ data, formattedValue, trend, size, showSparkline, showChange, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'dark relative flex flex-col rounded-2xl bg-card text-card-foreground shadow-lg ring-1 ring-border overflow-hidden',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t<div className=\"flex flex-col gap-2 p-5\">\n\t\t\t\t<div className=\"flex items-center justify-between gap-3\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t\t{data.label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t<span className=\"inline-flex size-7 items-center justify-center rounded-lg bg-foreground/[0.08]\">\n\t\t\t\t\t\t\t<Icon className=\"size-3.5 text-muted-foreground\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex items-baseline gap-2.5\">\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h3\"\n\t\t\t\t\t\tclassName={cn('font-bold tabular-nums tracking-tight border-none pb-0 leading-none text-foreground', VALUE_FONT_SIZE_HERO[size])}\n\t\t\t\t\t>\n\t\t\t\t\t\t{formattedValue}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"compact\" />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{!!data.subtitle && <Text size=\"xs\" type=\"secondary\">{data.subtitle}</Text>}\n\t\t\t</div>\n\t\t\t{!!showSparkline && !!data.sparkline?.length && (\n\t\t\t\t<MetricSparkline data={data.sparkline} trend={trend} className=\"h-12 w-full\" />\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction MetricColored({ data, formattedValue, size, showChange, colorScheme, ariaLabel, className, progress = 0 }: SubProps & { progress?: number }) {\n\tconst tint = SCHEME_TINT[colorScheme === 'default' ? 'primary' : colorScheme];\n\tconst filledCount = Math.round((Math.min(Math.max(progress, 0), 100) / 100) * SEGMENT_COUNT);\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('rounded-xl bg-card p-5 shadow-sm border border-border/50', className)}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"truncate\">{data.label}</Text>\n\t\t\t\t<span className={cn('size-1.5 rounded-full shrink-0', tint.dot)} aria-hidden=\"true\" />\n\t\t\t</div>\n\t\t\t<div className=\"mt-2.5 flex items-baseline gap-2\">\n\t\t\t\t<Heading\n\t\t\t\t\ttag=\"h3\"\n\t\t\t\t\tclassName={cn('font-bold tabular-nums tracking-tight border-none pb-0 leading-none', VALUE_FONT_SIZE_HERO[size])}\n\t\t\t\t>\n\t\t\t\t\t{formattedValue}\n\t\t\t\t</Heading>\n\t\t\t\t{!!data.subtitle && <Text size=\"xs\" type=\"secondary\">{data.subtitle}</Text>}\n\t\t\t</div>\n\t\t\t<div className=\"mt-4 flex items-center gap-0.5\" role=\"progressbar\" aria-valuenow={progress} aria-valuemin={0} aria-valuemax={100}>\n\t\t\t\t{Array.from({ length: SEGMENT_COUNT }, (_, i) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={`seg-${i}`}\n\t\t\t\t\t\tclassName={cn('h-6 w-1.5 rounded-sm transition-colors', i < filledCount ? tint.bar : 'bg-muted')}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t<div className=\"mt-3\">\n\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"default\" />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!data.footer && (\n\t\t\t\t<div className=\"mt-2 inline-flex items-center gap-1 text-muted-foreground\">\n\t\t\t\t\t<ArrowUpRight className=\"size-3\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\">{data.footer}</Text>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","/**\n * MetricBar — horizontal strip of metrics with an optional period selector\n * on the leading edge. Cells are divided by hairlines so a row of 4 KPIs\n * reads as a single integrated module rather than disconnected cards.\n *\n * Variants:\n * `default` — flat hairline-divided bar with period chip on the left.\n * Best for tables/dashboards where the bar sits above content.\n * `gradient` — same layout wrapped in a tinted gradient frame for hero\n * placement.\n *\n * Always render `Metric` cells inside; never render layout-specific markup\n * directly. That keeps the formatting / colouring rules in one place.\n */\nimport { Calendar } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { Metric } from '../metric/metric';\nimport type { MetricData, MetricPeriod, MetricSize } from '../types';\n\nexport type MetricBarVariant = 'default' | 'gradient';\n\nexport interface MetricBarProps {\n\tmetrics: MetricData[];\n\tperiod?: MetricPeriod;\n\tonPeriodChange?: (value: string) => void;\n\tvariant?: MetricBarVariant;\n\tsize?: MetricSize;\n\tshowSparklines?: boolean;\n\tshowChanges?: boolean;\n\tfooterText?: string;\n\tclassName?: string;\n}\n\nexport function MetricBar({\n\tmetrics,\n\tperiod,\n\tonPeriodChange,\n\tvariant = 'default',\n\tsize = 'md',\n\tshowSparklines = true,\n\tshowChanges = true,\n\tfooterText,\n\tclassName,\n}: MetricBarProps) {\n\tconst cells = (\n\t\t<div className=\"flex min-w-0 flex-1 items-stretch divide-x divide-border\">\n\t\t\t{metrics.map((metric) => (\n\t\t\t\t<div key={metric.id} className=\"flex-1 min-w-0 px-4 py-3\">\n\t\t\t\t\t<Metric\n\t\t\t\t\t\tdata={metric}\n\t\t\t\t\t\tvariant=\"default\"\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\tshowSparkline={showSparklines}\n\t\t\t\t\t\tshowChange={showChanges}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n\n\tconst periodChip = !!period && (\n\t\t<div className=\"flex shrink-0 items-center px-3\">\n\t\t\t<Button\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tclassName=\"gap-1.5\"\n\t\t\t\tonClick={onPeriodChange ? () => onPeriodChange(period.value) : undefined}\n\t\t\t>\n\t\t\t\t<Calendar className=\"size-3.5\" aria-hidden=\"true\" />\n\t\t\t\t<Text size=\"xs\" weight=\"medium\">{period.label}</Text>\n\t\t\t</Button>\n\t\t</div>\n\t);\n\n\tif (variant === 'gradient') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn('metric-bar--component', \n\t\t\t\t\t'rounded-xl bg-gradient-to-r from-primary/8 via-info/5 to-success/8 p-[1px]',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"flex items-stretch overflow-hidden rounded-[11px] bg-card\">\n\t\t\t\t\t{periodChip && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{periodChip}\n\t\t\t\t\t\t\t<div className=\"w-px bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t\t{cells}\n\t\t\t\t</div>\n\t\t\t\t{!!footerText && (\n\t\t\t\t\t<div className=\"rounded-b-[11px] border-t border-border/50 bg-card px-4 py-2\">\n\t\t\t\t\t\t<Text size=\"xxs\" type=\"discrete\">{footerText}</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex flex-col overflow-hidden rounded-xl border border-border bg-card shadow-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex items-stretch\">\n\t\t\t\t{periodChip && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{periodChip}\n\t\t\t\t\t\t<div className=\"w-px bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{cells}\n\t\t\t</div>\n\t\t\t{!!footerText && (\n\t\t\t\t<div className=\"border-t border-border/50 px-4 py-2\">\n\t\t\t\t\t<Text size=\"xxs\" type=\"discrete\">{footerText}</Text>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nMetricBar.displayName = 'MetricBar';\n","/**\n * MetricGrid — responsive grid of `Metric` cells. The grid is the workhorse\n * for KPI rows on dashboards: pass a list, choose a variant, and the\n * component handles layout / column counts / spacing.\n *\n * Variants are forwarded to `Metric` so a single grid can show either\n * standalone cards, bordered tints, or compact list rows.\n *\n * Column counts default to `auto` — the grid breaks at sm/lg/xl based on\n * the cell count. Override with `columns` to pin a specific layout.\n */\nimport { cn } from '@/lib/utils';\n\nimport { Metric } from '../metric/metric';\nimport type {\n\tMetricColorScheme,\n\tMetricData,\n\tMetricSize,\n\tMetricVariant,\n} from '../types';\n\nexport interface MetricGridProps {\n\tmetrics: MetricData[];\n\t/** Cell variant — restricted to grid-friendly layouts. */\n\tvariant?: Extract<MetricVariant, 'card' | 'compact' | 'bordered' | 'accent' | 'colored'>;\n\tsize?: MetricSize;\n\tcolorScheme?: MetricColorScheme;\n\t/** Force a fixed column count. `auto` picks based on cell count. */\n\tcolumns?: 'auto' | 1 | 2 | 3 | 4 | 6;\n\tgap?: 'sm' | 'md' | 'lg';\n\tshowSparklines?: boolean;\n\tshowChanges?: boolean;\n\tshowIcons?: boolean;\n\tloading?: boolean;\n\tclassName?: string;\n}\n\nconst GAP_CLASS: Record<NonNullable<MetricGridProps['gap']>, string> = {\n\tsm: 'gap-2',\n\tmd: 'gap-3',\n\tlg: 'gap-4',\n};\n\nfunction autoColumnsFor(count: number): string {\n\tif (count <= 1) return 'grid-cols-1';\n\tif (count === 2) return 'grid-cols-1 sm:grid-cols-2';\n\tif (count === 3) return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3';\n\tif (count === 4) return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4';\n\tif (count === 5 || count === 6) return 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6';\n\treturn 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4';\n}\n\nconst COLUMN_CLASS: Record<Exclude<NonNullable<MetricGridProps['columns']>, 'auto'>, string> = {\n\t1: 'grid-cols-1',\n\t2: 'grid-cols-1 sm:grid-cols-2',\n\t3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n\t4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n\t6: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6',\n};\n\nexport function MetricGrid({\n\tmetrics,\n\tvariant = 'card',\n\tsize = 'md',\n\tcolorScheme = 'default',\n\tcolumns = 'auto',\n\tgap = 'md',\n\tshowSparklines = true,\n\tshowChanges = true,\n\tshowIcons = true,\n\tloading = false,\n\tclassName,\n}: MetricGridProps) {\n\tconst columnsClass = columns === 'auto' ? autoColumnsFor(metrics.length) : COLUMN_CLASS[columns];\n\n\treturn (\n\t\t<div className={cn('metric-grid--component', 'grid', columnsClass, GAP_CLASS[gap], className)}>\n\t\t\t{metrics.map((metric) => (\n\t\t\t\t<Metric\n\t\t\t\t\tkey={metric.id}\n\t\t\t\t\tdata={metric}\n\t\t\t\t\tvariant={variant}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tcolorScheme={colorScheme}\n\t\t\t\t\tshowSparkline={showSparklines}\n\t\t\t\t\tshowChange={showChanges}\n\t\t\t\t\tshowIcon={showIcons}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nMetricGrid.displayName = 'MetricGrid';\n","/**\n * MetricComparison — period-over-period comparison surface.\n *\n * Renders two side-by-side `Metric.bordered`-style boxes for current vs\n * previous, with a delta block below showing absolute + percent change in\n * a tone-tinted box. Layout stacks vertically below the `sm` breakpoint.\n *\n * Accepts `MetricData` for both halves so format hints (currency, percent,\n * duration) carry over consistently. Strings overridable for i18n.\n */\nimport { ArrowDown, ArrowRight, ArrowUp, Equal } from 'lucide-react';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { formatMetricValue } from '../format-metric-value';\nimport type { MetricData } from '../types';\n\nexport interface MetricComparisonStrings {\n\ttitle: string;\n\tcurrentLabel: string;\n\tpreviousLabel: string;\n\tsuffix: string;\n}\n\nexport const defaultMetricComparisonStrings: MetricComparisonStrings = {\n\ttitle: 'Comparison',\n\tcurrentLabel: 'This period',\n\tpreviousLabel: 'Previous period',\n\tsuffix: 'vs previous',\n};\n\nexport interface MetricComparisonProps {\n\tcurrent: MetricData;\n\tprevious: MetricData;\n\ttitle?: string;\n\tcurrentPeriod?: string;\n\tpreviousPeriod?: string;\n\tclassName?: string;\n\tstrings?: Partial<MetricComparisonStrings>;\n}\n\nfunction toNumber(value: MetricData['value']): number | null {\n\tif (value === null || value === undefined) return null;\n\tif (typeof value === 'number') return value;\n\tconst n = Number(value);\n\treturn Number.isFinite(n) ? n : null;\n}\n\nexport function MetricComparison({\n\tcurrent,\n\tprevious,\n\ttitle,\n\tcurrentPeriod,\n\tpreviousPeriod,\n\tclassName,\n\tstrings: stringsProp,\n}: MetricComparisonProps) {\n\tconst strings = useStrings(defaultMetricComparisonStrings, {\n\t\t...(title ? { title } : {}),\n\t\t...stringsProp,\n\t});\n\n\tconst currentNum = toNumber(current.value);\n\tconst previousNum = toNumber(previous.value);\n\tconst canCompute = currentNum !== null && previousNum !== null;\n\tconst delta = canCompute ? (currentNum as number) - (previousNum as number) : 0;\n\tconst deltaPct = canCompute && (previousNum as number) !== 0\n\t\t? Math.round((delta / (previousNum as number)) * 100)\n\t\t: 0;\n\tconst isUp = delta > 0;\n\tconst isFlat = delta === 0;\n\tconst Arrow = isFlat ? Equal : isUp ? ArrowUp : ArrowDown;\n\n\tconst tone = isFlat\n\t\t? { box: 'bg-muted/40', chip: 'bg-card text-muted-foreground border border-border/60' }\n\t\t: isUp\n\t\t\t? { box: 'bg-success/10', chip: 'bg-success/15 text-success' }\n\t\t\t: { box: 'bg-destructive/10', chip: 'bg-destructive/15 text-destructive' };\n\n\tconst formatDelta = (value: number) => {\n\t\tconst abs = Math.abs(value);\n\t\t// reuse the formatter so currency/percent metrics render correctly\n\t\treturn formatMetricValue({ ...current, value: abs });\n\t};\n\n\treturn (\n\t\t<SmartCard title={strings.title} className={cn('metric-comparison--component', className)}>\n\t\t\t{!!(currentPeriod || previousPeriod) && (\n\t\t\t\t<div className=\"flex flex-wrap items-center gap-1.5\">\n\t\t\t\t\t{!!currentPeriod && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\tclassName=\"rounded-full bg-muted px-2 py-0.5 uppercase tracking-wider text-muted-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentPeriod}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!previousPeriod && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\tclassName=\"rounded-full bg-muted/40 px-2 py-0.5 uppercase tracking-wider text-muted-foreground/70\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{previousPeriod}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className=\"mt-3 grid items-stretch gap-2 grid-cols-1 sm:grid-cols-[1fr_auto_1fr]\">\n\t\t\t\t<div className=\"rounded-lg border border-border/60 bg-card px-3 py-2.5\">\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t\t{strings.currentLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Heading tag=\"h5\" className=\"text-xl tabular-nums tracking-tight border-none pb-0\">\n\t\t\t\t\t\t{formatMetricValue(current)}\n\t\t\t\t\t</Heading>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex items-center justify-center text-muted-foreground/60\">\n\t\t\t\t\t<ArrowRight className=\"hidden size-4 sm:block\" aria-hidden=\"true\" />\n\t\t\t\t\t<ArrowDown className=\"size-4 sm:hidden\" aria-hidden=\"true\" />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"rounded-lg bg-muted/40 px-3 py-2.5\">\n\t\t\t\t\t<Text size=\"xxs\" weight=\"medium\" className=\"uppercase tracking-wider text-muted-foreground/70\">\n\t\t\t\t\t\t{strings.previousLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Heading tag=\"h5\" className=\"text-xl tabular-nums tracking-tight border-none pb-0 text-muted-foreground\">\n\t\t\t\t\t\t{formatMetricValue(previous)}\n\t\t\t\t\t</Heading>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{!!canCompute && (\n\t\t\t\t<div className={cn('mt-3 flex flex-wrap items-center gap-2 rounded-lg px-3 py-2', tone.box)}>\n\t\t\t\t\t<div className={cn('inline-flex items-center gap-1 rounded-full px-2 py-0.5', tone.chip)}>\n\t\t\t\t\t\t<Arrow className=\"size-3\" strokeWidth={2.5} aria-hidden=\"true\" />\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t{isUp ? '+' : isFlat ? '' : '−'}{formatDelta(delta)}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t\t{isUp ? '+' : isFlat ? '' : '−'}{Math.abs(deltaPct)}% {strings.suffix}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nMetricComparison.displayName = 'MetricComparison';\n","/**\n * MetricMicroGrid — six-cell dense KPI overview where each cell pairs a\n * label/value with a different lightweight visualization (bars / line /\n * dots / progress / area / pie). Useful as a top-of-page summary widget\n * on a packed dashboard.\n *\n * Cells are positional: index 0 → bars, 1 → line, 2 → dots, 3 → progress,\n * 4 → area, 5 → pie. To pin a specific renderer, pass `chart` per cell.\n */\nimport { useId } from 'react';\nimport { Area, AreaChart, ResponsiveContainer } from 'recharts';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport type MicroChartKind = 'bars' | 'line' | 'dots' | 'progress' | 'area' | 'pie';\n\nexport interface MicroMetricCell {\n\tid?: string;\n\tlabel: string;\n\tvalue: string;\n\tdata: readonly number[];\n\tchart?: MicroChartKind;\n}\n\nexport interface MetricMicroGridProps {\n\ttitle?: string;\n\tcells: readonly MicroMetricCell[];\n\tclassName?: string;\n}\n\nconst DEFAULT_ORDER: MicroChartKind[] = ['bars', 'line', 'dots', 'progress', 'area', 'pie'];\n\nconst CHART_COLORS: Record<MicroChartKind, string> = {\n\tbars: 'var(--primary)',\n\tline: 'var(--info)',\n\tdots: 'var(--warning)',\n\tprogress: 'var(--success)',\n\tarea: 'var(--primary)',\n\tpie: 'var(--success)',\n};\n\nconst PIE_PALETTE = ['var(--success)', 'var(--info)', 'var(--warning)'];\n\nfunction MicroBars({ data, color }: { data: readonly number[]; color: string }) {\n\tconst max = Math.max(...data, 1);\n\treturn (\n\t\t<div className={cn('metric-micro-grid--component', 'flex h-5 items-end gap-[2px]')}>\n\t\t\t{data.slice(0, 6).map((v, i) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={`bar-${i}`}\n\t\t\t\t\tclassName=\"flex-1 rounded-t-sm\"\n\t\t\t\t\tstyle={{ height: `${(v / max) * 100}%`, backgroundColor: color, opacity: 0.8 }}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nfunction MicroLine({ data, color }: { data: readonly number[]; color: string }) {\n\tconst max = Math.max(...data, 1);\n\tconst min = Math.min(...data);\n\tconst range = max - min || 1;\n\tconst points = data.slice(0, 6);\n\treturn (\n\t\t<svg viewBox=\"0 0 60 16\" className=\"h-5 w-full\" preserveAspectRatio=\"none\">\n\t\t\t<polyline\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke={color}\n\t\t\t\tstrokeWidth=\"1.5\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tpoints={points\n\t\t\t\t\t.map((v, i) => `${(i / Math.max(points.length - 1, 1)) * 60},${16 - ((v - min) / range) * 14}`)\n\t\t\t\t\t.join(' ')}\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n\nfunction MicroDots({ data, color }: { data: readonly number[]; color: string }) {\n\tconst max = Math.max(...data, 1);\n\treturn (\n\t\t<div className=\"flex h-5 items-end justify-around\">\n\t\t\t{data.slice(0, 5).map((v, i) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={`dot-${i}`}\n\t\t\t\t\tclassName=\"h-1.5 w-1.5 rounded-full\"\n\t\t\t\t\tstyle={{ marginBottom: `${(v / max) * 12}px`, backgroundColor: color }}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nfunction MicroProgress({ data, color }: { data: readonly number[]; color: string }) {\n\tconst value = data[0] ?? 0;\n\tconst max = data[1] ?? 100;\n\tconst pct = Math.min((value / max) * 100, 100);\n\treturn (\n\t\t<div className=\"h-1.5 w-full overflow-hidden rounded-full bg-muted\">\n\t\t\t<div className=\"h-full rounded-full transition-all\" style={{ width: `${pct}%`, backgroundColor: color }} />\n\t\t</div>\n\t);\n}\n\nfunction MicroAreaChart({ data, color }: { data: readonly number[]; color: string }) {\n\tconst id = useId();\n\tconst gradId = `micro-area-${id.replaceAll(':', '')}`;\n\tconst chartData = data.map((v, i) => ({ i, v }));\n\treturn (\n\t\t<div className=\"h-5 w-full\">\n\t\t\t<ResponsiveContainer width=\"100%\" height=\"100%\" initialDimension={{ width: 1, height: 1 }}>\n\t\t\t\t<AreaChart data={chartData} margin={{ top: 0, right: 0, bottom: 0, left: 0 }}>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<linearGradient id={gradId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t<stop offset=\"0%\" stopColor={color} stopOpacity={0.3} />\n\t\t\t\t\t\t\t<stop offset=\"100%\" stopColor={color} stopOpacity={0} />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t</defs>\n\t\t\t\t\t<Area type=\"monotone\" dataKey=\"v\" stroke={color} strokeWidth={1.25} fill={`url(#${gradId})`} />\n\t\t\t\t</AreaChart>\n\t\t\t</ResponsiveContainer>\n\t\t</div>\n\t);\n}\n\nfunction MicroPie({ data }: { data: readonly number[] }) {\n\tconst total = data.reduce((a, b) => a + b, 0) || 1;\n\tlet cumAngle = 0;\n\treturn (\n\t\t<svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\">\n\t\t\t{data.slice(0, 3).map((v, i) => {\n\t\t\t\tconst angle = (v / total) * 360;\n\t\t\t\tconst startAngle = cumAngle;\n\t\t\t\tcumAngle += angle;\n\t\t\t\tconst startRad = ((startAngle - 90) * Math.PI) / 180;\n\t\t\t\tconst endRad = ((startAngle + angle - 90) * Math.PI) / 180;\n\t\t\t\tconst largeArc = angle > 180 ? 1 : 0;\n\t\t\t\tconst x1 = 12 + 10 * Math.cos(startRad);\n\t\t\t\tconst y1 = 12 + 10 * Math.sin(startRad);\n\t\t\t\tconst x2 = 12 + 10 * Math.cos(endRad);\n\t\t\t\tconst y2 = 12 + 10 * Math.sin(endRad);\n\t\t\t\treturn (\n\t\t\t\t\t<path\n\t\t\t\t\t\tkey={`slice-${i}`}\n\t\t\t\t\t\td={`M12,12 L${x1},${y1} A10,10 0 ${largeArc},1 ${x2},${y2} Z`}\n\t\t\t\t\t\tfill={PIE_PALETTE[i % PIE_PALETTE.length]}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</svg>\n\t);\n}\n\nfunction ChartFor({ kind, data }: { kind: MicroChartKind; data: readonly number[] }) {\n\tconst color = CHART_COLORS[kind];\n\tif (kind === 'bars') return <MicroBars data={data} color={color} />;\n\tif (kind === 'line') return <MicroLine data={data} color={color} />;\n\tif (kind === 'dots') return <MicroDots data={data} color={color} />;\n\tif (kind === 'progress') return <MicroProgress data={data} color={color} />;\n\tif (kind === 'area') return <MicroAreaChart data={data} color={color} />;\n\treturn <MicroPie data={data} />;\n}\n\nexport function MetricMicroGrid({ title = 'Overview', cells, className }: MetricMicroGridProps) {\n\treturn (\n\t\t<SmartCard title={title} className={className} padding=\"sm\">\n\t\t\t<div className=\"grid grid-cols-3 grid-rows-2 -m-2\">\n\t\t\t\t{cells.slice(0, 6).map((cell, i) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={cell.id ?? cell.label}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex flex-col gap-1.5 px-3 py-2.5',\n\t\t\t\t\t\t\ti % 3 !== 2 && 'border-r border-border/50',\n\t\t\t\t\t\t\ti < 3 && 'border-b border-border/50',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"truncate uppercase tracking-wider\">\n\t\t\t\t\t\t\t{cell.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Text tag=\"span\" weight=\"bold\" className=\"tabular-nums truncate\">\n\t\t\t\t\t\t\t{cell.value}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<div className=\"mt-auto\">\n\t\t\t\t\t\t\t<ChartFor kind={cell.chart ?? DEFAULT_ORDER[i]} data={cell.data} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nMetricMicroGrid.displayName = 'MetricMicroGrid';\n","/**\n * MetricGradient — vivid full-bleed gradient hero card with embedded area\n * chart. Used at the top of marketing dashboards or analytics overview\n * pages where a single metric earns the most visual weight.\n *\n * Themes (`green` / `purple` / `warm` / `ocean`) drive the gradient palette;\n * the data prop accepts a `readonly MetricDataPoint[]` so consumers can pass\n * named time-series points. Renders the active dot in white and the area\n * fill in a soft white-on-tone gradient for legibility.\n */\nimport { useId } from 'react';\nimport { Area, AreaChart, ResponsiveContainer, Tooltip } from 'recharts';\n\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { MetricTrendChip } from '../atoms/metric-trend-chip';\nimport type { MetricChange, MetricDataPoint } from '../types';\n\nexport type MetricGradientTheme = 'green' | 'purple' | 'warm' | 'ocean';\n\nexport interface MetricGradientProps {\n\ttitle: string;\n\tvalue?: string;\n\tchange?: MetricChange;\n\tdata: readonly MetricDataPoint[];\n\ttheme?: MetricGradientTheme;\n\tsubtitle?: string;\n\tclassName?: string;\n}\n\nconst THEME_BG: Record<MetricGradientTheme, string> = {\n\tgreen: 'bg-gradient-to-br from-emerald-600 via-teal-700 to-emerald-800',\n\tpurple: 'bg-gradient-to-br from-violet-600 via-indigo-700 to-purple-800',\n\twarm: 'bg-gradient-to-br from-orange-500 via-rose-600 to-pink-700',\n\tocean: 'bg-gradient-to-br from-sky-600 via-cyan-700 to-blue-800',\n};\n\ninterface ChartTooltipPayload {\n\tvalue: number;\n\tname: string;\n\tcolor?: string;\n}\n\nfunction ChartTooltip({ active, payload, label }: { active?: boolean; payload?: ChartTooltipPayload[]; label?: string }) {\n\tif (!active || !payload?.length) return null;\n\treturn (\n\t\t<div className={cn('metric-gradient--component', 'rounded-lg bg-foreground/95 px-3 py-2 shadow-lg backdrop-blur-sm')}>\n\t\t\t{!!label && <Text size=\"xxs\" className=\"text-background/60 mb-1\">{label}</Text>}\n\t\t\t{payload.map((entry, idx) => (\n\t\t\t\t<div key={`tt-${idx}`} className=\"flex items-center gap-2\">\n\t\t\t\t\t<div className=\"size-2 rounded-full\" style={{ backgroundColor: entry.color ?? '#fff' }} aria-hidden=\"true\" />\n\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\" className=\"text-background tabular-nums\">\n\t\t\t\t\t\t{typeof entry.value === 'number' ? entry.value.toLocaleString() : entry.value}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function MetricGradient({\n\ttitle,\n\tvalue,\n\tchange,\n\tdata,\n\ttheme = 'green',\n\tsubtitle,\n\tclassName,\n}: MetricGradientProps) {\n\tconst id = useId();\n\tconst gradientId = `metric-grad-${id.replaceAll(':', '')}`;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'relative overflow-hidden rounded-2xl p-5 text-white shadow-lg ring-1 ring-white/10',\n\t\t\t\tTHEME_BG[theme],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"absolute -right-12 -top-12 size-44 rounded-full bg-white/[0.08] blur-2xl\" aria-hidden=\"true\" />\n\t\t\t<div className=\"absolute -bottom-8 -left-8 size-32 rounded-full bg-white/[0.06] blur-xl\" aria-hidden=\"true\" />\n\n\t\t\t<div className=\"relative flex items-start justify-between gap-3\">\n\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t<Text size=\"xs\" weight=\"medium\" className=\"uppercase tracking-wider text-white/70\">{title}</Text>\n\t\t\t\t\t{!!value && (\n\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\ttag=\"h3\"\n\t\t\t\t\t\t\tclassName=\"mt-1 text-3xl font-bold tabular-nums tracking-tight border-none pb-0 text-white leading-none\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!subtitle && <Text size=\"xs\" className=\"mt-1 text-white/70\">{subtitle}</Text>}\n\t\t\t\t</div>\n\t\t\t\t{!!change && (\n\t\t\t\t\t<MetricTrendChip\n\t\t\t\t\t\tchange={change}\n\t\t\t\t\t\ttrend={change.direction === 'up' ? 'positive' : change.direction === 'down' ? 'negative' : 'neutral'}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tvariant=\"badge\"\n\t\t\t\t\t\tclassName=\"shrink-0 !bg-white/20 !text-white\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<div className=\"relative -mx-1 mt-3 h-24\">\n\t\t\t\t<ResponsiveContainer width=\"100%\" height=\"100%\" initialDimension={{ width: 1, height: 1 }}>\n\t\t\t\t\t<AreaChart data={data as MetricDataPoint[]} margin={{ top: 4, right: 0, bottom: 0, left: 0 }}>\n\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t<linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t\t<stop offset=\"0%\" stopColor=\"white\" stopOpacity={0.3} />\n\t\t\t\t\t\t\t\t<stop offset=\"100%\" stopColor=\"white\" stopOpacity={0} />\n\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t<Tooltip content={<ChartTooltip />} cursor={{ stroke: 'rgba(255,255,255,0.4)', strokeWidth: 1 }} />\n\t\t\t\t\t\t<Area\n\t\t\t\t\t\t\ttype=\"monotone\"\n\t\t\t\t\t\t\tdataKey=\"value\"\n\t\t\t\t\t\t\tstroke=\"rgba(255,255,255,0.7)\"\n\t\t\t\t\t\t\tstrokeWidth={2}\n\t\t\t\t\t\t\tfill={`url(#${gradientId})`}\n\t\t\t\t\t\t\tdot={false}\n\t\t\t\t\t\t\tactiveDot={{ r: 4, strokeWidth: 2, fill: '#fff', stroke: 'rgba(255,255,255,0.7)' }}\n\t\t\t\t\t\t\tisAnimationActive\n\t\t\t\t\t\t\tanimationDuration={800}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</AreaChart>\n\t\t\t\t</ResponsiveContainer>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nMetricGradient.displayName = 'MetricGradient';\n","/**\n * ActivityHeatmap — GitHub-style daily-activity calendar grid. Renders the\n * provided range as Monday-aligned columns with per-day intensity tinted\n * via the success palette. Month labels float above the grid; the legend\n * sits on the trailing edge.\n *\n * The layout uses absolute month labels with a 3-week minimum gap rule\n * so labels don't collide when a month starts mid-week.\n */\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAnalyticsStrings } from '../analytics.strings';\nimport type { ActivityHeatmapDay, ActivityHeatmapProps, ActivityLevel } from './types';\n\nconst LEVEL_COLOR: Record<ActivityLevel, string> = {\n\t0: 'bg-muted',\n\t1: 'bg-success/20',\n\t2: 'bg-success/40',\n\t3: 'bg-success/65',\n\t4: 'bg-success',\n};\n\ninterface BuiltCalendar {\n\tweeks: (ActivityHeatmapDay | null)[][];\n\tmonthLabels: { label: string; weekIndex: number }[];\n}\n\nfunction buildCalendar(\n\tdata: readonly ActivityHeatmapDay[],\n\tmonthNames: readonly string[],\n): BuiltCalendar {\n\tif (data.length === 0) return { weeks: [], monthLabels: [] };\n\n\tconst sorted = [...data].sort((a, b) => a.date.localeCompare(b.date));\n\tconst startDate = new Date(sorted[0].date + 'T00:00:00');\n\tconst endDate = new Date(sorted[sorted.length - 1].date + 'T00:00:00');\n\n\tconst dayOfWeek = startDate.getDay();\n\tconst mondayOffset = dayOfWeek === 0 ? -6 : 1 - dayOfWeek;\n\tconst alignedStart = new Date(startDate);\n\talignedStart.setDate(alignedStart.getDate() + mondayOffset);\n\n\tconst dateMap = new Map<string, ActivityLevel>();\n\tfor (const d of sorted) dateMap.set(d.date, d.level);\n\n\tconst weeks: (ActivityHeatmapDay | null)[][] = [];\n\tconst monthLabels: { label: string; weekIndex: number }[] = [];\n\tlet lastMonth = -1;\n\tlet currentWeek: (ActivityHeatmapDay | null)[] = [];\n\n\tconst cursor = new Date(alignedStart);\n\twhile (cursor <= endDate) {\n\t\tconst dateStr = cursor.toISOString().slice(0, 10);\n\t\tconst dayIdx = (cursor.getDay() + 6) % 7;\n\n\t\tif (dayIdx === 0 && currentWeek.length > 0) {\n\t\t\tweeks.push(currentWeek);\n\t\t\tcurrentWeek = [];\n\t\t}\n\n\t\tconst month = cursor.getMonth();\n\t\tif (month !== lastMonth) {\n\t\t\tconst labelWeekIndex = dayIdx === 0 ? weeks.length : weeks.length + 1;\n\t\t\tconst existing = monthLabels.find((m) => m.weekIndex === labelWeekIndex);\n\t\t\tif (!existing) monthLabels.push({ label: monthNames[month], weekIndex: labelWeekIndex });\n\t\t\tlastMonth = month;\n\t\t}\n\n\t\tconst level = dateMap.get(dateStr) ?? 0;\n\t\tcurrentWeek.push({ date: dateStr, level });\n\t\tcursor.setDate(cursor.getDate() + 1);\n\t}\n\n\tif (currentWeek.length > 0) {\n\t\twhile (currentWeek.length < 7) currentWeek.push(null);\n\t\tweeks.push(currentWeek);\n\t}\n\n\treturn { weeks, monthLabels };\n}\n\nexport function ActivityHeatmap({\n\ttitle,\n\tdescription,\n\tdata,\n\tclassName,\n\tstrings: stringsProp,\n}: ActivityHeatmapProps) {\n\tconst strings = useStrings(defaultAnalyticsStrings, stringsProp);\n\tconst { weeks, monthLabels } = buildCalendar(data, strings.heatmapMonthNames);\n\n\treturn (\n\t\t<SmartCard title={title} description={description} className={cn('activity-heatmap--component', className)}>\n\t\t\t<div className=\"overflow-x-auto\">\n\t\t\t\t<div className=\"relative mb-1\" style={{ paddingLeft: '28px', height: '12px' }}>\n\t\t\t\t\t<div className=\"relative flex\" style={{ width: `${weeks.length * 15}px` }}>\n\t\t\t\t\t\t{monthLabels\n\t\t\t\t\t\t\t.filter((m, idx, arr) => idx === 0 || m.weekIndex - arr[idx - 1].weekIndex >= 3)\n\t\t\t\t\t\t\t.map((m) => (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tkey={`${m.label}-${m.weekIndex}`}\n\t\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName=\"absolute leading-none whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\tstyle={{ left: `${m.weekIndex * 15}px`, top: 0 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{m.label}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"flex gap-0\">\n\t\t\t\t\t<div className=\"mr-1 flex flex-col gap-[3px]\">\n\t\t\t\t\t\t{strings.heatmapDayLabels.map((label, i) => (\n\t\t\t\t\t\t\t<div key={`day-${i}`} className=\"flex h-3 w-6 items-center justify-end\">\n\t\t\t\t\t\t\t\t{!!label && (\n\t\t\t\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"leading-none\">{label}</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"flex gap-[3px]\">\n\t\t\t\t\t\t{weeks.map((week, weekIdx) => (\n\t\t\t\t\t\t\t<div key={`w-${weekIdx}`} className=\"flex flex-col gap-[3px]\">\n\t\t\t\t\t\t\t\t{week.map((day, dayIdx) => {\n\t\t\t\t\t\t\t\t\tconst dayTitle = day ? `${day.date}: Level ${day.level}` : undefined;\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={`d-${weekIdx}-${dayIdx}`}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'size-3 rounded-sm',\n\t\t\t\t\t\t\t\t\t\t\t\tday ? LEVEL_COLOR[day.level] : 'bg-transparent',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\ttitle={dayTitle}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div className=\"mt-4 flex items-center justify-end gap-1.5\">\n\t\t\t\t<Text size=\"xxs\" type=\"secondary\">{strings.heatmapLegendLess}</Text>\n\t\t\t\t{([0, 1, 2, 3, 4] as ActivityLevel[]).map((level) => (\n\t\t\t\t\t<div key={`legend-${level}`} className={cn('size-3 rounded-sm', LEVEL_COLOR[level])} />\n\t\t\t\t))}\n\t\t\t\t<Text size=\"xxs\" type=\"secondary\">{strings.heatmapLegendMore}</Text>\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nActivityHeatmap.displayName = 'ActivityHeatmap';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/composed/analytics/analytics.strings.ts","../../../../src/components/composed/analytics/format-metric-value.ts","../../../../src/components/composed/analytics/atoms/metric-trend-chip.tsx","../../../../src/components/composed/analytics/atoms/metric-sparkline.tsx","../../../../src/components/composed/analytics/atoms/metric-skeleton.tsx","../../../../src/components/composed/analytics/metric/metric.tsx","../../../../src/components/composed/analytics/metric-bar/metric-bar.tsx","../../../../src/components/composed/analytics/metric-grid/metric-grid.tsx","../../../../src/components/composed/analytics/metric-comparison/metric-comparison.tsx","../../../../src/components/composed/analytics/metric-micro-grid/metric-micro-grid.tsx","../../../../src/components/composed/analytics/metric-gradient/metric-gradient.tsx","../../../../src/components/composed/analytics/activity-heatmap/activity-heatmap.tsx"],"sourcesContent":["/**\n * Shared default strings for `composed/analytics` components.\n *\n * Each component accepts a `strings` prop deep-merged over these defaults\n * so consumers override per-component without touching the rest. Day/month\n * labels live here too because they're localisable in the same way.\n */\nexport interface AnalyticsStrings {\n /** Fallback shown by `<Metric />` when `error` is true. */\n metricErrorLabel: string;\n /** Default title for `<MetricComparison />` when no `title` prop is passed. */\n comparisonTitle: string;\n /** Labels for the activity heatmap weekday rows (Mon–Sun, length 7). */\n heatmapDayLabels: readonly [string, string, string, string, string, string, string];\n /** Short month names for the activity heatmap header (Jan–Dec, length 12). */\n heatmapMonthNames: readonly [\n string, string, string, string, string, string,\n string, string, string, string, string, string,\n ];\n /** Heatmap legend \"less\" label (left edge of intensity legend). */\n heatmapLegendLess: string;\n /** Heatmap legend \"more\" label (right edge of intensity legend). */\n heatmapLegendMore: string;\n}\n\nexport const defaultAnalyticsStrings: AnalyticsStrings = {\n metricErrorLabel: 'Unable to load metric',\n comparisonTitle: 'Comparison',\n heatmapDayLabels: ['Mon', '', 'Wed', '', 'Fri', '', ''],\n heatmapMonthNames: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',\n ],\n heatmapLegendLess: 'Less',\n heatmapLegendMore: 'More',\n};\n","/**\n * formatMetricValue — single canonical formatter for every metric surface.\n *\n * Keeps formatting logic out of the layout components so the same dataset\n * renders identically regardless of which `Metric*` variant displays it.\n */\nimport {\n\tEMPTY,\n\tformatCurrency,\n\tformatDuration,\n\tformatNumber,\n\tformatPercentage,\n} from '@/lib/format';\nimport type { MetricData } from './types';\n\nexport function formatMetricValue(data: MetricData): string {\n\tif (data.value === null || data.value === undefined) return EMPTY;\n\n\tconst value = data.value;\n\tconst numeric = typeof value === 'number' ? value : null;\n\n\tswitch (data.valueType) {\n\t\tcase 'currency':\n\t\t\treturn numeric !== null\n\t\t\t\t? formatCurrency(numeric, { currency: data.currency })\n\t\t\t\t: String(value);\n\t\tcase 'percentage':\n\t\t\treturn numeric !== null ? formatPercentage(numeric) : String(value);\n\t\tcase 'duration':\n\t\t\treturn numeric !== null ? formatDuration(numeric) : String(value);\n\t\tcase 'number':\n\t\t\treturn numeric !== null ? formatNumber(numeric) : String(value);\n\t\tcase 'text':\n\t\tdefault:\n\t\t\treturn String(value);\n\t}\n}\n\n/**\n * Resolve the effective `MetricTrend` for a metric — explicit `trend` wins,\n * otherwise we infer from `change.direction` (`up` → positive, `down` →\n * negative, `neutral`/missing → neutral).\n */\nexport function resolveTrend(data: MetricData): 'positive' | 'negative' | 'neutral' {\n\tif (data.trend) return data.trend;\n\tif (data.change?.direction === 'up') return 'positive';\n\tif (data.change?.direction === 'down') return 'negative';\n\treturn 'neutral';\n}\n","/**\n * MetricTrendChip — compact ↑/↓/→ delta indicator.\n *\n * Decouples direction (up/down/neutral) from tone (positive/negative/neutral)\n * so consumers can flip the colour for inverted metrics like churn or refund\n * rate. Four variants:\n * - `default` — coloured icon + value, no chrome\n * - `badge` — pill with tinted bg + arrow icon\n * - `compact` — coloured arrow + value, no spacing\n * - `inline` — value only with sign prefix, no icon\n */\nimport { ArrowDown, ArrowUp, Minus } from 'lucide-react';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { MetricChange, MetricSize, MetricTrend, MetricTrendVariant } from '../types';\n\ninterface MetricTrendChipProps {\n\tchange: MetricChange;\n\ttrend?: MetricTrend;\n\tsize?: MetricSize;\n\tvariant?: MetricTrendVariant;\n\tclassName?: string;\n}\n\nconst TONE_CLASSES: Record<MetricTrend, { text: string; badge: string; arrow: string }> = {\n\tpositive: { text: 'text-success', badge: 'bg-success/10 text-success', arrow: 'text-success' },\n\tnegative: { text: 'text-destructive', badge: 'bg-destructive/10 text-destructive', arrow: 'text-destructive' },\n\tneutral: { text: 'text-muted-foreground', badge: 'bg-muted text-muted-foreground', arrow: 'text-muted-foreground' },\n};\n\nconst ICON_SIZE: Record<MetricSize, string> = {\n\tsm: 'size-3',\n\tmd: 'size-3.5',\n\tlg: 'size-4',\n};\n\nconst TEXT_SIZE: Record<MetricSize, 'xxs' | 'xs' | 'sm'> = {\n\tsm: 'xxs',\n\tmd: 'xs',\n\tlg: 'sm',\n};\n\nconst BADGE_PADDING: Record<MetricSize, string> = {\n\tsm: 'px-1.5 py-0.5',\n\tmd: 'px-2 py-0.5',\n\tlg: 'px-2.5 py-1',\n};\n\nfunction resolveTone(trend: MetricTrend | undefined, direction: MetricChange['direction']): MetricTrend {\n\tif (trend) return trend;\n\tif (direction === 'up') return 'positive';\n\tif (direction === 'down') return 'negative';\n\treturn 'neutral';\n}\n\nexport function MetricTrendChip({\n\tchange,\n\ttrend,\n\tsize = 'md',\n\tvariant = 'default',\n\tclassName,\n}: MetricTrendChipProps) {\n\tconst tone = resolveTone(trend, change.direction);\n\tconst Icon = change.direction === 'up' ? ArrowUp : change.direction === 'down' ? ArrowDown : Minus;\n\tconst palette = TONE_CLASSES[tone];\n\tconst valueText = String(change.value);\n\tconst sign = change.direction === 'up' ? '+' : change.direction === 'down' ? '' : '';\n\n\tif (variant === 'inline') {\n\t\treturn (\n\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} weight=\"medium\" className={cn('metric-trend-chip--component', palette.text, 'tabular-nums', className)}>\n\t\t\t\t{sign}{valueText}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tif (variant === 'compact') {\n\t\treturn (\n\t\t\t<span className={cn('inline-flex items-center gap-0.5', palette.text, className)}>\n\t\t\t\t<Icon className={ICON_SIZE[size]} strokeWidth={2.5} aria-hidden=\"true\" />\n\t\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t{valueText}\n\t\t\t\t</Text>\n\t\t\t</span>\n\t\t);\n\t}\n\n\tif (variant === 'badge') {\n\t\treturn (\n\t\t\t<span className={cn('inline-flex items-center gap-1 rounded-full font-medium tabular-nums', palette.badge, BADGE_PADDING[size], className)}>\n\t\t\t\t<Icon className={ICON_SIZE[size]} strokeWidth={2.5} aria-hidden=\"true\" />\n\t\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t{valueText}\n\t\t\t\t</Text>\n\t\t\t\t{!!change.label && (\n\t\t\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} className=\"opacity-70\">{change.label}</Text>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t);\n\t}\n\n\t// default\n\treturn (\n\t\t<span className={cn('inline-flex items-center gap-1', palette.text, className)}>\n\t\t\t<Icon className={ICON_SIZE[size]} strokeWidth={2.5} aria-hidden=\"true\" />\n\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t{valueText}\n\t\t\t</Text>\n\t\t\t{!!change.label && (\n\t\t\t\t<Text tag=\"span\" size={TEXT_SIZE[size]} type=\"secondary\">{change.label}</Text>\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nMetricTrendChip.displayName = 'MetricTrendChip';\n","/**\n * MetricSparkline — recharts-backed mini area chart used inside Metric\n * variants. Auto-stretches to its container; pass a fixed height (e.g.\n * `h-8 w-full`) on the wrapper. `trend` colours the stroke + gradient\n * (positive/negative/neutral); `color` overrides with any CSS colour\n * (semantic var, hex, rgb).\n */\nimport { useId, useMemo } from 'react';\nimport { Area, AreaChart, ResponsiveContainer } from 'recharts';\nimport { cn } from '@/lib/utils';\n\nimport type { MetricTrend } from '../types';\n\ninterface MetricSparklineProps {\n\tdata: readonly number[];\n\ttrend?: MetricTrend;\n\tcolor?: string;\n\tclassName?: string;\n\tanimated?: boolean;\n\t'aria-label'?: string;\n}\n\nconst TREND_COLORS: Record<MetricTrend, string> = {\n\tpositive: 'var(--success)',\n\tnegative: 'var(--destructive)',\n\tneutral: 'var(--muted-foreground)',\n};\n\nexport function MetricSparkline({\n\tdata,\n\ttrend = 'neutral',\n\tcolor,\n\tclassName,\n\tanimated = true,\n\t'aria-label': ariaLabel = 'Trend sparkline',\n}: MetricSparklineProps) {\n\tconst id = useId();\n\tconst gradientId = useMemo(() => `metric-spark-${id.replaceAll(':', '')}`, [id]);\n\tconst stroke = color ?? TREND_COLORS[trend];\n\n\tconst chartData = useMemo(() => {\n\t\tif (!Array.isArray(data) || data.length === 0) return [];\n\t\treturn data.map((value, i) => ({ i, v: value }));\n\t}, [data]);\n\n\tif (chartData.length === 0) {\n\t\treturn <div className={cn('metric-sparkline--component', 'w-full', className)} aria-hidden=\"true\" />;\n\t}\n\n\treturn (\n\t\t<div className={cn('w-full', className)} role=\"img\" aria-label={ariaLabel}>\n\t\t\t<ResponsiveContainer width=\"100%\" height=\"100%\" initialDimension={{ width: 1, height: 1 }}>\n\t\t\t\t<AreaChart data={chartData} margin={{ top: 2, right: 0, bottom: 0, left: 0 }}>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t<stop offset=\"0%\" stopColor={stroke} stopOpacity={0.25} />\n\t\t\t\t\t\t\t<stop offset=\"100%\" stopColor={stroke} stopOpacity={0} />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t</defs>\n\t\t\t\t\t<Area\n\t\t\t\t\t\ttype=\"monotone\"\n\t\t\t\t\t\tdataKey=\"v\"\n\t\t\t\t\t\tstroke={stroke}\n\t\t\t\t\t\tstrokeWidth={1.75}\n\t\t\t\t\t\tfill={`url(#${gradientId})`}\n\t\t\t\t\t\tdot={false}\n\t\t\t\t\t\tactiveDot={false}\n\t\t\t\t\t\tisAnimationActive={animated}\n\t\t\t\t\t\tanimationDuration={600}\n\t\t\t\t\t/>\n\t\t\t\t</AreaChart>\n\t\t\t</ResponsiveContainer>\n\t\t</div>\n\t);\n}\n\nMetricSparkline.displayName = 'MetricSparkline';\n","/**\n * MetricSkeleton — loading placeholder matching the height/spacing of every\n * `Metric` variant so the layout doesn't jump when data resolves.\n */\nimport { cn } from '@/lib/utils';\nimport type { MetricSize, MetricVariant } from '../types';\n\ninterface MetricSkeletonProps {\n\tvariant?: MetricVariant;\n\tsize?: MetricSize;\n\tclassName?: string;\n}\n\nconst Bar = ({ className }: { className?: string }) => (\n\t<div className={cn('animate-pulse rounded bg-muted', className)} />\n);\n\nexport function MetricSkeleton({\n\tvariant = 'default',\n\tsize = 'md',\n\tclassName,\n}: MetricSkeletonProps) {\n\tconst padding = size === 'sm' ? 'p-3' : size === 'lg' ? 'p-5' : 'p-4';\n\n\tif (variant === 'card' || variant === 'bordered' || variant === 'accent' || variant === 'colored') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn('metric-skeleton--component', \n\t\t\t\t\t'rounded-xl border border-border bg-card shadow-sm',\n\t\t\t\t\tpadding,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\taria-busy=\"true\"\n\t\t\t\taria-live=\"polite\"\n\t\t\t>\n\t\t\t\t<Bar className=\"h-3 w-24\" />\n\t\t\t\t<Bar className={cn('mt-3', size === 'lg' ? 'h-9 w-40' : 'h-7 w-32')} />\n\t\t\t\t<Bar className=\"mt-2 h-3 w-20\" />\n\t\t\t\t<Bar className=\"mt-3 h-8 w-full\" />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (variant === 'compact') {\n\t\treturn (\n\t\t\t<div className={cn('flex items-center gap-3', className)} aria-busy=\"true\">\n\t\t\t\t<Bar className=\"size-9 rounded-lg\" />\n\t\t\t\t<div className=\"flex-1 space-y-1.5\">\n\t\t\t\t\t<Bar className=\"h-3 w-20\" />\n\t\t\t\t\t<Bar className=\"h-4 w-28\" />\n\t\t\t\t</div>\n\t\t\t\t<Bar className=\"h-5 w-12 rounded-full\" />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (variant === 'minimal') {\n\t\treturn (\n\t\t\t<div className={cn('inline-flex items-baseline gap-2', className)} aria-busy=\"true\">\n\t\t\t\t<Bar className=\"h-3 w-12\" />\n\t\t\t\t<Bar className=\"h-3 w-16\" />\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// default\n\treturn (\n\t\t<div className={cn('flex flex-col gap-1.5', padding, className)} aria-busy=\"true\">\n\t\t\t<Bar className=\"h-3 w-20\" />\n\t\t\t<Bar className=\"h-5 w-28\" />\n\t\t\t<Bar className=\"mt-1 h-6 w-full\" />\n\t\t</div>\n\t);\n}\n\nMetricSkeleton.displayName = 'MetricSkeleton';\n","/**\n * Metric — canonical single-metric surface. One component, seven variants:\n *\n * default — flat tile (label / value / trend / sparkline) for use inside\n * MetricBar or other composed surfaces.\n * card — wrapped in SmartCard with shadow, padding, optional tooltip.\n * Use as a standalone hero in a row of three.\n * compact — single-row icon + label + value + chip. Sidebar / list use.\n * minimal — inline `Label: value ↑12%` chip for in-flow copy.\n * bordered — soft tinted border keyed off `colorScheme`.\n * accent — dark surface card with bottom-aligned area sparkline.\n * colored — segmented progress bar (driven by `progress` prop).\n *\n * All variants share the same `MetricData` shape; only the layout changes.\n */\nimport { useMemo } from 'react';\nimport { ArrowUpRight } from 'lucide-react';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAnalyticsStrings } from '../analytics.strings';\nimport { MetricSkeleton } from '../atoms/metric-skeleton';\nimport { MetricSparkline } from '../atoms/metric-sparkline';\nimport { MetricTrendChip } from '../atoms/metric-trend-chip';\nimport { formatMetricValue, resolveTrend } from '../format-metric-value';\nimport type {\n\tMetricColorScheme,\n\tMetricData,\n\tMetricSize,\n\tMetricVariant,\n} from '../types';\n\nexport interface MetricProps {\n\tdata: MetricData;\n\tvariant?: MetricVariant;\n\tsize?: MetricSize;\n\tcolorScheme?: MetricColorScheme;\n\tshowSparkline?: boolean;\n\tshowChange?: boolean;\n\tshowIcon?: boolean;\n\tloading?: boolean;\n\terror?: boolean;\n\terrorLabel?: string;\n\t/** `colored` variant only — 0-100 fill percentage. */\n\tprogress?: number;\n\tclassName?: string;\n\t'aria-label'?: string;\n}\n\n// ── colour-scheme palettes (shared between bordered + colored variants) ──\nconst SCHEME_TINT: Record<MetricColorScheme, { border: string; bg: string; bar: string; dot: string; ring: string }> = {\n\tdefault: { border: 'border-border', bg: 'bg-card', bar: 'bg-foreground', dot: 'bg-foreground', ring: 'ring-border' },\n\tprimary: { border: 'border-primary/25', bg: 'bg-primary/5', bar: 'bg-primary', dot: 'bg-primary', ring: 'ring-primary/20' },\n\tsuccess: { border: 'border-success/30', bg: 'bg-success/5', bar: 'bg-success', dot: 'bg-success', ring: 'ring-success/20' },\n\twarning: { border: 'border-warning/40', bg: 'bg-warning/10', bar: 'bg-warning', dot: 'bg-warning', ring: 'ring-warning/30' },\n\tdanger: { border: 'border-destructive/30', bg: 'bg-destructive/5', bar: 'bg-destructive', dot: 'bg-destructive', ring: 'ring-destructive/20' },\n\tinfo: { border: 'border-info/30', bg: 'bg-info/5', bar: 'bg-info', dot: 'bg-info', ring: 'ring-info/20' },\n};\n\n/** Compact value sizes for in-grid / in-bar usage where horizontal space is tight. */\nconst VALUE_FONT_SIZE: Record<MetricSize, string> = {\n\tsm: 'text-sm',\n\tmd: 'text-lg',\n\tlg: 'text-xl',\n};\n\n/** Hero value sizes for standalone card / bordered / accent variants. */\nconst VALUE_FONT_SIZE_HERO: Record<MetricSize, string> = {\n\tsm: 'text-xl',\n\tmd: 'text-3xl',\n\tlg: 'text-4xl',\n};\n\nconst SPARKLINE_HEIGHT: Record<MetricSize, string> = {\n\tsm: 'h-6',\n\tmd: 'h-8',\n\tlg: 'h-10',\n};\n\nconst SEGMENT_COUNT = 16;\n\nexport function Metric(props: MetricProps) {\n\tconst {\n\t\tdata,\n\t\tvariant = 'default',\n\t\tsize = 'md',\n\t\tcolorScheme = 'default',\n\t\tshowSparkline = true,\n\t\tshowChange = true,\n\t\tshowIcon = true,\n\t\tloading = false,\n\t\terror = false,\n\t\terrorLabel,\n\t\tprogress = 0,\n\t\tclassName,\n\t\t'aria-label': ariaLabel,\n\t} = props;\n\n\tconst formattedValue = useMemo(() => formatMetricValue(data), [data]);\n\tconst trend = useMemo(() => resolveTrend(data), [data]);\n\n\tif (loading) return <MetricSkeleton variant={variant} size={size} className={cn('metric--component', className)} />;\n\tif (error) {\n\t\treturn (\n\t\t\t<div className={cn('flex items-center justify-center rounded-lg border border-border bg-card p-4 text-muted-foreground', className)}>\n\t\t\t\t<Text>{errorLabel ?? defaultAnalyticsStrings.metricErrorLabel}</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst sharedProps = {\n\t\tdata,\n\t\tformattedValue,\n\t\ttrend,\n\t\tsize,\n\t\tshowSparkline,\n\t\tshowChange,\n\t\tshowIcon,\n\t\tcolorScheme,\n\t\tariaLabel: ariaLabel ?? data.label,\n\t\tclassName,\n\t};\n\n\tswitch (variant) {\n\t\tcase 'card':\n\t\t\treturn <MetricCard {...sharedProps} />;\n\t\tcase 'compact':\n\t\t\treturn <MetricCompact {...sharedProps} />;\n\t\tcase 'minimal':\n\t\t\treturn <MetricMinimal {...sharedProps} />;\n\t\tcase 'bordered':\n\t\t\treturn <MetricBordered {...sharedProps} />;\n\t\tcase 'accent':\n\t\t\treturn <MetricAccent {...sharedProps} />;\n\t\tcase 'colored':\n\t\t\treturn <MetricColored {...sharedProps} progress={progress} />;\n\t\tdefault:\n\t\t\treturn <MetricDefault {...sharedProps} />;\n\t}\n}\n\nMetric.displayName = 'Metric';\n\n// ─────────────────────────────────────────────────────────────────────────\n// Internal sub-components — kept private. Each handles one variant only.\n// ─────────────────────────────────────────────────────────────────────────\n\ninterface SubProps {\n\tdata: MetricData;\n\tformattedValue: string;\n\ttrend: 'positive' | 'negative' | 'neutral';\n\tsize: MetricSize;\n\tshowSparkline: boolean;\n\tshowChange: boolean;\n\tshowIcon: boolean;\n\tcolorScheme: MetricColorScheme;\n\tariaLabel: string;\n\tclassName?: string;\n}\n\nfunction MetricDefault({ data, formattedValue, trend, size, showSparkline, showChange, showIcon, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\treturn (\n\t\t<div className={cn('flex min-w-0 flex-col gap-1', className)} aria-label={ariaLabel}>\n\t\t\t<div className=\"flex items-center gap-1.5 min-w-0 text-muted-foreground\">\n\t\t\t\t{!!showIcon && !!Icon && <Icon className=\"size-3.5 shrink-0\" aria-hidden=\"true\" />}\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"truncate\">{data.label}</Text>\n\t\t\t</div>\n\t\t\t<Heading\n\t\t\t\ttag=\"h5\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'font-bold tabular-nums tracking-tight border-none pb-0 leading-tight truncate',\n\t\t\t\t\tVALUE_FONT_SIZE[size],\n\t\t\t\t)}\n\t\t\t\ttitle={formattedValue}\n\t\t\t>\n\t\t\t\t{formattedValue}\n\t\t\t</Heading>\n\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"compact\" />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!data.subtitle && <Text size=\"xs\" type=\"secondary\" className=\"truncate\">{data.subtitle}</Text>}\n\t\t\t{!!showSparkline && !!data.sparkline?.length && (\n\t\t\t\t<MetricSparkline data={data.sparkline} trend={trend} className={cn('mt-auto', SPARKLINE_HEIGHT[size])} />\n\t\t\t)}\n\t\t\t{!!data.footer && <Text size=\"xxs\" type=\"discrete\" className=\"truncate\">{data.footer}</Text>}\n\t\t</div>\n\t);\n}\n\nfunction MetricCard({ data, formattedValue, trend, size, showSparkline, showChange, showIcon, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\tconst isInteractive = Boolean(data.href || data.onClick);\n\tconst padding: 'sm' | 'base' | 'lg' = size === 'sm' ? 'sm' : size === 'lg' ? 'lg' : 'base';\n\n\tconst card = (\n\t\t<SmartCard\n\t\t\ttitle={data.label}\n\t\t\ticon={!!showIcon && !!Icon ? <Icon className=\"size-4\" aria-hidden=\"true\" /> : null}\n\t\t\ttooltip={data.tooltip}\n\t\t\tpadding={padding}\n\t\t\tclassName={cn(isInteractive && 'cursor-pointer transition-shadow hover:shadow-md', className)}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t<div className=\"flex items-baseline justify-between gap-3\">\n\t\t\t\t<Heading\n\t\t\t\t\ttag={size === 'sm' ? 'h5' : size === 'lg' ? 'h3' : 'h4'}\n\t\t\t\t\tclassName={cn('font-bold tabular-nums tracking-tight border-none pb-0 leading-none', VALUE_FONT_SIZE_HERO[size])}\n\t\t\t\t>\n\t\t\t\t\t{formattedValue}\n\t\t\t\t</Heading>\n\t\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"badge\" />\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{!!data.subtitle && <Text type=\"secondary\" className=\"mt-2\">{data.subtitle}</Text>}\n\t\t\t{!!showSparkline && !!data.sparkline?.length && (\n\t\t\t\t<MetricSparkline\n\t\t\t\t\tdata={data.sparkline}\n\t\t\t\t\ttrend={trend}\n\t\t\t\t\tclassName={cn('mt-3', size === 'lg' ? 'h-12' : 'h-10')}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{!!data.footer && <Text size=\"xs\" type=\"secondary\" className=\"mt-2\">{data.footer}</Text>}\n\t\t</SmartCard>\n\t);\n\n\tif (isInteractive && data.onClick) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\trole=\"button\"\n\t\t\t\ttabIndex={0}\n\t\t\t\tonClick={data.onClick}\n\t\t\t\tonKeyDown={(e) => (e.key === 'Enter' || e.key === ' ') && data.onClick?.()}\n\t\t\t\tclassName=\"rounded-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40\"\n\t\t\t>\n\t\t\t\t{card}\n\t\t\t</div>\n\t\t);\n\t}\n\treturn card;\n}\n\nfunction MetricCompact({ data, formattedValue, size, showChange, showIcon, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\treturn (\n\t\t<div className={cn('flex items-center gap-3', className)} aria-label={ariaLabel}>\n\t\t\t{!!showIcon && !!Icon && (\n\t\t\t\t<span className=\"inline-flex size-9 shrink-0 items-center justify-center rounded-lg bg-muted/60 text-muted-foreground\">\n\t\t\t\t\t<Icon className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"truncate\">{data.label}</Text>\n\t\t\t\t<Text tag=\"span\" size={size === 'sm' ? 'sm' : 'lg'} weight=\"bold\" className=\"block truncate tabular-nums\">\n\t\t\t\t\t{formattedValue}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"badge\" className=\"shrink-0\" />\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction MetricMinimal({ data, formattedValue, size, showChange, ariaLabel, className }: SubProps) {\n\treturn (\n\t\t<span className={cn('inline-flex items-baseline gap-2', className)} aria-label={ariaLabel}>\n\t\t\t<Text tag=\"span\" size={size === 'lg' ? 'sm' : 'xs'} type=\"secondary\">{data.label}:</Text>\n\t\t\t<Text tag=\"span\" size={size === 'lg' ? 'sm' : 'xs'} weight=\"semibold\" className=\"tabular-nums\">{formattedValue}</Text>\n\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size=\"sm\" variant=\"inline\" />\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\nfunction MetricBordered({ data, formattedValue, trend, size, showSparkline, showChange, showIcon, colorScheme, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\tconst tint = SCHEME_TINT[colorScheme];\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('flex flex-col gap-3 rounded-xl border p-4 shadow-sm', tint.border, tint.bg, className)}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t<div className=\"flex items-center justify-between gap-2\">\n\t\t\t\t<div className=\"flex items-center gap-2 text-muted-foreground\">\n\t\t\t\t\t{!!showIcon && !!Icon && <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" />}\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\">{data.label}</Text>\n\t\t\t\t</div>\n\t\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"badge\" />\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<Heading\n\t\t\t\ttag={size === 'lg' ? 'h3' : 'h4'}\n\t\t\t\tclassName={cn('font-bold tabular-nums tracking-tight border-none pb-0 leading-none', VALUE_FONT_SIZE_HERO[size])}\n\t\t\t>\n\t\t\t\t{formattedValue}\n\t\t\t</Heading>\n\t\t\t{!!data.subtitle && <Text size=\"xs\" type=\"secondary\">{data.subtitle}</Text>}\n\t\t\t{!!showSparkline && !!data.sparkline?.length && (\n\t\t\t\t<MetricSparkline data={data.sparkline} trend={trend} className={SPARKLINE_HEIGHT[size]} />\n\t\t\t)}\n\t\t\t{!!data.footer && <Text size=\"xxs\" type=\"discrete\">{data.footer}</Text>}\n\t\t</div>\n\t);\n}\n\nfunction MetricAccent({ data, formattedValue, trend, size, showSparkline, showChange, ariaLabel, className }: SubProps) {\n\tconst Icon = data.icon;\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'dark relative flex flex-col rounded-2xl bg-card text-card-foreground shadow-lg ring-1 ring-border overflow-hidden',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t<div className=\"flex flex-col gap-2 p-5\">\n\t\t\t\t<div className=\"flex items-center justify-between gap-3\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t\t{data.label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t<span className=\"inline-flex size-7 items-center justify-center rounded-lg bg-foreground/[0.08]\">\n\t\t\t\t\t\t\t<Icon className=\"size-3.5 text-muted-foreground\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex items-baseline gap-2.5\">\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h3\"\n\t\t\t\t\t\tclassName={cn('font-bold tabular-nums tracking-tight border-none pb-0 leading-none text-foreground', VALUE_FONT_SIZE_HERO[size])}\n\t\t\t\t\t>\n\t\t\t\t\t\t{formattedValue}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"compact\" />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{!!data.subtitle && <Text size=\"xs\" type=\"secondary\">{data.subtitle}</Text>}\n\t\t\t</div>\n\t\t\t{!!showSparkline && !!data.sparkline?.length && (\n\t\t\t\t<MetricSparkline data={data.sparkline} trend={trend} className=\"h-12 w-full\" />\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction MetricColored({ data, formattedValue, size, showChange, colorScheme, ariaLabel, className, progress = 0 }: SubProps & { progress?: number }) {\n\tconst tint = SCHEME_TINT[colorScheme === 'default' ? 'primary' : colorScheme];\n\tconst filledCount = Math.round((Math.min(Math.max(progress, 0), 100) / 100) * SEGMENT_COUNT);\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('rounded-xl bg-card p-5 shadow-sm border border-border/50', className)}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"truncate\">{data.label}</Text>\n\t\t\t\t<span className={cn('size-1.5 rounded-full shrink-0', tint.dot)} aria-hidden=\"true\" />\n\t\t\t</div>\n\t\t\t<div className=\"mt-2.5 flex items-baseline gap-2\">\n\t\t\t\t<Heading\n\t\t\t\t\ttag=\"h3\"\n\t\t\t\t\tclassName={cn('font-bold tabular-nums tracking-tight border-none pb-0 leading-none', VALUE_FONT_SIZE_HERO[size])}\n\t\t\t\t>\n\t\t\t\t\t{formattedValue}\n\t\t\t\t</Heading>\n\t\t\t\t{!!data.subtitle && <Text size=\"xs\" type=\"secondary\">{data.subtitle}</Text>}\n\t\t\t</div>\n\t\t\t<div className=\"mt-4 flex items-center gap-0.5\" role=\"progressbar\" aria-valuenow={progress} aria-valuemin={0} aria-valuemax={100}>\n\t\t\t\t{Array.from({ length: SEGMENT_COUNT }, (_, i) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={`seg-${i}`}\n\t\t\t\t\t\tclassName={cn('h-6 w-1.5 rounded-sm transition-colors', i < filledCount ? tint.bar : 'bg-muted')}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{!!showChange && !!data.change && (\n\t\t\t\t<div className=\"mt-3\">\n\t\t\t\t\t<MetricTrendChip change={data.change} trend={data.trend} size={size} variant=\"default\" />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!data.footer && (\n\t\t\t\t<div className=\"mt-2 inline-flex items-center gap-1 text-muted-foreground\">\n\t\t\t\t\t<ArrowUpRight className=\"size-3\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\">{data.footer}</Text>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","/**\n * MetricBar — horizontal strip of metrics with an optional period selector\n * on the leading edge. Cells are divided by hairlines so a row of 4 KPIs\n * reads as a single integrated module rather than disconnected cards.\n *\n * Variants:\n * `default` — flat hairline-divided bar with period chip on the left.\n * Best for tables/dashboards where the bar sits above content.\n * `gradient` — same layout wrapped in a tinted gradient frame for hero\n * placement.\n *\n * Always render `Metric` cells inside; never render layout-specific markup\n * directly. That keeps the formatting / colouring rules in one place.\n */\nimport { Calendar } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { Metric } from '../metric/metric';\nimport type { MetricData, MetricPeriod, MetricSize } from '../types';\n\nexport type MetricBarVariant = 'default' | 'gradient';\n\nexport interface MetricBarProps {\n\tmetrics: MetricData[];\n\tperiod?: MetricPeriod;\n\tonPeriodChange?: (value: string) => void;\n\tvariant?: MetricBarVariant;\n\tsize?: MetricSize;\n\tshowSparklines?: boolean;\n\tshowChanges?: boolean;\n\tfooterText?: string;\n\tclassName?: string;\n}\n\nexport function MetricBar({\n\tmetrics,\n\tperiod,\n\tonPeriodChange,\n\tvariant = 'default',\n\tsize = 'md',\n\tshowSparklines = true,\n\tshowChanges = true,\n\tfooterText,\n\tclassName,\n}: MetricBarProps) {\n\tconst cells = (\n\t\t<div className=\"flex min-w-0 flex-1 items-stretch divide-x divide-border\">\n\t\t\t{metrics.map((metric) => (\n\t\t\t\t<div key={metric.id} className=\"flex-1 min-w-0 px-4 py-3\">\n\t\t\t\t\t<Metric\n\t\t\t\t\t\tdata={metric}\n\t\t\t\t\t\tvariant=\"default\"\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\tshowSparkline={showSparklines}\n\t\t\t\t\t\tshowChange={showChanges}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n\n\tconst periodChip = !!period && (\n\t\t<div className=\"flex shrink-0 items-center px-3\">\n\t\t\t<Button\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tclassName=\"gap-1.5\"\n\t\t\t\tonClick={onPeriodChange ? () => onPeriodChange(period.value) : undefined}\n\t\t\t>\n\t\t\t\t<Calendar className=\"size-3.5\" aria-hidden=\"true\" />\n\t\t\t\t<Text size=\"xs\" weight=\"medium\">{period.label}</Text>\n\t\t\t</Button>\n\t\t</div>\n\t);\n\n\tif (variant === 'gradient') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn('metric-bar--component', \n\t\t\t\t\t'rounded-xl bg-gradient-to-r from-primary/8 via-info/5 to-success/8 p-[1px]',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"flex items-stretch overflow-hidden rounded-[11px] bg-card\">\n\t\t\t\t\t{periodChip && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{periodChip}\n\t\t\t\t\t\t\t<div className=\"w-px bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t\t{cells}\n\t\t\t\t</div>\n\t\t\t\t{!!footerText && (\n\t\t\t\t\t<div className=\"rounded-b-[11px] border-t border-border/50 bg-card px-4 py-2\">\n\t\t\t\t\t\t<Text size=\"xxs\" type=\"discrete\">{footerText}</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex flex-col overflow-hidden rounded-xl border border-border bg-card shadow-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex items-stretch\">\n\t\t\t\t{periodChip && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{periodChip}\n\t\t\t\t\t\t<div className=\"w-px bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{cells}\n\t\t\t</div>\n\t\t\t{!!footerText && (\n\t\t\t\t<div className=\"border-t border-border/50 px-4 py-2\">\n\t\t\t\t\t<Text size=\"xxs\" type=\"discrete\">{footerText}</Text>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nMetricBar.displayName = 'MetricBar';\n","/**\n * MetricGrid — responsive grid of `Metric` cells. The grid is the workhorse\n * for KPI rows on dashboards: pass a list, choose a variant, and the\n * component handles layout / column counts / spacing.\n *\n * Variants are forwarded to `Metric` so a single grid can show either\n * standalone cards, bordered tints, or compact list rows.\n *\n * Column counts default to `auto` — the grid breaks at sm/lg/xl based on\n * the cell count. Override with `columns` to pin a specific layout.\n */\nimport { cn } from '@/lib/utils';\n\nimport { Metric } from '../metric/metric';\nimport type {\n\tMetricColorScheme,\n\tMetricData,\n\tMetricSize,\n\tMetricVariant,\n} from '../types';\n\nexport interface MetricGridProps {\n\tmetrics: MetricData[];\n\t/** Cell variant — restricted to grid-friendly layouts. */\n\tvariant?: Extract<MetricVariant, 'card' | 'compact' | 'bordered' | 'accent' | 'colored'>;\n\tsize?: MetricSize;\n\tcolorScheme?: MetricColorScheme;\n\t/** Force a fixed column count. `auto` picks based on cell count. */\n\tcolumns?: 'auto' | 1 | 2 | 3 | 4 | 6;\n\tgap?: 'sm' | 'md' | 'lg';\n\tshowSparklines?: boolean;\n\tshowChanges?: boolean;\n\tshowIcons?: boolean;\n\tloading?: boolean;\n\tclassName?: string;\n}\n\nconst GAP_CLASS: Record<NonNullable<MetricGridProps['gap']>, string> = {\n\tsm: 'gap-2',\n\tmd: 'gap-3',\n\tlg: 'gap-4',\n};\n\nfunction autoColumnsFor(count: number): string {\n\tif (count <= 1) return 'grid-cols-1';\n\tif (count === 2) return 'grid-cols-1 sm:grid-cols-2';\n\tif (count === 3) return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3';\n\tif (count === 4) return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4';\n\tif (count === 5 || count === 6) return 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6';\n\treturn 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4';\n}\n\nconst COLUMN_CLASS: Record<Exclude<NonNullable<MetricGridProps['columns']>, 'auto'>, string> = {\n\t1: 'grid-cols-1',\n\t2: 'grid-cols-1 sm:grid-cols-2',\n\t3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n\t4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n\t6: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6',\n};\n\nexport function MetricGrid({\n\tmetrics,\n\tvariant = 'card',\n\tsize = 'md',\n\tcolorScheme = 'default',\n\tcolumns = 'auto',\n\tgap = 'md',\n\tshowSparklines = true,\n\tshowChanges = true,\n\tshowIcons = true,\n\tloading = false,\n\tclassName,\n}: MetricGridProps) {\n\tconst columnsClass = columns === 'auto' ? autoColumnsFor(metrics.length) : COLUMN_CLASS[columns];\n\n\treturn (\n\t\t<div className={cn('metric-grid--component', 'grid', columnsClass, GAP_CLASS[gap], className)}>\n\t\t\t{metrics.map((metric) => (\n\t\t\t\t<Metric\n\t\t\t\t\tkey={metric.id}\n\t\t\t\t\tdata={metric}\n\t\t\t\t\tvariant={variant}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tcolorScheme={colorScheme}\n\t\t\t\t\tshowSparkline={showSparklines}\n\t\t\t\t\tshowChange={showChanges}\n\t\t\t\t\tshowIcon={showIcons}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nMetricGrid.displayName = 'MetricGrid';\n","/**\n * MetricComparison — period-over-period comparison surface.\n *\n * Renders two side-by-side `Metric.bordered`-style boxes for current vs\n * previous, with a delta block below showing absolute + percent change in\n * a tone-tinted box. Layout stacks vertically below the `sm` breakpoint.\n *\n * Accepts `MetricData` for both halves so format hints (currency, percent,\n * duration) carry over consistently. Strings overridable for i18n.\n */\nimport { ArrowDown, ArrowRight, ArrowUp, Equal } from 'lucide-react';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { formatMetricValue } from '../format-metric-value';\nimport type { MetricData } from '../types';\n\nexport interface MetricComparisonStrings {\n\ttitle: string;\n\tcurrentLabel: string;\n\tpreviousLabel: string;\n\tsuffix: string;\n}\n\nexport const defaultMetricComparisonStrings: MetricComparisonStrings = {\n\ttitle: 'Comparison',\n\tcurrentLabel: 'This period',\n\tpreviousLabel: 'Previous period',\n\tsuffix: 'vs previous',\n};\n\nexport interface MetricComparisonProps {\n\tcurrent: MetricData;\n\tprevious: MetricData;\n\ttitle?: string;\n\tcurrentPeriod?: string;\n\tpreviousPeriod?: string;\n\tclassName?: string;\n\tstrings?: Partial<MetricComparisonStrings>;\n}\n\nfunction toNumber(value: MetricData['value']): number | null {\n\tif (value === null || value === undefined) return null;\n\tif (typeof value === 'number') return value;\n\tconst n = Number(value);\n\treturn Number.isFinite(n) ? n : null;\n}\n\nexport function MetricComparison({\n\tcurrent,\n\tprevious,\n\ttitle,\n\tcurrentPeriod,\n\tpreviousPeriod,\n\tclassName,\n\tstrings: stringsProp,\n}: MetricComparisonProps) {\n\tconst strings = useStrings(defaultMetricComparisonStrings, {\n\t\t...(title ? { title } : {}),\n\t\t...stringsProp,\n\t});\n\n\tconst currentNum = toNumber(current.value);\n\tconst previousNum = toNumber(previous.value);\n\tconst canCompute = currentNum !== null && previousNum !== null;\n\tconst delta = canCompute ? (currentNum as number) - (previousNum as number) : 0;\n\tconst deltaPct = canCompute && (previousNum as number) !== 0\n\t\t? Math.round((delta / (previousNum as number)) * 100)\n\t\t: 0;\n\tconst isUp = delta > 0;\n\tconst isFlat = delta === 0;\n\tconst Arrow = isFlat ? Equal : isUp ? ArrowUp : ArrowDown;\n\n\tconst tone = isFlat\n\t\t? { box: 'bg-muted/40', chip: 'bg-card text-muted-foreground border border-border/60' }\n\t\t: isUp\n\t\t\t? { box: 'bg-success/10', chip: 'bg-success/15 text-success' }\n\t\t\t: { box: 'bg-destructive/10', chip: 'bg-destructive/15 text-destructive' };\n\n\tconst formatDelta = (value: number) => {\n\t\tconst abs = Math.abs(value);\n\t\t// reuse the formatter so currency/percent metrics render correctly\n\t\treturn formatMetricValue({ ...current, value: abs });\n\t};\n\n\treturn (\n\t\t<SmartCard title={strings.title} className={cn('metric-comparison--component', className)}>\n\t\t\t{!!(currentPeriod || previousPeriod) && (\n\t\t\t\t<div className=\"flex flex-wrap items-center gap-1.5\">\n\t\t\t\t\t{!!currentPeriod && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\tclassName=\"rounded-full bg-muted px-2 py-0.5 uppercase tracking-wider text-muted-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentPeriod}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!previousPeriod && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\tclassName=\"rounded-full bg-muted/40 px-2 py-0.5 uppercase tracking-wider text-muted-foreground/70\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{previousPeriod}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className=\"mt-3 grid items-stretch gap-2 grid-cols-1 sm:grid-cols-[1fr_auto_1fr]\">\n\t\t\t\t<div className=\"rounded-lg border border-border/60 bg-card px-3 py-2.5\">\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t\t{strings.currentLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Heading tag=\"h5\" className=\"text-xl tabular-nums tracking-tight border-none pb-0\">\n\t\t\t\t\t\t{formatMetricValue(current)}\n\t\t\t\t\t</Heading>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex items-center justify-center text-muted-foreground/60\">\n\t\t\t\t\t<ArrowRight className=\"hidden size-4 sm:block\" aria-hidden=\"true\" />\n\t\t\t\t\t<ArrowDown className=\"size-4 sm:hidden\" aria-hidden=\"true\" />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"rounded-lg bg-muted/40 px-3 py-2.5\">\n\t\t\t\t\t<Text size=\"xxs\" weight=\"medium\" className=\"uppercase tracking-wider text-muted-foreground/70\">\n\t\t\t\t\t\t{strings.previousLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Heading tag=\"h5\" className=\"text-xl tabular-nums tracking-tight border-none pb-0 text-muted-foreground\">\n\t\t\t\t\t\t{formatMetricValue(previous)}\n\t\t\t\t\t</Heading>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{!!canCompute && (\n\t\t\t\t<div className={cn('mt-3 flex flex-wrap items-center gap-2 rounded-lg px-3 py-2', tone.box)}>\n\t\t\t\t\t<div className={cn('inline-flex items-center gap-1 rounded-full px-2 py-0.5', tone.chip)}>\n\t\t\t\t\t\t<Arrow className=\"size-3\" strokeWidth={2.5} aria-hidden=\"true\" />\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t{isUp ? '+' : isFlat ? '' : '−'}{formatDelta(delta)}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t\t{isUp ? '+' : isFlat ? '' : '−'}{Math.abs(deltaPct)}% {strings.suffix}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nMetricComparison.displayName = 'MetricComparison';\n","/**\n * MetricMicroGrid — six-cell dense KPI overview where each cell pairs a\n * label/value with a different lightweight visualization (bars / line /\n * dots / progress / area / pie). Useful as a top-of-page summary widget\n * on a packed dashboard.\n *\n * Cells are positional: index 0 → bars, 1 → line, 2 → dots, 3 → progress,\n * 4 → area, 5 → pie. To pin a specific renderer, pass `chart` per cell.\n */\nimport { useId } from 'react';\nimport { Area, AreaChart, ResponsiveContainer } from 'recharts';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport type MicroChartKind = 'bars' | 'line' | 'dots' | 'progress' | 'area' | 'pie';\n\nexport interface MicroMetricCell {\n\tid?: string;\n\tlabel: string;\n\tvalue: string;\n\tdata: readonly number[];\n\tchart?: MicroChartKind;\n}\n\nexport interface MetricMicroGridProps {\n\ttitle?: string;\n\tcells: readonly MicroMetricCell[];\n\tclassName?: string;\n}\n\nconst DEFAULT_ORDER: MicroChartKind[] = ['bars', 'line', 'dots', 'progress', 'area', 'pie'];\n\nconst CHART_COLORS: Record<MicroChartKind, string> = {\n\tbars: 'var(--primary)',\n\tline: 'var(--info)',\n\tdots: 'var(--warning)',\n\tprogress: 'var(--success)',\n\tarea: 'var(--primary)',\n\tpie: 'var(--success)',\n};\n\nconst PIE_PALETTE = ['var(--success)', 'var(--info)', 'var(--warning)'];\n\nfunction MicroBars({ data, color }: { data: readonly number[]; color: string }) {\n\tconst max = Math.max(...data, 1);\n\treturn (\n\t\t<div className={cn('metric-micro-grid--component', 'flex h-5 items-end gap-[2px]')}>\n\t\t\t{data.slice(0, 6).map((v, i) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={`bar-${i}`}\n\t\t\t\t\tclassName=\"flex-1 rounded-t-sm\"\n\t\t\t\t\tstyle={{ height: `${(v / max) * 100}%`, backgroundColor: color, opacity: 0.8 }}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nfunction MicroLine({ data, color }: { data: readonly number[]; color: string }) {\n\tconst max = Math.max(...data, 1);\n\tconst min = Math.min(...data);\n\tconst range = max - min || 1;\n\tconst points = data.slice(0, 6);\n\treturn (\n\t\t<svg viewBox=\"0 0 60 16\" className=\"h-5 w-full\" preserveAspectRatio=\"none\">\n\t\t\t<polyline\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke={color}\n\t\t\t\tstrokeWidth=\"1.5\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tpoints={points\n\t\t\t\t\t.map((v, i) => `${(i / Math.max(points.length - 1, 1)) * 60},${16 - ((v - min) / range) * 14}`)\n\t\t\t\t\t.join(' ')}\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n\nfunction MicroDots({ data, color }: { data: readonly number[]; color: string }) {\n\tconst max = Math.max(...data, 1);\n\treturn (\n\t\t<div className=\"flex h-5 items-end justify-around\">\n\t\t\t{data.slice(0, 5).map((v, i) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={`dot-${i}`}\n\t\t\t\t\tclassName=\"h-1.5 w-1.5 rounded-full\"\n\t\t\t\t\tstyle={{ marginBottom: `${(v / max) * 12}px`, backgroundColor: color }}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nfunction MicroProgress({ data, color }: { data: readonly number[]; color: string }) {\n\tconst value = data[0] ?? 0;\n\tconst max = data[1] ?? 100;\n\tconst pct = Math.min((value / max) * 100, 100);\n\treturn (\n\t\t<div className=\"h-1.5 w-full overflow-hidden rounded-full bg-muted\">\n\t\t\t<div className=\"h-full rounded-full transition-all\" style={{ width: `${pct}%`, backgroundColor: color }} />\n\t\t</div>\n\t);\n}\n\nfunction MicroAreaChart({ data, color }: { data: readonly number[]; color: string }) {\n\tconst id = useId();\n\tconst gradId = `micro-area-${id.replaceAll(':', '')}`;\n\tconst chartData = data.map((v, i) => ({ i, v }));\n\treturn (\n\t\t<div className=\"h-5 w-full\">\n\t\t\t<ResponsiveContainer width=\"100%\" height=\"100%\" initialDimension={{ width: 1, height: 1 }}>\n\t\t\t\t<AreaChart data={chartData} margin={{ top: 0, right: 0, bottom: 0, left: 0 }}>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<linearGradient id={gradId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t<stop offset=\"0%\" stopColor={color} stopOpacity={0.3} />\n\t\t\t\t\t\t\t<stop offset=\"100%\" stopColor={color} stopOpacity={0} />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t</defs>\n\t\t\t\t\t<Area type=\"monotone\" dataKey=\"v\" stroke={color} strokeWidth={1.25} fill={`url(#${gradId})`} />\n\t\t\t\t</AreaChart>\n\t\t\t</ResponsiveContainer>\n\t\t</div>\n\t);\n}\n\nfunction MicroPie({ data }: { data: readonly number[] }) {\n\tconst total = data.reduce((a, b) => a + b, 0) || 1;\n\tlet cumAngle = 0;\n\treturn (\n\t\t<svg viewBox=\"0 0 24 24\" className=\"h-6 w-6\">\n\t\t\t{data.slice(0, 3).map((v, i) => {\n\t\t\t\tconst angle = (v / total) * 360;\n\t\t\t\tconst startAngle = cumAngle;\n\t\t\t\tcumAngle += angle;\n\t\t\t\tconst startRad = ((startAngle - 90) * Math.PI) / 180;\n\t\t\t\tconst endRad = ((startAngle + angle - 90) * Math.PI) / 180;\n\t\t\t\tconst largeArc = angle > 180 ? 1 : 0;\n\t\t\t\tconst x1 = 12 + 10 * Math.cos(startRad);\n\t\t\t\tconst y1 = 12 + 10 * Math.sin(startRad);\n\t\t\t\tconst x2 = 12 + 10 * Math.cos(endRad);\n\t\t\t\tconst y2 = 12 + 10 * Math.sin(endRad);\n\t\t\t\treturn (\n\t\t\t\t\t<path\n\t\t\t\t\t\tkey={`slice-${i}`}\n\t\t\t\t\t\td={`M12,12 L${x1},${y1} A10,10 0 ${largeArc},1 ${x2},${y2} Z`}\n\t\t\t\t\t\tfill={PIE_PALETTE[i % PIE_PALETTE.length]}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</svg>\n\t);\n}\n\nfunction ChartFor({ kind, data }: { kind: MicroChartKind; data: readonly number[] }) {\n\tconst color = CHART_COLORS[kind];\n\tif (kind === 'bars') return <MicroBars data={data} color={color} />;\n\tif (kind === 'line') return <MicroLine data={data} color={color} />;\n\tif (kind === 'dots') return <MicroDots data={data} color={color} />;\n\tif (kind === 'progress') return <MicroProgress data={data} color={color} />;\n\tif (kind === 'area') return <MicroAreaChart data={data} color={color} />;\n\treturn <MicroPie data={data} />;\n}\n\nexport function MetricMicroGrid({ title = 'Overview', cells, className }: MetricMicroGridProps) {\n\treturn (\n\t\t<SmartCard title={title} className={className} padding=\"sm\">\n\t\t\t<div className=\"grid grid-cols-3 grid-rows-2 -m-2\">\n\t\t\t\t{cells.slice(0, 6).map((cell, i) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={cell.id ?? cell.label}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex flex-col gap-1.5 px-3 py-2.5',\n\t\t\t\t\t\t\ti % 3 !== 2 && 'border-r border-border/50',\n\t\t\t\t\t\t\ti < 3 && 'border-b border-border/50',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"truncate uppercase tracking-wider\">\n\t\t\t\t\t\t\t{cell.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Text tag=\"span\" weight=\"bold\" className=\"tabular-nums truncate\">\n\t\t\t\t\t\t\t{cell.value}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<div className=\"mt-auto\">\n\t\t\t\t\t\t\t<ChartFor kind={cell.chart ?? DEFAULT_ORDER[i]} data={cell.data} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nMetricMicroGrid.displayName = 'MetricMicroGrid';\n","/**\n * MetricGradient — vivid full-bleed gradient hero card with embedded area\n * chart. Used at the top of marketing dashboards or analytics overview\n * pages where a single metric earns the most visual weight.\n *\n * Themes (`green` / `purple` / `warm` / `ocean`) drive the gradient palette;\n * the data prop accepts a `readonly MetricDataPoint[]` so consumers can pass\n * named time-series points. Renders the active dot in white and the area\n * fill in a soft white-on-tone gradient for legibility.\n */\nimport { useId } from 'react';\nimport { Area, AreaChart, ResponsiveContainer, Tooltip } from 'recharts';\n\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { MetricTrendChip } from '../atoms/metric-trend-chip';\nimport type { MetricChange, MetricDataPoint } from '../types';\n\nexport type MetricGradientTheme = 'green' | 'purple' | 'warm' | 'ocean';\n\nexport interface MetricGradientProps {\n\ttitle: string;\n\tvalue?: string;\n\tchange?: MetricChange;\n\tdata: readonly MetricDataPoint[];\n\ttheme?: MetricGradientTheme;\n\tsubtitle?: string;\n\tclassName?: string;\n}\n\nconst THEME_BG: Record<MetricGradientTheme, string> = {\n\tgreen: 'bg-gradient-to-br from-emerald-600 via-teal-700 to-emerald-800',\n\tpurple: 'bg-gradient-to-br from-violet-600 via-indigo-700 to-purple-800',\n\twarm: 'bg-gradient-to-br from-orange-500 via-rose-600 to-pink-700',\n\tocean: 'bg-gradient-to-br from-sky-600 via-cyan-700 to-blue-800',\n};\n\ninterface ChartTooltipPayload {\n\tvalue: number;\n\tname: string;\n\tcolor?: string;\n}\n\nfunction ChartTooltip({ active, payload, label }: { active?: boolean; payload?: ChartTooltipPayload[]; label?: string }) {\n\tif (!active || !payload?.length) return null;\n\treturn (\n\t\t<div className={cn('metric-gradient--component', 'rounded-lg bg-foreground/95 px-3 py-2 shadow-lg backdrop-blur-sm')}>\n\t\t\t{!!label && <Text size=\"xxs\" className=\"text-background/60 mb-1\">{label}</Text>}\n\t\t\t{payload.map((entry, idx) => (\n\t\t\t\t<div key={`tt-${idx}`} className=\"flex items-center gap-2\">\n\t\t\t\t\t<div className=\"size-2 rounded-full\" style={{ backgroundColor: entry.color ?? '#fff' }} aria-hidden=\"true\" />\n\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\" className=\"text-background tabular-nums\">\n\t\t\t\t\t\t{typeof entry.value === 'number' ? entry.value.toLocaleString() : entry.value}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\nexport function MetricGradient({\n\ttitle,\n\tvalue,\n\tchange,\n\tdata,\n\ttheme = 'green',\n\tsubtitle,\n\tclassName,\n}: MetricGradientProps) {\n\tconst id = useId();\n\tconst gradientId = `metric-grad-${id.replaceAll(':', '')}`;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'relative overflow-hidden rounded-2xl p-5 text-white shadow-lg ring-1 ring-white/10',\n\t\t\t\tTHEME_BG[theme],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"absolute -right-12 -top-12 size-44 rounded-full bg-white/[0.08] blur-2xl\" aria-hidden=\"true\" />\n\t\t\t<div className=\"absolute -bottom-8 -left-8 size-32 rounded-full bg-white/[0.06] blur-xl\" aria-hidden=\"true\" />\n\n\t\t\t<div className=\"relative flex items-start justify-between gap-3\">\n\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t<Text size=\"xs\" weight=\"medium\" className=\"uppercase tracking-wider text-white/70\">{title}</Text>\n\t\t\t\t\t{!!value && (\n\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\ttag=\"h3\"\n\t\t\t\t\t\t\tclassName=\"mt-1 text-3xl font-bold tabular-nums tracking-tight border-none pb-0 text-white leading-none\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!subtitle && <Text size=\"xs\" className=\"mt-1 text-white/70\">{subtitle}</Text>}\n\t\t\t\t</div>\n\t\t\t\t{!!change && (\n\t\t\t\t\t<MetricTrendChip\n\t\t\t\t\t\tchange={change}\n\t\t\t\t\t\ttrend={change.direction === 'up' ? 'positive' : change.direction === 'down' ? 'negative' : 'neutral'}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tvariant=\"badge\"\n\t\t\t\t\t\tclassName=\"shrink-0 !bg-white/20 !text-white\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<div className=\"relative -mx-1 mt-3 h-24\">\n\t\t\t\t<ResponsiveContainer width=\"100%\" height=\"100%\" initialDimension={{ width: 1, height: 1 }}>\n\t\t\t\t\t<AreaChart data={data as MetricDataPoint[]} margin={{ top: 4, right: 0, bottom: 0, left: 0 }}>\n\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t<linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t\t<stop offset=\"0%\" stopColor=\"white\" stopOpacity={0.3} />\n\t\t\t\t\t\t\t\t<stop offset=\"100%\" stopColor=\"white\" stopOpacity={0} />\n\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t<Tooltip content={<ChartTooltip />} cursor={{ stroke: 'rgba(255,255,255,0.4)', strokeWidth: 1 }} />\n\t\t\t\t\t\t<Area\n\t\t\t\t\t\t\ttype=\"monotone\"\n\t\t\t\t\t\t\tdataKey=\"value\"\n\t\t\t\t\t\t\tstroke=\"rgba(255,255,255,0.7)\"\n\t\t\t\t\t\t\tstrokeWidth={2}\n\t\t\t\t\t\t\tfill={`url(#${gradientId})`}\n\t\t\t\t\t\t\tdot={false}\n\t\t\t\t\t\t\tactiveDot={{ r: 4, strokeWidth: 2, fill: '#fff', stroke: 'rgba(255,255,255,0.7)' }}\n\t\t\t\t\t\t\tisAnimationActive\n\t\t\t\t\t\t\tanimationDuration={800}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</AreaChart>\n\t\t\t\t</ResponsiveContainer>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nMetricGradient.displayName = 'MetricGradient';\n","/**\n * ActivityHeatmap — GitHub-style daily-activity calendar grid. Renders the\n * provided range as Monday-aligned columns with per-day intensity tinted\n * via the success palette. Month labels float above the grid; the legend\n * sits on the trailing edge.\n *\n * The layout uses absolute month labels with a 3-week minimum gap rule\n * so labels don't collide when a month starts mid-week.\n */\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAnalyticsStrings } from '../analytics.strings';\nimport type { ActivityHeatmapDay, ActivityHeatmapProps, ActivityLevel } from './types';\n\nconst LEVEL_COLOR: Record<ActivityLevel, string> = {\n\t0: 'bg-muted',\n\t1: 'bg-success/20',\n\t2: 'bg-success/40',\n\t3: 'bg-success/65',\n\t4: 'bg-success',\n};\n\ninterface BuiltCalendar {\n\tweeks: (ActivityHeatmapDay | null)[][];\n\tmonthLabels: { label: string; weekIndex: number }[];\n}\n\nfunction buildCalendar(\n\tdata: readonly ActivityHeatmapDay[],\n\tmonthNames: readonly string[],\n): BuiltCalendar {\n\tif (data.length === 0) return { weeks: [], monthLabels: [] };\n\n\tconst sorted = [...data].sort((a, b) => a.date.localeCompare(b.date));\n\tconst startDate = new Date(sorted[0].date + 'T00:00:00');\n\tconst endDate = new Date(sorted[sorted.length - 1].date + 'T00:00:00');\n\n\tconst dayOfWeek = startDate.getDay();\n\tconst mondayOffset = dayOfWeek === 0 ? -6 : 1 - dayOfWeek;\n\tconst alignedStart = new Date(startDate);\n\talignedStart.setDate(alignedStart.getDate() + mondayOffset);\n\n\tconst dateMap = new Map<string, ActivityLevel>();\n\tfor (const d of sorted) dateMap.set(d.date, d.level);\n\n\tconst weeks: (ActivityHeatmapDay | null)[][] = [];\n\tconst monthLabels: { label: string; weekIndex: number }[] = [];\n\tlet lastMonth = -1;\n\tlet currentWeek: (ActivityHeatmapDay | null)[] = [];\n\n\tconst cursor = new Date(alignedStart);\n\twhile (cursor <= endDate) {\n\t\tconst dateStr = cursor.toISOString().slice(0, 10);\n\t\tconst dayIdx = (cursor.getDay() + 6) % 7;\n\n\t\tif (dayIdx === 0 && currentWeek.length > 0) {\n\t\t\tweeks.push(currentWeek);\n\t\t\tcurrentWeek = [];\n\t\t}\n\n\t\tconst month = cursor.getMonth();\n\t\tif (month !== lastMonth) {\n\t\t\tconst labelWeekIndex = dayIdx === 0 ? weeks.length : weeks.length + 1;\n\t\t\tconst existing = monthLabels.find((m) => m.weekIndex === labelWeekIndex);\n\t\t\tif (!existing) monthLabels.push({ label: monthNames[month], weekIndex: labelWeekIndex });\n\t\t\tlastMonth = month;\n\t\t}\n\n\t\tconst level = dateMap.get(dateStr) ?? 0;\n\t\tcurrentWeek.push({ date: dateStr, level });\n\t\tcursor.setDate(cursor.getDate() + 1);\n\t}\n\n\tif (currentWeek.length > 0) {\n\t\twhile (currentWeek.length < 7) currentWeek.push(null);\n\t\tweeks.push(currentWeek);\n\t}\n\n\treturn { weeks, monthLabels };\n}\n\nexport function ActivityHeatmap({\n\ttitle,\n\tdescription,\n\tdata,\n\tclassName,\n\tstrings: stringsProp,\n}: ActivityHeatmapProps) {\n\tconst strings = useStrings(defaultAnalyticsStrings, stringsProp);\n\tconst { weeks, monthLabels } = buildCalendar(data, strings.heatmapMonthNames);\n\n\treturn (\n\t\t<SmartCard title={title} description={description} className={cn('activity-heatmap--component', className)}>\n\t\t\t<div className=\"overflow-x-auto\">\n\t\t\t\t<div className=\"relative mb-1\" style={{ paddingLeft: '28px', height: '12px' }}>\n\t\t\t\t\t<div className=\"relative flex\" style={{ width: `${weeks.length * 15}px` }}>\n\t\t\t\t\t\t{monthLabels\n\t\t\t\t\t\t\t.filter((m, idx, arr) => idx === 0 || m.weekIndex - arr[idx - 1].weekIndex >= 3)\n\t\t\t\t\t\t\t.map((m) => (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tkey={`${m.label}-${m.weekIndex}`}\n\t\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName=\"absolute leading-none whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\tstyle={{ left: `${m.weekIndex * 15}px`, top: 0 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{m.label}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"flex gap-0\">\n\t\t\t\t\t<div className=\"mr-1 flex flex-col gap-[3px]\">\n\t\t\t\t\t\t{strings.heatmapDayLabels.map((label, i) => (\n\t\t\t\t\t\t\t<div key={`day-${i}`} className=\"flex h-3 w-6 items-center justify-end\">\n\t\t\t\t\t\t\t\t{!!label && (\n\t\t\t\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"leading-none\">{label}</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"flex gap-[3px]\">\n\t\t\t\t\t\t{weeks.map((week, weekIdx) => (\n\t\t\t\t\t\t\t<div key={`w-${weekIdx}`} className=\"flex flex-col gap-[3px]\">\n\t\t\t\t\t\t\t\t{week.map((day, dayIdx) => {\n\t\t\t\t\t\t\t\t\tconst dayTitle = day ? `${day.date}: Level ${day.level}` : undefined;\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={`d-${weekIdx}-${dayIdx}`}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'size-3 rounded-sm',\n\t\t\t\t\t\t\t\t\t\t\t\tday ? LEVEL_COLOR[day.level] : 'bg-transparent',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\ttitle={dayTitle}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div className=\"mt-4 flex items-center justify-end gap-1.5\">\n\t\t\t\t<Text size=\"xxs\" type=\"secondary\">{strings.heatmapLegendLess}</Text>\n\t\t\t\t{([0, 1, 2, 3, 4] as ActivityLevel[]).map((level) => (\n\t\t\t\t\t<div key={`legend-${level}`} className={cn('size-3 rounded-sm', LEVEL_COLOR[level])} />\n\t\t\t\t))}\n\t\t\t\t<Text size=\"xxs\" type=\"secondary\">{strings.heatmapLegendMore}</Text>\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nActivityHeatmap.displayName = 'ActivityHeatmap';\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { useStrings as e } from "../../../lib/strings.js";
2
2
  import { cn as t } from "../../../lib/utils.js";
3
3
  import { t as n } from "../../../_shared/text-DIxMTECE.js";
4
- import { o as r } from "../../../_shared/typography-BtPQBvSm.js";
5
- import { t as i } from "../../../_shared/button-Ck2qS42n.js";
6
- import { t as a } from "../../../_shared/smart-card-hJ01usWt.js";
7
- import { i as o, n as s, r as c, t as l } from "../../../_shared/format-BlVEsPyT.js";
4
+ import { t as r } from "../../../_shared/heading-BprqyzDs.js";
5
+ import { t as i } from "../../../_shared/button-ChCkwoOD.js";
6
+ import { t as a } from "../../../_shared/smart-card-MT6JjkoI.js";
7
+ import { i as o, n as s, r as c, t as l } from "../../../_shared/format-CP65h1vK.js";
8
8
  import { useId as u, useMemo as d } from "react";
9
9
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
10
10
  import { ArrowDown as h, ArrowRight as g, ArrowUp as _, ArrowUpRight as v, Calendar as y, Equal as b, Minus as x } from "lucide-react";