admin-ui-starter-kit 0.6.5 → 0.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1204) hide show
  1. package/.agents/skills/component-library-rules/references/components/base__cards.md +7 -8
  2. package/.agents/skills/component-library-rules/references/components/base__carousel.md +4 -4
  3. package/.agents/skills/component-library-rules/references/components/base__combobox.md +1 -1
  4. package/.agents/skills/component-library-rules/references/components/base__css-variables.md +2 -1
  5. package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +1 -1
  6. package/.agents/skills/component-library-rules/references/components/base__table.md +32 -11
  7. package/.agents/skills/component-library-rules/references/components/base__typography.md +1 -1
  8. package/.agents/skills/component-library-rules/references/components/composed__metadata-list.md +3 -3
  9. package/.agents/skills/component-library-rules/references/components/features__activities.md +1 -1
  10. package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +6 -6
  11. package/.agents/skills/component-library-rules/references/components/features__metrics-overview.md +3 -3
  12. package/.agents/skills/component-library-rules/references/components/features__overlays.md +2 -2
  13. package/.agents/skills/component-library-rules/references/components/features__products.md +1 -1
  14. package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +1 -1
  15. package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +3 -3
  16. package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +2 -2
  17. package/dist/_shared/accordion-CxjH2WZG.js +135 -0
  18. package/dist/_shared/accordion-CxjH2WZG.js.map +1 -0
  19. package/dist/_shared/accordion-mTdJmy23.cjs +2 -0
  20. package/dist/_shared/accordion-mTdJmy23.cjs.map +1 -0
  21. package/dist/_shared/action-menu-BrHF4nss.cjs +2 -0
  22. package/dist/_shared/action-menu-BrHF4nss.cjs.map +1 -0
  23. package/dist/_shared/action-menu-Crn22LKo.js +96 -0
  24. package/dist/_shared/action-menu-Crn22LKo.js.map +1 -0
  25. package/dist/_shared/ai-artifact-CS2Pv-bu.js +1099 -0
  26. package/dist/_shared/ai-artifact-CS2Pv-bu.js.map +1 -0
  27. package/dist/_shared/ai-artifact-R4bxz5Iq.cjs +3 -0
  28. package/dist/_shared/ai-artifact-R4bxz5Iq.cjs.map +1 -0
  29. package/dist/_shared/alert-BisCSsOE.cjs +2 -0
  30. package/dist/_shared/alert-BisCSsOE.cjs.map +1 -0
  31. package/dist/_shared/alert-D23Q7I0W.js +81 -0
  32. package/dist/_shared/alert-D23Q7I0W.js.map +1 -0
  33. package/dist/_shared/app-shell-BZQJfTkf.cjs +2 -0
  34. package/dist/_shared/app-shell-BZQJfTkf.cjs.map +1 -0
  35. package/dist/_shared/app-shell-Da6GHxTZ.js +69 -0
  36. package/dist/_shared/app-shell-Da6GHxTZ.js.map +1 -0
  37. package/dist/_shared/auth-BV9Daibu.cjs +2 -0
  38. package/dist/_shared/auth-BV9Daibu.cjs.map +1 -0
  39. package/dist/_shared/auth-DACpcTnL.js +643 -0
  40. package/dist/_shared/auth-DACpcTnL.js.map +1 -0
  41. package/dist/_shared/badge-B4oBB5BJ.js +110 -0
  42. package/dist/_shared/badge-B4oBB5BJ.js.map +1 -0
  43. package/dist/_shared/badge-DvUA9Pr2.cjs +2 -0
  44. package/dist/_shared/badge-DvUA9Pr2.cjs.map +1 -0
  45. package/dist/_shared/breadcrumbs-CuT0YIfo.js +105 -0
  46. package/dist/_shared/breadcrumbs-CuT0YIfo.js.map +1 -0
  47. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs +2 -0
  48. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs.map +1 -0
  49. package/dist/_shared/button-BMiPFJIb.cjs +2 -0
  50. package/dist/_shared/button-BMiPFJIb.cjs.map +1 -0
  51. package/dist/_shared/button-vv59_uS_.js +189 -0
  52. package/dist/_shared/button-vv59_uS_.js.map +1 -0
  53. package/dist/_shared/buttons-CvqIMv3I.js +137 -0
  54. package/dist/_shared/buttons-CvqIMv3I.js.map +1 -0
  55. package/dist/_shared/buttons-tCkWktN3.cjs +2 -0
  56. package/dist/_shared/buttons-tCkWktN3.cjs.map +1 -0
  57. package/dist/_shared/card-radio-group-BL--IyPB.js +150 -0
  58. package/dist/_shared/card-radio-group-BL--IyPB.js.map +1 -0
  59. package/dist/_shared/card-radio-group-Cl5ptR1d.cjs +2 -0
  60. package/dist/_shared/card-radio-group-Cl5ptR1d.cjs.map +1 -0
  61. package/dist/_shared/cards-CMNXFo3Y.js +354 -0
  62. package/dist/_shared/cards-CMNXFo3Y.js.map +1 -0
  63. package/dist/_shared/cards-DQN9fcwo.cjs +2 -0
  64. package/dist/_shared/cards-DQN9fcwo.cjs.map +1 -0
  65. package/dist/_shared/combobox-D0avSXIB.cjs +2 -0
  66. package/dist/_shared/combobox-D0avSXIB.cjs.map +1 -0
  67. package/dist/_shared/combobox-Df0srISK.js +954 -0
  68. package/dist/_shared/combobox-Df0srISK.js.map +1 -0
  69. package/dist/_shared/command-B5BpMgBT.js +39 -0
  70. package/dist/_shared/command-B5BpMgBT.js.map +1 -0
  71. package/dist/_shared/command-en62SpQ7.cjs +2 -0
  72. package/dist/_shared/command-en62SpQ7.cjs.map +1 -0
  73. package/dist/_shared/comments-CfkortDW.js +952 -0
  74. package/dist/_shared/comments-CfkortDW.js.map +1 -0
  75. package/dist/_shared/comments-yVd7QMOu.cjs +2 -0
  76. package/dist/_shared/comments-yVd7QMOu.cjs.map +1 -0
  77. package/dist/_shared/copyable-Cn7tRGL5.js +38 -0
  78. package/dist/_shared/copyable-Cn7tRGL5.js.map +1 -0
  79. package/dist/_shared/copyable-CoKTxMSP.cjs +2 -0
  80. package/dist/_shared/copyable-CoKTxMSP.cjs.map +1 -0
  81. package/dist/_shared/data-display-BG7CD164.js +1873 -0
  82. package/dist/_shared/data-display-BG7CD164.js.map +1 -0
  83. package/dist/_shared/data-display-CXVoX3la.cjs +2 -0
  84. package/dist/_shared/data-display-CXVoX3la.cjs.map +1 -0
  85. package/dist/_shared/date-picker-Bf-nnyi-.js +1361 -0
  86. package/dist/_shared/date-picker-Bf-nnyi-.js.map +1 -0
  87. package/dist/_shared/date-picker-Cox4PAUt.cjs +2 -0
  88. package/dist/_shared/date-picker-Cox4PAUt.cjs.map +1 -0
  89. package/dist/_shared/date-pickers-DbN4q0dn.cjs +2 -0
  90. package/dist/_shared/date-pickers-DbN4q0dn.cjs.map +1 -0
  91. package/dist/_shared/date-pickers-DvrOCP-s.js +329 -0
  92. package/dist/_shared/date-pickers-DvrOCP-s.js.map +1 -0
  93. package/dist/_shared/display-BQijMo37.js +986 -0
  94. package/dist/_shared/display-BQijMo37.js.map +1 -0
  95. package/dist/_shared/display-C0ut-Lew.cjs +2 -0
  96. package/dist/_shared/display-C0ut-Lew.cjs.map +1 -0
  97. package/dist/_shared/form-sizing-DJus3nK3.cjs +2 -0
  98. package/dist/_shared/form-sizing-DJus3nK3.cjs.map +1 -0
  99. package/dist/_shared/form-sizing-DWjJsQSR.js +42 -0
  100. package/dist/_shared/form-sizing-DWjJsQSR.js.map +1 -0
  101. package/dist/_shared/forms-BjG7QIb1.cjs +2 -0
  102. package/dist/_shared/forms-BjG7QIb1.cjs.map +1 -0
  103. package/dist/_shared/forms-DljDdyXR.js +3533 -0
  104. package/dist/_shared/forms-DljDdyXR.js.map +1 -0
  105. package/dist/_shared/header-BpFJRINR.cjs +2 -0
  106. package/dist/_shared/header-BpFJRINR.cjs.map +1 -0
  107. package/dist/_shared/header-CKqQF4_r.js +447 -0
  108. package/dist/_shared/header-CKqQF4_r.js.map +1 -0
  109. package/dist/_shared/hooks-DcCkbP1F.js +95 -0
  110. package/dist/_shared/hooks-DcCkbP1F.js.map +1 -0
  111. package/dist/_shared/hooks-RkLytuGj.cjs +2 -0
  112. package/dist/_shared/hooks-RkLytuGj.cjs.map +1 -0
  113. package/dist/_shared/input-Cin0qpjj.js +182 -0
  114. package/dist/_shared/input-Cin0qpjj.js.map +1 -0
  115. package/dist/_shared/input-uuWeiagN.cjs +2 -0
  116. package/dist/_shared/input-uuWeiagN.cjs.map +1 -0
  117. package/dist/_shared/item-CIlSaQg8.js +226 -0
  118. package/dist/_shared/item-CIlSaQg8.js.map +1 -0
  119. package/dist/_shared/item-CSk9Y2qB.cjs +2 -0
  120. package/dist/_shared/item-CSk9Y2qB.cjs.map +1 -0
  121. package/dist/_shared/layout-Cun0HPL4.cjs +2 -0
  122. package/dist/_shared/layout-Cun0HPL4.cjs.map +1 -0
  123. package/dist/_shared/layout-HrU5gwH3.js +261 -0
  124. package/dist/_shared/layout-HrU5gwH3.js.map +1 -0
  125. package/dist/_shared/mentions-BqN82Fon.cjs +2 -0
  126. package/dist/_shared/mentions-BqN82Fon.cjs.map +1 -0
  127. package/dist/_shared/mentions-DV0FT1Th.js +506 -0
  128. package/dist/_shared/mentions-DV0FT1Th.js.map +1 -0
  129. package/dist/_shared/money-display-D5FCRhzB.cjs +2 -0
  130. package/dist/_shared/money-display-D5FCRhzB.cjs.map +1 -0
  131. package/dist/_shared/money-display-FcCAQDCz.js +198 -0
  132. package/dist/_shared/money-display-FcCAQDCz.js.map +1 -0
  133. package/dist/_shared/navigation-CI_Dd8jM.js +436 -0
  134. package/dist/_shared/navigation-CI_Dd8jM.js.map +1 -0
  135. package/dist/_shared/navigation-DUGhCPzJ.cjs +2 -0
  136. package/dist/_shared/navigation-DUGhCPzJ.cjs.map +1 -0
  137. package/dist/_shared/overlays-BRLemLSn.cjs +2 -0
  138. package/dist/_shared/overlays-BRLemLSn.cjs.map +1 -0
  139. package/dist/_shared/overlays-Bef7VNYY.js +735 -0
  140. package/dist/_shared/overlays-Bef7VNYY.js.map +1 -0
  141. package/dist/_shared/popover-menu-CAjhhTfX.js +93 -0
  142. package/dist/_shared/popover-menu-CAjhhTfX.js.map +1 -0
  143. package/dist/_shared/popover-menu-DlkRgOkR.cjs +2 -0
  144. package/dist/_shared/popover-menu-DlkRgOkR.cjs.map +1 -0
  145. package/dist/_shared/rich-text-editor-Bpt3r3J3.js +620 -0
  146. package/dist/_shared/rich-text-editor-Bpt3r3J3.js.map +1 -0
  147. package/dist/_shared/rich-text-editor-DUTX7kBa.cjs +2 -0
  148. package/dist/_shared/rich-text-editor-DUTX7kBa.cjs.map +1 -0
  149. package/dist/_shared/settings-CNT4-6u8.cjs +2 -0
  150. package/dist/_shared/settings-CNT4-6u8.cjs.map +1 -0
  151. package/dist/_shared/settings-CRP6409J.js +143 -0
  152. package/dist/_shared/settings-CRP6409J.js.map +1 -0
  153. package/dist/_shared/sidebar-B0LcBrfI.cjs +2 -0
  154. package/dist/_shared/sidebar-B0LcBrfI.cjs.map +1 -0
  155. package/dist/_shared/sidebar-Bc6JsOTD.js +548 -0
  156. package/dist/_shared/sidebar-Bc6JsOTD.js.map +1 -0
  157. package/dist/_shared/spinner-CVG62sGs.js +67 -0
  158. package/dist/_shared/spinner-CVG62sGs.js.map +1 -0
  159. package/dist/_shared/spinner-VjdonFU2.cjs +2 -0
  160. package/dist/_shared/spinner-VjdonFU2.cjs.map +1 -0
  161. package/dist/_shared/table-_yujELN3.js +1377 -0
  162. package/dist/_shared/table-_yujELN3.js.map +1 -0
  163. package/dist/_shared/table-iV8H1AE0.cjs +2 -0
  164. package/dist/_shared/table-iV8H1AE0.cjs.map +1 -0
  165. package/dist/_shared/textarea-B4zbbqff.cjs +2 -0
  166. package/dist/_shared/textarea-B4zbbqff.cjs.map +1 -0
  167. package/dist/_shared/textarea-Dp0RU-rc.js +118 -0
  168. package/dist/_shared/textarea-Dp0RU-rc.js.map +1 -0
  169. package/dist/_shared/typography-DXvCmE8w.js +201 -0
  170. package/dist/_shared/typography-DXvCmE8w.js.map +1 -0
  171. package/dist/_shared/typography-pzCKaFOc.cjs +2 -0
  172. package/dist/_shared/typography-pzCKaFOc.cjs.map +1 -0
  173. package/dist/_shared/workspace-C3U57t2a.cjs +2 -0
  174. package/dist/_shared/workspace-C3U57t2a.cjs.map +1 -0
  175. package/dist/_shared/workspace-Db--ow3r.js +357 -0
  176. package/dist/_shared/workspace-Db--ow3r.js.map +1 -0
  177. package/dist/components/base/accordion/index.cjs +1 -1
  178. package/dist/components/base/accordion/index.js +1 -1
  179. package/dist/components/base/badge/badge.d.ts.map +1 -1
  180. package/dist/components/base/badge/index.cjs +1 -1
  181. package/dist/components/base/badge/index.js +1 -1
  182. package/dist/components/base/buttons/index.cjs +1 -1
  183. package/dist/components/base/buttons/index.js +2 -2
  184. package/dist/components/base/cards/index.cjs +1 -1
  185. package/dist/components/base/cards/index.js +1 -1
  186. package/dist/components/base/cards/smart-card.types.d.ts +3 -3
  187. package/dist/components/base/carousel/index.cjs +1 -1
  188. package/dist/components/base/carousel/index.js +1 -1
  189. package/dist/components/base/combobox/index.cjs +1 -1
  190. package/dist/components/base/combobox/index.js +1 -1
  191. package/dist/components/base/command/index.cjs +1 -1
  192. package/dist/components/base/command/index.js +1 -1
  193. package/dist/components/base/copyable/index.cjs +1 -1
  194. package/dist/components/base/copyable/index.js +1 -1
  195. package/dist/components/base/currency/index.cjs +1 -1
  196. package/dist/components/base/currency/index.js +1 -1
  197. package/dist/components/base/date-pickers/index.cjs +1 -1
  198. package/dist/components/base/date-pickers/index.js +2 -2
  199. package/dist/components/base/display/chart.cjs +1 -1
  200. package/dist/components/base/display/chart.js +1 -1
  201. package/dist/components/base/display/index.cjs +1 -1
  202. package/dist/components/base/display/index.js +3 -3
  203. package/dist/components/base/event-calendar/index.cjs +1 -1
  204. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  205. package/dist/components/base/event-calendar/index.js +6 -6
  206. package/dist/components/base/event-calendar/index.js.map +1 -1
  207. package/dist/components/base/forms/index.cjs +1 -1
  208. package/dist/components/base/forms/index.js +5 -5
  209. package/dist/components/base/item/index.cjs +1 -1
  210. package/dist/components/base/item/index.js +1 -1
  211. package/dist/components/base/map/index.cjs +1 -1
  212. package/dist/components/base/map/index.js +2 -2
  213. package/dist/components/base/navigation/index.cjs +1 -1
  214. package/dist/components/base/navigation/index.js +3 -3
  215. package/dist/components/base/popover-menu/index.cjs +1 -1
  216. package/dist/components/base/popover-menu/index.js +1 -1
  217. package/dist/components/base/spinner/index.cjs +1 -1
  218. package/dist/components/base/spinner/index.js +1 -1
  219. package/dist/components/base/table/data-table.d.ts.map +1 -1
  220. package/dist/components/base/table/index.cjs +1 -1
  221. package/dist/components/base/table/index.js +1 -1
  222. package/dist/components/base/table/table-header.d.ts.map +1 -1
  223. package/dist/components/composed/admin/index.cjs +1 -1
  224. package/dist/components/composed/admin/index.cjs.map +1 -1
  225. package/dist/components/composed/admin/index.js +13 -13
  226. package/dist/components/composed/admin/index.js.map +1 -1
  227. package/dist/components/composed/ai/index.cjs +1 -1
  228. package/dist/components/composed/ai/index.cjs.map +1 -1
  229. package/dist/components/composed/ai/index.js +25 -25
  230. package/dist/components/composed/ai/index.js.map +1 -1
  231. package/dist/components/composed/analytics/index.cjs +1 -1
  232. package/dist/components/composed/analytics/index.cjs.map +1 -1
  233. package/dist/components/composed/analytics/index.js +26 -26
  234. package/dist/components/composed/analytics/index.js.map +1 -1
  235. package/dist/components/composed/cards/index.cjs +1 -1
  236. package/dist/components/composed/cards/index.cjs.map +1 -1
  237. package/dist/components/composed/cards/index.js +15 -15
  238. package/dist/components/composed/cards/index.js.map +1 -1
  239. package/dist/components/composed/commerce/index.cjs +1 -1
  240. package/dist/components/composed/commerce/index.cjs.map +1 -1
  241. package/dist/components/composed/commerce/index.js +28 -28
  242. package/dist/components/composed/commerce/index.js.map +1 -1
  243. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  244. package/dist/components/composed/dark-surfaces/index.js +4 -4
  245. package/dist/components/composed/data-display/index.cjs +1 -1
  246. package/dist/components/composed/data-display/index.js +1 -1
  247. package/dist/components/composed/data-display/metadata/metadata-list.d.ts.map +1 -1
  248. package/dist/components/composed/navigation/index.cjs +1 -1
  249. package/dist/components/composed/navigation/index.cjs.map +1 -1
  250. package/dist/components/composed/navigation/index.js +15 -15
  251. package/dist/components/composed/navigation/index.js.map +1 -1
  252. package/dist/components/composed/onboarding/index.cjs +1 -1
  253. package/dist/components/composed/onboarding/index.js +3 -3
  254. package/dist/components/composed/timelines/index.cjs +1 -1
  255. package/dist/components/composed/timelines/index.cjs.map +1 -1
  256. package/dist/components/composed/timelines/index.js +10 -10
  257. package/dist/components/composed/timelines/index.js.map +1 -1
  258. package/dist/components/features/activities/index.cjs +1 -1
  259. package/dist/components/features/activities/index.cjs.map +1 -1
  260. package/dist/components/features/activities/index.js +9 -9
  261. package/dist/components/features/activities/index.js.map +1 -1
  262. package/dist/components/features/ai-chat/index.cjs +2 -2
  263. package/dist/components/features/ai-chat/index.cjs.map +1 -1
  264. package/dist/components/features/ai-chat/index.js +8 -8
  265. package/dist/components/features/ai-chat/index.js.map +1 -1
  266. package/dist/components/features/card/index.cjs +1 -1
  267. package/dist/components/features/card/index.js +4 -4
  268. package/dist/components/features/comments/index.cjs +1 -1
  269. package/dist/components/features/comments/index.js +2 -2
  270. package/dist/components/features/data-view/index.cjs +1 -1
  271. package/dist/components/features/data-view/index.cjs.map +1 -1
  272. package/dist/components/features/data-view/index.js +3 -3
  273. package/dist/components/features/data-view/index.js.map +1 -1
  274. package/dist/components/features/event-log/index.cjs +1 -1
  275. package/dist/components/features/event-log/index.js +4 -4
  276. package/dist/components/features/filters/index.cjs +1 -1
  277. package/dist/components/features/filters/index.cjs.map +1 -1
  278. package/dist/components/features/filters/index.js +11 -11
  279. package/dist/components/features/filters/index.js.map +1 -1
  280. package/dist/components/features/global-search/index.cjs +1 -1
  281. package/dist/components/features/global-search/index.cjs.map +1 -1
  282. package/dist/components/features/global-search/index.js +14 -14
  283. package/dist/components/features/global-search/index.js.map +1 -1
  284. package/dist/components/features/kanban/index.cjs +1 -1
  285. package/dist/components/features/kanban/index.js +3 -3
  286. package/dist/components/features/media-library/index.cjs +1 -1
  287. package/dist/components/features/media-library/index.cjs.map +1 -1
  288. package/dist/components/features/media-library/index.js +23 -23
  289. package/dist/components/features/media-library/index.js.map +1 -1
  290. package/dist/components/features/mentions/index.cjs +1 -1
  291. package/dist/components/features/mentions/index.js +1 -1
  292. package/dist/components/features/overlays/index.cjs +1 -1
  293. package/dist/components/features/overlays/index.js +1 -1
  294. package/dist/components/features/products/index.cjs +1 -1
  295. package/dist/components/features/products/index.cjs.map +1 -1
  296. package/dist/components/features/products/index.js +14 -14
  297. package/dist/components/features/products/index.js.map +1 -1
  298. package/dist/components/features/resource/index.cjs +1 -1
  299. package/dist/components/features/resource/index.cjs.map +1 -1
  300. package/dist/components/features/resource/index.js +5 -5
  301. package/dist/components/features/resource/index.js.map +1 -1
  302. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  303. package/dist/components/features/rich-text-editor/index.js +1 -1
  304. package/dist/components/features/schema-form/index.cjs +1 -1
  305. package/dist/components/features/schema-form/index.js +8 -8
  306. package/dist/components/features/suggestions/index.cjs +1 -1
  307. package/dist/components/features/suggestions/index.js +1 -1
  308. package/dist/components/features/sync/index.cjs +1 -1
  309. package/dist/components/features/sync/index.js +2 -2
  310. package/dist/components/layout/app-shell/index.cjs +1 -1
  311. package/dist/components/layout/app-shell/index.js +1 -1
  312. package/dist/components/layout/auth/index.cjs +1 -1
  313. package/dist/components/layout/auth/index.js +1 -1
  314. package/dist/components/layout/header/index.cjs +1 -1
  315. package/dist/components/layout/header/index.js +1 -1
  316. package/dist/components/layout/hooks/index.cjs +1 -1
  317. package/dist/components/layout/hooks/index.js +1 -1
  318. package/dist/components/layout/index.cjs +1 -1
  319. package/dist/components/layout/index.js +8 -8
  320. package/dist/components/layout/page/index.cjs +1 -1
  321. package/dist/components/layout/page/index.js +1 -1
  322. package/dist/components/layout/settings/index.cjs +1 -1
  323. package/dist/components/layout/settings/index.js +1 -1
  324. package/dist/components/layout/sidebar/index.cjs +1 -1
  325. package/dist/components/layout/sidebar/index.js +2 -2
  326. package/dist/components/layout/workspace/index.cjs +1 -1
  327. package/dist/components/layout/workspace/index.js +1 -1
  328. package/dist/components/typography/index.cjs +1 -1
  329. package/dist/components/typography/index.js +1 -1
  330. package/dist/services/actions/index.cjs +1 -1
  331. package/dist/services/actions/index.js +1 -1
  332. package/dist/showcase/assets/AreaChart-DtVzijR8.js +6 -0
  333. package/dist/showcase/assets/CompositeItem-SL6R0H3r.js +1 -0
  334. package/dist/showcase/assets/CompositeRoot-CTygKc2d.js +1 -0
  335. package/dist/showcase/assets/DialogTrigger-m2m9VdXk.js +1 -0
  336. package/dist/showcase/assets/LabelableContext-D6DcOg5I.js +1 -0
  337. package/dist/showcase/assets/PreviewLayout-CHW8F5uE.js +1 -0
  338. package/dist/showcase/assets/RadioGroup-BAOoU1eO.js +1 -0
  339. package/dist/showcase/assets/ScrollAreaCorner-CrCCP65t.js +1 -0
  340. package/dist/showcase/assets/Separator-DMs71Vib.js +1 -0
  341. package/dist/showcase/assets/ToolbarRootContext-DWKxsCxT.js +1 -0
  342. package/dist/showcase/assets/accordion-Clw5XNXP.js +171 -0
  343. package/dist/showcase/assets/accordion-variants-jiwKaPjE.js +1 -0
  344. package/dist/showcase/assets/action-menu-CW8zR6Ne.js +1 -0
  345. package/dist/showcase/assets/actions-Cf7vl3u0.js +310 -0
  346. package/dist/showcase/assets/activities-CyI5sJuS.js +500 -0
  347. package/dist/showcase/assets/activities-feed-card-Gv-Y4BBq.js +1 -0
  348. package/dist/showcase/assets/admin-CQVbTxGD.js +140 -0
  349. package/dist/showcase/assets/ai-Bkp2BY_z.js +207 -0
  350. package/dist/showcase/assets/ai-artifact-Cf1vEdVD.js +2 -0
  351. package/dist/showcase/assets/ai-chat-Bs3x6cK3.js +568 -0
  352. package/dist/showcase/assets/ai-elements-VbMUV2-i.js +387 -0
  353. package/dist/showcase/assets/ai-tool-call-BQYg4QB_.js +1 -0
  354. package/dist/showcase/assets/alert-BUmpNcXV.js +1 -0
  355. package/dist/showcase/assets/alert-CWPNW7eb.js +93 -0
  356. package/dist/showcase/assets/alert-nUwhk3AB.js +62 -0
  357. package/dist/showcase/assets/api-key-list-B1qVywOP.js +73 -0
  358. package/dist/showcase/assets/api-key-list-BI2FGbzV.js +1 -0
  359. package/dist/showcase/assets/app-sidebar-B35a8HWK.js +1 -0
  360. package/dist/showcase/assets/arrow-down-C1w0M8tE.js +1 -0
  361. package/dist/showcase/assets/arrow-left-DtILDtAv.js +1 -0
  362. package/dist/showcase/assets/arrow-right-TnZMfDbP.js +1 -0
  363. package/dist/showcase/assets/arrow-up-BX-KDIDB.js +1 -0
  364. package/dist/showcase/assets/arrow-up-right-CrnWqXwJ.js +1 -0
  365. package/dist/showcase/assets/avatar-C5YI0roK.js +67 -0
  366. package/dist/showcase/assets/avatar-DsnH-Xmz.js +1 -0
  367. package/dist/showcase/assets/avatar-S4vMi7Be.js +57 -0
  368. package/dist/showcase/assets/avatar-q4wqX6yD.js +1 -0
  369. package/dist/showcase/assets/badge-DJacF8-J.js +31 -0
  370. package/dist/showcase/assets/badge-check-DDJtQHcD.js +1 -0
  371. package/dist/showcase/assets/bell-DiXXE8YI.js +1 -0
  372. package/dist/showcase/assets/bot-bONqc_7j.js +1 -0
  373. package/dist/showcase/assets/box-lhUq3Chj.js +1 -0
  374. package/dist/showcase/assets/braces-IKXiJgb3.js +1 -0
  375. package/dist/showcase/assets/brain-DcXlhbJZ.js +1 -0
  376. package/dist/showcase/assets/brand-CramZg2-.js +36 -0
  377. package/dist/showcase/assets/breadcrumb-BL7UjlLh.js +1 -0
  378. package/dist/showcase/assets/breadcrumb-CZRbcf09.js +52 -0
  379. package/dist/showcase/assets/breadcrumbs-DJzvSt_Z.js +1 -0
  380. package/dist/showcase/assets/briefcase-CQQ0m97G.js +1 -0
  381. package/dist/showcase/assets/building-2-BkQcv8WR.js +1 -0
  382. package/dist/showcase/assets/button-K7M0irWq.js +44 -0
  383. package/dist/showcase/assets/button-group-KCGa38c8.js +1 -0
  384. package/dist/showcase/assets/buttons-CvyBMRD6.js +272 -0
  385. package/dist/showcase/assets/calendar-BJHjhWQX.js +1 -0
  386. package/dist/showcase/assets/calendar-ChMVRsNC.js +16 -0
  387. package/dist/showcase/assets/calendar-days-BgkRJVxQ.js +1 -0
  388. package/dist/showcase/assets/calendar-xpHhfGnq.js +1 -0
  389. package/dist/showcase/assets/camera-C67freYi.js +1 -0
  390. package/dist/showcase/assets/card-CfOqXMVz.js +188 -0
  391. package/dist/showcase/assets/card-bLjedjT5.js +1 -0
  392. package/dist/showcase/assets/card-primitives-FUPmQCsu.js +1 -0
  393. package/dist/showcase/assets/card-radio-group-D_QNJ2Hm.js +1 -0
  394. package/dist/showcase/assets/cards-yHZa0kEf.js +353 -0
  395. package/dist/showcase/assets/carousel-DG1cKry4.js +449 -0
  396. package/dist/showcase/assets/cell-renderers-qfJ-7alN.js +1 -0
  397. package/dist/showcase/assets/chart-B_yVfbWJ.js +358 -0
  398. package/dist/showcase/assets/chart-column-CYrVWmMk.js +1 -0
  399. package/dist/showcase/assets/checkbox-NW6EcvtD.js +1 -0
  400. package/dist/showcase/assets/checkbox-pA_L1P-f.js +1 -0
  401. package/dist/showcase/assets/chevron-down-DLrHjdQ6.js +1 -0
  402. package/dist/showcase/assets/chevron-left-B_NQOEWI.js +1 -0
  403. package/dist/showcase/assets/chevron-up-6hst2jwR.js +1 -0
  404. package/dist/showcase/assets/chevrons-up-down-C_pj9oOa.js +1 -0
  405. package/dist/showcase/assets/circle-Cw9qV72m.js +1 -0
  406. package/dist/showcase/assets/circle-alert-D3Vcma6L.js +1 -0
  407. package/dist/showcase/assets/circle-check-DdjJpGc9.js +1 -0
  408. package/dist/showcase/assets/circle-check-big-Dnq-jwtv.js +1 -0
  409. package/dist/showcase/assets/circle-dot-DN8DFgIP.js +1 -0
  410. package/dist/showcase/assets/circle-question-mark-Dzgiv4oS.js +1 -0
  411. package/dist/showcase/assets/circle-x-BzTSkndC.js +1 -0
  412. package/dist/showcase/assets/clock-3-CVwHXCmo.js +1 -0
  413. package/dist/showcase/assets/clock-BIJ9p953.js +1 -0
  414. package/dist/showcase/assets/code-xml-DrU5ziCA.js +1 -0
  415. package/dist/showcase/assets/collapsible-7rdCo71k.js +27 -0
  416. package/dist/showcase/assets/collapsible-DCcTSlEH.js +1 -0
  417. package/dist/showcase/assets/combobox-mx8o5sV1.js +685 -0
  418. package/dist/showcase/assets/command-CKJDGdA9.js +1 -0
  419. package/dist/showcase/assets/command-CzGLPzoO.js +1 -0
  420. package/dist/showcase/assets/comment-composer-CSoEIapl.js +1 -0
  421. package/dist/showcase/assets/comment-item-pjaH53iB.js +1 -0
  422. package/dist/showcase/assets/comments-_ccotzWA.js +357 -0
  423. package/dist/showcase/assets/commerce-BuiQiRsf.js +267 -0
  424. package/dist/showcase/assets/composite-Bghohd0p.js +1 -0
  425. package/dist/showcase/assets/contact-card-CqM2uz_w.js +65 -0
  426. package/dist/showcase/assets/content-container-fC4z98GI.js +1 -0
  427. package/dist/showcase/assets/copyable-BMQK8sID.js +1 -0
  428. package/dist/showcase/assets/copyable-DVR2FAa0.js +96 -0
  429. package/dist/showcase/assets/course-card-Cku2z18g.js +77 -0
  430. package/dist/showcase/assets/cpu-A072t3kq.js +1 -0
  431. package/dist/showcase/assets/credit-card-BGwhx9Zo.js +1 -0
  432. package/dist/showcase/assets/css-variables-BAW_VrGk.js +1205 -0
  433. package/dist/showcase/assets/currency-Da3C0Uzb.js +149 -0
  434. package/dist/showcase/assets/dark-surfaces-BHYLEj80.js +90 -0
  435. package/dist/showcase/assets/data-view--EAYihh0.js +124 -0
  436. package/dist/showcase/assets/data-view-BAMwKzZO.js +4 -0
  437. package/dist/showcase/assets/database-C489WIbr.js +1 -0
  438. package/dist/showcase/assets/date-block-DuNaPSBU.js +1 -0
  439. package/dist/showcase/assets/date-picker-Dq-9L64y.js +1 -0
  440. package/dist/showcase/assets/date-pickers-D0ReMKc9.js +73 -0
  441. package/dist/showcase/assets/dense-info-CXwjqQB1.js +106 -0
  442. package/dist/showcase/assets/design-system-consistency-CGoKv0Vf.js +264 -0
  443. package/dist/showcase/assets/dialog-DIrJcAzq.js +1 -0
  444. package/dist/showcase/assets/dialog-O45UwQJs.js +1 -0
  445. package/dist/showcase/assets/display-utilities-VKOARJyC.js +267 -0
  446. package/dist/showcase/assets/dist-BavkTE-I.js +1 -0
  447. package/dist/showcase/assets/dist-DPxPKIgU.js +45 -0
  448. package/dist/showcase/assets/dollar-sign-CH2fcyek.js +1 -0
  449. package/dist/showcase/assets/download-whAw79X4.js +1 -0
  450. package/dist/showcase/assets/dropdown-menu-PVKwhWds.js +1 -0
  451. package/dist/showcase/assets/dropzone-B9sc8Mwa.js +1 -0
  452. package/dist/showcase/assets/earth-BpkE9LMh.js +1 -0
  453. package/dist/showcase/assets/ellipsis-CEVdIbhD.js +1 -0
  454. package/dist/showcase/assets/ellipsis-vertical-CBIvtUVz.js +1 -0
  455. package/dist/showcase/assets/empty-Dp1eCMIl.js +1 -0
  456. package/dist/showcase/assets/empty-item--dZz4VlJ.js +49 -0
  457. package/dist/showcase/assets/empty-state-ZOiE-hWY.js +190 -0
  458. package/dist/showcase/assets/empty-state-dsivN4CA.js +1 -0
  459. package/dist/showcase/assets/enhanced-activities-BpzUxaof.js +357 -0
  460. package/dist/showcase/assets/enhanced-combobox-D71BOuiX.js +1 -0
  461. package/dist/showcase/assets/esm-DT-TXPCJ.js +2 -0
  462. package/dist/showcase/assets/event-calendar-aVpAFZFq.js +138 -0
  463. package/dist/showcase/assets/event-log-DVcvyQ-P.js +330 -0
  464. package/dist/showcase/assets/example-CzbL5xoH.js +1 -0
  465. package/dist/showcase/assets/external-link-BaLE1QE5.js +1 -0
  466. package/dist/showcase/assets/eye-Dq0mLKrs.js +1 -0
  467. package/dist/showcase/assets/feature-announcement-sWKBC2fs.js +34 -0
  468. package/dist/showcase/assets/file-CgW3NvCL.js +1 -0
  469. package/dist/showcase/assets/file-text-JGaJQ8Wd.js +1 -0
  470. package/dist/showcase/assets/filter-layout-jfahl8aJ.js +1 -0
  471. package/dist/showcase/assets/filters-D7zegZVD.js +139 -0
  472. package/dist/showcase/assets/flag-H6U1f4wd.js +1 -0
  473. package/dist/showcase/assets/folder-open-sT96wRxJ.js +1 -0
  474. package/dist/showcase/assets/form-field-CQuSWnj8.js +1 -0
  475. package/dist/showcase/assets/form-sizing-Dltt6Fj-.js +1 -0
  476. package/dist/showcase/assets/format-DGPJ5dDq.js +1 -0
  477. package/dist/showcase/assets/forms-CdDJkAFt.js +915 -0
  478. package/dist/showcase/assets/funnel-Bh56GDO0.js +1 -0
  479. package/dist/showcase/assets/generic-CqSABKHr.js +1 -0
  480. package/dist/showcase/assets/getPseudoElementBounds-Cgw3-xUB.js +1 -0
  481. package/dist/showcase/assets/gift-ChVS2ovQ.js +1 -0
  482. package/dist/showcase/assets/giftcard-cards-CuaGn8-J.js +85 -0
  483. package/dist/showcase/assets/git-branch-86jQZnz4.js +1 -0
  484. package/dist/showcase/assets/global-search-C92CjOf8.js +215 -0
  485. package/dist/showcase/assets/global-search-DpVIWyO9.js +1 -0
  486. package/dist/showcase/assets/globe-DmGzYOlq.js +1 -0
  487. package/dist/showcase/assets/gradient-card-BUZzXFdZ.js +58 -0
  488. package/dist/showcase/assets/hash-pc6IIDge.js +1 -0
  489. package/dist/showcase/assets/header-DbM4l1Z6.js +1 -0
  490. package/dist/showcase/assets/header-notifications-CaymUd4n.js +1 -0
  491. package/dist/showcase/assets/heart-DtfPBlXq.js +1 -0
  492. package/dist/showcase/assets/hooks-JiLlGOJ-.js +220 -0
  493. package/dist/showcase/assets/house-CzNWewi5.js +1 -0
  494. package/dist/showcase/assets/icon-badge-G9Fp891n.js +1 -0
  495. package/dist/showcase/assets/icon-badge-e8N5BSYf.js +37 -0
  496. package/dist/showcase/assets/image-9IQW7agU.js +1 -0
  497. package/dist/showcase/assets/inbox-DU4YaGtc.js +1 -0
  498. package/dist/showcase/assets/index-CuXjv2p6.css +2 -0
  499. package/dist/showcase/assets/index-DN09-Vts.js +10 -0
  500. package/dist/showcase/assets/inertValue-kRQb7jwi.js +1 -0
  501. package/dist/showcase/assets/info-B9AXwUDF.js +1 -0
  502. package/dist/showcase/assets/inline-stat-BkLIKCvD.js +1 -0
  503. package/dist/showcase/assets/inline-stat-XqGHDQrK.js +15 -0
  504. package/dist/showcase/assets/input-BXHv6p9P.js +1 -0
  505. package/dist/showcase/assets/input-D_T9s_tn.js +1 -0
  506. package/dist/showcase/assets/input-group-Bs8dmhR6.js +47 -0
  507. package/dist/showcase/assets/input-group-CqkASeoV.js +1 -0
  508. package/dist/showcase/assets/inputs-DY7w_ssI.js +155 -0
  509. package/dist/showcase/assets/installation-Dg3FdGJ1.js +134 -0
  510. package/dist/showcase/assets/invoice-header-Ba-Y55Ag.js +36 -0
  511. package/dist/showcase/assets/invoice-items-CIJ8EfPg.js +36 -0
  512. package/dist/showcase/assets/invoice-mini-BISFvM7J.js +14 -0
  513. package/dist/showcase/assets/invoice-table-DcyVZTvl.js +30 -0
  514. package/dist/showcase/assets/isSameDay-av07hGac.js +1 -0
  515. package/dist/showcase/assets/isToday-GY5FlPL9.js +1 -0
  516. package/dist/showcase/assets/italic-Du0n76Xk.js +1 -0
  517. package/dist/showcase/assets/item-D8Lp4R-T.js +139 -0
  518. package/dist/showcase/assets/item-DTsZnSJG.js +1 -0
  519. package/dist/showcase/assets/item-Di7HZF5G.js +1 -0
  520. package/dist/showcase/assets/kanban-Dcminjsa.js +188 -0
  521. package/dist/showcase/assets/key-round-BBue3xKx.js +1 -0
  522. package/dist/showcase/assets/label-dkUEHYaz.js +1 -0
  523. package/dist/showcase/assets/languages-XxP8Uu82.js +1 -0
  524. package/dist/showcase/assets/layers-Bi_-RuHS.js +1 -0
  525. package/dist/showcase/assets/layout-app-shell-Cr6Ep0Zz.js +608 -0
  526. package/dist/showcase/assets/layout-auth-DffIslnp.js +790 -0
  527. package/dist/showcase/assets/layout-containers-BuSg6L6o.js +101 -0
  528. package/dist/showcase/assets/layout-header-DAxSUI18.js +203 -0
  529. package/dist/showcase/assets/layout-page-CVgVJHf1.js +314 -0
  530. package/dist/showcase/assets/layout-primitives-q8NXbEld.js +34 -0
  531. package/dist/showcase/assets/layout-sidebar-bB6AJaGs.js +224 -0
  532. package/dist/showcase/assets/layout-users-DG5u517t.js +117 -0
  533. package/dist/showcase/assets/layout-workspace-CKMDUM2b.js +191 -0
  534. package/dist/showcase/assets/lib-CaQvPpSJ.js +1 -0
  535. package/dist/showcase/assets/list-checks-Dhr60VvL.js +1 -0
  536. package/dist/showcase/assets/lock-CYVbyBpM.js +1 -0
  537. package/dist/showcase/assets/lock-keyhole-TUVID45I.js +1 -0
  538. package/dist/showcase/assets/mail-DfkwmVKE.js +1 -0
  539. package/dist/showcase/assets/mail-check-CnBhgH_h.js +1 -0
  540. package/dist/showcase/assets/map-Ck14_o-F.js +124 -0
  541. package/dist/showcase/assets/map-pin-Di7TUhai.js +1 -0
  542. package/dist/showcase/assets/media-library-CzM_to29.js +699 -0
  543. package/dist/showcase/assets/mention-inline-suggestions-B1RHUfnH.js +1 -0
  544. package/dist/showcase/assets/mentions-CdaPXOLl.js +138 -0
  545. package/dist/showcase/assets/menus-DuqcLdg1.js +171 -0
  546. package/dist/showcase/assets/message-square-DuW3PrFI.js +1 -0
  547. package/dist/showcase/assets/metadata-list-CCRGSPaS.js +286 -0
  548. package/dist/showcase/assets/metadata-list-Drvz5mwy.js +1 -0
  549. package/dist/showcase/assets/metric-BSaXa3Z_.js +1 -0
  550. package/dist/showcase/assets/metric-bar-CM1Rmk8y.js +1 -0
  551. package/dist/showcase/assets/metric-grid-BBGxdYNJ.js +1 -0
  552. package/dist/showcase/assets/metric-trend-chip-C_LrbPyT.js +1 -0
  553. package/dist/showcase/assets/metrics-analytics-bar-ByvVltQV.js +44 -0
  554. package/dist/showcase/assets/metrics-analytics-cards-CNGiVG1A.js +50 -0
  555. package/dist/showcase/assets/metrics-comparison-BLUvtt5N.js +76 -0
  556. package/dist/showcase/assets/metrics-heatmap-CZWhn4_i.js +27 -0
  557. package/dist/showcase/assets/metrics-inline-badge-CcPm2_ON.js +17 -0
  558. package/dist/showcase/assets/metrics-kpi-row-CitG5Aea.js +31 -0
  559. package/dist/showcase/assets/metrics-micro-grid-CAsplRVI.js +42 -0
  560. package/dist/showcase/assets/metrics-overview-DSRwW-3j.js +192 -0
  561. package/dist/showcase/assets/metrics-stat-cards-BTdSpUV_.js +54 -0
  562. package/dist/showcase/assets/minus-BaXg6nPb.js +1 -0
  563. package/dist/showcase/assets/money-display-HegN6NVU.js +1 -0
  564. package/dist/showcase/assets/month-year-picker-DGSalGea.js +1 -0
  565. package/dist/showcase/assets/navigation-B9kcgNmJ.js +90 -0
  566. package/dist/showcase/assets/navigation-D4OJbw4T.js +231 -0
  567. package/dist/showcase/assets/navigation-extras-xm_wzPZr.js +43 -0
  568. package/dist/showcase/assets/onboarding-checklist-CWuCJKDd.js +119 -0
  569. package/dist/showcase/assets/overflow-tab-bar-Dq-I4MUu.js +1 -0
  570. package/dist/showcase/assets/overlays-BHf9SZOh.js +159 -0
  571. package/dist/showcase/assets/overlays-DziL3nVU.js +408 -0
  572. package/dist/showcase/assets/overview-Cc69up8i.js +184 -0
  573. package/dist/showcase/assets/package-Bc-NuFnd.js +1 -0
  574. package/dist/showcase/assets/package-check-5LQwCfGh.js +1 -0
  575. package/dist/showcase/assets/page-B2o5HSfY.js +1 -0
  576. package/dist/showcase/assets/page-action-button-CfS6vsyC.js +1 -0
  577. package/dist/showcase/assets/page-header-W6quU5pO.js +1 -0
  578. package/dist/showcase/assets/pagination-Bfs7Zszm.js +1 -0
  579. package/dist/showcase/assets/pagination-DHs104ji.js +42 -0
  580. package/dist/showcase/assets/paperclip-CXeiMywc.js +1 -0
  581. package/dist/showcase/assets/password-input-C61t743N.js +1 -0
  582. package/dist/showcase/assets/pencil-C1TXsTfP.js +1 -0
  583. package/dist/showcase/assets/phone-Bh-68R_E.js +1 -0
  584. package/dist/showcase/assets/plus-CKBaO4jG.js +1 -0
  585. package/dist/showcase/assets/popover-C_7qLizt.js +1 -0
  586. package/dist/showcase/assets/popover-hgtHqd0h.js +1 -0
  587. package/dist/showcase/assets/popover-menu-DmYSBsji.js +1 -0
  588. package/dist/showcase/assets/products-DSvcQz-Q.js +423 -0
  589. package/dist/showcase/assets/progress-Chxeo8g4.js +18 -0
  590. package/dist/showcase/assets/progress-fYPoCyf-.js +1 -0
  591. package/dist/showcase/assets/props-table-izArO1Pv.js +1 -0
  592. package/dist/showcase/assets/quote-wvfNu9t7.js +1 -0
  593. package/dist/showcase/assets/receipt-BlXBX4ZJ.js +1 -0
  594. package/dist/showcase/assets/receipt-text-stSsUTV5.js +1 -0
  595. package/dist/showcase/assets/refinement-guide-Bri81J9N.js +189 -0
  596. package/dist/showcase/assets/refresh-cw-tZzNDEGO.js +1 -0
  597. package/dist/showcase/assets/resolveValueLabel-Cti97iX8.js +1 -0
  598. package/dist/showcase/assets/resource-B727CTVi.js +139 -0
  599. package/dist/showcase/assets/resource-DytT_quB.js +1 -0
  600. package/dist/showcase/assets/resource-selector-card-wNuW382N.js +43 -0
  601. package/dist/showcase/assets/rich-text-editor-DdK5YD0y.js +143 -0
  602. package/dist/showcase/assets/rich-text-editor-DqY2H6e0.js +124 -0
  603. package/dist/showcase/assets/rotate-ccw-Bp4aMDrI.js +1 -0
  604. package/dist/showcase/assets/route-D2owHMka.js +1 -0
  605. package/dist/showcase/assets/save-DjC_iy0t.js +1 -0
  606. package/dist/showcase/assets/schema-form-CQtLwGC1.js +327 -0
  607. package/dist/showcase/assets/scroll-area-BQlHFfkG.js +32 -0
  608. package/dist/showcase/assets/scroll-area-D3Rrt85s.js +1 -0
  609. package/dist/showcase/assets/section-DYfGx1Q5.js +1 -0
  610. package/dist/showcase/assets/select-BCJGhRpc.js +1 -0
  611. package/dist/showcase/assets/select-Cf5EigqA.js +1 -0
  612. package/dist/showcase/assets/send-86Vr11Ys.js +1 -0
  613. package/dist/showcase/assets/separator-BHjNVb5O.js +1 -0
  614. package/dist/showcase/assets/separator-BejjbTbO.js +28 -0
  615. package/dist/showcase/assets/settings-2-DNNVOsjP.js +1 -0
  616. package/dist/showcase/assets/settings-Bsi5BLx5.js +1 -0
  617. package/dist/showcase/assets/sheet-BazhMvfb.js +1 -0
  618. package/dist/showcase/assets/shield-alert-D-Jbocfj.js +1 -0
  619. package/dist/showcase/assets/shield-check-D9eDVcJ1.js +1 -0
  620. package/dist/showcase/assets/shield-xI2P9G5d.js +1 -0
  621. package/dist/showcase/assets/shopping-bag-DOGs3sez.js +1 -0
  622. package/dist/showcase/assets/showcase-s-5CuLAJ.js +132 -0
  623. package/dist/showcase/assets/sidebar-Rz44gw_a.js +1 -0
  624. package/dist/showcase/assets/sidebar.context-Bbcdo3o8.js +1 -0
  625. package/dist/showcase/assets/skeleton-CY8ieqD-.js +1 -0
  626. package/dist/showcase/assets/skeleton-CgoH6CPT.js +29 -0
  627. package/dist/showcase/assets/slider-okW2bgkG.js +1 -0
  628. package/dist/showcase/assets/smart-card-CVwEPwfI.js +1 -0
  629. package/dist/showcase/assets/sonner-CixCpxj2.js +22 -0
  630. package/dist/showcase/assets/sortable.esm-DKcVtGTb.js +5 -0
  631. package/dist/showcase/assets/sparkles-DDEVdtmy.js +1 -0
  632. package/dist/showcase/assets/spinner-BVGPoAEv.js +49 -0
  633. package/dist/showcase/assets/spinner-FURXSp1Q.js +1 -0
  634. package/dist/showcase/assets/spinner-u6TwJ3Ii.js +30 -0
  635. package/dist/showcase/assets/square-pen-DVXVT0cQ.js +1 -0
  636. package/dist/showcase/assets/stacked-avatars-CKOQhAx4.js +1 -0
  637. package/dist/showcase/assets/star-B3ZPfxuz.js +1 -0
  638. package/dist/showcase/assets/startOfDay-LwMBRUSU.js +1 -0
  639. package/dist/showcase/assets/styles-UIKkojWJ.js +1 -0
  640. package/dist/showcase/assets/suggestions-DbrzKjbi.js +126 -0
  641. package/dist/showcase/assets/switch-CAw84QpS.js +1 -0
  642. package/dist/showcase/assets/switch-Cjt2MCgr.js +1 -0
  643. package/dist/showcase/assets/sync-DWbqfpBH.js +124 -0
  644. package/dist/showcase/assets/table-Bx5lo5FP.js +686 -0
  645. package/dist/showcase/assets/table-C2RQulDb.js +1 -0
  646. package/dist/showcase/assets/table-actions-Clo3WEfM.js +1 -0
  647. package/dist/showcase/assets/tabs-DRtlcg6b.js +19 -0
  648. package/dist/showcase/assets/tabs-wMPtvuT5.js +1 -0
  649. package/dist/showcase/assets/tags-input-D5FpWOWF.js +1 -0
  650. package/dist/showcase/assets/text-button-Cwh6D6qG.js +1 -0
  651. package/dist/showcase/assets/text-link-DI1uXdGl.js +1 -0
  652. package/dist/showcase/assets/textarea-CGbt4gBZ.js +1 -0
  653. package/dist/showcase/assets/textarea-JPgPLhyk.js +1 -0
  654. package/dist/showcase/assets/timelines-CkHN08n6.js +200 -0
  655. package/dist/showcase/assets/toggle-group-BpXkR9uD.js +1 -0
  656. package/dist/showcase/assets/toggles-DK9iCbki.js +71 -0
  657. package/dist/showcase/assets/toggles-group-DwzRj0f7.js +32 -0
  658. package/dist/showcase/assets/tooltip-PtP1suag.js +31 -0
  659. package/dist/showcase/assets/trash-2-BE4XUI2g.js +1 -0
  660. package/dist/showcase/assets/trending-up-ByxOf-nR.js +1 -0
  661. package/dist/showcase/assets/truck-RTOdcRV0.js +1 -0
  662. package/dist/showcase/assets/typography-BKLgHDxU.js +223 -0
  663. package/dist/showcase/assets/ui-badge-DIh_3Wmo.js +28 -0
  664. package/dist/showcase/assets/ui-card-BOdHnZwv.js +30 -0
  665. package/dist/showcase/assets/ui-table-BW4FCClv.js +42 -0
  666. package/dist/showcase/assets/upload-tray-CV9_5Lpa.js +138 -0
  667. package/dist/showcase/assets/use-layout-link-MyeE-CDj.js +1 -0
  668. package/dist/showcase/assets/useAnchoredPopupScrollLock-DSaog2w5.js +1 -0
  669. package/dist/showcase/assets/useAriaLabelledBy-DSpPzrxG.js +1 -0
  670. package/dist/showcase/assets/useCollapsiblePanel-DsuJtES0.js +1 -0
  671. package/dist/showcase/assets/useCompositeItem-lbAimLrR.js +1 -0
  672. package/dist/showcase/assets/useCompositeListItem-pRXWGj4x.js +1 -0
  673. package/dist/showcase/assets/useLabelableId-IRM1zB5m.js +1 -0
  674. package/dist/showcase/assets/useOpenInteractionType-CHDcTj9f.js +1 -0
  675. package/dist/showcase/assets/useRender-Ogz5zjeJ.js +1 -0
  676. package/dist/showcase/assets/useTriggerFocusGuards-Du6btFNB.js +1 -0
  677. package/dist/showcase/assets/useValueChanged-CXpsR4fl.js +1 -0
  678. package/dist/showcase/assets/user-plus-CLj8AZe1.js +1 -0
  679. package/dist/showcase/assets/user-ymdT26JK.js +1 -0
  680. package/dist/showcase/assets/users-BGba2Xwv.js +1 -0
  681. package/dist/showcase/assets/vendor-profile-Ci6c9mFC.js +37 -0
  682. package/dist/showcase/assets/video-BcKa36-p.js +1 -0
  683. package/dist/showcase/assets/wrench-Cj2hRrih.js +1 -0
  684. package/dist/showcase/assets/x-iCqjAC2D.js +1 -0
  685. package/dist/showcase/assets/zap-H4bc_OhS.js +1 -0
  686. package/dist/showcase/index.html +2 -2
  687. package/dist/style.css +1 -1
  688. package/package.json +1 -1
  689. package/src/css/themes/shadcn.default.css +6 -6
  690. package/src/css/tokens/foundation.css +23 -9
  691. package/dist/_shared/accordion-B9EjlZLY.js +0 -135
  692. package/dist/_shared/accordion-B9EjlZLY.js.map +0 -1
  693. package/dist/_shared/accordion-IFDIc0E7.cjs +0 -2
  694. package/dist/_shared/accordion-IFDIc0E7.cjs.map +0 -1
  695. package/dist/_shared/action-menu-B6yFRDz1.cjs +0 -2
  696. package/dist/_shared/action-menu-B6yFRDz1.cjs.map +0 -1
  697. package/dist/_shared/action-menu-CNS-fwQr.js +0 -96
  698. package/dist/_shared/action-menu-CNS-fwQr.js.map +0 -1
  699. package/dist/_shared/ai-artifact-B3qhuiKC.js +0 -1099
  700. package/dist/_shared/ai-artifact-B3qhuiKC.js.map +0 -1
  701. package/dist/_shared/ai-artifact-Dtr0bnVq.cjs +0 -3
  702. package/dist/_shared/ai-artifact-Dtr0bnVq.cjs.map +0 -1
  703. package/dist/_shared/alert-V0V36Sny.cjs +0 -2
  704. package/dist/_shared/alert-V0V36Sny.cjs.map +0 -1
  705. package/dist/_shared/alert-m-4s0Hqq.js +0 -81
  706. package/dist/_shared/alert-m-4s0Hqq.js.map +0 -1
  707. package/dist/_shared/app-shell-D3eGUtL-.js +0 -69
  708. package/dist/_shared/app-shell-D3eGUtL-.js.map +0 -1
  709. package/dist/_shared/app-shell-QJHARDMB.cjs +0 -2
  710. package/dist/_shared/app-shell-QJHARDMB.cjs.map +0 -1
  711. package/dist/_shared/auth-BZY91F5_.cjs +0 -2
  712. package/dist/_shared/auth-BZY91F5_.cjs.map +0 -1
  713. package/dist/_shared/auth-DcotjEbY.js +0 -643
  714. package/dist/_shared/auth-DcotjEbY.js.map +0 -1
  715. package/dist/_shared/badge-BeSKxX1u.cjs +0 -2
  716. package/dist/_shared/badge-BeSKxX1u.cjs.map +0 -1
  717. package/dist/_shared/badge-a2Z3K5aQ.js +0 -110
  718. package/dist/_shared/badge-a2Z3K5aQ.js.map +0 -1
  719. package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs +0 -2
  720. package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs.map +0 -1
  721. package/dist/_shared/breadcrumbs-B57Unsoe.js +0 -105
  722. package/dist/_shared/breadcrumbs-B57Unsoe.js.map +0 -1
  723. package/dist/_shared/button-Bd5bEIiB.cjs +0 -2
  724. package/dist/_shared/button-Bd5bEIiB.cjs.map +0 -1
  725. package/dist/_shared/button-DHksjMvc.js +0 -189
  726. package/dist/_shared/button-DHksjMvc.js.map +0 -1
  727. package/dist/_shared/buttons-Bek9F7qK.cjs +0 -2
  728. package/dist/_shared/buttons-Bek9F7qK.cjs.map +0 -1
  729. package/dist/_shared/buttons-DcynMPnE.js +0 -137
  730. package/dist/_shared/buttons-DcynMPnE.js.map +0 -1
  731. package/dist/_shared/card-radio-group-C2p_iBal.cjs +0 -2
  732. package/dist/_shared/card-radio-group-C2p_iBal.cjs.map +0 -1
  733. package/dist/_shared/card-radio-group-Fdi1Cz1j.js +0 -150
  734. package/dist/_shared/card-radio-group-Fdi1Cz1j.js.map +0 -1
  735. package/dist/_shared/cards-C1ythc0Q.js +0 -354
  736. package/dist/_shared/cards-C1ythc0Q.js.map +0 -1
  737. package/dist/_shared/cards-GSYfJ-oX.cjs +0 -2
  738. package/dist/_shared/cards-GSYfJ-oX.cjs.map +0 -1
  739. package/dist/_shared/combobox-BIe72dV3.js +0 -954
  740. package/dist/_shared/combobox-BIe72dV3.js.map +0 -1
  741. package/dist/_shared/combobox-CJiFDoTi.cjs +0 -2
  742. package/dist/_shared/combobox-CJiFDoTi.cjs.map +0 -1
  743. package/dist/_shared/command-ByedBajF.js +0 -39
  744. package/dist/_shared/command-ByedBajF.js.map +0 -1
  745. package/dist/_shared/command-EGR0nhGc.cjs +0 -2
  746. package/dist/_shared/command-EGR0nhGc.cjs.map +0 -1
  747. package/dist/_shared/comments-CmljtbAW.js +0 -952
  748. package/dist/_shared/comments-CmljtbAW.js.map +0 -1
  749. package/dist/_shared/comments-ColUq7eh.cjs +0 -2
  750. package/dist/_shared/comments-ColUq7eh.cjs.map +0 -1
  751. package/dist/_shared/copyable-Dopk9pEJ.js +0 -38
  752. package/dist/_shared/copyable-Dopk9pEJ.js.map +0 -1
  753. package/dist/_shared/copyable-rQwxsTJ3.cjs +0 -2
  754. package/dist/_shared/copyable-rQwxsTJ3.cjs.map +0 -1
  755. package/dist/_shared/data-display-BTsCY7A5.js +0 -1873
  756. package/dist/_shared/data-display-BTsCY7A5.js.map +0 -1
  757. package/dist/_shared/data-display-BdGQMXit.cjs +0 -2
  758. package/dist/_shared/data-display-BdGQMXit.cjs.map +0 -1
  759. package/dist/_shared/date-picker-BiUgIkjP.cjs +0 -2
  760. package/dist/_shared/date-picker-BiUgIkjP.cjs.map +0 -1
  761. package/dist/_shared/date-picker-DFkLiveH.js +0 -1361
  762. package/dist/_shared/date-picker-DFkLiveH.js.map +0 -1
  763. package/dist/_shared/date-pickers-C86tVD8e.cjs +0 -2
  764. package/dist/_shared/date-pickers-C86tVD8e.cjs.map +0 -1
  765. package/dist/_shared/date-pickers-D4oxOOHE.js +0 -329
  766. package/dist/_shared/date-pickers-D4oxOOHE.js.map +0 -1
  767. package/dist/_shared/display-B0wLVN8t.js +0 -986
  768. package/dist/_shared/display-B0wLVN8t.js.map +0 -1
  769. package/dist/_shared/display-Bin2vVex.cjs +0 -2
  770. package/dist/_shared/display-Bin2vVex.cjs.map +0 -1
  771. package/dist/_shared/form-sizing-C51oI3Di.js +0 -42
  772. package/dist/_shared/form-sizing-C51oI3Di.js.map +0 -1
  773. package/dist/_shared/form-sizing-Co53Drri.cjs +0 -2
  774. package/dist/_shared/form-sizing-Co53Drri.cjs.map +0 -1
  775. package/dist/_shared/forms-CEE1te78.cjs +0 -2
  776. package/dist/_shared/forms-CEE1te78.cjs.map +0 -1
  777. package/dist/_shared/forms-CQoGvG7q.js +0 -3533
  778. package/dist/_shared/forms-CQoGvG7q.js.map +0 -1
  779. package/dist/_shared/header-B9IPDQRW.js +0 -447
  780. package/dist/_shared/header-B9IPDQRW.js.map +0 -1
  781. package/dist/_shared/header-C_1x4-rd.cjs +0 -2
  782. package/dist/_shared/header-C_1x4-rd.cjs.map +0 -1
  783. package/dist/_shared/hooks---vunGQ6.js +0 -95
  784. package/dist/_shared/hooks---vunGQ6.js.map +0 -1
  785. package/dist/_shared/hooks-CjVzmgvY.cjs +0 -2
  786. package/dist/_shared/hooks-CjVzmgvY.cjs.map +0 -1
  787. package/dist/_shared/input-CB6hxh-5.cjs +0 -2
  788. package/dist/_shared/input-CB6hxh-5.cjs.map +0 -1
  789. package/dist/_shared/input-CfnHBT--.js +0 -182
  790. package/dist/_shared/input-CfnHBT--.js.map +0 -1
  791. package/dist/_shared/item-Xs-fgzaT.js +0 -226
  792. package/dist/_shared/item-Xs-fgzaT.js.map +0 -1
  793. package/dist/_shared/item-eUP9Rtmg.cjs +0 -2
  794. package/dist/_shared/item-eUP9Rtmg.cjs.map +0 -1
  795. package/dist/_shared/layout-BXrQqUKq.js +0 -262
  796. package/dist/_shared/layout-BXrQqUKq.js.map +0 -1
  797. package/dist/_shared/layout-DWicdsPI.cjs +0 -2
  798. package/dist/_shared/layout-DWicdsPI.cjs.map +0 -1
  799. package/dist/_shared/mentions-BahbwDwU.js +0 -506
  800. package/dist/_shared/mentions-BahbwDwU.js.map +0 -1
  801. package/dist/_shared/mentions-aHalksbt.cjs +0 -2
  802. package/dist/_shared/mentions-aHalksbt.cjs.map +0 -1
  803. package/dist/_shared/money-display-BLPNMmiT.cjs +0 -2
  804. package/dist/_shared/money-display-BLPNMmiT.cjs.map +0 -1
  805. package/dist/_shared/money-display-D_-Cb8-9.js +0 -198
  806. package/dist/_shared/money-display-D_-Cb8-9.js.map +0 -1
  807. package/dist/_shared/navigation-BcYAwgzo.js +0 -436
  808. package/dist/_shared/navigation-BcYAwgzo.js.map +0 -1
  809. package/dist/_shared/navigation-DAB7uuBj.cjs +0 -2
  810. package/dist/_shared/navigation-DAB7uuBj.cjs.map +0 -1
  811. package/dist/_shared/overlays-DW8OIK5R.js +0 -735
  812. package/dist/_shared/overlays-DW8OIK5R.js.map +0 -1
  813. package/dist/_shared/overlays-Du65iCkx.cjs +0 -2
  814. package/dist/_shared/overlays-Du65iCkx.cjs.map +0 -1
  815. package/dist/_shared/popover-menu-qxBZlTck.js +0 -93
  816. package/dist/_shared/popover-menu-qxBZlTck.js.map +0 -1
  817. package/dist/_shared/popover-menu-z9QTjl4o.cjs +0 -2
  818. package/dist/_shared/popover-menu-z9QTjl4o.cjs.map +0 -1
  819. package/dist/_shared/rich-text-editor-DeIiIDn7.cjs +0 -2
  820. package/dist/_shared/rich-text-editor-DeIiIDn7.cjs.map +0 -1
  821. package/dist/_shared/rich-text-editor-VIBlL0x3.js +0 -620
  822. package/dist/_shared/rich-text-editor-VIBlL0x3.js.map +0 -1
  823. package/dist/_shared/settings-Bfr6PgSi.cjs +0 -2
  824. package/dist/_shared/settings-Bfr6PgSi.cjs.map +0 -1
  825. package/dist/_shared/settings-CrPaYr4A.js +0 -143
  826. package/dist/_shared/settings-CrPaYr4A.js.map +0 -1
  827. package/dist/_shared/sidebar-CDOLD8fN.js +0 -548
  828. package/dist/_shared/sidebar-CDOLD8fN.js.map +0 -1
  829. package/dist/_shared/sidebar-DcsxeNml.cjs +0 -2
  830. package/dist/_shared/sidebar-DcsxeNml.cjs.map +0 -1
  831. package/dist/_shared/spinner-D35zNriU.cjs +0 -2
  832. package/dist/_shared/spinner-D35zNriU.cjs.map +0 -1
  833. package/dist/_shared/spinner-DMC2IIml.js +0 -67
  834. package/dist/_shared/spinner-DMC2IIml.js.map +0 -1
  835. package/dist/_shared/table-B_pqCQxC.js +0 -1377
  836. package/dist/_shared/table-B_pqCQxC.js.map +0 -1
  837. package/dist/_shared/table-CGVOXtdv.cjs +0 -2
  838. package/dist/_shared/table-CGVOXtdv.cjs.map +0 -1
  839. package/dist/_shared/textarea-B24qgdmd.cjs +0 -2
  840. package/dist/_shared/textarea-B24qgdmd.cjs.map +0 -1
  841. package/dist/_shared/textarea-ChLRmmVU.js +0 -118
  842. package/dist/_shared/textarea-ChLRmmVU.js.map +0 -1
  843. package/dist/_shared/typography-CO9uwZhF.cjs +0 -2
  844. package/dist/_shared/typography-CO9uwZhF.cjs.map +0 -1
  845. package/dist/_shared/typography-DE0NGEIE.js +0 -201
  846. package/dist/_shared/typography-DE0NGEIE.js.map +0 -1
  847. package/dist/_shared/workspace-C1twu23r.cjs +0 -2
  848. package/dist/_shared/workspace-C1twu23r.cjs.map +0 -1
  849. package/dist/_shared/workspace-CkOZLdcN.js +0 -357
  850. package/dist/_shared/workspace-CkOZLdcN.js.map +0 -1
  851. package/dist/showcase/assets/AreaChart-WJREayr9.js +0 -6
  852. package/dist/showcase/assets/CompositeItem-CY3XmFuI.js +0 -1
  853. package/dist/showcase/assets/CompositeRoot-BPMF0t1F.js +0 -1
  854. package/dist/showcase/assets/DialogTrigger-BzaF3YN8.js +0 -1
  855. package/dist/showcase/assets/LabelableContext-LKvvFFnV.js +0 -1
  856. package/dist/showcase/assets/PreviewLayout-B0n7l00P.js +0 -1
  857. package/dist/showcase/assets/RadioGroup-VBtGFETg.js +0 -1
  858. package/dist/showcase/assets/ScrollAreaCorner-BimGwdGs.js +0 -1
  859. package/dist/showcase/assets/Separator-BfKe0YiY.js +0 -1
  860. package/dist/showcase/assets/ToolbarRootContext-Cscyv1PN.js +0 -1
  861. package/dist/showcase/assets/accordion-BEN0VkL4.js +0 -171
  862. package/dist/showcase/assets/accordion-variants-QFG3H38z.js +0 -1
  863. package/dist/showcase/assets/action-menu-Bfw1tFqM.js +0 -1
  864. package/dist/showcase/assets/actions-CFpHs5IC.js +0 -310
  865. package/dist/showcase/assets/activities-CDxlaghU.js +0 -500
  866. package/dist/showcase/assets/activities-feed-card-BO1kcjRK.js +0 -1
  867. package/dist/showcase/assets/admin-DFpHXeuv.js +0 -140
  868. package/dist/showcase/assets/ai-DyO6VqQP.js +0 -207
  869. package/dist/showcase/assets/ai-artifact-MVA3ikv6.js +0 -2
  870. package/dist/showcase/assets/ai-chat-D-xcp6Jf.js +0 -568
  871. package/dist/showcase/assets/ai-elements-DlFqIOYp.js +0 -387
  872. package/dist/showcase/assets/ai-tool-call-DedG9TdK.js +0 -1
  873. package/dist/showcase/assets/alert-CmRK2lOe.js +0 -1
  874. package/dist/showcase/assets/alert-DCIVryEp.js +0 -62
  875. package/dist/showcase/assets/alert-DDP3Ktic.js +0 -93
  876. package/dist/showcase/assets/api-key-list-CWa997YX.js +0 -1
  877. package/dist/showcase/assets/api-key-list-mTPebHF3.js +0 -73
  878. package/dist/showcase/assets/app-sidebar-Cnfk9z5K.js +0 -1
  879. package/dist/showcase/assets/arrow-down-CCYWFimd.js +0 -1
  880. package/dist/showcase/assets/arrow-left-CrYjfZJ0.js +0 -1
  881. package/dist/showcase/assets/arrow-right-eLxbBrdm.js +0 -1
  882. package/dist/showcase/assets/arrow-up-kA33fcPv.js +0 -1
  883. package/dist/showcase/assets/arrow-up-right-BSWGQVDB.js +0 -1
  884. package/dist/showcase/assets/avatar-BDGhB3aA.js +0 -57
  885. package/dist/showcase/assets/avatar-CLBQvnYG.js +0 -1
  886. package/dist/showcase/assets/avatar-WUMW3Qjo.js +0 -1
  887. package/dist/showcase/assets/avatar-cKSNuTzf.js +0 -67
  888. package/dist/showcase/assets/badge--mqVg8Ry.js +0 -31
  889. package/dist/showcase/assets/badge-check-D7YjWqnm.js +0 -1
  890. package/dist/showcase/assets/bell-6YyocFK6.js +0 -1
  891. package/dist/showcase/assets/bot-BC4pGAB3.js +0 -1
  892. package/dist/showcase/assets/box-CPGIu4Nv.js +0 -1
  893. package/dist/showcase/assets/braces-9jywZtTA.js +0 -1
  894. package/dist/showcase/assets/brain-wf_S427C.js +0 -1
  895. package/dist/showcase/assets/brand-78lhbKSW.js +0 -36
  896. package/dist/showcase/assets/breadcrumb-6XHObtqO.js +0 -1
  897. package/dist/showcase/assets/breadcrumb-BVrrS53_.js +0 -52
  898. package/dist/showcase/assets/breadcrumbs-BwC3Iaae.js +0 -1
  899. package/dist/showcase/assets/briefcase-BViWYew9.js +0 -1
  900. package/dist/showcase/assets/building-2-CwR3gV1I.js +0 -1
  901. package/dist/showcase/assets/button-BWwsy37B.js +0 -44
  902. package/dist/showcase/assets/button-group-BTiMRQIO.js +0 -1
  903. package/dist/showcase/assets/buttons-D9pH8hPs.js +0 -272
  904. package/dist/showcase/assets/calendar-Bzl2i1lu.js +0 -1
  905. package/dist/showcase/assets/calendar-CNMlC7Fn.js +0 -16
  906. package/dist/showcase/assets/calendar-D5NdEmaD.js +0 -1
  907. package/dist/showcase/assets/calendar-days-j8QDBUc5.js +0 -1
  908. package/dist/showcase/assets/camera-Cwb84N8a.js +0 -1
  909. package/dist/showcase/assets/card-CX3vQ2Te.js +0 -1
  910. package/dist/showcase/assets/card-FLJkfdKP.js +0 -188
  911. package/dist/showcase/assets/card-primitives-C2s13Uvp.js +0 -1
  912. package/dist/showcase/assets/card-radio-group-BP27dErL.js +0 -1
  913. package/dist/showcase/assets/cards-DcdxRM9W.js +0 -354
  914. package/dist/showcase/assets/carousel-CTKyiHD2.js +0 -449
  915. package/dist/showcase/assets/cell-renderers-ouSypXTE.js +0 -1
  916. package/dist/showcase/assets/chart-CMsMyCah.js +0 -358
  917. package/dist/showcase/assets/chart-column-BrwpEFzy.js +0 -1
  918. package/dist/showcase/assets/checkbox-4qgEfnjv.js +0 -1
  919. package/dist/showcase/assets/checkbox-ratLYBAF.js +0 -1
  920. package/dist/showcase/assets/chevron-down-BInaIfd1.js +0 -1
  921. package/dist/showcase/assets/chevron-left-Bjy3FJ_M.js +0 -1
  922. package/dist/showcase/assets/chevron-up-Ufl6UEyV.js +0 -1
  923. package/dist/showcase/assets/chevrons-up-down-CrOH-P5z.js +0 -1
  924. package/dist/showcase/assets/circle-G0dEx2Ay.js +0 -1
  925. package/dist/showcase/assets/circle-alert-CiibDCe8.js +0 -1
  926. package/dist/showcase/assets/circle-check-Bqm54c03.js +0 -1
  927. package/dist/showcase/assets/circle-check-big-BfiY_qy_.js +0 -1
  928. package/dist/showcase/assets/circle-dot-VNm7CEgH.js +0 -1
  929. package/dist/showcase/assets/circle-question-mark-mM7PKy4G.js +0 -1
  930. package/dist/showcase/assets/circle-x-2tzzp_vB.js +0 -1
  931. package/dist/showcase/assets/clock-3-CfdZnMP2.js +0 -1
  932. package/dist/showcase/assets/clock-ByB7C11p.js +0 -1
  933. package/dist/showcase/assets/code-xml-D2fN-BaU.js +0 -1
  934. package/dist/showcase/assets/collapsible-B2lI_uVI.js +0 -1
  935. package/dist/showcase/assets/collapsible-Bs5YFx-M.js +0 -27
  936. package/dist/showcase/assets/combobox-BqNSwFaM.js +0 -685
  937. package/dist/showcase/assets/command-Dcbh_YP-.js +0 -1
  938. package/dist/showcase/assets/command-Mb30xkwq.js +0 -1
  939. package/dist/showcase/assets/comment-composer-DqTw0zIM.js +0 -1
  940. package/dist/showcase/assets/comment-item-DbQAZ3yP.js +0 -1
  941. package/dist/showcase/assets/comments-CGMOOi7k.js +0 -357
  942. package/dist/showcase/assets/commerce-bVpLHwpS.js +0 -267
  943. package/dist/showcase/assets/composite-CTpmYme_.js +0 -1
  944. package/dist/showcase/assets/contact-card-nuS10UKK.js +0 -65
  945. package/dist/showcase/assets/content-container-NexBp0FV.js +0 -1
  946. package/dist/showcase/assets/copyable-CNltkC2A.js +0 -1
  947. package/dist/showcase/assets/copyable-qr6--oJx.js +0 -96
  948. package/dist/showcase/assets/course-card-0kkl37FX.js +0 -77
  949. package/dist/showcase/assets/cpu-DSD9h0l5.js +0 -1
  950. package/dist/showcase/assets/credit-card-CN0E6FU8.js +0 -1
  951. package/dist/showcase/assets/css-variables-CzmmLWxt.js +0 -1190
  952. package/dist/showcase/assets/currency-BtofP745.js +0 -149
  953. package/dist/showcase/assets/dark-surfaces-BU7kfTIi.js +0 -90
  954. package/dist/showcase/assets/data-view-3W7_KBli.js +0 -124
  955. package/dist/showcase/assets/data-view-snL5QtHe.js +0 -4
  956. package/dist/showcase/assets/database-BarEYzaF.js +0 -1
  957. package/dist/showcase/assets/date-block-dTt9Rcfd.js +0 -1
  958. package/dist/showcase/assets/date-picker-BKzZeQGc.js +0 -1
  959. package/dist/showcase/assets/date-pickers-CYERVYRo.js +0 -73
  960. package/dist/showcase/assets/dense-info-hnKZfRnQ.js +0 -106
  961. package/dist/showcase/assets/design-system-consistency-D6qngflS.js +0 -264
  962. package/dist/showcase/assets/dialog-mO0FpHmT.js +0 -1
  963. package/dist/showcase/assets/dialog-xbuhPXmf.js +0 -1
  964. package/dist/showcase/assets/display-utilities-C4IflxoK.js +0 -267
  965. package/dist/showcase/assets/dist-BFChHTWK.js +0 -45
  966. package/dist/showcase/assets/dist-BkVfs5PY.js +0 -1
  967. package/dist/showcase/assets/dollar-sign-BES-Y4q8.js +0 -1
  968. package/dist/showcase/assets/download-CuEg-4DT.js +0 -1
  969. package/dist/showcase/assets/dropdown-menu-C4Fcfk9z.js +0 -1
  970. package/dist/showcase/assets/dropzone-CrJ_k9fJ.js +0 -1
  971. package/dist/showcase/assets/earth-Cmx-Axig.js +0 -1
  972. package/dist/showcase/assets/ellipsis-Co7iTzp_.js +0 -1
  973. package/dist/showcase/assets/ellipsis-vertical-DMYJFiqQ.js +0 -1
  974. package/dist/showcase/assets/empty-Dw4ozyll.js +0 -1
  975. package/dist/showcase/assets/empty-item-DQwAsl0J.js +0 -49
  976. package/dist/showcase/assets/empty-state-BKvbnAy1.js +0 -1
  977. package/dist/showcase/assets/empty-state-Dv6f2fmP.js +0 -190
  978. package/dist/showcase/assets/enhanced-activities-Ctmivg46.js +0 -357
  979. package/dist/showcase/assets/enhanced-combobox-D0AsPZ-b.js +0 -1
  980. package/dist/showcase/assets/esm-oZ6qcNoa.js +0 -2
  981. package/dist/showcase/assets/event-calendar-ChXdeehr.js +0 -138
  982. package/dist/showcase/assets/event-log-DeOCb2tT.js +0 -330
  983. package/dist/showcase/assets/example-CDvNeHNP.js +0 -1
  984. package/dist/showcase/assets/external-link-BaiCqIx3.js +0 -1
  985. package/dist/showcase/assets/eye-zG-fqYfd.js +0 -1
  986. package/dist/showcase/assets/feature-announcement-C2XGWNgI.js +0 -34
  987. package/dist/showcase/assets/file-sAbDfDuO.js +0 -1
  988. package/dist/showcase/assets/file-text-Boa9IOND.js +0 -1
  989. package/dist/showcase/assets/filter-layout-tZmZz-2B.js +0 -1
  990. package/dist/showcase/assets/filters-D8gEkDAE.js +0 -139
  991. package/dist/showcase/assets/flag-Cu20rcE4.js +0 -1
  992. package/dist/showcase/assets/folder-open-Cuk6KKLi.js +0 -1
  993. package/dist/showcase/assets/form-field-D8sL8tat.js +0 -1
  994. package/dist/showcase/assets/form-sizing-C3UG5WKC.js +0 -1
  995. package/dist/showcase/assets/format-CaRklI--.js +0 -1
  996. package/dist/showcase/assets/forms-CNk2oX65.js +0 -915
  997. package/dist/showcase/assets/funnel-B2kBprKZ.js +0 -1
  998. package/dist/showcase/assets/generic-oWYKMvId.js +0 -1
  999. package/dist/showcase/assets/getPseudoElementBounds-GjucWEcD.js +0 -1
  1000. package/dist/showcase/assets/gift-C_D_-5GL.js +0 -1
  1001. package/dist/showcase/assets/giftcard-cards-B4DDGzdi.js +0 -85
  1002. package/dist/showcase/assets/git-branch-DlTTLnjW.js +0 -1
  1003. package/dist/showcase/assets/global-search-BjHAfaqS.js +0 -215
  1004. package/dist/showcase/assets/global-search-hKQWHfrf.js +0 -1
  1005. package/dist/showcase/assets/globe-D-gH7XQ2.js +0 -1
  1006. package/dist/showcase/assets/gradient-card-jVxEisUP.js +0 -58
  1007. package/dist/showcase/assets/hash-DySqEhph.js +0 -1
  1008. package/dist/showcase/assets/header-B8hHkAVl.js +0 -1
  1009. package/dist/showcase/assets/header-notifications-s180jNb1.js +0 -1
  1010. package/dist/showcase/assets/heart-DDFCk8Tb.js +0 -1
  1011. package/dist/showcase/assets/hooks-0A_FzYrt.js +0 -220
  1012. package/dist/showcase/assets/house-BqE1X-Wf.js +0 -1
  1013. package/dist/showcase/assets/icon-badge-CyiMjD7j.js +0 -37
  1014. package/dist/showcase/assets/icon-badge-fJVhEHym.js +0 -1
  1015. package/dist/showcase/assets/image-DCtwKHqe.js +0 -1
  1016. package/dist/showcase/assets/inbox-DZA-pAGB.js +0 -1
  1017. package/dist/showcase/assets/index-B37z19z3.js +0 -10
  1018. package/dist/showcase/assets/index-CIsKgiSF.css +0 -2
  1019. package/dist/showcase/assets/inertValue-SPYMBsOM.js +0 -1
  1020. package/dist/showcase/assets/info-DrfDr3GT.js +0 -1
  1021. package/dist/showcase/assets/inline-stat-BVJNx4xR.js +0 -1
  1022. package/dist/showcase/assets/inline-stat-C3cWbSUK.js +0 -15
  1023. package/dist/showcase/assets/input-CKTTGrnR.js +0 -1
  1024. package/dist/showcase/assets/input-UHuWYPMF.js +0 -1
  1025. package/dist/showcase/assets/input-group-BR_lU__a.js +0 -1
  1026. package/dist/showcase/assets/input-group-iZaLbsTP.js +0 -47
  1027. package/dist/showcase/assets/inputs-C7j8Xivm.js +0 -155
  1028. package/dist/showcase/assets/installation-DYnTwaPR.js +0 -134
  1029. package/dist/showcase/assets/invoice-header-D_0KvXQe.js +0 -36
  1030. package/dist/showcase/assets/invoice-items-jcNb-sST.js +0 -36
  1031. package/dist/showcase/assets/invoice-mini-DrZAbjPq.js +0 -14
  1032. package/dist/showcase/assets/invoice-table-DlAw0U4U.js +0 -30
  1033. package/dist/showcase/assets/isSameDay-Cl6v_syG.js +0 -1
  1034. package/dist/showcase/assets/isToday-BBoFjSnJ.js +0 -1
  1035. package/dist/showcase/assets/italic-j2U8krYa.js +0 -1
  1036. package/dist/showcase/assets/item-B2WoC1SD.js +0 -139
  1037. package/dist/showcase/assets/item-BMJ5hfT5.js +0 -1
  1038. package/dist/showcase/assets/item-C_5-EHNK.js +0 -1
  1039. package/dist/showcase/assets/kanban-Cv64Szxq.js +0 -188
  1040. package/dist/showcase/assets/key-round-CORDYqE2.js +0 -1
  1041. package/dist/showcase/assets/label-B0UjYqfw.js +0 -1
  1042. package/dist/showcase/assets/languages-Njdo5y8i.js +0 -1
  1043. package/dist/showcase/assets/layers-Dyew-8IP.js +0 -1
  1044. package/dist/showcase/assets/layout-app-shell-DEZt0d84.js +0 -608
  1045. package/dist/showcase/assets/layout-auth-BT84haSd.js +0 -790
  1046. package/dist/showcase/assets/layout-containers-D6SP4vRB.js +0 -101
  1047. package/dist/showcase/assets/layout-header-kLYjJnHz.js +0 -203
  1048. package/dist/showcase/assets/layout-page-CmS4d8jw.js +0 -314
  1049. package/dist/showcase/assets/layout-primitives-BW858Ymj.js +0 -34
  1050. package/dist/showcase/assets/layout-sidebar-eIDEoyzV.js +0 -224
  1051. package/dist/showcase/assets/layout-users-HyZHQIov.js +0 -117
  1052. package/dist/showcase/assets/layout-workspace-BrDwVUvn.js +0 -191
  1053. package/dist/showcase/assets/lib-Dhty05ZR.js +0 -1
  1054. package/dist/showcase/assets/list-checks-CcWjdDq8.js +0 -1
  1055. package/dist/showcase/assets/lock-CwH3bXx5.js +0 -1
  1056. package/dist/showcase/assets/lock-keyhole-BdBxeIkW.js +0 -1
  1057. package/dist/showcase/assets/mail-Cn94c8yp.js +0 -1
  1058. package/dist/showcase/assets/mail-check-D-q_vPxD.js +0 -1
  1059. package/dist/showcase/assets/map-BfUZMScw.js +0 -124
  1060. package/dist/showcase/assets/map-pin-BZB9GUXP.js +0 -1
  1061. package/dist/showcase/assets/media-library-DguE2q94.js +0 -699
  1062. package/dist/showcase/assets/mention-inline-suggestions-CyGplHOl.js +0 -1
  1063. package/dist/showcase/assets/mentions-lmr_XmfN.js +0 -138
  1064. package/dist/showcase/assets/menus-D0qYbzKk.js +0 -171
  1065. package/dist/showcase/assets/message-square-7VpiUwcS.js +0 -1
  1066. package/dist/showcase/assets/metadata-list-B8O2ljIS.js +0 -1
  1067. package/dist/showcase/assets/metadata-list-BcYg9Ru3.js +0 -286
  1068. package/dist/showcase/assets/metric-HzQnjCpO.js +0 -1
  1069. package/dist/showcase/assets/metric-bar-Fr1TDnSu.js +0 -1
  1070. package/dist/showcase/assets/metric-grid-CM-P894v.js +0 -1
  1071. package/dist/showcase/assets/metric-trend-chip-DqYH_U8e.js +0 -1
  1072. package/dist/showcase/assets/metrics-analytics-bar-DKRLzyXq.js +0 -44
  1073. package/dist/showcase/assets/metrics-analytics-cards-qMbAYBbk.js +0 -50
  1074. package/dist/showcase/assets/metrics-comparison-GSWVebL_.js +0 -76
  1075. package/dist/showcase/assets/metrics-heatmap-Fj5QZoO3.js +0 -27
  1076. package/dist/showcase/assets/metrics-inline-badge-BuyhiYDl.js +0 -17
  1077. package/dist/showcase/assets/metrics-kpi-row-xNn4bjZc.js +0 -31
  1078. package/dist/showcase/assets/metrics-micro-grid-W_ZYCffp.js +0 -42
  1079. package/dist/showcase/assets/metrics-overview-D-km110k.js +0 -192
  1080. package/dist/showcase/assets/metrics-stat-cards-odVtufFY.js +0 -54
  1081. package/dist/showcase/assets/minus-DZsXg5PW.js +0 -1
  1082. package/dist/showcase/assets/money-display-C7Hp2pT3.js +0 -1
  1083. package/dist/showcase/assets/month-year-picker-Dnr4J0mO.js +0 -1
  1084. package/dist/showcase/assets/navigation-0nrtBP5O.js +0 -90
  1085. package/dist/showcase/assets/navigation-BaWNq9oa.js +0 -231
  1086. package/dist/showcase/assets/navigation-extras-B22W1Vkk.js +0 -43
  1087. package/dist/showcase/assets/onboarding-checklist-BFj7rmdZ.js +0 -119
  1088. package/dist/showcase/assets/overflow-tab-bar-D_rltswa.js +0 -1
  1089. package/dist/showcase/assets/overlays-CNfiB-zF.js +0 -408
  1090. package/dist/showcase/assets/overlays-CuxuFGC8.js +0 -159
  1091. package/dist/showcase/assets/overview-CBmdAWO6.js +0 -184
  1092. package/dist/showcase/assets/package-BwwfLMWb.js +0 -1
  1093. package/dist/showcase/assets/package-check-BepTKJLy.js +0 -1
  1094. package/dist/showcase/assets/page-_JDFUWqe.js +0 -1
  1095. package/dist/showcase/assets/page-action-button-Cf34I-B2.js +0 -1
  1096. package/dist/showcase/assets/page-header-pdHFvyTo.js +0 -1
  1097. package/dist/showcase/assets/pagination-Db1WJvjK.js +0 -42
  1098. package/dist/showcase/assets/pagination-s8_MGk9D.js +0 -1
  1099. package/dist/showcase/assets/paperclip-B9HQ47_2.js +0 -1
  1100. package/dist/showcase/assets/password-input-D-eZWMGX.js +0 -1
  1101. package/dist/showcase/assets/pencil-Dm53P6Db.js +0 -1
  1102. package/dist/showcase/assets/phone-a4Ja9xAp.js +0 -1
  1103. package/dist/showcase/assets/plus-DbOlx2x0.js +0 -1
  1104. package/dist/showcase/assets/popover-B8qrRgt3.js +0 -1
  1105. package/dist/showcase/assets/popover-Bm5wETUP.js +0 -1
  1106. package/dist/showcase/assets/popover-menu-EH4P-BuI.js +0 -1
  1107. package/dist/showcase/assets/products-n6VBSMDh.js +0 -423
  1108. package/dist/showcase/assets/progress-D9r6PSCF.js +0 -1
  1109. package/dist/showcase/assets/progress-DVnMcpeq.js +0 -18
  1110. package/dist/showcase/assets/props-table-udnF7Z46.js +0 -1
  1111. package/dist/showcase/assets/quote-qVQF4JC7.js +0 -1
  1112. package/dist/showcase/assets/receipt-DaC4l-Mr.js +0 -1
  1113. package/dist/showcase/assets/receipt-text-BnwhWHdU.js +0 -1
  1114. package/dist/showcase/assets/refinement-guide-zBbAE-vw.js +0 -189
  1115. package/dist/showcase/assets/refresh-cw-CX6ghqEe.js +0 -1
  1116. package/dist/showcase/assets/resolveValueLabel-Cjbd_80A.js +0 -1
  1117. package/dist/showcase/assets/resource-D1fXD_Pt.js +0 -139
  1118. package/dist/showcase/assets/resource-i2YV9aHL.js +0 -1
  1119. package/dist/showcase/assets/resource-selector-card-CdQEPr9U.js +0 -43
  1120. package/dist/showcase/assets/rich-text-editor-DJ2i03XV.js +0 -143
  1121. package/dist/showcase/assets/rich-text-editor-Wh8r117d.js +0 -124
  1122. package/dist/showcase/assets/rotate-ccw-2_FhUcdG.js +0 -1
  1123. package/dist/showcase/assets/route-EGSdKgEp.js +0 -1
  1124. package/dist/showcase/assets/save-nXKvyYEx.js +0 -1
  1125. package/dist/showcase/assets/schema-form-D_9UkVBe.js +0 -327
  1126. package/dist/showcase/assets/scroll-area-CB7X4JqZ.js +0 -1
  1127. package/dist/showcase/assets/scroll-area-DCHN9iYj.js +0 -32
  1128. package/dist/showcase/assets/section-C2ovQgbv.js +0 -1
  1129. package/dist/showcase/assets/select-BTOraQSw.js +0 -1
  1130. package/dist/showcase/assets/select-CE0BbUs7.js +0 -1
  1131. package/dist/showcase/assets/send-CI0r12bX.js +0 -1
  1132. package/dist/showcase/assets/separator-CmGfh7lI.js +0 -1
  1133. package/dist/showcase/assets/separator-PhQTNRIB.js +0 -28
  1134. package/dist/showcase/assets/settings-2-qkVb0lyz.js +0 -1
  1135. package/dist/showcase/assets/settings-YXjlZ9zs.js +0 -1
  1136. package/dist/showcase/assets/sheet-CFDUB2H1.js +0 -1
  1137. package/dist/showcase/assets/shield-Dr_UeG6H.js +0 -1
  1138. package/dist/showcase/assets/shield-alert-7rAVXg-K.js +0 -1
  1139. package/dist/showcase/assets/shield-check-BbzHL-nM.js +0 -1
  1140. package/dist/showcase/assets/shopping-bag-DeprN0fB.js +0 -1
  1141. package/dist/showcase/assets/showcase-BU6Fvpg_.js +0 -132
  1142. package/dist/showcase/assets/sidebar-CudnhnWN.js +0 -1
  1143. package/dist/showcase/assets/sidebar.context-CZaDhRhh.js +0 -1
  1144. package/dist/showcase/assets/skeleton-DD6VPVrv.js +0 -1
  1145. package/dist/showcase/assets/skeleton-Dc5LvW7E.js +0 -29
  1146. package/dist/showcase/assets/slider-BxvP9nxk.js +0 -1
  1147. package/dist/showcase/assets/smart-card-B0Llbpiy.js +0 -1
  1148. package/dist/showcase/assets/sonner-mszFoDWT.js +0 -22
  1149. package/dist/showcase/assets/sortable.esm-J5bJPtH9.js +0 -5
  1150. package/dist/showcase/assets/sparkles-CQSdl3Gw.js +0 -1
  1151. package/dist/showcase/assets/spinner-BSxBn2qs.js +0 -49
  1152. package/dist/showcase/assets/spinner-DJxoGJtq.js +0 -30
  1153. package/dist/showcase/assets/spinner-DihTCcve.js +0 -1
  1154. package/dist/showcase/assets/square-pen-CGMSA_p6.js +0 -1
  1155. package/dist/showcase/assets/stacked-avatars-Ct8B4doW.js +0 -1
  1156. package/dist/showcase/assets/star-DFlmmJdh.js +0 -1
  1157. package/dist/showcase/assets/startOfDay-BedffeNt.js +0 -1
  1158. package/dist/showcase/assets/styles-jR6uS97D.js +0 -1
  1159. package/dist/showcase/assets/suggestions-DnjJ-U9n.js +0 -126
  1160. package/dist/showcase/assets/switch-Dkojf4Yd.js +0 -1
  1161. package/dist/showcase/assets/switch-bTb6CSLr.js +0 -1
  1162. package/dist/showcase/assets/sync-rk8eFwoJ.js +0 -124
  1163. package/dist/showcase/assets/table-4qIerTVI.js +0 -686
  1164. package/dist/showcase/assets/table-BjMmmYd7.js +0 -1
  1165. package/dist/showcase/assets/table-actions-DqofOI1V.js +0 -1
  1166. package/dist/showcase/assets/tabs-BV6mMsfk.js +0 -19
  1167. package/dist/showcase/assets/tabs-u2fkHRw8.js +0 -1
  1168. package/dist/showcase/assets/tags-input-Cu_UwlwT.js +0 -1
  1169. package/dist/showcase/assets/text-button-Fyy21evq.js +0 -1
  1170. package/dist/showcase/assets/text-link-WRyY3ZZo.js +0 -1
  1171. package/dist/showcase/assets/textarea-BbCxWNzV.js +0 -1
  1172. package/dist/showcase/assets/textarea-CtD7JQsv.js +0 -1
  1173. package/dist/showcase/assets/timelines-BBPQpCFX.js +0 -200
  1174. package/dist/showcase/assets/toggle-group-B8mQ6wer.js +0 -1
  1175. package/dist/showcase/assets/toggles-CCClWVXZ.js +0 -71
  1176. package/dist/showcase/assets/toggles-group-DgCilPMo.js +0 -32
  1177. package/dist/showcase/assets/tooltip-ClJCWWTI.js +0 -31
  1178. package/dist/showcase/assets/trash-2-Cs7y4-K-.js +0 -1
  1179. package/dist/showcase/assets/trending-up-spYhMxs6.js +0 -1
  1180. package/dist/showcase/assets/truck-DENWgqxK.js +0 -1
  1181. package/dist/showcase/assets/typography-DMmYNFQj.js +0 -223
  1182. package/dist/showcase/assets/ui-badge-BJEtsa7X.js +0 -28
  1183. package/dist/showcase/assets/ui-card-CrPKoi3P.js +0 -30
  1184. package/dist/showcase/assets/ui-table-2HhDwPcu.js +0 -42
  1185. package/dist/showcase/assets/upload-tray-CUZAErkI.js +0 -138
  1186. package/dist/showcase/assets/use-layout-link-Co3GiFmb.js +0 -1
  1187. package/dist/showcase/assets/useAnchoredPopupScrollLock-DgIA0IXg.js +0 -1
  1188. package/dist/showcase/assets/useAriaLabelledBy-CDdoyQgg.js +0 -1
  1189. package/dist/showcase/assets/useCollapsiblePanel-BT0RSjGM.js +0 -1
  1190. package/dist/showcase/assets/useCompositeItem-DFghnuRZ.js +0 -1
  1191. package/dist/showcase/assets/useCompositeListItem-vXyRoJ2x.js +0 -1
  1192. package/dist/showcase/assets/useLabelableId-D__l5sQX.js +0 -1
  1193. package/dist/showcase/assets/useOpenInteractionType-bZIaLWfE.js +0 -1
  1194. package/dist/showcase/assets/useRender-BV0akLbc.js +0 -1
  1195. package/dist/showcase/assets/useTriggerFocusGuards-dYriJrQP.js +0 -1
  1196. package/dist/showcase/assets/useValueChanged-Dg0AWST0.js +0 -1
  1197. package/dist/showcase/assets/user-B9eCi5Vl.js +0 -1
  1198. package/dist/showcase/assets/user-plus-Uo4IAY7e.js +0 -1
  1199. package/dist/showcase/assets/users-DLep-WjV.js +0 -1
  1200. package/dist/showcase/assets/vendor-profile-BbcE51Pa.js +0 -37
  1201. package/dist/showcase/assets/video-BasdlaQE.js +0 -1
  1202. package/dist/showcase/assets/wrench-BYUVe1-z.js +0 -1
  1203. package/dist/showcase/assets/x-Bx9ayVXr.js +0 -1
  1204. package/dist/showcase/assets/zap-Mgu5HEtF.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/composed/ai/ai.strings.ts","../../../../src/components/composed/ai/ai-summary/ai-summary.tsx","../../../../src/components/composed/ai/ai-classification/ai-classification.tsx","../../../../src/components/composed/ai/ai-confidence/types.ts","../../../../src/components/composed/ai/ai-confidence/ai-confidence.tsx","../../../../src/components/composed/ai/ai-prompt-suggestions/types.ts","../../../../src/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.tsx","../../../../src/components/composed/ai/ai-token-usage/types.ts","../../../../src/components/composed/ai/ai-token-usage/ai-token-usage.tsx","../../../../src/components/composed/ai/ai-feedback/types.ts","../../../../src/components/composed/ai/ai-feedback/ai-feedback.tsx","../../../../src/components/composed/ai/ai-citation/types.ts","../../../../src/components/composed/ai/ai-citation/ai-citation.tsx","../../../../src/components/composed/ai/ai-inline-citation/types.ts","../../../../src/components/composed/ai/ai-inline-citation/ai-inline-citation.tsx","../../../../src/components/composed/ai/ai-package-info/types.ts","../../../../src/components/composed/ai/ai-package-info/ai-package-info.tsx","../../../../src/components/composed/ai/ai-file-tree/types.ts","../../../../src/components/composed/ai/ai-file-tree/ai-file-tree.tsx"],"sourcesContent":["/**\n * Shared default strings for `composed/ai` components.\n *\n * Each component accepts a `strings` prop deep-merged over the default subset\n * it reads. Consumers wire backend i18n at the call site:\n *\n * <AiSummaryBlock strings={{ title: t('ai.summary.title') }} … />\n */\n\nexport interface AiSummaryStrings {\n\t/** Card title rendered in the header. */\n\ttitle: string;\n\t/** Suffix badge label (e.g. \"AI\"). */\n\tbadgeLabel: string;\n\t/** Footer regenerate button label. */\n\tregenerate: string;\n\t/** Confidence-bar level labels. */\n\tconfidenceLevels: { low: string; medium: string; high: string };\n}\n\nexport const defaultAiSummaryStrings: AiSummaryStrings = {\n\ttitle: 'AI Summary',\n\tbadgeLabel: 'AI',\n\tregenerate: 'Regenerate',\n\tconfidenceLevels: { low: 'low', medium: 'medium', high: 'high' },\n};\n\nexport interface AiClassificationStrings {\n\t/** Card title rendered in the header. */\n\ttitle: string;\n\t/** Inline-stat row labels. */\n\tcomplexityLabel: string;\n\tflagsLabel: string;\n\tnextStepLabel: string;\n\t/** Confidence pill prefix (e.g. \"Confidence: High\"). */\n\tconfidencePrefix: string;\n\t/** Confidence band labels. */\n\tconfidenceBands: { low: string; medium: string; high: string };\n}\n\nexport const defaultAiClassificationStrings: AiClassificationStrings = {\n\ttitle: 'Classification',\n\tcomplexityLabel: 'Complexity',\n\tflagsLabel: 'Flags',\n\tnextStepLabel: 'Next Step',\n\tconfidencePrefix: 'Confidence',\n\tconfidenceBands: { low: 'Low', medium: 'Medium', high: 'High' },\n};\n","import { BrainCircuit, RefreshCw } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport { Text } from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiSummaryStrings } from '../ai.strings';\nimport type { AiSummaryBlockProps, ConfidenceLevel } from './types';\n\nconst confidenceBars: Record<ConfidenceLevel, number> = {\n low: 1,\n medium: 2,\n high: 3,\n};\n\nfunction ConfidenceBars({ level, label }: { level: ConfidenceLevel; label: string }) {\n const filled = confidenceBars[level];\n return (\n\t <div className={cn('ai-summary--confidence', 'flex items-center gap-1.5')}>\n <div className=\"flex items-center gap-0.5\">\n {Array.from({ length: 3 }, (_, i) => (\n <div\n key={`bar-${String(i)}`}\n className={cn(\n 'h-2.5 w-1 rounded-sm',\n i < filled ? 'bg-foreground/60' : 'bg-muted-foreground/20',\n )}\n />\n ))}\n </div>\n <Text size=\"xs\" type=\"secondary\" tag=\"span\" className=\"capitalize\">\n {label}\n </Text>\n </div>\n );\n}\n\nexport function AiSummaryBlock({ data, strings: stringsProp }: AiSummaryBlockProps) {\n const strings = useStrings(defaultAiSummaryStrings, stringsProp);\n return (\n\t <SmartCard\n\t icon={<BrainCircuit className=\"size-4\" />}\n\t title={strings.title}\n\t className=\"ai-summary--component\"\n titleSuffix={\n <Badge variant=\"secondary\">\n {strings.badgeLabel}\n </Badge>\n }\n footerText={\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Text size=\"xs\" type=\"secondary\" tag=\"span\">\n {data.generatedAt}\n </Text>\n <Text size=\"xs\" type=\"discrete\" tag=\"span\">\n {data.model}\n </Text>\n </div>\n {!!data.onRegenerate && (\n <Button variant=\"secondary\" buttonStyle=\"ghost\" onClick={data.onRegenerate}>\n <RefreshCw className=\"mr-1 h-3 w-3\" />\n {strings.regenerate}\n </Button>\n )}\n </div>\n }\n >\n <div className=\"space-y-3\">\n <Text size=\"sm\" lineHeight=\"relaxed\">\n {data.summary}\n </Text>\n\n {data.entities.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {data.entities.map((entity) => (\n <Badge key={entity} variant=\"secondary\">\n {entity}\n </Badge>\n ))}\n </div>\n )}\n\n <ConfidenceBars level={data.confidence} label={strings.confidenceLevels[data.confidence]} />\n </div>\n </SmartCard>\n );\n}\n","import { BrainCircuit } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge/badge';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport { Text } from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiClassificationStrings } from '../ai.strings';\nimport type { AiClassificationPanelProps } from './types';\n\nexport function AiClassificationPanel({ data, strings: stringsProp }: AiClassificationPanelProps) {\n\tconst strings = useStrings(defaultAiClassificationStrings, stringsProp);\n\tconst confidenceLabel =\n\t\tdata.confidence >= 0.9\n\t\t\t? strings.confidenceBands.high\n\t\t\t: data.confidence >= 0.7\n\t\t\t\t? strings.confidenceBands.medium\n\t\t\t\t: strings.confidenceBands.low;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<BrainCircuit className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName=\"ai-classification--component\"\n\t\t>\n\t\t\t<div className=\"space-y-3\">\n\t\t\t\t<div className=\"flex flex-wrap items-center gap-1.5\">\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.requestType}\n\t\t\t\t\t</Badge>\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant={data.urgencyVariant}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.urgency}\n\t\t\t\t\t</Badge>\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant={data.toneVariant}\n\t\t\t\t\t\tdot\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.tone}\n\t\t\t\t\t</Badge>\n\t\t\t\t</div>\n\n\t\t\t\t<InlineStat\n\t\t\t\t\tlabel={strings.complexityLabel}\n\t\t\t\t\tlabelClassName=\"text-sm font-medium text-foreground\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t{Array.from({ length: 5 }, (_, i) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tkey={`cx-${String(i)}`}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'h-1.5 w-3 rounded-sm',\n\t\t\t\t\t\t\t\t\t\ti < data.complexityScore\n\t\t\t\t\t\t\t\t\t\t\t? 'bg-foreground/60'\n\t\t\t\t\t\t\t\t\t\t\t: 'bg-muted',\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))}\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"ml-1\">\n\t\t\t\t\t\t\t\t{String(data.complexityScore)}/5\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t/>\n\n\t\t\t\t{data.flags.length > 0 && (\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tlabel={strings.flagsLabel}\n\t\t\t\t\t\tlabelClassName=\"text-sm font-medium text-foreground\"\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t<span className=\"flex gap-1\">\n\t\t\t\t\t\t\t\t{data.flags.map((flag) => (\n\t\t\t\t\t\t\t\t\t<Badge key={flag} variant=\"warning\">\n\t\t\t\t\t\t\t\t\t\t{flag}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<InlineStat\n\t\t\t\t\tlabel={strings.nextStepLabel}\n\t\t\t\t\tlabelClassName=\"text-sm font-medium text-foreground\"\n\t\t\t\t\tvalue={<Badge variant=\"info\">{data.suggestedAction}</Badge>}\n\t\t\t\t/>\n\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t{data.summary}\n\t\t\t\t</Text>\n\n\t\t\t\t<Separator />\n\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.confidencePrefix}: {confidenceLabel}\n\t\t\t\t\t</Badge>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\ttype=\"discrete\"\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.model}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface AiConfidenceFactor {\n\tlabel: string;\n\tscore: number; // 0–1\n}\n\nexport interface AiConfidenceCardStrings {\n\ttitle: string;\n\tconfidenceLabel: string;\n\tfactorsLabel: string;\n}\n\nexport const defaultAiConfidenceCardStrings: AiConfidenceCardStrings = {\n\ttitle: 'AI Confidence',\n\tconfidenceLabel: 'Overall',\n\tfactorsLabel: 'Contributing factors',\n};\n\nexport interface AiConfidenceCardProps {\n\tscore: number; // 0–1\n\tmodel?: string;\n\tfactors?: AiConfidenceFactor[];\n\tclassName?: string;\n\tstrings?: StringsProp<AiConfidenceCardStrings>;\n}\n","/**\n * AiConfidenceCard — visualises an AI model's overall confidence with a circular\n * progress dial and a list of weighted contributing factors. Strings are overridable.\n */\nimport { Sparkles } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiConfidenceCardStrings, type AiConfidenceCardProps } from './types';\n\nfunction levelLabel(score: number) {\n\tif (score >= 0.85) return { label: 'High', variant: 'success' as const };\n\tif (score >= 0.6) return { label: 'Medium', variant: 'warning' as const };\n\treturn { label: 'Low', variant: 'error' as const };\n}\n\nexport function AiConfidenceCard({ score, model, factors, className, strings: stringsProp }: AiConfidenceCardProps) {\n\tconst strings = useStrings(defaultAiConfidenceCardStrings, stringsProp);\n\tconst pct = Math.round(score * 100);\n\tconst { label, variant } = levelLabel(score);\n\tconst c = 2 * Math.PI * 24;\n\tconst dash = c - (pct / 100) * c;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Sparkles className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={!!model && <Badge variant=\"secondary\" size=\"small\">{model}</Badge>}\n\t\t\tclassName={cn('ai-confidence--component', className)}\n\t\t>\n\t\t\t<div className=\"grid gap-space-xl md:grid-cols-[auto_minmax(0,1fr)] md:items-center\">\n\t\t\t\t<div className=\"relative shrink-0\">\n\t\t\t\t\t<svg width=\"56\" height=\"56\" viewBox=\"0 0 64 64\" aria-hidden=\"true\">\n\t\t\t\t\t\t<circle cx=\"32\" cy=\"32\" r=\"24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"5\" className=\"text-muted/60\" />\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tcx=\"32\"\n\t\t\t\t\t\t\tcy=\"32\"\n\t\t\t\t\t\t\tr=\"24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"5\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeDasharray={c}\n\t\t\t\t\t\t\tstrokeDashoffset={dash}\n\t\t\t\t\t\t\ttransform=\"rotate(-90 32 32)\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\tvariant === 'success' && 'text-success',\n\t\t\t\t\t\t\t\tvariant === 'warning' && 'text-warning',\n\t\t\t\t\t\t\t\tvariant === 'error' && 'text-destructive',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n\t\t\t\t\t\t<Text weight=\"semibold\" className=\"tabular-nums leading-none\">{pct}%</Text>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"grid min-w-0 gap-space-sm\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t{strings.confidenceLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-space-sm\">\n\t\t\t\t\t\t<Badge variant={variant}>{label}</Badge>\n\t\t\t\t\t\t{!!model && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t\t{model}\n\t\t\t\t\t\t\t</Text>\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{!!factors && factors.length > 0 && (\n\t\t\t\t<div className=\"mt-space-xl grid gap-space-md\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t{strings.factorsLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{factors.map((f) => (\n\t\t\t\t\t\t<div key={f.label} className=\"grid gap-space-sm\">\n\t\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\t\tlabel={f.label}\n\t\t\t\t\t\t\t\tvalue={`${Math.round(f.score * 100)}%`}\n\t\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\t\tlabelClassName=\"text-xs font-medium text-foreground\"\n\t\t\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"h-1.5 w-full overflow-hidden rounded-full bg-muted/70\">\n\t\t\t\t\t\t\t\t<div className=\"h-full rounded-full bg-primary\" style={{ width: `${Math.round(f.score * 100)}%` }} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nAiConfidenceCard.displayName = 'AiConfidenceCard';\n","import type { LucideIcon } from 'lucide-react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface AiPromptSuggestion {\n\tid: string;\n\tlabel: string;\n\tdescription?: string;\n\ticon?: LucideIcon;\n}\n\nexport interface AiPromptSuggestionsStrings {\n\ttitle: string;\n\thint: string;\n}\n\nexport const defaultAiPromptSuggestionsStrings: AiPromptSuggestionsStrings = {\n\ttitle: 'Try asking',\n\thint: 'Tap a prompt to start',\n};\n\nexport interface AiPromptSuggestionsProps {\n\tsuggestions: AiPromptSuggestion[];\n\tonPick?: (suggestion: AiPromptSuggestion) => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AiPromptSuggestionsStrings>;\n}\n","/**\n * AiPromptSuggestions — grid of clickable prompt cards.\n * Use to seed a chat or assistant input with curated starting prompts.\n */\nimport { Sparkles } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { IconBadge } from '@/components/base/display';\nimport {\n\tItem,\n\tItemContent,\n\tItemDescription,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { cn } from '@/lib/utils';\nimport { useStrings } from '@/lib/strings';\n\nimport {\n\tdefaultAiPromptSuggestionsStrings,\n\ttype AiPromptSuggestionsProps,\n} from './types';\n\nexport function AiPromptSuggestions({ suggestions, onPick, className, strings: stringsProp }: AiPromptSuggestionsProps) {\n\tconst strings = useStrings(defaultAiPromptSuggestionsStrings, stringsProp);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Sparkles className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.hint}\n\t\t\tclassName={cn('ai-prompt-suggestions--component', className)}\n\t\t>\n\t\t\t<div className=\"grid grid-cols-[repeat(auto-fit,minmax(min(15rem,100%),1fr))] gap-space-xl\">\n\t\t\t\t{suggestions.map((s) => {\n\t\t\t\t\tconst Icon = s.icon;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\tkey={s.id}\n\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\trender={<button type=\"button\" onClick={() => onPick?.(s)} />}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'ai-prompt-suggestions--item h-full items-start gap-space-lg px-surface py-surface-sm transition-[border-color,background] duration-150',\n\t\t\t\t\t\t\t\t'hover:border-foreground/20 hover:bg-muted/40',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t\t<IconBadge icon={Icon} tone=\"primary\" size=\"default\" shape=\"square\" />\n\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<ItemContent className=\"min-w-0 gap-space-sm\">\n\t\t\t\t\t\t\t\t<ItemTitle>{s.label}</ItemTitle>\n\t\t\t\t\t\t\t\t{!!s.description && (\n\t\t\t\t\t\t\t\t\t<ItemDescription>{s.description}</ItemDescription>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t</Item>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nAiPromptSuggestions.displayName = 'AiPromptSuggestions';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface AiTokenUsageStrings {\n\ttitle: string;\n\tinput: string;\n\toutput: string;\n\ttotal: string;\n\tcost: string;\n}\n\nexport const defaultAiTokenUsageStrings: AiTokenUsageStrings = {\n\ttitle: 'Token usage',\n\tinput: 'Input',\n\toutput: 'Output',\n\ttotal: 'Total',\n\tcost: 'Estimated cost',\n};\n\nexport interface AiTokenUsageCardProps {\n\tmodel?: string;\n\tinputTokens: number;\n\toutputTokens: number;\n\tcost?: string;\n\tmaxTokens?: number;\n\tclassName?: string;\n\tstrings?: StringsProp<AiTokenUsageStrings>;\n}\n","/**\n * AiTokenUsageCard — input + output token counts with a usage bar\n * relative to a max context window, plus optional cost estimate.\n */\nimport { Cpu } from 'lucide-react';\nimport { useStrings } from '@/lib/strings';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { InlineStat } from '@/components/composed/data-display';\n\nimport { defaultAiTokenUsageStrings, type AiTokenUsageCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nexport function AiTokenUsageCard({\n\tmodel,\n\tinputTokens,\n\toutputTokens,\n\tcost,\n\tmaxTokens,\n\tclassName,\n\tstrings: stringsProp,\n}: AiTokenUsageCardProps) {\n\tconst strings = useStrings(defaultAiTokenUsageStrings, stringsProp);\n\tconst total = inputTokens + outputTokens;\n\tconst pct = maxTokens ? Math.min(100, Math.round((total / maxTokens) * 100)) : 0;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Cpu className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={!!model && <Badge variant=\"secondary\">{model}</Badge>}\n\t\t\tclassName={cn('ai-token-usage--component', className)}\n\t\t>\n\t\t\t<div className=\"grid grid-cols-3 gap-2\">\n\t\t\t\t{[\n\t\t\t\t\t{ label: strings.input, value: inputTokens },\n\t\t\t\t\t{ label: strings.output, value: outputTokens },\n\t\t\t\t\t{ label: strings.total, value: total },\n\t\t\t\t].map((cell) => (\n\t\t\t\t\t<div key={cell.label} className=\"rounded-md bg-muted/40 px-3 py-2\">\n\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">{cell.label}</Text>\n\t\t\t\t\t\t<Text size=\"lg\" weight=\"semibold\" className=\"tabular-nums\">{cell.value.toLocaleString()}</Text>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{!!maxTokens && (\n\t\t\t\t<div className=\"mt-3\">\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tlabel={`${total.toLocaleString()} / ${maxTokens.toLocaleString()}`}\n\t\t\t\t\t\tvalue={`${pct}%`}\n\t\t\t\t\t\tmono\n\t\t\t\t\t\tlabelClassName=\"text-xs\"\n\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-muted\">\n\t\t\t\t\t\t<div className=\"h-full rounded-full bg-primary\" style={{ width: `${pct}%` }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!cost && (\n\t\t\t\t<InlineStat\n\t\t\t\t\tclassName=\"mt-3 rounded-md bg-primary/5 px-3 py-2\"\n\t\t\t\t\tlabel={strings.cost}\n\t\t\t\t\tvalue={cost}\n\t\t\t\t\tmono\n\t\t\t\t\tlabelClassName=\"text-xs\"\n\t\t\t\t\tvalueClassName=\"text-sm font-bold\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nAiTokenUsageCard.displayName = 'AiTokenUsageCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport type AiFeedbackVote = 'up' | 'down' | null;\n\nexport interface AiFeedbackStrings {\n\tprompt: string;\n\tthumbsUpAria: string;\n\tthumbsDownAria: string;\n\tcommentPlaceholder: string;\n\tsubmit: string;\n\tthanks: string;\n}\n\nexport const defaultAiFeedbackStrings: AiFeedbackStrings = {\n\tprompt: 'Was this helpful?',\n\tthumbsUpAria: 'Mark as helpful',\n\tthumbsDownAria: 'Mark as not helpful',\n\tcommentPlaceholder: 'Tell us more (optional)',\n\tsubmit: 'Send feedback',\n\tthanks: 'Thanks for your feedback.',\n};\n\nexport interface AiFeedbackProps {\n\tvalue?: AiFeedbackVote;\n\tonVote?: (vote: AiFeedbackVote) => void;\n\tonSubmitComment?: (comment: string, vote: AiFeedbackVote) => void;\n\tallowComment?: boolean;\n\tsubmitted?: boolean;\n\tclassName?: string;\n\tstrings?: StringsProp<AiFeedbackStrings>;\n}\n","/**\n * AiFeedback — thumbs-up / thumbs-down voter with an optional follow-up\n * comment field. Wires into model-improvement loops: emits the vote via\n * `onVote` immediately and a comment via `onSubmitComment` when the user\n * submits the textarea. After `submitted=true` the surface is replaced with\n * a thank-you confirmation. Strings overridable for i18n.\n */\nimport { useState } from 'react';\nimport { ThumbsDown, ThumbsUp } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Textarea } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiFeedbackStrings,\n\ttype AiFeedbackProps,\n\ttype AiFeedbackVote,\n} from './types';\n\nexport function AiFeedback({\n\tvalue,\n\tonVote,\n\tonSubmitComment,\n\tallowComment = true,\n\tsubmitted = false,\n\tclassName,\n\tstrings: stringsProp,\n}: AiFeedbackProps) {\n\tconst strings = useStrings(defaultAiFeedbackStrings, stringsProp);\n\tconst [internalVote, setInternalVote] = useState<AiFeedbackVote>(null);\n\tconst [comment, setComment] = useState('');\n\tconst vote = value ?? internalVote;\n\n\tconst cast = (next: AiFeedbackVote) => {\n\t\tconst resolved = vote === next ? null : next;\n\t\tif (value === undefined) setInternalVote(resolved);\n\t\tonVote?.(resolved);\n\t};\n\n\tif (submitted) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn('ai-feedback--component', \n\t\t\t\t\t'inline-flex items-center gap-2 rounded-full bg-success/10 px-3 py-1.5',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<ThumbsUp className=\"size-3.5 text-success\" />\n\t\t\t\t<Text size=\"xs\" type=\"success\" weight=\"medium\">\n\t\t\t\t\t{strings.thanks}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('ai-feedback--component inline-flex flex-col gap-2', className)}>\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">{strings.prompt}</Text>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle={vote === 'up' ? 'solid' : 'ghost'}\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\taria-label={strings.thumbsUpAria}\n\t\t\t\t\taria-pressed={vote === 'up'}\n\t\t\t\t\tonClick={() => cast('up')}\n\t\t\t\t\tclassName={cn(vote === 'up' && 'text-success bg-success/15 hover:bg-success/20')}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsUp className=\"size-3.5\" />\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle={vote === 'down' ? 'solid' : 'ghost'}\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\taria-label={strings.thumbsDownAria}\n\t\t\t\t\taria-pressed={vote === 'down'}\n\t\t\t\t\tonClick={() => cast('down')}\n\t\t\t\t\tclassName={cn(vote === 'down' && 'text-destructive bg-destructive/15 hover:bg-destructive/20')}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsDown className=\"size-3.5\" />\n\t\t\t\t</Button>\n\t\t\t</div>\n\n\t\t\t{!!allowComment && !!vote && (\n\t\t\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t\t\t<Textarea\n\t\t\t\t\t\tvalue={comment}\n\t\t\t\t\t\tonChange={(e) => setComment((e.target as HTMLTextAreaElement).value)}\n\t\t\t\t\t\tplaceholder={strings.commentPlaceholder}\n\t\t\t\t\t\tminRows={2}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tonSubmitComment?.(comment, vote);\n\t\t\t\t\t\t\t\tsetComment('');\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdisabled={!comment.trim()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.submit}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiFeedback.displayName = 'AiFeedback';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface AiCitationSource {\n\tid: string;\n\ttitle: ReactNode;\n\turl?: string;\n\tsnippet?: ReactNode;\n\tpublisher?: string;\n\tpublishedAt?: string;\n\trelevance?: number; // 0–1\n}\n\nexport interface AiCitationStrings {\n\ttitle: string;\n\tsourceCount: (n: number) => string;\n\texpand: string;\n\tcollapse: string;\n\tvisit: string;\n\trelevance: string;\n}\n\nexport const defaultAiCitationStrings: AiCitationStrings = {\n\ttitle: 'Sources',\n\tsourceCount: (n: number) => (n === 1 ? '1 source' : `${n} sources`),\n\texpand: 'Show sources',\n\tcollapse: 'Hide sources',\n\tvisit: 'Visit',\n\trelevance: 'Relevance',\n};\n\nexport interface AiCitationProps {\n\tsources: AiCitationSource[];\n\tdefaultExpanded?: boolean;\n\tmaxCollapsedRows?: number;\n\tclassName?: string;\n\tstrings?: StringsProp<AiCitationStrings>;\n}\n","/**\n * AiCitation — expandable source list for AI-grounded responses. Renders an\n * inline footnote-style header (e.g. \"3 sources\") that toggles a list of\n * source rows: title link, snippet, publisher / date, and a relevance bar.\n * Use under `AiSummaryBlock` and `AiMessageBubble` to make AI claims\n * traceable. Strings overridable for i18n.\n *\n * Note: `strings.sourceCount` is a function (single / plural form) — pass an\n * override if your locale needs more complex pluralisation.\n */\nimport { useState } from 'react';\nimport { ChevronDown, ChevronRight, ExternalLink, Quote } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemFooter,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { mergeStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiCitationStrings,\n\ttype AiCitationProps,\n\ttype AiCitationSource,\n} from './types';\n\nexport function AiCitation({\n\tsources,\n\tdefaultExpanded = false,\n\tmaxCollapsedRows = 0,\n\tclassName,\n\tstrings: stringsProp,\n}: AiCitationProps) {\n\t// `sourceCount` is a function so we cannot use `useStrings` deep-merge\n\t// (the merger replaces functions wholesale, which is what we want).\n\tconst strings = mergeStrings(defaultAiCitationStrings, stringsProp);\n\tconst [expanded, setExpanded] = useState(defaultExpanded);\n\tconst visible = expanded ? sources : sources.slice(0, Math.max(0, maxCollapsedRows));\n\tconst hidden = sources.length - visible.length;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'ai-citation--component',\n\t\t\t\t'rounded-lg border border-border bg-card px-surface-sm py-surface-sm shadow-xs',\n\t\t\t\t'space-y-space-lg',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={() => setExpanded((v) => !v)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'ai-citation--trigger h-auto justify-start gap-space-sm rounded-md px-control py-row-y',\n\t\t\t\t\t'text-muted-foreground hover:text-foreground hover:bg-muted/40',\n\t\t\t\t)}\n\t\t\t\taria-expanded={expanded}\n\t\t\t\taria-label={expanded ? strings.collapse : strings.expand}\n\t\t\t>\n\t\t\t\t<Quote className=\"size-3.5\" />\n\t\t\t\t<Text size=\"xs\" weight=\"medium\">\n\t\t\t\t\t{strings.title} · {strings.sourceCount(sources.length)}\n\t\t\t\t</Text>\n\t\t\t\t{expanded ? (\n\t\t\t\t\t<ChevronDown className=\"size-3.5\" />\n\t\t\t\t) : (\n\t\t\t\t\t<ChevronRight className=\"size-3.5\" />\n\t\t\t\t)}\n\t\t\t</Button>\n\n\t\t\t{(expanded || maxCollapsedRows > 0) && (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{visible.map((s, i) => (\n\t\t\t\t\t\t<CitationRow key={s.id} source={s} index={i + 1} strings={strings} />\n\t\t\t\t\t))}\n\t\t\t\t\t{!expanded && hidden > 0 && (\n\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\">\n\t\t\t\t\t\t\t+{hidden} more\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiCitation.displayName = 'AiCitation';\n\nfunction CitationRow({\n\tsource,\n\tindex,\n\tstrings,\n}: {\n\tsource: AiCitationSource;\n\tindex: number;\n\tstrings: ReturnType<typeof mergeStrings<typeof defaultAiCitationStrings>>;\n}) {\n\tconst relevancePct =\n\t\ttypeof source.relevance === 'number'\n\t\t\t? Math.round(Math.max(0, Math.min(1, source.relevance)) * 100)\n\t\t\t: null;\n\n\tconst TitleEl = source.url ? 'a' : 'span';\n\tconst titleProps = source.url\n\t\t? { href: source.url, target: '_blank' as const, rel: 'noopener noreferrer' }\n\t\t: {};\n\n\treturn (\n\t\t<Item variant=\"outline\" size=\"small\" className=\"items-start px-surface-sm py-surface-sm\">\n\t\t\t<ItemMedia>\n\t\t\t\t<span className=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-muted text-xxs font-semibold text-muted-foreground tabular-nums\">\n\t\t\t\t\t{index}\n\t\t\t\t</span>\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent>\n\t\t\t\t<ItemTitle className=\"truncate\">\n\t\t\t\t\t<TitleEl\n\t\t\t\t\t\t{...titleProps}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'truncate',\n\t\t\t\t\t\t\tsource.url && 'hover:text-primary hover:underline',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{source.title}\n\t\t\t\t\t\t{!!source.url && <ExternalLink className=\"ml-1 inline size-3 align-baseline\" />}\n\t\t\t\t\t</TitleEl>\n\t\t\t\t</ItemTitle>\n\t\t\t\t{!!source.snippet && <ItemDescription clamp={2}>{source.snippet}</ItemDescription>}\n\t\t\t\t{(source.publisher || source.publishedAt) && (\n\t\t\t\t\t<ItemFooter className=\"mt-1 justify-start gap-1.5\">\n\t\t\t\t\t\t{!!source.publisher && (\n\t\t\t\t\t\t\t<Text size=\"xxs\" type=\"discrete\">\n\t\t\t\t\t\t\t\t{source.publisher}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!source.publisher && !!source.publishedAt && (\n\t\t\t\t\t\t\t<Text size=\"xxs\" type=\"discrete\">·</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!source.publishedAt && (\n\t\t\t\t\t\t\t<Text size=\"xxs\" type=\"discrete\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t{source.publishedAt}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ItemFooter>\n\t\t\t\t)}\n\t\t\t</ItemContent>\n\t\t\t{relevancePct !== null && (\n\t\t\t\t<ItemActions className=\"w-16 flex-col items-end gap-0.5\">\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" weight=\"medium\" className=\"tabular-nums\">\n\t\t\t\t\t\t{relevancePct}%\n\t\t\t\t\t</Text>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"h-1 w-full overflow-hidden rounded-full bg-muted\"\n\t\t\t\t\t\taria-label={strings.relevance}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"h-full rounded-full bg-primary\"\n\t\t\t\t\t\t\tstyle={{ width: `${relevancePct}%` }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</ItemActions>\n\t\t\t)}\n\t\t</Item>\n\t);\n}\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface AiInlineCitationStrings {\n\t/** Tooltip prefix when only a number is rendered. */\n\tsourcePrefix: string;\n\t/** Aria label template — supports `{{n}}` and `{{title}}` placeholders. */\n\topenAria: string;\n}\n\nexport const defaultAiInlineCitationStrings: AiInlineCitationStrings = {\n\tsourcePrefix: 'Source',\n\topenAria: 'Open source {{n}}: {{title}}',\n};\n\nexport interface AiInlineCitationProps {\n\t/** 1-indexed citation number rendered inside the pill. */\n\tindex: number;\n\t/** Title of the cited source — used in the tooltip / aria-label. */\n\ttitle?: string;\n\t/** Optional URL — when provided, the pill renders as a link. */\n\turl?: string;\n\t/** Click handler — preferred over `url` for SPA / virtual link routing. */\n\tonSelect?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AiInlineCitationStrings>;\n}\n","/**\n * AiInlineCitation — small footnote-style pill rendered inline inside AI\n * response prose. The number references a position in the parent\n * sources/AiCitation list. Hover to see the source title; click to jump.\n */\nimport { Text } from '@/components/typography';\nimport { Button } from '@/components/base/buttons';\nimport { mergeStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiInlineCitationStrings,\n\ttype AiInlineCitationProps,\n} from './types';\n\nfunction interpolate(template: string, params: Record<string, string | number>): string {\n\treturn template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (m, k) => {\n\t\tconst v = params[k];\n\t\treturn v === undefined ? m : String(v);\n\t});\n}\n\nexport function AiInlineCitation({\n\tindex,\n\ttitle,\n\turl,\n\tonSelect,\n\tclassName,\n\tstrings: stringsProp,\n}: AiInlineCitationProps) {\n\tconst strings = mergeStrings(defaultAiInlineCitationStrings, stringsProp);\n\tconst ariaLabel = interpolate(strings.openAria, {\n\t\tn: index,\n\t\ttitle: title ?? '',\n\t});\n\tconst tooltip = title ? `${strings.sourcePrefix} ${index}: ${title}` : `${strings.sourcePrefix} ${index}`;\n\n\t// Sizes here are em-relative on purpose: an inline citation chip must\n\t// scale with the surrounding paragraph (whatever Text size it's nested in)\n\t// rather than pick a fixed token. This is the rule-3 exception for\n\t// \"load-bearing inline relative units\" — do NOT refactor to `text-xs`.\n\tconst baseCls = cn(\n\t\t'inline-flex h-5 min-w-5 -translate-y-px items-center justify-center rounded px-1',\n\t\t'align-middle text-xxs font-medium tabular-nums',\n\t\t'bg-muted text-muted-foreground',\n\t\t'hover:bg-primary/10 hover:text-primary',\n\t\t'transition-colors duration-150',\n\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\tclassName,\n\t);\n\n\tif (url) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\thref={url}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\ttitle={tooltip}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={cn('ai-inline-citation--component', baseCls)}\n\t\t\t>\n\t\t\t\t<Text tag=\"span\" size=\"xxs\" weight=\"medium\" className=\"leading-none\">\n\t\t\t\t\t{index}\n\t\t\t\t</Text>\n\t\t\t</a>\n\t\t);\n\t}\n\n\tif (onSelect) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={onSelect}\n\t\t\t\ttitle={tooltip}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={cn('ai-inline-citation--component', baseCls)}\n\t\t\t>\n\t\t\t\t<Text tag=\"span\" size=\"xxs\" weight=\"medium\" className=\"leading-none\">\n\t\t\t\t\t{index}\n\t\t\t\t</Text>\n\t\t\t</Button>\n\t\t);\n\t}\n\n\treturn (\n\t\t<span\n\t\t\ttitle={tooltip}\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={cn('ai-inline-citation--component', baseCls)}\n\t\t>\n\t\t\t<Text tag=\"span\" size=\"xxs\" weight=\"medium\" className=\"leading-none\">\n\t\t\t\t{index}\n\t\t\t</Text>\n\t\t</span>\n\t);\n}\n\nAiInlineCitation.displayName = 'AiInlineCitation';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface AiPackageInfoStrings {\n\tversionLabel: string;\n\tlicenseLabel: string;\n\tpublishedLabel: string;\n\thomepageAria: string;\n\trepositoryAria: string;\n\tweeklyDownloadsLabel: string;\n}\n\nexport const defaultAiPackageInfoStrings: AiPackageInfoStrings = {\n\tversionLabel: 'Version',\n\tlicenseLabel: 'License',\n\tpublishedLabel: 'Published',\n\thomepageAria: 'Open homepage',\n\trepositoryAria: 'Open repository',\n\tweeklyDownloadsLabel: 'Weekly downloads',\n};\n\nexport interface AiPackageInfoProps {\n\t/** Package name (npm-style: optional `@scope/`). */\n\tname: string;\n\t/** Latest / pinned version. */\n\tversion?: string;\n\t/** Short description from the package manifest. */\n\tdescription?: ReactNode;\n\t/** SPDX-style license identifier (e.g. \"MIT\"). */\n\tlicense?: string;\n\t/** ISO date or human label of last publish. */\n\tpublishedAt?: string;\n\t/** Package homepage URL. */\n\thomepage?: string;\n\t/** Repository URL (typically GitHub). */\n\trepository?: string;\n\t/** Weekly downloads — formatted by the consumer. */\n\tweeklyDownloads?: string | number;\n\t/** Comma-separated tag list rendered as small chips. */\n\tkeywords?: ReadonlyArray<string>;\n\t/** Click handler for the whole card. */\n\tonSelect?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AiPackageInfoStrings>;\n}\n","/**\n * AiPackageInfo — compact card describing an npm / library package referenced\n * by the model. Header: name + version chip; body: description + optional\n * meta (license, published date, weekly downloads) and keyword chips. Footer\n * exposes homepage / repository links when provided.\n */\nimport { Code2, ExternalLink, Globe, Package } from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiPackageInfoStrings, type AiPackageInfoProps } from './types';\n\nexport function AiPackageInfo({\n\tname,\n\tversion,\n\tdescription,\n\tlicense,\n\tpublishedAt,\n\thomepage,\n\trepository,\n\tweeklyDownloads,\n\tkeywords,\n\tonSelect,\n\tclassName,\n\tstrings: stringsProp,\n}: AiPackageInfoProps) {\n\tconst strings = useStrings(defaultAiPackageInfoStrings, stringsProp);\n\n\tconst Wrapper = onSelect ? 'button' : 'div';\n\tconst wrapperProps = onSelect\n\t\t? {\n\t\t\t\ttype: 'button' as const,\n\t\t\t\tonClick: onSelect,\n\t\t\t}\n\t\t: {};\n\n\treturn (\n\t\t<Wrapper\n\t\t\t{...wrapperProps}\n\t\t\tclassName={cn('ai-package-info--component', \n\t\t\t\t'block w-full rounded-lg border border-border/60 bg-card text-left',\n\t\t\t\tonSelect &&\n\t\t\t\t\t'transition-[border-color,background] duration-150 hover:border-foreground/20 hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex items-start gap-3 px-3.5 py-3\">\n\t\t\t\t<span\n\t\t\t\t\taria-hidden\n\t\t\t\t\tclassName=\"inline-flex size-9 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground\"\n\t\t\t\t>\n\t\t\t\t\t<Package className=\"size-4\" />\n\t\t\t\t</span>\n\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate font-mono\">\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t{!!version && (\n\t\t\t\t\t\t\t<Badge variant=\"secondary\" className=\"font-mono tabular-nums\">\n\t\t\t\t\t\t\t\tv{version.replace(/^v/, '')}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-1 line-clamp-2\">\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{(license || publishedAt || weeklyDownloads !== undefined) && (\n\t\t\t\t\t\t<div className=\"mt-2 flex flex-wrap items-center gap-x-3 gap-y-1\">\n\t\t\t\t\t\t\t{!!license && (\n\t\t\t\t\t\t\t\t<MetaItem label={strings.licenseLabel} value={license} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!publishedAt && (\n\t\t\t\t\t\t\t\t<MetaItem label={strings.publishedLabel} value={publishedAt} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{weeklyDownloads !== undefined && (\n\t\t\t\t\t\t\t\t<MetaItem\n\t\t\t\t\t\t\t\t\tlabel={strings.weeklyDownloadsLabel}\n\t\t\t\t\t\t\t\t\tvalue={String(weeklyDownloads)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!keywords?.length && (\n\t\t\t\t\t\t<div className=\"mt-2 flex flex-wrap gap-1\">\n\t\t\t\t\t\t\t{keywords.slice(0, 6).map((kw) => (\n\t\t\t\t\t\t\t\t<Badge key={kw} variant=\"secondary\">\n\t\t\t\t\t\t\t\t\t{kw}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{(homepage || repository) && (\n\t\t\t\t<div className=\"flex items-center gap-2 border-t border-border/60 bg-muted/20 px-3.5 py-2\">\n\t\t\t\t\t{!!homepage && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={homepage}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t\t\taria-label={strings.homepageAria}\n\t\t\t\t\t\t\tclassName=\"inline-flex items-center gap-1 rounded text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Globe className=\"size-3.5\" />\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xxs\" weight=\"medium\">\n\t\t\t\t\t\t\t\tHomepage\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<ExternalLink className=\"size-3\" />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!homepage && !!repository && (\n\t\t\t\t\t\t<span aria-hidden className=\"text-muted-foreground/40\">\n\t\t\t\t\t\t\t·\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!repository && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={repository}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t\t\taria-label={strings.repositoryAria}\n\t\t\t\t\t\t\tclassName=\"inline-flex items-center gap-1 rounded text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Code2 className=\"size-3.5\" />\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xxs\" weight=\"medium\">\n\t\t\t\t\t\t\t\tRepository\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<ExternalLink className=\"size-3\" />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Wrapper>\n\t);\n}\n\nAiPackageInfo.displayName = 'AiPackageInfo';\n\nfunction MetaItem({ label, value }: { label: string; value: string }) {\n\treturn (\n\t\t<div className=\"inline-flex items-baseline gap-1\">\n\t\t\t<Text size=\"xxs\" type=\"discrete\">\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t<Text size=\"xxs\" type=\"secondary\" weight=\"medium\" className=\"tabular-nums\">\n\t\t\t\t{value}\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n","import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport type AiFileTreeNodeKind = 'directory' | 'file';\n\nexport type AiFileTreeChangeStatus = 'added' | 'modified' | 'removed' | 'renamed';\n\nexport interface AiFileTreeNode {\n\tid: string;\n\tname: string;\n\tkind: AiFileTreeNodeKind;\n\t/** Children — only meaningful for directories. */\n\tchildren?: ReadonlyArray<AiFileTreeNode>;\n\t/** Custom icon override (file kinds, etc.). */\n\ticon?: LucideIcon;\n\t/** Diff status — drives the trailing pill / row tint. */\n\tstatus?: AiFileTreeChangeStatus;\n\t/** Trailing slot — badge, line count, etc. */\n\ttrailing?: ReactNode;\n\t/** Default-expanded state for directories. */\n\tdefaultExpanded?: boolean;\n}\n\nexport interface AiFileTreeStrings {\n\texpandAria: string;\n\tcollapseAria: string;\n\tstatusLabels: Record<AiFileTreeChangeStatus, string>;\n}\n\nexport const defaultAiFileTreeStrings: AiFileTreeStrings = {\n\texpandAria: 'Expand directory',\n\tcollapseAria: 'Collapse directory',\n\tstatusLabels: {\n\t\tadded: 'A',\n\t\tmodified: 'M',\n\t\tremoved: 'D',\n\t\trenamed: 'R',\n\t},\n};\n\nexport interface AiFileTreeProps {\n\t/** Root nodes — typically one entry but the API accepts multiple. */\n\tnodes: ReadonlyArray<AiFileTreeNode>;\n\t/** Selected node id — drives the active row tint. */\n\tselectedId?: string;\n\t/** Click handler — fires for files only by default. */\n\tonSelect?: (node: AiFileTreeNode) => void;\n\t/** Hide the diff status pills (still tints the row). */\n\thideStatusLabels?: boolean;\n\t/** Indent width per nesting level (px). */\n\tindent?: number;\n\tclassName?: string;\n\tstrings?: StringsProp<AiFileTreeStrings>;\n}\n","/**\n * AiFileTree — compact file/directory tree used to surface a model's proposed\n * file changes (a new repo scaffold, a multi-file edit set, an artifact\n * bundle). Accepts a recursive `nodes` array; rows are click-selectable\n * (files), directories toggle expanded. Diff status (added / modified /\n * removed / renamed) drives both a trailing pill and a subtle row tint.\n */\nimport { useState, type ReactNode } from 'react';\nimport {\n\tChevronDown,\n\tChevronRight,\n\tFile,\n\tFileCode,\n\tFileText,\n\tFolder,\n\tFolderOpen,\n\ttype LucideIcon,\n} from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiFileTreeStrings,\n\ttype AiFileTreeChangeStatus,\n\ttype AiFileTreeNode,\n\ttype AiFileTreeProps,\n} from './types';\n\nconst STATUS_TINT: Record<AiFileTreeChangeStatus, { row: string; pill: string }> = {\n\tadded: { row: 'before:bg-success', pill: 'bg-success/15 text-success' },\n\tmodified: { row: 'before:bg-warning', pill: 'bg-warning/20 text-warning' },\n\tremoved: { row: 'before:bg-destructive', pill: 'bg-destructive/15 text-destructive' },\n\trenamed: { row: 'before:bg-info', pill: 'bg-info/15 text-info' },\n};\n\nfunction pickFileIcon(name: string): LucideIcon {\n\tconst ext = name.split('.').pop()?.toLowerCase() ?? '';\n\tif (['ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'json', 'css', 'scss', 'html', 'sh', 'py', 'rs', 'go'].includes(ext)) {\n\t\treturn FileCode;\n\t}\n\tif (['md', 'mdx', 'txt'].includes(ext)) {\n\t\treturn FileText;\n\t}\n\treturn File;\n}\n\nexport function AiFileTree({\n\tnodes,\n\tselectedId,\n\tonSelect,\n\thideStatusLabels = false,\n\tindent = 14,\n\tclassName,\n\tstrings: stringsProp,\n}: AiFileTreeProps) {\n\tconst strings = useStrings(defaultAiFileTreeStrings, stringsProp);\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('ai-file-tree--component', \n\t\t\t\t'overflow-hidden rounded-lg border border-border/60 bg-card font-mono text-xs',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<ul>\n\t\t\t\t{nodes.map((node) => (\n\t\t\t\t\t<TreeRow\n\t\t\t\t\t\tkey={node.id}\n\t\t\t\t\t\tnode={node}\n\t\t\t\t\t\tdepth={0}\n\t\t\t\t\t\tselectedId={selectedId}\n\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\thideStatusLabels={hideStatusLabels}\n\t\t\t\t\t\tindent={indent}\n\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</div>\n\t);\n}\n\nAiFileTree.displayName = 'AiFileTree';\n\nfunction TreeRow({\n\tnode,\n\tdepth,\n\tselectedId,\n\tonSelect,\n\thideStatusLabels,\n\tindent,\n\tstrings,\n}: {\n\tnode: AiFileTreeNode;\n\tdepth: number;\n\tselectedId?: string;\n\tonSelect?: (n: AiFileTreeNode) => void;\n\thideStatusLabels: boolean;\n\tindent: number;\n\tstrings: ReturnType<typeof useStrings<typeof defaultAiFileTreeStrings>>;\n}) {\n\tconst [open, setOpen] = useState(node.defaultExpanded ?? depth < 1);\n\tconst isDir = node.kind === 'directory';\n\tconst isSelected = selectedId === node.id;\n\tconst status = node.status;\n\tconst tint = status ? STATUS_TINT[status] : undefined;\n\n\tconst Icon: LucideIcon =\n\t\tnode.icon ??\n\t\t(isDir ? (open ? FolderOpen : Folder) : pickFileIcon(node.name));\n\n\tconst handleClick = () => {\n\t\tif (isDir) setOpen((v) => !v);\n\t\telse onSelect?.(node);\n\t};\n\n\tconst Trailing: ReactNode = (\n\t\t<>\n\t\t\t{!!status && !hideStatusLabels && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'inline-flex size-4 shrink-0 items-center justify-center rounded',\n\t\t\t\t\t\t'text-xxs font-bold leading-none uppercase',\n\t\t\t\t\t\ttint?.pill,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{strings.statusLabels[status]}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t{!!node.trailing && (\n\t\t\t\t<Text tag=\"span\" size=\"xxs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t{node.trailing}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<li>\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={handleClick}\n\t\t\t\taria-expanded={isDir ? open : undefined}\n\t\t\t\taria-label={\n\t\t\t\t\tisDir ? (open ? strings.collapseAria : strings.expandAria) : undefined\n\t\t\t\t}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'ai-file-tree--row group relative h-auto w-full justify-start gap-1.5 rounded-none px-2 py-1 text-left font-mono text-xs',\n\t\t\t\t\t'hover:bg-muted/40',\n\t\t\t\t\t'focus-visible:ring-inset',\n\t\t\t\t\tisSelected && 'bg-primary/10',\n\t\t\t\t\t!!status &&\n\t\t\t\t\t\t'before:absolute before:left-0 before:top-0 before:h-full before:w-0.5',\n\t\t\t\t\ttint?.row,\n\t\t\t\t\tstatus === 'removed' && 'text-muted-foreground/80',\n\t\t\t\t)}\n\t\t\t\tstyle={{ paddingLeft: 8 + depth * indent }}\n\t\t\t>\n\t\t\t\t{isDir ? (\n\t\t\t\t\topen ? (\n\t\t\t\t\t\t<ChevronDown className=\"size-3.5 shrink-0 text-muted-foreground\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ChevronRight className=\"size-3.5 shrink-0 text-muted-foreground\" />\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\t<span aria-hidden className=\"size-3.5 shrink-0\" />\n\t\t\t\t)}\n\t\t\t\t<Icon\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'size-3.5 shrink-0',\n\t\t\t\t\t\tisDir ? 'text-muted-foreground' : 'text-muted-foreground/80',\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'flex-1 truncate',\n\t\t\t\t\t\tstatus === 'removed' && 'line-through',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{node.name}\n\t\t\t\t</span>\n\t\t\t\t<span className=\"ml-auto flex items-center gap-1.5\">{Trailing}</span>\n\t\t\t</Button>\n\t\t\t{isDir && open && !!node.children?.length && (\n\t\t\t\t<ul>\n\t\t\t\t\t{node.children.map((child) => (\n\t\t\t\t\t\t<TreeRow\n\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\tnode={child}\n\t\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\t\tselectedId={selectedId}\n\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\thideStatusLabels={hideStatusLabels}\n\t\t\t\t\t\t\tindent={indent}\n\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</li>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/composed/ai/ai.strings.ts","../../../../src/components/composed/ai/ai-summary/ai-summary.tsx","../../../../src/components/composed/ai/ai-classification/ai-classification.tsx","../../../../src/components/composed/ai/ai-confidence/types.ts","../../../../src/components/composed/ai/ai-confidence/ai-confidence.tsx","../../../../src/components/composed/ai/ai-prompt-suggestions/types.ts","../../../../src/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.tsx","../../../../src/components/composed/ai/ai-token-usage/types.ts","../../../../src/components/composed/ai/ai-token-usage/ai-token-usage.tsx","../../../../src/components/composed/ai/ai-feedback/types.ts","../../../../src/components/composed/ai/ai-feedback/ai-feedback.tsx","../../../../src/components/composed/ai/ai-citation/types.ts","../../../../src/components/composed/ai/ai-citation/ai-citation.tsx","../../../../src/components/composed/ai/ai-inline-citation/types.ts","../../../../src/components/composed/ai/ai-inline-citation/ai-inline-citation.tsx","../../../../src/components/composed/ai/ai-package-info/types.ts","../../../../src/components/composed/ai/ai-package-info/ai-package-info.tsx","../../../../src/components/composed/ai/ai-file-tree/types.ts","../../../../src/components/composed/ai/ai-file-tree/ai-file-tree.tsx"],"sourcesContent":["/**\n * Shared default strings for `composed/ai` components.\n *\n * Each component accepts a `strings` prop deep-merged over the default subset\n * it reads. Consumers wire backend i18n at the call site:\n *\n * <AiSummaryBlock strings={{ title: t('ai.summary.title') }} … />\n */\n\nexport interface AiSummaryStrings {\n\t/** Card title rendered in the header. */\n\ttitle: string;\n\t/** Suffix badge label (e.g. \"AI\"). */\n\tbadgeLabel: string;\n\t/** Footer regenerate button label. */\n\tregenerate: string;\n\t/** Confidence-bar level labels. */\n\tconfidenceLevels: { low: string; medium: string; high: string };\n}\n\nexport const defaultAiSummaryStrings: AiSummaryStrings = {\n\ttitle: 'AI Summary',\n\tbadgeLabel: 'AI',\n\tregenerate: 'Regenerate',\n\tconfidenceLevels: { low: 'low', medium: 'medium', high: 'high' },\n};\n\nexport interface AiClassificationStrings {\n\t/** Card title rendered in the header. */\n\ttitle: string;\n\t/** Inline-stat row labels. */\n\tcomplexityLabel: string;\n\tflagsLabel: string;\n\tnextStepLabel: string;\n\t/** Confidence pill prefix (e.g. \"Confidence: High\"). */\n\tconfidencePrefix: string;\n\t/** Confidence band labels. */\n\tconfidenceBands: { low: string; medium: string; high: string };\n}\n\nexport const defaultAiClassificationStrings: AiClassificationStrings = {\n\ttitle: 'Classification',\n\tcomplexityLabel: 'Complexity',\n\tflagsLabel: 'Flags',\n\tnextStepLabel: 'Next Step',\n\tconfidencePrefix: 'Confidence',\n\tconfidenceBands: { low: 'Low', medium: 'Medium', high: 'High' },\n};\n","import { BrainCircuit, RefreshCw } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport { Text } from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiSummaryStrings } from '../ai.strings';\nimport type { AiSummaryBlockProps, ConfidenceLevel } from './types';\n\nconst confidenceBars: Record<ConfidenceLevel, number> = {\n low: 1,\n medium: 2,\n high: 3,\n};\n\nfunction ConfidenceBars({ level, label }: { level: ConfidenceLevel; label: string }) {\n const filled = confidenceBars[level];\n return (\n\t <div className={cn('ai-summary--confidence', 'flex items-center gap-1.5')}>\n <div className=\"flex items-center gap-0.5\">\n {Array.from({ length: 3 }, (_, i) => (\n <div\n key={`bar-${String(i)}`}\n className={cn(\n 'h-2.5 w-1 rounded-sm',\n i < filled ? 'bg-foreground/60' : 'bg-muted-foreground/20',\n )}\n />\n ))}\n </div>\n <Text size=\"xs\" type=\"secondary\" tag=\"span\" className=\"capitalize\">\n {label}\n </Text>\n </div>\n );\n}\n\nexport function AiSummaryBlock({ data, strings: stringsProp }: AiSummaryBlockProps) {\n const strings = useStrings(defaultAiSummaryStrings, stringsProp);\n return (\n\t <SmartCard\n\t icon={<BrainCircuit className=\"size-4\" />}\n\t title={strings.title}\n\t className=\"ai-summary--component\"\n titleSuffix={\n <Badge variant=\"secondary\">\n {strings.badgeLabel}\n </Badge>\n }\n footerText={\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Text size=\"xs\" type=\"secondary\" tag=\"span\">\n {data.generatedAt}\n </Text>\n <Text size=\"xs\" type=\"discrete\" tag=\"span\">\n {data.model}\n </Text>\n </div>\n {!!data.onRegenerate && (\n <Button variant=\"secondary\" buttonStyle=\"ghost\" onClick={data.onRegenerate}>\n <RefreshCw className=\"mr-1 h-3 w-3\" />\n {strings.regenerate}\n </Button>\n )}\n </div>\n }\n >\n <div className=\"space-y-3\">\n <Text size=\"sm\" lineHeight=\"relaxed\">\n {data.summary}\n </Text>\n\n {data.entities.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {data.entities.map((entity) => (\n <Badge key={entity} variant=\"secondary\">\n {entity}\n </Badge>\n ))}\n </div>\n )}\n\n <ConfidenceBars level={data.confidence} label={strings.confidenceLevels[data.confidence]} />\n </div>\n </SmartCard>\n );\n}\n","import { BrainCircuit } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge/badge';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport { Text } from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiClassificationStrings } from '../ai.strings';\nimport type { AiClassificationPanelProps } from './types';\n\nexport function AiClassificationPanel({ data, strings: stringsProp }: AiClassificationPanelProps) {\n\tconst strings = useStrings(defaultAiClassificationStrings, stringsProp);\n\tconst confidenceLabel =\n\t\tdata.confidence >= 0.9\n\t\t\t? strings.confidenceBands.high\n\t\t\t: data.confidence >= 0.7\n\t\t\t\t? strings.confidenceBands.medium\n\t\t\t\t: strings.confidenceBands.low;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<BrainCircuit className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName=\"ai-classification--component\"\n\t\t>\n\t\t\t<div className=\"space-y-3\">\n\t\t\t\t<div className=\"flex flex-wrap items-center gap-1.5\">\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.requestType}\n\t\t\t\t\t</Badge>\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant={data.urgencyVariant}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.urgency}\n\t\t\t\t\t</Badge>\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant={data.toneVariant}\n\t\t\t\t\t\tdot\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.tone}\n\t\t\t\t\t</Badge>\n\t\t\t\t</div>\n\n\t\t\t\t<InlineStat\n\t\t\t\t\tlabel={strings.complexityLabel}\n\t\t\t\t\tlabelClassName=\"text-sm font-medium text-foreground\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t{Array.from({ length: 5 }, (_, i) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tkey={`cx-${String(i)}`}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'h-1.5 w-3 rounded-sm',\n\t\t\t\t\t\t\t\t\t\ti < data.complexityScore\n\t\t\t\t\t\t\t\t\t\t\t? 'bg-foreground/60'\n\t\t\t\t\t\t\t\t\t\t\t: 'bg-muted',\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))}\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"ml-1\">\n\t\t\t\t\t\t\t\t{String(data.complexityScore)}/5\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t/>\n\n\t\t\t\t{data.flags.length > 0 && (\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tlabel={strings.flagsLabel}\n\t\t\t\t\t\tlabelClassName=\"text-sm font-medium text-foreground\"\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t<span className=\"flex gap-1\">\n\t\t\t\t\t\t\t\t{data.flags.map((flag) => (\n\t\t\t\t\t\t\t\t\t<Badge key={flag} variant=\"warning\">\n\t\t\t\t\t\t\t\t\t\t{flag}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<InlineStat\n\t\t\t\t\tlabel={strings.nextStepLabel}\n\t\t\t\t\tlabelClassName=\"text-sm font-medium text-foreground\"\n\t\t\t\t\tvalue={<Badge variant=\"info\">{data.suggestedAction}</Badge>}\n\t\t\t\t/>\n\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t{data.summary}\n\t\t\t\t</Text>\n\n\t\t\t\t<Separator />\n\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.confidencePrefix}: {confidenceLabel}\n\t\t\t\t\t</Badge>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\ttype=\"discrete\"\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.model}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface AiConfidenceFactor {\n\tlabel: string;\n\tscore: number; // 0–1\n}\n\nexport interface AiConfidenceCardStrings {\n\ttitle: string;\n\tconfidenceLabel: string;\n\tfactorsLabel: string;\n}\n\nexport const defaultAiConfidenceCardStrings: AiConfidenceCardStrings = {\n\ttitle: 'AI Confidence',\n\tconfidenceLabel: 'Overall',\n\tfactorsLabel: 'Contributing factors',\n};\n\nexport interface AiConfidenceCardProps {\n\tscore: number; // 0–1\n\tmodel?: string;\n\tfactors?: AiConfidenceFactor[];\n\tclassName?: string;\n\tstrings?: StringsProp<AiConfidenceCardStrings>;\n}\n","/**\n * AiConfidenceCard — visualises an AI model's overall confidence with a circular\n * progress dial and a list of weighted contributing factors. Strings are overridable.\n */\nimport { Sparkles } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiConfidenceCardStrings, type AiConfidenceCardProps } from './types';\n\nfunction levelLabel(score: number) {\n\tif (score >= 0.85) return { label: 'High', variant: 'success' as const };\n\tif (score >= 0.6) return { label: 'Medium', variant: 'warning' as const };\n\treturn { label: 'Low', variant: 'error' as const };\n}\n\nexport function AiConfidenceCard({ score, model, factors, className, strings: stringsProp }: AiConfidenceCardProps) {\n\tconst strings = useStrings(defaultAiConfidenceCardStrings, stringsProp);\n\tconst pct = Math.round(score * 100);\n\tconst { label, variant } = levelLabel(score);\n\tconst c = 2 * Math.PI * 24;\n\tconst dash = c - (pct / 100) * c;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Sparkles className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={!!model && <Badge variant=\"secondary\" size=\"small\">{model}</Badge>}\n\t\t\tclassName={cn('ai-confidence--component', className)}\n\t\t>\n\t\t\t<div className=\"grid gap-space-xl md:grid-cols-[auto_minmax(0,1fr)] md:items-center\">\n\t\t\t\t<div className=\"relative shrink-0\">\n\t\t\t\t\t<svg width=\"56\" height=\"56\" viewBox=\"0 0 64 64\" aria-hidden=\"true\">\n\t\t\t\t\t\t<circle cx=\"32\" cy=\"32\" r=\"24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"5\" className=\"text-muted/60\" />\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tcx=\"32\"\n\t\t\t\t\t\t\tcy=\"32\"\n\t\t\t\t\t\t\tr=\"24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"5\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeDasharray={c}\n\t\t\t\t\t\t\tstrokeDashoffset={dash}\n\t\t\t\t\t\t\ttransform=\"rotate(-90 32 32)\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\tvariant === 'success' && 'text-success',\n\t\t\t\t\t\t\t\tvariant === 'warning' && 'text-warning',\n\t\t\t\t\t\t\t\tvariant === 'error' && 'text-destructive',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n\t\t\t\t\t\t<Text weight=\"semibold\" className=\"tabular-nums leading-none\">{pct}%</Text>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"grid min-w-0 gap-space-sm\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t{strings.confidenceLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-space-sm\">\n\t\t\t\t\t\t<Badge variant={variant}>{label}</Badge>\n\t\t\t\t\t\t{!!model && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t\t{model}\n\t\t\t\t\t\t\t</Text>\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{!!factors && factors.length > 0 && (\n\t\t\t\t<div className=\"mt-space-xl grid gap-space-md\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t{strings.factorsLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{factors.map((f) => (\n\t\t\t\t\t\t<div key={f.label} className=\"grid gap-space-sm\">\n\t\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\t\tlabel={f.label}\n\t\t\t\t\t\t\t\tvalue={`${Math.round(f.score * 100)}%`}\n\t\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\t\tlabelClassName=\"text-xs font-medium text-foreground\"\n\t\t\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"h-1.5 w-full overflow-hidden rounded-full bg-muted/70\">\n\t\t\t\t\t\t\t\t<div className=\"h-full rounded-full bg-primary\" style={{ width: `${Math.round(f.score * 100)}%` }} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nAiConfidenceCard.displayName = 'AiConfidenceCard';\n","import type { LucideIcon } from 'lucide-react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface AiPromptSuggestion {\n\tid: string;\n\tlabel: string;\n\tdescription?: string;\n\ticon?: LucideIcon;\n}\n\nexport interface AiPromptSuggestionsStrings {\n\ttitle: string;\n\thint: string;\n}\n\nexport const defaultAiPromptSuggestionsStrings: AiPromptSuggestionsStrings = {\n\ttitle: 'Try asking',\n\thint: 'Tap a prompt to start',\n};\n\nexport interface AiPromptSuggestionsProps {\n\tsuggestions: AiPromptSuggestion[];\n\tonPick?: (suggestion: AiPromptSuggestion) => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AiPromptSuggestionsStrings>;\n}\n","/**\n * AiPromptSuggestions — grid of clickable prompt cards.\n * Use to seed a chat or assistant input with curated starting prompts.\n */\nimport { Sparkles } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { IconBadge } from '@/components/base/display';\nimport {\n\tItem,\n\tItemContent,\n\tItemDescription,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { cn } from '@/lib/utils';\nimport { useStrings } from '@/lib/strings';\n\nimport {\n\tdefaultAiPromptSuggestionsStrings,\n\ttype AiPromptSuggestionsProps,\n} from './types';\n\nexport function AiPromptSuggestions({ suggestions, onPick, className, strings: stringsProp }: AiPromptSuggestionsProps) {\n\tconst strings = useStrings(defaultAiPromptSuggestionsStrings, stringsProp);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Sparkles className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.hint}\n\t\t\tclassName={cn('ai-prompt-suggestions--component', className)}\n\t\t>\n\t\t\t<div className=\"grid grid-cols-[repeat(auto-fit,minmax(min(15rem,100%),1fr))] gap-space-xl\">\n\t\t\t\t{suggestions.map((s) => {\n\t\t\t\t\tconst Icon = s.icon;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\tkey={s.id}\n\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\trender={<button type=\"button\" onClick={() => onPick?.(s)} />}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'ai-prompt-suggestions--item h-full items-start gap-space-lg px-surface py-surface-sm transition-[border-color,background] duration-150',\n\t\t\t\t\t\t\t\t'hover:border-foreground/20 hover:bg-muted/40',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t\t<IconBadge icon={Icon} tone=\"primary\" size=\"default\" shape=\"square\" />\n\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<ItemContent className=\"min-w-0 gap-space-sm\">\n\t\t\t\t\t\t\t\t<ItemTitle>{s.label}</ItemTitle>\n\t\t\t\t\t\t\t\t{!!s.description && (\n\t\t\t\t\t\t\t\t\t<ItemDescription>{s.description}</ItemDescription>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t</Item>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nAiPromptSuggestions.displayName = 'AiPromptSuggestions';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface AiTokenUsageStrings {\n\ttitle: string;\n\tinput: string;\n\toutput: string;\n\ttotal: string;\n\tcost: string;\n}\n\nexport const defaultAiTokenUsageStrings: AiTokenUsageStrings = {\n\ttitle: 'Token usage',\n\tinput: 'Input',\n\toutput: 'Output',\n\ttotal: 'Total',\n\tcost: 'Estimated cost',\n};\n\nexport interface AiTokenUsageCardProps {\n\tmodel?: string;\n\tinputTokens: number;\n\toutputTokens: number;\n\tcost?: string;\n\tmaxTokens?: number;\n\tclassName?: string;\n\tstrings?: StringsProp<AiTokenUsageStrings>;\n}\n","/**\n * AiTokenUsageCard — input + output token counts with a usage bar\n * relative to a max context window, plus optional cost estimate.\n */\nimport { Cpu } from 'lucide-react';\nimport { useStrings } from '@/lib/strings';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { InlineStat } from '@/components/composed/data-display';\n\nimport { defaultAiTokenUsageStrings, type AiTokenUsageCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nexport function AiTokenUsageCard({\n\tmodel,\n\tinputTokens,\n\toutputTokens,\n\tcost,\n\tmaxTokens,\n\tclassName,\n\tstrings: stringsProp,\n}: AiTokenUsageCardProps) {\n\tconst strings = useStrings(defaultAiTokenUsageStrings, stringsProp);\n\tconst total = inputTokens + outputTokens;\n\tconst pct = maxTokens ? Math.min(100, Math.round((total / maxTokens) * 100)) : 0;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Cpu className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={!!model && <Badge variant=\"secondary\">{model}</Badge>}\n\t\t\tclassName={cn('ai-token-usage--component', className)}\n\t\t>\n\t\t\t<div className=\"grid grid-cols-3 gap-2\">\n\t\t\t\t{[\n\t\t\t\t\t{ label: strings.input, value: inputTokens },\n\t\t\t\t\t{ label: strings.output, value: outputTokens },\n\t\t\t\t\t{ label: strings.total, value: total },\n\t\t\t\t].map((cell) => (\n\t\t\t\t\t<div key={cell.label} className=\"rounded-md bg-muted/40 px-3 py-2\">\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">{cell.label}</Text>\n\t\t\t\t\t\t<Text size=\"lg\" weight=\"semibold\" className=\"tabular-nums\">{cell.value.toLocaleString()}</Text>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{!!maxTokens && (\n\t\t\t\t<div className=\"mt-3\">\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tlabel={`${total.toLocaleString()} / ${maxTokens.toLocaleString()}`}\n\t\t\t\t\t\tvalue={`${pct}%`}\n\t\t\t\t\t\tmono\n\t\t\t\t\t\tlabelClassName=\"text-xs\"\n\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-muted\">\n\t\t\t\t\t\t<div className=\"h-full rounded-full bg-primary\" style={{ width: `${pct}%` }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!cost && (\n\t\t\t\t<InlineStat\n\t\t\t\t\tclassName=\"mt-3 rounded-md bg-primary/5 px-3 py-2\"\n\t\t\t\t\tlabel={strings.cost}\n\t\t\t\t\tvalue={cost}\n\t\t\t\t\tmono\n\t\t\t\t\tlabelClassName=\"text-xs\"\n\t\t\t\t\tvalueClassName=\"text-sm font-bold\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nAiTokenUsageCard.displayName = 'AiTokenUsageCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport type AiFeedbackVote = 'up' | 'down' | null;\n\nexport interface AiFeedbackStrings {\n\tprompt: string;\n\tthumbsUpAria: string;\n\tthumbsDownAria: string;\n\tcommentPlaceholder: string;\n\tsubmit: string;\n\tthanks: string;\n}\n\nexport const defaultAiFeedbackStrings: AiFeedbackStrings = {\n\tprompt: 'Was this helpful?',\n\tthumbsUpAria: 'Mark as helpful',\n\tthumbsDownAria: 'Mark as not helpful',\n\tcommentPlaceholder: 'Tell us more (optional)',\n\tsubmit: 'Send feedback',\n\tthanks: 'Thanks for your feedback.',\n};\n\nexport interface AiFeedbackProps {\n\tvalue?: AiFeedbackVote;\n\tonVote?: (vote: AiFeedbackVote) => void;\n\tonSubmitComment?: (comment: string, vote: AiFeedbackVote) => void;\n\tallowComment?: boolean;\n\tsubmitted?: boolean;\n\tclassName?: string;\n\tstrings?: StringsProp<AiFeedbackStrings>;\n}\n","/**\n * AiFeedback — thumbs-up / thumbs-down voter with an optional follow-up\n * comment field. Wires into model-improvement loops: emits the vote via\n * `onVote` immediately and a comment via `onSubmitComment` when the user\n * submits the textarea. After `submitted=true` the surface is replaced with\n * a thank-you confirmation. Strings overridable for i18n.\n */\nimport { useState } from 'react';\nimport { ThumbsDown, ThumbsUp } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Textarea } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiFeedbackStrings,\n\ttype AiFeedbackProps,\n\ttype AiFeedbackVote,\n} from './types';\n\nexport function AiFeedback({\n\tvalue,\n\tonVote,\n\tonSubmitComment,\n\tallowComment = true,\n\tsubmitted = false,\n\tclassName,\n\tstrings: stringsProp,\n}: AiFeedbackProps) {\n\tconst strings = useStrings(defaultAiFeedbackStrings, stringsProp);\n\tconst [internalVote, setInternalVote] = useState<AiFeedbackVote>(null);\n\tconst [comment, setComment] = useState('');\n\tconst vote = value ?? internalVote;\n\n\tconst cast = (next: AiFeedbackVote) => {\n\t\tconst resolved = vote === next ? null : next;\n\t\tif (value === undefined) setInternalVote(resolved);\n\t\tonVote?.(resolved);\n\t};\n\n\tif (submitted) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn('ai-feedback--component', \n\t\t\t\t\t'inline-flex items-center gap-2 rounded-full bg-success/10 px-3 py-1.5',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<ThumbsUp className=\"size-3.5 text-success\" />\n\t\t\t\t<Text size=\"xs\" type=\"success\" weight=\"medium\">\n\t\t\t\t\t{strings.thanks}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('ai-feedback--component inline-flex flex-col gap-2', className)}>\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">{strings.prompt}</Text>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle={vote === 'up' ? 'solid' : 'ghost'}\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\taria-label={strings.thumbsUpAria}\n\t\t\t\t\taria-pressed={vote === 'up'}\n\t\t\t\t\tonClick={() => cast('up')}\n\t\t\t\t\tclassName={cn(vote === 'up' && 'text-success bg-success/15 hover:bg-success/20')}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsUp className=\"size-3.5\" />\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle={vote === 'down' ? 'solid' : 'ghost'}\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\taria-label={strings.thumbsDownAria}\n\t\t\t\t\taria-pressed={vote === 'down'}\n\t\t\t\t\tonClick={() => cast('down')}\n\t\t\t\t\tclassName={cn(vote === 'down' && 'text-destructive bg-destructive/15 hover:bg-destructive/20')}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsDown className=\"size-3.5\" />\n\t\t\t\t</Button>\n\t\t\t</div>\n\n\t\t\t{!!allowComment && !!vote && (\n\t\t\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t\t\t<Textarea\n\t\t\t\t\t\tvalue={comment}\n\t\t\t\t\t\tonChange={(e) => setComment((e.target as HTMLTextAreaElement).value)}\n\t\t\t\t\t\tplaceholder={strings.commentPlaceholder}\n\t\t\t\t\t\tminRows={2}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tonSubmitComment?.(comment, vote);\n\t\t\t\t\t\t\t\tsetComment('');\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdisabled={!comment.trim()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.submit}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiFeedback.displayName = 'AiFeedback';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface AiCitationSource {\n\tid: string;\n\ttitle: ReactNode;\n\turl?: string;\n\tsnippet?: ReactNode;\n\tpublisher?: string;\n\tpublishedAt?: string;\n\trelevance?: number; // 0–1\n}\n\nexport interface AiCitationStrings {\n\ttitle: string;\n\tsourceCount: (n: number) => string;\n\texpand: string;\n\tcollapse: string;\n\tvisit: string;\n\trelevance: string;\n}\n\nexport const defaultAiCitationStrings: AiCitationStrings = {\n\ttitle: 'Sources',\n\tsourceCount: (n: number) => (n === 1 ? '1 source' : `${n} sources`),\n\texpand: 'Show sources',\n\tcollapse: 'Hide sources',\n\tvisit: 'Visit',\n\trelevance: 'Relevance',\n};\n\nexport interface AiCitationProps {\n\tsources: AiCitationSource[];\n\tdefaultExpanded?: boolean;\n\tmaxCollapsedRows?: number;\n\tclassName?: string;\n\tstrings?: StringsProp<AiCitationStrings>;\n}\n","/**\n * AiCitation — expandable source list for AI-grounded responses. Renders an\n * inline footnote-style header (e.g. \"3 sources\") that toggles a list of\n * source rows: title link, snippet, publisher / date, and a relevance bar.\n * Use under `AiSummaryBlock` and `AiMessageBubble` to make AI claims\n * traceable. Strings overridable for i18n.\n *\n * Note: `strings.sourceCount` is a function (single / plural form) — pass an\n * override if your locale needs more complex pluralisation.\n */\nimport { useState } from 'react';\nimport { ChevronDown, ChevronRight, ExternalLink, Quote } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemFooter,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { mergeStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiCitationStrings,\n\ttype AiCitationProps,\n\ttype AiCitationSource,\n} from './types';\n\nexport function AiCitation({\n\tsources,\n\tdefaultExpanded = false,\n\tmaxCollapsedRows = 0,\n\tclassName,\n\tstrings: stringsProp,\n}: AiCitationProps) {\n\t// `sourceCount` is a function so we cannot use `useStrings` deep-merge\n\t// (the merger replaces functions wholesale, which is what we want).\n\tconst strings = mergeStrings(defaultAiCitationStrings, stringsProp);\n\tconst [expanded, setExpanded] = useState(defaultExpanded);\n\tconst visible = expanded ? sources : sources.slice(0, Math.max(0, maxCollapsedRows));\n\tconst hidden = sources.length - visible.length;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'ai-citation--component',\n\t\t\t\t'rounded-lg border border-border bg-card px-surface-sm py-surface-sm shadow-xs',\n\t\t\t\t'space-y-space-lg',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={() => setExpanded((v) => !v)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'ai-citation--trigger h-auto justify-start gap-space-sm rounded-md px-control py-row-y',\n\t\t\t\t\t'text-muted-foreground hover:text-foreground hover:bg-muted/40',\n\t\t\t\t)}\n\t\t\t\taria-expanded={expanded}\n\t\t\t\taria-label={expanded ? strings.collapse : strings.expand}\n\t\t\t>\n\t\t\t\t<Quote className=\"size-3.5\" />\n\t\t\t\t<Text size=\"xs\" weight=\"medium\">\n\t\t\t\t\t{strings.title} · {strings.sourceCount(sources.length)}\n\t\t\t\t</Text>\n\t\t\t\t{expanded ? (\n\t\t\t\t\t<ChevronDown className=\"size-3.5\" />\n\t\t\t\t) : (\n\t\t\t\t\t<ChevronRight className=\"size-3.5\" />\n\t\t\t\t)}\n\t\t\t</Button>\n\n\t\t\t{(expanded || maxCollapsedRows > 0) && (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{visible.map((s, i) => (\n\t\t\t\t\t\t<CitationRow key={s.id} source={s} index={i + 1} strings={strings} />\n\t\t\t\t\t))}\n\t\t\t\t\t{!expanded && hidden > 0 && (\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t+{hidden} more\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiCitation.displayName = 'AiCitation';\n\nfunction CitationRow({\n\tsource,\n\tindex,\n\tstrings,\n}: {\n\tsource: AiCitationSource;\n\tindex: number;\n\tstrings: ReturnType<typeof mergeStrings<typeof defaultAiCitationStrings>>;\n}) {\n\tconst relevancePct =\n\t\ttypeof source.relevance === 'number'\n\t\t\t? Math.round(Math.max(0, Math.min(1, source.relevance)) * 100)\n\t\t\t: null;\n\n\tconst TitleEl = source.url ? 'a' : 'span';\n\tconst titleProps = source.url\n\t\t? { href: source.url, target: '_blank' as const, rel: 'noopener noreferrer' }\n\t\t: {};\n\n\treturn (\n\t\t<Item variant=\"outline\" size=\"small\" className=\"items-start px-surface-sm py-surface-sm\">\n\t\t\t<ItemMedia>\n\t\t\t\t<span className=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-semibold text-muted-foreground tabular-nums\">\n\t\t\t\t\t{index}\n\t\t\t\t</span>\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent>\n\t\t\t\t<ItemTitle className=\"truncate\">\n\t\t\t\t\t<TitleEl\n\t\t\t\t\t\t{...titleProps}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'truncate',\n\t\t\t\t\t\t\tsource.url && 'hover:text-primary hover:underline',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{source.title}\n\t\t\t\t\t\t{!!source.url && <ExternalLink className=\"ml-1 inline size-3 align-baseline\" />}\n\t\t\t\t\t</TitleEl>\n\t\t\t\t</ItemTitle>\n\t\t\t\t{!!source.snippet && <ItemDescription clamp={2}>{source.snippet}</ItemDescription>}\n\t\t\t\t{(source.publisher || source.publishedAt) && (\n\t\t\t\t\t<ItemFooter className=\"mt-1 justify-start gap-1.5\">\n\t\t\t\t\t\t{!!source.publisher && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"discrete\">\n\t\t\t\t\t\t\t\t{source.publisher}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!source.publisher && !!source.publishedAt && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"discrete\">·</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!source.publishedAt && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"discrete\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t{source.publishedAt}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ItemFooter>\n\t\t\t\t)}\n\t\t\t</ItemContent>\n\t\t\t{relevancePct !== null && (\n\t\t\t\t<ItemActions className=\"w-16 flex-col items-end gap-0.5\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"tabular-nums\">\n\t\t\t\t\t\t{relevancePct}%\n\t\t\t\t\t</Text>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"h-1 w-full overflow-hidden rounded-full bg-muted\"\n\t\t\t\t\t\taria-label={strings.relevance}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"h-full rounded-full bg-primary\"\n\t\t\t\t\t\t\tstyle={{ width: `${relevancePct}%` }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</ItemActions>\n\t\t\t)}\n\t\t</Item>\n\t);\n}\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface AiInlineCitationStrings {\n\t/** Tooltip prefix when only a number is rendered. */\n\tsourcePrefix: string;\n\t/** Aria label template — supports `{{n}}` and `{{title}}` placeholders. */\n\topenAria: string;\n}\n\nexport const defaultAiInlineCitationStrings: AiInlineCitationStrings = {\n\tsourcePrefix: 'Source',\n\topenAria: 'Open source {{n}}: {{title}}',\n};\n\nexport interface AiInlineCitationProps {\n\t/** 1-indexed citation number rendered inside the pill. */\n\tindex: number;\n\t/** Title of the cited source — used in the tooltip / aria-label. */\n\ttitle?: string;\n\t/** Optional URL — when provided, the pill renders as a link. */\n\turl?: string;\n\t/** Click handler — preferred over `url` for SPA / virtual link routing. */\n\tonSelect?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AiInlineCitationStrings>;\n}\n","/**\n * AiInlineCitation — small footnote-style pill rendered inline inside AI\n * response prose. The number references a position in the parent\n * sources/AiCitation list. Hover to see the source title; click to jump.\n */\nimport { Text } from '@/components/typography';\nimport { Button } from '@/components/base/buttons';\nimport { mergeStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiInlineCitationStrings,\n\ttype AiInlineCitationProps,\n} from './types';\n\nfunction interpolate(template: string, params: Record<string, string | number>): string {\n\treturn template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (m, k) => {\n\t\tconst v = params[k];\n\t\treturn v === undefined ? m : String(v);\n\t});\n}\n\nexport function AiInlineCitation({\n\tindex,\n\ttitle,\n\turl,\n\tonSelect,\n\tclassName,\n\tstrings: stringsProp,\n}: AiInlineCitationProps) {\n\tconst strings = mergeStrings(defaultAiInlineCitationStrings, stringsProp);\n\tconst ariaLabel = interpolate(strings.openAria, {\n\t\tn: index,\n\t\ttitle: title ?? '',\n\t});\n\tconst tooltip = title ? `${strings.sourcePrefix} ${index}: ${title}` : `${strings.sourcePrefix} ${index}`;\n\n\t// Sizes here are em-relative on purpose: an inline citation chip must\n\t// scale with the surrounding paragraph (whatever Text size it's nested in)\n\t// rather than pick a fixed token. This is the rule-3 exception for\n\t// \"load-bearing inline relative units\" — do NOT refactor to `text-xs`.\n\tconst baseCls = cn(\n\t\t'inline-flex h-5 min-w-5 -translate-y-px items-center justify-center rounded px-1',\n\t\t'align-middle text-xs font-medium tabular-nums',\n\t\t'bg-muted text-muted-foreground',\n\t\t'hover:bg-primary/10 hover:text-primary',\n\t\t'transition-colors duration-150',\n\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\tclassName,\n\t);\n\n\tif (url) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\thref={url}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\ttitle={tooltip}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={cn('ai-inline-citation--component', baseCls)}\n\t\t\t>\n\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"leading-none\">\n\t\t\t\t\t{index}\n\t\t\t\t</Text>\n\t\t\t</a>\n\t\t);\n\t}\n\n\tif (onSelect) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={onSelect}\n\t\t\t\ttitle={tooltip}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={cn('ai-inline-citation--component', baseCls)}\n\t\t\t>\n\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"leading-none\">\n\t\t\t\t\t{index}\n\t\t\t\t</Text>\n\t\t\t</Button>\n\t\t);\n\t}\n\n\treturn (\n\t\t<span\n\t\t\ttitle={tooltip}\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={cn('ai-inline-citation--component', baseCls)}\n\t\t>\n\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"leading-none\">\n\t\t\t\t{index}\n\t\t\t</Text>\n\t\t</span>\n\t);\n}\n\nAiInlineCitation.displayName = 'AiInlineCitation';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface AiPackageInfoStrings {\n\tversionLabel: string;\n\tlicenseLabel: string;\n\tpublishedLabel: string;\n\thomepageAria: string;\n\trepositoryAria: string;\n\tweeklyDownloadsLabel: string;\n}\n\nexport const defaultAiPackageInfoStrings: AiPackageInfoStrings = {\n\tversionLabel: 'Version',\n\tlicenseLabel: 'License',\n\tpublishedLabel: 'Published',\n\thomepageAria: 'Open homepage',\n\trepositoryAria: 'Open repository',\n\tweeklyDownloadsLabel: 'Weekly downloads',\n};\n\nexport interface AiPackageInfoProps {\n\t/** Package name (npm-style: optional `@scope/`). */\n\tname: string;\n\t/** Latest / pinned version. */\n\tversion?: string;\n\t/** Short description from the package manifest. */\n\tdescription?: ReactNode;\n\t/** SPDX-style license identifier (e.g. \"MIT\"). */\n\tlicense?: string;\n\t/** ISO date or human label of last publish. */\n\tpublishedAt?: string;\n\t/** Package homepage URL. */\n\thomepage?: string;\n\t/** Repository URL (typically GitHub). */\n\trepository?: string;\n\t/** Weekly downloads — formatted by the consumer. */\n\tweeklyDownloads?: string | number;\n\t/** Comma-separated tag list rendered as small chips. */\n\tkeywords?: ReadonlyArray<string>;\n\t/** Click handler for the whole card. */\n\tonSelect?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AiPackageInfoStrings>;\n}\n","/**\n * AiPackageInfo — compact card describing an npm / library package referenced\n * by the model. Header: name + version chip; body: description + optional\n * meta (license, published date, weekly downloads) and keyword chips. Footer\n * exposes homepage / repository links when provided.\n */\nimport { Code2, ExternalLink, Globe, Package } from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiPackageInfoStrings, type AiPackageInfoProps } from './types';\n\nexport function AiPackageInfo({\n\tname,\n\tversion,\n\tdescription,\n\tlicense,\n\tpublishedAt,\n\thomepage,\n\trepository,\n\tweeklyDownloads,\n\tkeywords,\n\tonSelect,\n\tclassName,\n\tstrings: stringsProp,\n}: AiPackageInfoProps) {\n\tconst strings = useStrings(defaultAiPackageInfoStrings, stringsProp);\n\n\tconst Wrapper = onSelect ? 'button' : 'div';\n\tconst wrapperProps = onSelect\n\t\t? {\n\t\t\t\ttype: 'button' as const,\n\t\t\t\tonClick: onSelect,\n\t\t\t}\n\t\t: {};\n\n\treturn (\n\t\t<Wrapper\n\t\t\t{...wrapperProps}\n\t\t\tclassName={cn('ai-package-info--component', \n\t\t\t\t'block w-full rounded-lg border border-border/60 bg-card text-left',\n\t\t\t\tonSelect &&\n\t\t\t\t\t'transition-[border-color,background] duration-150 hover:border-foreground/20 hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex items-start gap-3 px-3.5 py-3\">\n\t\t\t\t<span\n\t\t\t\t\taria-hidden\n\t\t\t\t\tclassName=\"inline-flex size-9 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground\"\n\t\t\t\t>\n\t\t\t\t\t<Package className=\"size-4\" />\n\t\t\t\t</span>\n\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate font-mono\">\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t{!!version && (\n\t\t\t\t\t\t\t<Badge variant=\"secondary\" className=\"font-mono tabular-nums\">\n\t\t\t\t\t\t\t\tv{version.replace(/^v/, '')}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-1 line-clamp-2\">\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{(license || publishedAt || weeklyDownloads !== undefined) && (\n\t\t\t\t\t\t<div className=\"mt-2 flex flex-wrap items-center gap-x-3 gap-y-1\">\n\t\t\t\t\t\t\t{!!license && (\n\t\t\t\t\t\t\t\t<MetaItem label={strings.licenseLabel} value={license} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!publishedAt && (\n\t\t\t\t\t\t\t\t<MetaItem label={strings.publishedLabel} value={publishedAt} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{weeklyDownloads !== undefined && (\n\t\t\t\t\t\t\t\t<MetaItem\n\t\t\t\t\t\t\t\t\tlabel={strings.weeklyDownloadsLabel}\n\t\t\t\t\t\t\t\t\tvalue={String(weeklyDownloads)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!keywords?.length && (\n\t\t\t\t\t\t<div className=\"mt-2 flex flex-wrap gap-1\">\n\t\t\t\t\t\t\t{keywords.slice(0, 6).map((kw) => (\n\t\t\t\t\t\t\t\t<Badge key={kw} variant=\"secondary\">\n\t\t\t\t\t\t\t\t\t{kw}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{(homepage || repository) && (\n\t\t\t\t<div className=\"flex items-center gap-2 border-t border-border/60 bg-muted/20 px-3.5 py-2\">\n\t\t\t\t\t{!!homepage && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={homepage}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t\t\taria-label={strings.homepageAria}\n\t\t\t\t\t\t\tclassName=\"inline-flex items-center gap-1 rounded text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Globe className=\"size-3.5\" />\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t\tHomepage\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<ExternalLink className=\"size-3\" />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!homepage && !!repository && (\n\t\t\t\t\t\t<span aria-hidden className=\"text-muted-foreground/40\">\n\t\t\t\t\t\t\t·\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!repository && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={repository}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t\t\taria-label={strings.repositoryAria}\n\t\t\t\t\t\t\tclassName=\"inline-flex items-center gap-1 rounded text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Code2 className=\"size-3.5\" />\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t\tRepository\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<ExternalLink className=\"size-3\" />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Wrapper>\n\t);\n}\n\nAiPackageInfo.displayName = 'AiPackageInfo';\n\nfunction MetaItem({ label, value }: { label: string; value: string }) {\n\treturn (\n\t\t<div className=\"inline-flex items-baseline gap-1\">\n\t\t\t<Text size=\"xs\" type=\"discrete\">\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"tabular-nums\">\n\t\t\t\t{value}\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n","import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport type AiFileTreeNodeKind = 'directory' | 'file';\n\nexport type AiFileTreeChangeStatus = 'added' | 'modified' | 'removed' | 'renamed';\n\nexport interface AiFileTreeNode {\n\tid: string;\n\tname: string;\n\tkind: AiFileTreeNodeKind;\n\t/** Children — only meaningful for directories. */\n\tchildren?: ReadonlyArray<AiFileTreeNode>;\n\t/** Custom icon override (file kinds, etc.). */\n\ticon?: LucideIcon;\n\t/** Diff status — drives the trailing pill / row tint. */\n\tstatus?: AiFileTreeChangeStatus;\n\t/** Trailing slot — badge, line count, etc. */\n\ttrailing?: ReactNode;\n\t/** Default-expanded state for directories. */\n\tdefaultExpanded?: boolean;\n}\n\nexport interface AiFileTreeStrings {\n\texpandAria: string;\n\tcollapseAria: string;\n\tstatusLabels: Record<AiFileTreeChangeStatus, string>;\n}\n\nexport const defaultAiFileTreeStrings: AiFileTreeStrings = {\n\texpandAria: 'Expand directory',\n\tcollapseAria: 'Collapse directory',\n\tstatusLabels: {\n\t\tadded: 'A',\n\t\tmodified: 'M',\n\t\tremoved: 'D',\n\t\trenamed: 'R',\n\t},\n};\n\nexport interface AiFileTreeProps {\n\t/** Root nodes — typically one entry but the API accepts multiple. */\n\tnodes: ReadonlyArray<AiFileTreeNode>;\n\t/** Selected node id — drives the active row tint. */\n\tselectedId?: string;\n\t/** Click handler — fires for files only by default. */\n\tonSelect?: (node: AiFileTreeNode) => void;\n\t/** Hide the diff status pills (still tints the row). */\n\thideStatusLabels?: boolean;\n\t/** Indent width per nesting level (px). */\n\tindent?: number;\n\tclassName?: string;\n\tstrings?: StringsProp<AiFileTreeStrings>;\n}\n","/**\n * AiFileTree — compact file/directory tree used to surface a model's proposed\n * file changes (a new repo scaffold, a multi-file edit set, an artifact\n * bundle). Accepts a recursive `nodes` array; rows are click-selectable\n * (files), directories toggle expanded. Diff status (added / modified /\n * removed / renamed) drives both a trailing pill and a subtle row tint.\n */\nimport { useState, type ReactNode } from 'react';\nimport {\n\tChevronDown,\n\tChevronRight,\n\tFile,\n\tFileCode,\n\tFileText,\n\tFolder,\n\tFolderOpen,\n\ttype LucideIcon,\n} from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiFileTreeStrings,\n\ttype AiFileTreeChangeStatus,\n\ttype AiFileTreeNode,\n\ttype AiFileTreeProps,\n} from './types';\n\nconst STATUS_TINT: Record<AiFileTreeChangeStatus, { row: string; pill: string }> = {\n\tadded: { row: 'before:bg-success', pill: 'bg-success/15 text-success' },\n\tmodified: { row: 'before:bg-warning', pill: 'bg-warning/20 text-warning' },\n\tremoved: { row: 'before:bg-destructive', pill: 'bg-destructive/15 text-destructive' },\n\trenamed: { row: 'before:bg-info', pill: 'bg-info/15 text-info' },\n};\n\nfunction pickFileIcon(name: string): LucideIcon {\n\tconst ext = name.split('.').pop()?.toLowerCase() ?? '';\n\tif (['ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'json', 'css', 'scss', 'html', 'sh', 'py', 'rs', 'go'].includes(ext)) {\n\t\treturn FileCode;\n\t}\n\tif (['md', 'mdx', 'txt'].includes(ext)) {\n\t\treturn FileText;\n\t}\n\treturn File;\n}\n\nexport function AiFileTree({\n\tnodes,\n\tselectedId,\n\tonSelect,\n\thideStatusLabels = false,\n\tindent = 14,\n\tclassName,\n\tstrings: stringsProp,\n}: AiFileTreeProps) {\n\tconst strings = useStrings(defaultAiFileTreeStrings, stringsProp);\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('ai-file-tree--component', \n\t\t\t\t'overflow-hidden rounded-lg border border-border/60 bg-card font-mono text-xs',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<ul>\n\t\t\t\t{nodes.map((node) => (\n\t\t\t\t\t<TreeRow\n\t\t\t\t\t\tkey={node.id}\n\t\t\t\t\t\tnode={node}\n\t\t\t\t\t\tdepth={0}\n\t\t\t\t\t\tselectedId={selectedId}\n\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\thideStatusLabels={hideStatusLabels}\n\t\t\t\t\t\tindent={indent}\n\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</div>\n\t);\n}\n\nAiFileTree.displayName = 'AiFileTree';\n\nfunction TreeRow({\n\tnode,\n\tdepth,\n\tselectedId,\n\tonSelect,\n\thideStatusLabels,\n\tindent,\n\tstrings,\n}: {\n\tnode: AiFileTreeNode;\n\tdepth: number;\n\tselectedId?: string;\n\tonSelect?: (n: AiFileTreeNode) => void;\n\thideStatusLabels: boolean;\n\tindent: number;\n\tstrings: ReturnType<typeof useStrings<typeof defaultAiFileTreeStrings>>;\n}) {\n\tconst [open, setOpen] = useState(node.defaultExpanded ?? depth < 1);\n\tconst isDir = node.kind === 'directory';\n\tconst isSelected = selectedId === node.id;\n\tconst status = node.status;\n\tconst tint = status ? STATUS_TINT[status] : undefined;\n\n\tconst Icon: LucideIcon =\n\t\tnode.icon ??\n\t\t(isDir ? (open ? FolderOpen : Folder) : pickFileIcon(node.name));\n\n\tconst handleClick = () => {\n\t\tif (isDir) setOpen((v) => !v);\n\t\telse onSelect?.(node);\n\t};\n\n\tconst Trailing: ReactNode = (\n\t\t<>\n\t\t\t{!!status && !hideStatusLabels && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'inline-flex size-4 shrink-0 items-center justify-center rounded',\n\t\t\t\t\t\t'text-xs font-bold leading-none uppercase',\n\t\t\t\t\t\ttint?.pill,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{strings.statusLabels[status]}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t{!!node.trailing && (\n\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t{node.trailing}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<li>\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={handleClick}\n\t\t\t\taria-expanded={isDir ? open : undefined}\n\t\t\t\taria-label={\n\t\t\t\t\tisDir ? (open ? strings.collapseAria : strings.expandAria) : undefined\n\t\t\t\t}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'ai-file-tree--row group relative h-auto w-full justify-start gap-1.5 rounded-none px-2 py-1 text-left font-mono text-xs',\n\t\t\t\t\t'hover:bg-muted/40',\n\t\t\t\t\t'focus-visible:ring-inset',\n\t\t\t\t\tisSelected && 'bg-primary/10',\n\t\t\t\t\t!!status &&\n\t\t\t\t\t\t'before:absolute before:left-0 before:top-0 before:h-full before:w-0.5',\n\t\t\t\t\ttint?.row,\n\t\t\t\t\tstatus === 'removed' && 'text-muted-foreground/80',\n\t\t\t\t)}\n\t\t\t\tstyle={{ paddingLeft: 8 + depth * indent }}\n\t\t\t>\n\t\t\t\t{isDir ? (\n\t\t\t\t\topen ? (\n\t\t\t\t\t\t<ChevronDown className=\"size-3.5 shrink-0 text-muted-foreground\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ChevronRight className=\"size-3.5 shrink-0 text-muted-foreground\" />\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\t<span aria-hidden className=\"size-3.5 shrink-0\" />\n\t\t\t\t)}\n\t\t\t\t<Icon\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'size-3.5 shrink-0',\n\t\t\t\t\t\tisDir ? 'text-muted-foreground' : 'text-muted-foreground/80',\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'flex-1 truncate',\n\t\t\t\t\t\tstatus === 'removed' && 'line-through',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{node.name}\n\t\t\t\t</span>\n\t\t\t\t<span className=\"ml-auto flex items-center gap-1.5\">{Trailing}</span>\n\t\t\t</Button>\n\t\t\t{isDir && open && !!node.children?.length && (\n\t\t\t\t<ul>\n\t\t\t\t\t{node.children.map((child) => (\n\t\t\t\t\t\t<TreeRow\n\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\tnode={child}\n\t\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\t\tselectedId={selectedId}\n\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\thideStatusLabels={hideStatusLabels}\n\t\t\t\t\t\t\tindent={indent}\n\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</li>\n\t);\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/button-Bd5bEIiB.cjs"),r=require("../../../_shared/typography-CO9uwZhF.cjs"),i=require("../../../_shared/cards-GSYfJ-oX.cjs"),a=require("../../../_shared/format-BTtJC6oz.cjs"),o=require("../../base/display/chart.cjs");let s=require("react"),c=require("react/jsx-runtime"),l=require("lucide-react"),u=require("recharts");var d={metricErrorLabel:`Unable to load metric`,comparisonTitle:`Comparison`,heatmapDayLabels:[`Mon`,``,`Wed`,``,`Fri`,``,``],heatmapMonthNames:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],heatmapLegendLess:`Less`,heatmapLegendMore:`More`};function f(e){if(e.value===null||e.value===void 0)return`—`;let t=e.value,n=typeof t==`number`?t:null;switch(e.valueType){case`currency`:return n===null?String(t):a.t(n,{currency:e.currency,currencyDisplay:`code`}).replace(/\u00a0/g,` `);case`percentage`:return n===null?String(t):a.i(n);case`duration`:return n===null?String(t):a.n(n);case`number`:return n===null?String(t):a.r(n);default:return String(t)}}function p(e){return e.trend?e.trend:e.change?.direction===`up`?`positive`:e.change?.direction===`down`?`negative`:`neutral`}var m={positive:{text:`text-success`,badge:`bg-success/10 text-success`,arrow:`text-success`},negative:{text:`text-destructive`,badge:`bg-destructive/10 text-destructive`,arrow:`text-destructive`},neutral:{text:`text-muted-foreground`,badge:`bg-muted text-muted-foreground`,arrow:`text-muted-foreground`}},h={sm:`size-3`,md:`size-3.5`,lg:`size-4`},g={sm:`xxs`,md:`xs`,lg:`sm`},_={sm:`px-1.5 py-0.5`,md:`px-2 py-0.5`,lg:`px-2.5 py-1`};function v(e,t){return e||(t===`up`?`positive`:t===`down`?`negative`:`neutral`)}function y({change:e,trend:n,size:i=`md`,variant:a=`default`,className:o}){let s=v(n,e.direction),u=e.direction===`up`?l.ArrowUp:e.direction===`down`?l.ArrowDown:l.Minus,d=m[s],f=String(e.value),p=e.direction===`up`?`+`:(e.direction,``);return a===`inline`?(0,c.jsxs)(r.s,{tag:`span`,size:g[i],weight:`medium`,className:t.cn(`metric-trend-chip--component`,d.text,`tabular-nums`,o),children:[p,f]}):a===`compact`?(0,c.jsxs)(`span`,{className:t.cn(`inline-flex items-center gap-0.5`,d.text,o),children:[(0,c.jsx)(u,{className:h[i],strokeWidth:2.5,"aria-hidden":`true`}),(0,c.jsx)(r.s,{tag:`span`,size:g[i],weight:`semibold`,className:`text-current tabular-nums`,children:f})]}):a===`badge`?(0,c.jsxs)(`span`,{className:t.cn(`inline-flex items-center gap-1 rounded-full font-medium tabular-nums`,d.badge,_[i],o),children:[(0,c.jsx)(u,{className:h[i],strokeWidth:2.5,"aria-hidden":`true`}),(0,c.jsx)(r.s,{tag:`span`,size:g[i],weight:`semibold`,className:`text-current tabular-nums`,children:f}),!!e.label&&(0,c.jsx)(r.s,{tag:`span`,size:g[i],className:`text-current opacity-70`,children:e.label})]}):(0,c.jsxs)(`span`,{className:t.cn(`inline-flex items-center gap-1`,d.text,o),children:[(0,c.jsx)(u,{className:h[i],strokeWidth:2.5,"aria-hidden":`true`}),(0,c.jsx)(r.s,{tag:`span`,size:g[i],weight:`semibold`,className:`tabular-nums`,children:f}),!!e.label&&(0,c.jsx)(r.s,{tag:`span`,size:g[i],type:`secondary`,children:e.label})]})}y.displayName=`MetricTrendChip`;var b={positive:`var(--success)`,negative:`var(--destructive)`,neutral:`var(--muted-foreground)`};function x({data:e,trend:n=`neutral`,color:r,className:i,animated:a=!0,"aria-label":o=`Trend sparkline`}){let l=(0,s.useId)(),d=(0,s.useMemo)(()=>`metric-spark-${l.replaceAll(`:`,``)}`,[l]),f=r??b[n],p=(0,s.useMemo)(()=>!Array.isArray(e)||e.length===0?[]:e.map((e,t)=>({i:t,v:e})),[e]);return p.length===0?(0,c.jsx)(`div`,{className:t.cn(`metric-sparkline--component`,`w-full`,i),"aria-hidden":`true`}):(0,c.jsx)(`div`,{className:t.cn(`w-full`,i),role:`img`,"aria-label":o,children:(0,c.jsx)(u.ResponsiveContainer,{width:`100%`,height:`100%`,initialDimension:{width:1,height:1},children:(0,c.jsxs)(u.AreaChart,{data:p,margin:{top:2,right:0,bottom:0,left:0},children:[(0,c.jsx)(`defs`,{children:(0,c.jsxs)(`linearGradient`,{id:d,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,c.jsx)(`stop`,{offset:`0%`,stopColor:f,stopOpacity:.25}),(0,c.jsx)(`stop`,{offset:`100%`,stopColor:f,stopOpacity:0})]})}),(0,c.jsx)(u.Area,{type:`monotone`,dataKey:`v`,stroke:f,strokeWidth:1.75,fill:`url(#${d})`,dot:!1,activeDot:!1,isAnimationActive:a,animationDuration:600})]})})})}x.displayName=`MetricSparkline`;var S=({className:e})=>(0,c.jsx)(`div`,{className:t.cn(`animate-pulse rounded bg-muted`,e)});function C({variant:e=`default`,size:n=`md`,className:r}){let i=n===`sm`?`p-3`:n===`lg`?`p-5`:`p-4`;return e===`card`||e===`bordered`||e===`accent`||e===`colored`?(0,c.jsxs)(`div`,{className:t.cn(`metric-skeleton--component`,`rounded-xl border border-border bg-card shadow-sm`,i,r),"aria-busy":`true`,"aria-live":`polite`,children:[(0,c.jsx)(S,{className:`h-3 w-24`}),(0,c.jsx)(S,{className:t.cn(`mt-3`,n===`lg`?`h-9 w-40`:`h-7 w-32`)}),(0,c.jsx)(S,{className:`mt-2 h-3 w-20`}),(0,c.jsx)(S,{className:`mt-3 h-8 w-full`})]}):e===`compact`?(0,c.jsxs)(`div`,{className:t.cn(`flex items-center gap-3`,r),"aria-busy":`true`,children:[(0,c.jsx)(S,{className:`size-9 rounded-lg`}),(0,c.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,c.jsx)(S,{className:`h-3 w-20`}),(0,c.jsx)(S,{className:`h-4 w-28`})]}),(0,c.jsx)(S,{className:`h-5 w-12 rounded-full`})]}):e===`minimal`?(0,c.jsxs)(`div`,{className:t.cn(`inline-flex items-baseline gap-2`,r),"aria-busy":`true`,children:[(0,c.jsx)(S,{className:`h-3 w-12`}),(0,c.jsx)(S,{className:`h-3 w-16`})]}):(0,c.jsxs)(`div`,{className:t.cn(`flex flex-col gap-1.5`,i,r),"aria-busy":`true`,children:[(0,c.jsx)(S,{className:`h-3 w-20`}),(0,c.jsx)(S,{className:`h-5 w-28`}),(0,c.jsx)(S,{className:`mt-1 h-6 w-full`})]})}C.displayName=`MetricSkeleton`;var w={default:{border:`border-border`,bg:`bg-card`,bar:`bg-foreground`,dot:`bg-foreground`,ring:`ring-border`},primary:{border:`border-primary/25`,bg:`bg-primary/5`,bar:`bg-primary`,dot:`bg-primary`,ring:`ring-primary/20`},success:{border:`border-success/30`,bg:`bg-success/5`,bar:`bg-success`,dot:`bg-success`,ring:`ring-success/20`},warning:{border:`border-warning/40`,bg:`bg-warning/10`,bar:`bg-warning`,dot:`bg-warning`,ring:`ring-warning/30`},danger:{border:`border-destructive/30`,bg:`bg-destructive/5`,bar:`bg-destructive`,dot:`bg-destructive`,ring:`ring-destructive/20`},info:{border:`border-info/30`,bg:`bg-info/5`,bar:`bg-info`,dot:`bg-info`,ring:`ring-info/20`}},T={sm:`text-sm`,md:`text-lg`,lg:`text-xl`},E={sm:`text-xl`,md:`text-3xl`,lg:`text-4xl`},D={sm:`h-6`,md:`h-8`,lg:`h-10`},O=16;function k(e){let{data:n,variant:i=`default`,size:a=`md`,colorScheme:o=`default`,showSparkline:l=!0,showChange:u=!0,showIcon:m=!0,loading:h=!1,error:g=!1,errorLabel:_,progress:v=0,className:y,"aria-label":b}=e,x=(0,s.useMemo)(()=>f(n),[n]),S=(0,s.useMemo)(()=>p(n),[n]);if(h)return(0,c.jsx)(C,{variant:i,size:a,className:t.cn(`metric--component`,y)});if(g)return(0,c.jsx)(`div`,{className:t.cn(`flex items-center justify-center rounded-lg border border-border bg-card p-4 text-muted-foreground`,y),children:(0,c.jsx)(r.s,{children:_??d.metricErrorLabel})});let w={data:n,formattedValue:x,trend:S,size:a,showSparkline:l,showChange:u,showIcon:m,colorScheme:o,ariaLabel:b??n.label,className:y};switch(i){case`card`:return(0,c.jsx)(ee,{...w});case`compact`:return(0,c.jsx)(te,{...w});case`minimal`:return(0,c.jsx)(ne,{...w});case`bordered`:return(0,c.jsx)(re,{...w});case`accent`:return(0,c.jsx)(j,{...w});case`colored`:return(0,c.jsx)(M,{...w,progress:v});default:return(0,c.jsx)(A,{...w})}}k.displayName=`Metric`;function A({data:e,formattedValue:n,trend:i,size:a,showSparkline:o,showChange:s,showIcon:l,ariaLabel:u,className:d}){let f=e.icon;return(0,c.jsxs)(`div`,{className:t.cn(`flex min-w-0 flex-col gap-1`,d),"aria-label":u,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0 text-muted-foreground`,children:[!!l&&!!f&&(0,c.jsx)(f,{className:`size-3.5 shrink-0`,"aria-hidden":`true`}),(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`truncate`,children:e.label})]}),(0,c.jsx)(r.o,{tag:`h5`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-tight truncate`,T[a]),title:n,children:n}),!!s&&!!e.change&&(0,c.jsx)(`div`,{className:`min-w-0`,children:(0,c.jsx)(y,{change:e.change,trend:e.trend,size:a,variant:`compact`})}),!!e.subtitle&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:e.subtitle}),!!o&&!!e.sparkline?.length&&(0,c.jsx)(x,{data:e.sparkline,trend:i,className:t.cn(`mt-auto`,D[a])}),!!e.footer&&(0,c.jsx)(r.s,{size:`xxs`,type:`discrete`,className:`truncate`,children:e.footer})]})}function ee({data:e,formattedValue:n,trend:a,size:o,showSparkline:s,showChange:l,showIcon:u,ariaLabel:d,className:f}){let p=e.icon,m=!!(e.href||e.onClick),h=o===`sm`?`small`:`default`,g=(0,c.jsxs)(i.t,{title:e.label,icon:u&&p?(0,c.jsx)(p,{className:`size-4`,"aria-hidden":`true`}):null,tooltip:e.tooltip,padding:h,className:t.cn(m&&`cursor-pointer transition-shadow hover:shadow-md`,f),"aria-label":d,children:[(0,c.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,c.jsx)(r.o,{tag:o===`sm`?`h5`:o===`lg`?`h3`:`h4`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-none`,E[o]),children:n}),!!l&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:o,variant:`badge`})]}),!!e.subtitle&&(0,c.jsx)(r.s,{type:`secondary`,className:`mt-2`,children:e.subtitle}),!!s&&!!e.sparkline?.length&&(0,c.jsx)(x,{data:e.sparkline,trend:a,className:t.cn(`mt-3`,o===`lg`?`h-12`:`h-10`)}),!!e.footer&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,className:`mt-2`,children:e.footer})]});return m&&e.onClick?(0,c.jsx)(`div`,{role:`button`,tabIndex:0,onClick:e.onClick,onKeyDown:t=>(t.key===`Enter`||t.key===` `)&&e.onClick?.(),className:`rounded-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,children:g}):g}function te({data:e,formattedValue:n,size:i,showChange:a,showIcon:o,ariaLabel:s,className:l}){let u=e.icon;return(0,c.jsxs)(`div`,{className:t.cn(`flex items-center gap-3`,l),"aria-label":s,children:[!!o&&!!u&&(0,c.jsx)(`span`,{className:`inline-flex size-9 shrink-0 items-center justify-center rounded-lg bg-muted/60 text-muted-foreground`,children:(0,c.jsx)(u,{className:`size-4`,"aria-hidden":`true`})}),(0,c.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:e.label}),(0,c.jsx)(r.s,{tag:`span`,size:i===`sm`?`sm`:`lg`,weight:`bold`,className:`block truncate tabular-nums`,children:n})]}),!!a&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:i,variant:`badge`,className:`shrink-0`})]})}function ne({data:e,formattedValue:n,size:i,showChange:a,ariaLabel:o,className:s}){return(0,c.jsxs)(`span`,{className:t.cn(`inline-flex items-baseline gap-2`,s),"aria-label":o,children:[(0,c.jsxs)(r.s,{tag:`span`,size:i===`lg`?`sm`:`xs`,type:`secondary`,children:[e.label,`:`]}),(0,c.jsx)(r.s,{tag:`span`,size:i===`lg`?`sm`:`xs`,weight:`semibold`,className:`tabular-nums`,children:n}),!!a&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:`sm`,variant:`inline`})]})}function re({data:e,formattedValue:n,trend:i,size:a,showSparkline:o,showChange:s,showIcon:l,colorScheme:u,ariaLabel:d,className:f}){let p=e.icon,m=w[u];return(0,c.jsxs)(`div`,{className:t.cn(`flex flex-col gap-3 rounded-xl border p-4 shadow-sm`,m.border,m.bg,f),"aria-label":d,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[!!l&&!!p&&(0,c.jsx)(p,{className:`size-4 shrink-0`,"aria-hidden":`true`}),(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,children:e.label})]}),!!s&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:a,variant:`badge`})]}),(0,c.jsx)(r.o,{tag:a===`lg`?`h3`:`h4`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-none`,E[a]),children:n}),!!e.subtitle&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,children:e.subtitle}),!!o&&!!e.sparkline?.length&&(0,c.jsx)(x,{data:e.sparkline,trend:i,className:D[a]}),!!e.footer&&(0,c.jsx)(r.s,{size:`xxs`,type:`discrete`,children:e.footer})]})}function j({data:e,formattedValue:n,trend:i,size:a,showSparkline:o,showChange:s,ariaLabel:l,className:u}){let d=e.icon;return(0,c.jsxs)(`div`,{className:t.cn(`dark relative flex flex-col overflow-hidden rounded-lg bg-card text-card-foreground shadow-sm ring-1 ring-border`,u),"aria-label":l,children:[(0,c.jsxs)(`div`,{className:`flex flex-col gap-2 p-5`,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:e.label}),!!d&&(0,c.jsx)(`span`,{className:`inline-flex size-7 items-center justify-center rounded-lg bg-foreground/[0.08]`,children:(0,c.jsx)(d,{className:`size-3.5 text-muted-foreground`,"aria-hidden":`true`})})]}),(0,c.jsxs)(`div`,{className:`flex items-baseline gap-2.5`,children:[(0,c.jsx)(r.o,{tag:`h3`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-none text-foreground`,E[a]),children:n}),!!s&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:a,variant:`compact`})]}),!!e.subtitle&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,children:e.subtitle})]}),!!o&&!!e.sparkline?.length&&(0,c.jsx)(x,{data:e.sparkline,trend:i,className:`h-12 w-full`})]})}function M({data:e,formattedValue:n,size:i,showChange:a,colorScheme:o,ariaLabel:s,className:u,progress:d=0}){let f=w[o==="default"?`primary`:o],p=Math.round(Math.min(Math.max(d,0),100)/100*O);return(0,c.jsxs)(`div`,{className:t.cn(`rounded-xl bg-card p-5 shadow-sm border border-border/50`,u),"aria-label":s,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`truncate`,children:e.label}),(0,c.jsx)(`span`,{className:t.cn(`size-1.5 rounded-full shrink-0`,f.dot),"aria-hidden":`true`})]}),(0,c.jsxs)(`div`,{className:`mt-2.5 flex items-baseline gap-2`,children:[(0,c.jsx)(r.o,{tag:`h3`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-none`,E[i]),children:n}),!!e.subtitle&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,children:e.subtitle})]}),(0,c.jsx)(`div`,{className:`mt-4 flex items-center gap-0.5`,role:`progressbar`,"aria-label":`${e.label} progress`,"aria-valuenow":d,"aria-valuemin":0,"aria-valuemax":100,"aria-valuetext":`${d}%`,children:Array.from({length:O},(e,n)=>(0,c.jsx)(`div`,{className:t.cn(`h-6 w-1.5 rounded-sm transition-colors`,n<p?f.bar:`bg-muted`)},`seg-${n}`))}),!!a&&!!e.change&&(0,c.jsx)(`div`,{className:`mt-3`,children:(0,c.jsx)(y,{change:e.change,trend:e.trend,size:i,variant:`default`})}),!!e.footer&&(0,c.jsxs)(`div`,{className:`mt-2 inline-flex items-center gap-1 text-muted-foreground`,children:[(0,c.jsx)(l.ArrowUpRight,{className:`size-3`,"aria-hidden":`true`}),(0,c.jsx)(r.s,{size:`xxs`,type:`secondary`,children:e.footer})]})]})}function N({metrics:e,period:i,onPeriodChange:a,variant:o=`default`,size:s=`sm`,showSparklines:u=!0,showChanges:d=!0,footerText:f,className:p}){let m=(0,c.jsx)(`div`,{className:`grid min-w-0 flex-1 grid-cols-1 divide-y divide-border lg:flex lg:items-stretch lg:divide-x lg:divide-y-0`,children:e.map(e=>(0,c.jsx)(`div`,{className:`min-w-0 px-4 py-2.5 lg:min-w-36 lg:flex-1`,children:(0,c.jsx)(k,{data:e,variant:`default`,size:s,showSparkline:u,showChange:d})},e.id))}),h=!!i&&(0,c.jsx)(`div`,{className:`flex shrink-0 items-center border-b border-border px-3 py-2 lg:border-b-0 lg:py-0`,children:(0,c.jsxs)(n.t,{variant:`secondary`,buttonStyle:`ghost`,className:`gap-1.5`,onClick:a?()=>a(i.value):void 0,children:[(0,c.jsx)(l.Calendar,{className:`size-3.5`,"aria-hidden":`true`}),(0,c.jsx)(r.s,{size:`xs`,weight:`medium`,children:i.label})]})});return o===`gradient`?(0,c.jsxs)(`div`,{className:t.cn(`metric-bar--component`,`w-full`,`rounded-lg bg-gradient-to-r from-primary/8 via-info/5 to-success/8 p-px`,p),children:[(0,c.jsxs)(`div`,{className:`flex min-w-0 flex-col overflow-hidden rounded-radius bg-card lg:flex-row`,children:[h&&(0,c.jsxs)(c.Fragment,{children:[h,(0,c.jsx)(`div`,{className:`hidden w-px bg-border lg:block`,"aria-hidden":`true`})]}),m]}),!!f&&(0,c.jsx)(`div`,{className:`rounded-b-radius border-t border-border/50 bg-card px-4 py-2`,children:(0,c.jsx)(r.s,{size:`xxs`,type:`discrete`,children:f})})]}):(0,c.jsxs)(`div`,{className:t.cn(`metric-bar--component flex w-full flex-col overflow-hidden rounded-lg border border-border bg-card shadow-sm`,p),children:[(0,c.jsxs)(`div`,{className:`flex min-w-0 flex-col overflow-hidden lg:flex-row`,children:[h&&(0,c.jsxs)(c.Fragment,{children:[h,(0,c.jsx)(`div`,{className:`hidden w-px bg-border lg:block`,"aria-hidden":`true`})]}),m]}),!!f&&(0,c.jsx)(`div`,{className:`border-t border-border/50 px-4 py-2`,children:(0,c.jsx)(r.s,{size:`xxs`,type:`discrete`,children:f})})]})}N.displayName=`MetricBar`;var ie={sm:`gap-2`,md:`gap-3`,lg:`gap-4`};function ae(e){return e<=1?`grid-cols-1`:e===2?`grid-cols-1 sm:grid-cols-2`:e===3?`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3`:e===4?`grid-cols-1 sm:grid-cols-2 lg:grid-cols-4`:e===5||e===6?`grid-cols-2 sm:grid-cols-3 lg:grid-cols-6`:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4`}var oe={1:`grid-cols-1`,2:`grid-cols-1 sm:grid-cols-2`,3:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3`,4:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-4`,6:`grid-cols-2 sm:grid-cols-3 lg:grid-cols-6`};function P({metrics:e,variant:n=`card`,size:r=`md`,colorScheme:i=`default`,columns:a=`auto`,gap:o=`md`,showSparklines:s=!0,showChanges:l=!0,showIcons:u=!0,loading:d=!1,className:f}){return(0,c.jsx)(`div`,{className:t.cn(`metric-grid--component`,`grid`,a===`auto`?ae(e.length):oe[a],ie[o],f),children:e.map(e=>(0,c.jsx)(k,{data:e,variant:n,size:r,colorScheme:i,showSparkline:s,showChange:l,showIcon:u,loading:d},e.id))})}P.displayName=`MetricGrid`;var F={title:`Comparison`,currentLabel:`This period`,previousLabel:`Previous period`,suffix:`vs previous`};function I(e){if(e==null)return null;if(typeof e==`number`)return e;let t=Number(e);return Number.isFinite(t)?t:null}function L({current:n,previous:a,title:o,currentPeriod:s,previousPeriod:u,className:d,strings:p}){let m=e.useStrings(F,p),h=I(n.value),g=I(a.value),_=h!==null&&g!==null,v=_?h-g:0,y=_&&g!==0?Math.round(v/g*100):0,b=v>0,x=v===0,S=x?l.Equal:b?l.ArrowUp:l.ArrowDown,C=x?{box:`bg-muted/40`,chip:`bg-card text-muted-foreground border border-border/60`}:b?{box:`bg-success/10`,chip:`bg-success/15 text-success`}:{box:`bg-destructive/10`,chip:`bg-destructive/15 text-destructive`};return(0,c.jsxs)(i.t,{title:o??m.title,className:t.cn(`metric-comparison--component`,d),children:[!!(s||u)&&(0,c.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[!!s&&(0,c.jsx)(r.s,{tag:`span`,size:`xxs`,weight:`medium`,className:`rounded-full bg-muted px-2 py-0.5 uppercase tracking-wider text-muted-foreground`,children:s}),!!u&&(0,c.jsx)(r.s,{tag:`span`,size:`xxs`,weight:`medium`,className:`rounded-full bg-muted px-2 py-0.5 uppercase tracking-wider text-muted-foreground`,children:u})]}),(0,c.jsxs)(`div`,{className:`mt-3 grid items-stretch gap-2 grid-cols-1 sm:grid-cols-[1fr_auto_1fr]`,children:[(0,c.jsxs)(`div`,{className:`rounded-lg border border-border/60 bg-card px-3 py-2.5`,children:[(0,c.jsx)(r.s,{size:`xxs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:m.currentLabel}),(0,c.jsx)(r.o,{tag:`h5`,className:`text-xl tabular-nums tracking-tight border-none pb-0`,children:f(n)})]}),(0,c.jsxs)(`div`,{className:`flex items-center justify-center text-muted-foreground/60`,children:[(0,c.jsx)(l.ArrowRight,{className:`hidden size-4 sm:block`,"aria-hidden":`true`}),(0,c.jsx)(l.ArrowDown,{className:`size-4 sm:hidden`,"aria-hidden":`true`})]}),(0,c.jsxs)(`div`,{className:`rounded-lg border border-border/60 bg-muted/30 px-3 py-2.5`,children:[(0,c.jsx)(r.s,{size:`xxs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:m.previousLabel}),(0,c.jsx)(r.o,{tag:`h5`,className:`text-xl tabular-nums tracking-tight border-none pb-0 text-muted-foreground`,children:f(a)})]})]}),!!_&&(0,c.jsxs)(`div`,{className:t.cn(`mt-3 flex flex-wrap items-center gap-2 rounded-lg px-3 py-2`,C.box),children:[(0,c.jsxs)(`div`,{className:t.cn(`inline-flex items-center gap-1 rounded-full px-2 py-0.5`,C.chip),children:[(0,c.jsx)(S,{className:`size-3`,strokeWidth:2.5,"aria-hidden":`true`}),(0,c.jsxs)(r.s,{tag:`span`,size:`xs`,weight:`semibold`,className:`tabular-nums`,children:[b?`+`:x?``:`−`,(e=>{let t=Math.abs(e);return f({...n,value:t})})(v)]})]}),(0,c.jsxs)(r.s,{size:`xs`,type:`secondary`,className:t.cn(`tabular-nums`,b&&`text-success`,!b&&!x&&`text-destructive`),children:[b?`+`:x?``:`−`,Math.abs(y),`% `,m.suffix]})]})]})}L.displayName=`MetricComparison`;var R=[`bars`,`line`,`dots`,`progress`,`area`,`pie`],z={bars:`var(--primary)`,line:`var(--info)`,dots:`var(--warning)`,progress:`var(--success)`,area:`var(--primary)`,pie:`var(--success)`},B=[`var(--success)`,`var(--info)`,`var(--warning)`];function V({data:e,color:n}){let r=Math.max(...e,1);return(0,c.jsx)(`div`,{className:t.cn(`metric-micro-grid--component`,`flex h-5 items-end gap-0.5`),children:e.slice(0,6).map((e,t)=>(0,c.jsx)(`div`,{className:`flex-1 rounded-t-sm`,style:{height:`${e/r*100}%`,backgroundColor:n,opacity:.8}},`bar-${t}`))})}function H({data:e,color:t}){let n=Math.max(...e,1),r=Math.min(...e),i=n-r||1,a=e.slice(0,6);return(0,c.jsx)(`svg`,{viewBox:`0 0 60 16`,className:`h-5 w-full`,preserveAspectRatio:`none`,children:(0,c.jsx)(`polyline`,{fill:`none`,stroke:t,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,points:a.map((e,t)=>`${t/Math.max(a.length-1,1)*60},${16-(e-r)/i*14}`).join(` `)})})}function U({data:e,color:t}){let n=Math.max(...e,1);return(0,c.jsx)(`div`,{className:`flex h-5 items-end justify-around`,children:e.slice(0,5).map((e,r)=>(0,c.jsx)(`div`,{className:`h-1.5 w-1.5 rounded-full`,style:{marginBottom:`${e/n*12}px`,backgroundColor:t}},`dot-${r}`))})}function W({data:e,color:t}){let n=e[0]??0,r=e[1]??100;return(0,c.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-muted`,children:(0,c.jsx)(`div`,{className:`h-full rounded-full transition-all`,style:{width:`${Math.min(n/r*100,100)}%`,backgroundColor:t}})})}function G({data:e,color:t}){let n=`micro-area-${(0,s.useId)().replaceAll(`:`,``)}`;return(0,c.jsx)(`div`,{className:`h-5 w-full`,children:(0,c.jsx)(u.ResponsiveContainer,{width:`100%`,height:`100%`,initialDimension:{width:1,height:1},children:(0,c.jsxs)(u.AreaChart,{data:e.map((e,t)=>({i:t,v:e})),margin:{top:0,right:0,bottom:0,left:0},children:[(0,c.jsx)(`defs`,{children:(0,c.jsxs)(`linearGradient`,{id:n,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,c.jsx)(`stop`,{offset:`0%`,stopColor:t,stopOpacity:.3}),(0,c.jsx)(`stop`,{offset:`100%`,stopColor:t,stopOpacity:0})]})}),(0,c.jsx)(u.Area,{type:`monotone`,dataKey:`v`,stroke:t,strokeWidth:1.25,fill:`url(#${n})`})]})})})}function K({data:e}){let t=e.reduce((e,t)=>e+t,0)||1,n=0;return(0,c.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-6 w-6`,children:e.slice(0,3).map((e,r)=>{let i=e/t*360,a=n;n+=i;let o=(a-90)*Math.PI/180,s=(a+i-90)*Math.PI/180,l=+(i>180);return(0,c.jsx)(`path`,{d:`M12,12 L${12+10*Math.cos(o)},${12+10*Math.sin(o)} A10,10 0 ${l},1 ${12+10*Math.cos(s)},${12+10*Math.sin(s)} Z`,fill:B[r%B.length]},`slice-${r}`)})})}function se({kind:e,data:t}){let n=z[e];return e===`bars`?(0,c.jsx)(V,{data:t,color:n}):e===`line`?(0,c.jsx)(H,{data:t,color:n}):e===`dots`?(0,c.jsx)(U,{data:t,color:n}):e===`progress`?(0,c.jsx)(W,{data:t,color:n}):e===`area`?(0,c.jsx)(G,{data:t,color:n}):(0,c.jsx)(K,{data:t})}function q({title:e=`Overview`,cells:n,className:a}){return(0,c.jsx)(i.t,{title:e,className:a,padding:`default`,children:(0,c.jsx)(`div`,{className:`grid grid-cols-3 grid-rows-2 -m-2`,children:n.slice(0,6).map((e,n)=>(0,c.jsxs)(`div`,{className:t.cn(`flex flex-col gap-1.5 px-3 py-2.5`,n%3!=2&&`border-r border-border/50`,n<3&&`border-b border-border/50`),children:[(0,c.jsx)(r.s,{size:`xxs`,type:`secondary`,className:`truncate uppercase tracking-wider`,children:e.label}),(0,c.jsx)(r.s,{tag:`span`,weight:`bold`,className:`tabular-nums truncate`,children:e.value}),(0,c.jsx)(`div`,{className:`mt-auto`,children:(0,c.jsx)(se,{kind:e.chart??R[n],data:e.data})})]},e.id??e.label))})})}q.displayName=`MetricMicroGrid`;var ce={green:`bg-gradient-to-br from-success via-primary to-success`,purple:`bg-gradient-to-br from-info via-primary to-info`,warm:`bg-gradient-to-br from-warning via-destructive to-warning`,ocean:`bg-gradient-to-br from-info via-primary to-info`},J=`var(--inverse-foreground)`,Y=`var(--inverse-muted)`;function X({title:e,value:n,change:i,data:a,theme:o=`green`,subtitle:l,className:d}){let f=`metric-grad-${(0,s.useId)().replaceAll(`:`,``)}`;return(0,c.jsxs)(`div`,{className:t.cn(`metric-gradient--component`,`relative overflow-hidden rounded-lg p-5 text-inverse-foreground shadow-sm ring-1 ring-inverse-border`,ce[o],d),children:[(0,c.jsxs)(`div`,{className:`relative flex items-start justify-between gap-3`,children:[(0,c.jsxs)(`div`,{className:`min-w-0`,children:[(0,c.jsx)(r.s,{size:`xs`,weight:`medium`,className:`uppercase tracking-wider text-inverse-muted`,children:e}),!!n&&(0,c.jsx)(r.o,{tag:`h3`,className:`mt-1 text-3xl font-bold tabular-nums tracking-tight border-none pb-0 leading-none text-inverse-foreground`,children:n}),!!l&&(0,c.jsx)(r.s,{size:`xs`,className:`mt-1 text-inverse-muted`,children:l})]}),!!i&&(0,c.jsx)(y,{change:i,trend:i.direction===`up`?`positive`:i.direction===`down`?`negative`:`neutral`,size:`sm`,variant:`badge`,className:`shrink-0 !bg-inverse-surface-strong !text-inverse-foreground`})]}),(0,c.jsx)(`div`,{className:`relative -mx-1 mt-3 h-24`,children:(0,c.jsx)(u.ResponsiveContainer,{width:`100%`,height:`100%`,initialDimension:{width:1,height:1},children:(0,c.jsxs)(u.AreaChart,{data:a,margin:{top:4,right:0,bottom:0,left:0},children:[(0,c.jsx)(`defs`,{children:(0,c.jsxs)(`linearGradient`,{id:f,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,c.jsx)(`stop`,{offset:`0%`,stopColor:J,stopOpacity:.3}),(0,c.jsx)(`stop`,{offset:`100%`,stopColor:J,stopOpacity:0})]})}),(0,c.jsx)(u.Area,{type:`monotone`,dataKey:`value`,stroke:Y,strokeWidth:2,fill:`url(#${f})`,dot:!1,activeDot:{r:4,strokeWidth:2,fill:J,stroke:Y},isAnimationActive:!0,animationDuration:800})]})})})]})}X.displayName=`MetricGradient`;var Z={0:`bg-muted`,1:`bg-success/20`,2:`bg-success/40`,3:`bg-success/65`,4:`bg-success`};function le(e,t){if(e.length===0)return{weeks:[],monthLabels:[]};let n=[...e].sort((e,t)=>e.date.localeCompare(t.date)),r=new Date(n[0].date+`T00:00:00`),i=new Date(n[n.length-1].date+`T00:00:00`),a=r.getDay(),o=a===0?-6:1-a,s=new Date(r);s.setDate(s.getDate()+o);let c=new Map;for(let e of n)c.set(e.date,e.level);let l=[],u=[],d=-1,f=[],p=new Date(s);for(;p<=i;){let e=p.toISOString().slice(0,10),n=(p.getDay()+6)%7;n===0&&f.length>0&&(l.push(f),f=[]);let r=p.getMonth();if(r!==d){let e=n===0?l.length:l.length+1;u.find(t=>t.weekIndex===e)||u.push({label:t[r],weekIndex:e}),d=r}let i=c.get(e)??0;f.push({date:e,level:i}),p.setDate(p.getDate()+1)}if(f.length>0){for(;f.length<7;)f.push(null);l.push(f)}return{weeks:l,monthLabels:u}}function Q({title:n,description:a,data:o,className:s,strings:l}){let u=e.useStrings(d,l),{weeks:f,monthLabels:p}=le(o,u.heatmapMonthNames);return(0,c.jsxs)(i.t,{title:n,description:a,className:t.cn(`activity-heatmap--component`,s),children:[(0,c.jsxs)(`div`,{className:`overflow-x-auto`,children:[(0,c.jsx)(`div`,{className:`relative mb-1`,style:{paddingLeft:`28px`,height:`12px`},children:(0,c.jsx)(`div`,{className:`relative flex`,style:{width:`${f.length*15}px`},children:p.filter((e,t,n)=>t===0||e.weekIndex-n[t-1].weekIndex>=3).map(e=>(0,c.jsx)(r.s,{size:`xxs`,type:`secondary`,className:`absolute leading-none whitespace-nowrap`,style:{left:`${e.weekIndex*15}px`,top:0},children:e.label},`${e.label}-${e.weekIndex}`))})}),(0,c.jsxs)(`div`,{className:`flex gap-0`,children:[(0,c.jsx)(`div`,{className:`mr-1 flex flex-col gap-0.75`,children:u.heatmapDayLabels.map((e,t)=>(0,c.jsx)(`div`,{className:`flex h-3 w-6 items-center justify-end`,children:!!e&&(0,c.jsx)(r.s,{size:`xxs`,type:`secondary`,className:`leading-none`,children:e})},`day-${t}`))}),(0,c.jsx)(`div`,{className:`flex gap-0.75`,children:f.map((e,n)=>(0,c.jsx)(`div`,{className:`flex flex-col gap-0.75`,children:e.map((e,r)=>{let i=e?`${e.date}: Level ${e.level}`:void 0;return(0,c.jsx)(`div`,{className:t.cn(`size-3 rounded-sm`,e?Z[e.level]:`bg-transparent`),title:i},`d-${n}-${r}`)})},`w-${n}`))})]})]}),(0,c.jsxs)(`div`,{className:`mt-4 flex items-center justify-end gap-1.5`,children:[(0,c.jsx)(r.s,{size:`xxs`,type:`secondary`,children:u.heatmapLegendLess}),[0,1,2,3,4].map(e=>(0,c.jsx)(`div`,{className:t.cn(`size-3 rounded-sm`,Z[e])},`legend-${e}`)),(0,c.jsx)(r.s,{size:`xxs`,type:`secondary`,children:u.heatmapLegendMore})]})]})}Q.displayName=`ActivityHeatmap`;function $({title:e,description:n,headerEnd:r,footer:a,config:s,children:l,initialDimension:u,surface:d,padding:f,className:p,contentClassName:m,chartClassName:h}){return(0,c.jsx)(i.t,{title:e,description:n,headerEnd:r,footerSlot:a,surface:d,padding:f,className:t.cn(`chart-card--component`,p),contentClassName:t.cn(`chart-card--content`,m),children:(0,c.jsx)(o.ChartContainer,{config:s,initialDimension:u,className:t.cn(`chart-card--chart min-h-[220px]`,h),children:l})})}$.displayName=`ChartCard`,exports.ActivityHeatmap=Q,exports.ChartCard=$,exports.Metric=k,exports.MetricBar=N,exports.MetricComparison=L,exports.MetricGradient=X,exports.MetricGrid=P,exports.MetricMicroGrid=q,exports.MetricSkeleton=C,exports.MetricSparkline=x,exports.MetricTrendChip=y,exports.defaultAnalyticsStrings=d,exports.defaultMetricComparisonStrings=F,exports.formatMetricValue=f,exports.resolveTrend=p;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/button-BMiPFJIb.cjs"),r=require("../../../_shared/typography-pzCKaFOc.cjs"),i=require("../../../_shared/cards-DQN9fcwo.cjs"),a=require("../../../_shared/format-BTtJC6oz.cjs"),o=require("../../base/display/chart.cjs");let s=require("react"),c=require("react/jsx-runtime"),l=require("lucide-react"),u=require("recharts");var d={metricErrorLabel:`Unable to load metric`,comparisonTitle:`Comparison`,heatmapDayLabels:[`Mon`,``,`Wed`,``,`Fri`,``,``],heatmapMonthNames:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],heatmapLegendLess:`Less`,heatmapLegendMore:`More`};function f(e){if(e.value===null||e.value===void 0)return`—`;let t=e.value,n=typeof t==`number`?t:null;switch(e.valueType){case`currency`:return n===null?String(t):a.t(n,{currency:e.currency,currencyDisplay:`code`}).replace(/\u00a0/g,` `);case`percentage`:return n===null?String(t):a.i(n);case`duration`:return n===null?String(t):a.n(n);case`number`:return n===null?String(t):a.r(n);default:return String(t)}}function p(e){return e.trend?e.trend:e.change?.direction===`up`?`positive`:e.change?.direction===`down`?`negative`:`neutral`}var m={positive:{text:`text-success`,badge:`bg-success/10 text-success`,arrow:`text-success`},negative:{text:`text-destructive`,badge:`bg-destructive/10 text-destructive`,arrow:`text-destructive`},neutral:{text:`text-muted-foreground`,badge:`bg-muted text-muted-foreground`,arrow:`text-muted-foreground`}},h={sm:`size-3`,md:`size-3.5`,lg:`size-4`},g={sm:`xxs`,md:`xs`,lg:`sm`},_={sm:`px-1.5 py-0.5`,md:`px-2 py-0.5`,lg:`px-2.5 py-1`};function v(e,t){return e||(t===`up`?`positive`:t===`down`?`negative`:`neutral`)}function y({change:e,trend:n,size:i=`md`,variant:a=`default`,className:o}){let s=v(n,e.direction),u=e.direction===`up`?l.ArrowUp:e.direction===`down`?l.ArrowDown:l.Minus,d=m[s],f=String(e.value),p=e.direction===`up`?`+`:(e.direction,``);return a===`inline`?(0,c.jsxs)(r.s,{tag:`span`,size:g[i],weight:`medium`,className:t.cn(`metric-trend-chip--component`,d.text,`tabular-nums`,o),children:[p,f]}):a===`compact`?(0,c.jsxs)(`span`,{className:t.cn(`inline-flex items-center gap-0.5`,d.text,o),children:[(0,c.jsx)(u,{className:h[i],strokeWidth:2.5,"aria-hidden":`true`}),(0,c.jsx)(r.s,{tag:`span`,size:g[i],weight:`semibold`,className:`text-current tabular-nums`,children:f})]}):a===`badge`?(0,c.jsxs)(`span`,{className:t.cn(`inline-flex items-center gap-1 rounded-full font-medium tabular-nums`,d.badge,_[i],o),children:[(0,c.jsx)(u,{className:h[i],strokeWidth:2.5,"aria-hidden":`true`}),(0,c.jsx)(r.s,{tag:`span`,size:g[i],weight:`semibold`,className:`text-current tabular-nums`,children:f}),!!e.label&&(0,c.jsx)(r.s,{tag:`span`,size:g[i],className:`text-current opacity-70`,children:e.label})]}):(0,c.jsxs)(`span`,{className:t.cn(`inline-flex items-center gap-1`,d.text,o),children:[(0,c.jsx)(u,{className:h[i],strokeWidth:2.5,"aria-hidden":`true`}),(0,c.jsx)(r.s,{tag:`span`,size:g[i],weight:`semibold`,className:`tabular-nums`,children:f}),!!e.label&&(0,c.jsx)(r.s,{tag:`span`,size:g[i],type:`secondary`,children:e.label})]})}y.displayName=`MetricTrendChip`;var b={positive:`var(--success)`,negative:`var(--destructive)`,neutral:`var(--muted-foreground)`};function x({data:e,trend:n=`neutral`,color:r,className:i,animated:a=!0,"aria-label":o=`Trend sparkline`}){let l=(0,s.useId)(),d=(0,s.useMemo)(()=>`metric-spark-${l.replaceAll(`:`,``)}`,[l]),f=r??b[n],p=(0,s.useMemo)(()=>!Array.isArray(e)||e.length===0?[]:e.map((e,t)=>({i:t,v:e})),[e]);return p.length===0?(0,c.jsx)(`div`,{className:t.cn(`metric-sparkline--component`,`w-full`,i),"aria-hidden":`true`}):(0,c.jsx)(`div`,{className:t.cn(`w-full`,i),role:`img`,"aria-label":o,children:(0,c.jsx)(u.ResponsiveContainer,{width:`100%`,height:`100%`,initialDimension:{width:1,height:1},children:(0,c.jsxs)(u.AreaChart,{data:p,margin:{top:2,right:0,bottom:0,left:0},children:[(0,c.jsx)(`defs`,{children:(0,c.jsxs)(`linearGradient`,{id:d,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,c.jsx)(`stop`,{offset:`0%`,stopColor:f,stopOpacity:.25}),(0,c.jsx)(`stop`,{offset:`100%`,stopColor:f,stopOpacity:0})]})}),(0,c.jsx)(u.Area,{type:`monotone`,dataKey:`v`,stroke:f,strokeWidth:1.75,fill:`url(#${d})`,dot:!1,activeDot:!1,isAnimationActive:a,animationDuration:600})]})})})}x.displayName=`MetricSparkline`;var S=({className:e})=>(0,c.jsx)(`div`,{className:t.cn(`animate-pulse rounded bg-muted`,e)});function C({variant:e=`default`,size:n=`md`,className:r}){let i=n===`sm`?`p-3`:n===`lg`?`p-5`:`p-4`;return e===`card`||e===`bordered`||e===`accent`||e===`colored`?(0,c.jsxs)(`div`,{className:t.cn(`metric-skeleton--component`,`rounded-xl border border-border bg-card shadow-sm`,i,r),"aria-busy":`true`,"aria-live":`polite`,children:[(0,c.jsx)(S,{className:`h-3 w-24`}),(0,c.jsx)(S,{className:t.cn(`mt-3`,n===`lg`?`h-9 w-40`:`h-7 w-32`)}),(0,c.jsx)(S,{className:`mt-2 h-3 w-20`}),(0,c.jsx)(S,{className:`mt-3 h-8 w-full`})]}):e===`compact`?(0,c.jsxs)(`div`,{className:t.cn(`flex items-center gap-3`,r),"aria-busy":`true`,children:[(0,c.jsx)(S,{className:`size-9 rounded-lg`}),(0,c.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,c.jsx)(S,{className:`h-3 w-20`}),(0,c.jsx)(S,{className:`h-4 w-28`})]}),(0,c.jsx)(S,{className:`h-5 w-12 rounded-full`})]}):e===`minimal`?(0,c.jsxs)(`div`,{className:t.cn(`inline-flex items-baseline gap-2`,r),"aria-busy":`true`,children:[(0,c.jsx)(S,{className:`h-3 w-12`}),(0,c.jsx)(S,{className:`h-3 w-16`})]}):(0,c.jsxs)(`div`,{className:t.cn(`flex flex-col gap-1.5`,i,r),"aria-busy":`true`,children:[(0,c.jsx)(S,{className:`h-3 w-20`}),(0,c.jsx)(S,{className:`h-5 w-28`}),(0,c.jsx)(S,{className:`mt-1 h-6 w-full`})]})}C.displayName=`MetricSkeleton`;var w={default:{border:`border-border`,bg:`bg-card`,bar:`bg-foreground`,dot:`bg-foreground`,ring:`ring-border`},primary:{border:`border-primary/25`,bg:`bg-primary/5`,bar:`bg-primary`,dot:`bg-primary`,ring:`ring-primary/20`},success:{border:`border-success/30`,bg:`bg-success/5`,bar:`bg-success`,dot:`bg-success`,ring:`ring-success/20`},warning:{border:`border-warning/40`,bg:`bg-warning/10`,bar:`bg-warning`,dot:`bg-warning`,ring:`ring-warning/30`},danger:{border:`border-destructive/30`,bg:`bg-destructive/5`,bar:`bg-destructive`,dot:`bg-destructive`,ring:`ring-destructive/20`},info:{border:`border-info/30`,bg:`bg-info/5`,bar:`bg-info`,dot:`bg-info`,ring:`ring-info/20`}},T={sm:`text-sm`,md:`text-base`,lg:`text-lg`},E={sm:`text-base`,md:`text-base`,lg:`text-lg`},D={sm:`h-6`,md:`h-8`,lg:`h-10`},O=16;function k(e){let{data:n,variant:i=`default`,size:a=`md`,colorScheme:o=`default`,showSparkline:l=!0,showChange:u=!0,showIcon:m=!0,loading:h=!1,error:g=!1,errorLabel:_,progress:v=0,className:y,"aria-label":b}=e,x=(0,s.useMemo)(()=>f(n),[n]),S=(0,s.useMemo)(()=>p(n),[n]);if(h)return(0,c.jsx)(C,{variant:i,size:a,className:t.cn(`metric--component`,y)});if(g)return(0,c.jsx)(`div`,{className:t.cn(`flex items-center justify-center rounded-lg border border-border bg-card p-4 text-muted-foreground`,y),children:(0,c.jsx)(r.s,{children:_??d.metricErrorLabel})});let w={data:n,formattedValue:x,trend:S,size:a,showSparkline:l,showChange:u,showIcon:m,colorScheme:o,ariaLabel:b??n.label,className:y};switch(i){case`card`:return(0,c.jsx)(ee,{...w});case`compact`:return(0,c.jsx)(te,{...w});case`minimal`:return(0,c.jsx)(ne,{...w});case`bordered`:return(0,c.jsx)(re,{...w});case`accent`:return(0,c.jsx)(j,{...w});case`colored`:return(0,c.jsx)(M,{...w,progress:v});default:return(0,c.jsx)(A,{...w})}}k.displayName=`Metric`;function A({data:e,formattedValue:n,trend:i,size:a,showSparkline:o,showChange:s,showIcon:l,ariaLabel:u,className:d}){let f=e.icon;return(0,c.jsxs)(`div`,{className:t.cn(`flex min-w-0 flex-col gap-1`,d),"aria-label":u,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0 text-muted-foreground`,children:[!!l&&!!f&&(0,c.jsx)(f,{className:`size-3.5 shrink-0`,"aria-hidden":`true`}),(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`truncate`,children:e.label})]}),(0,c.jsx)(r.o,{tag:`h5`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-tight truncate`,T[a]),title:n,children:n}),!!s&&!!e.change&&(0,c.jsx)(`div`,{className:`min-w-0`,children:(0,c.jsx)(y,{change:e.change,trend:e.trend,size:a,variant:`compact`})}),!!e.subtitle&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:e.subtitle}),!!o&&!!e.sparkline?.length&&(0,c.jsx)(x,{data:e.sparkline,trend:i,className:t.cn(`mt-auto`,D[a])}),!!e.footer&&(0,c.jsx)(r.s,{size:`xs`,type:`discrete`,className:`truncate`,children:e.footer})]})}function ee({data:e,formattedValue:n,trend:a,size:o,showSparkline:s,showChange:l,showIcon:u,ariaLabel:d,className:f}){let p=e.icon,m=!!(e.href||e.onClick),h=o===`sm`?`small`:`default`,g=(0,c.jsxs)(i.t,{title:e.label,icon:u&&p?(0,c.jsx)(p,{className:`size-4`,"aria-hidden":`true`}):null,tooltip:e.tooltip,padding:h,className:t.cn(m&&`cursor-pointer transition-shadow hover:shadow-md`,f),"aria-label":d,children:[(0,c.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,c.jsx)(r.o,{tag:o===`sm`?`h5`:o===`lg`?`h3`:`h4`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-none`,E[o]),children:n}),!!l&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:o,variant:`badge`})]}),!!e.subtitle&&(0,c.jsx)(r.s,{type:`secondary`,className:`mt-2`,children:e.subtitle}),!!s&&!!e.sparkline?.length&&(0,c.jsx)(x,{data:e.sparkline,trend:a,className:t.cn(`mt-3`,o===`lg`?`h-12`:`h-10`)}),!!e.footer&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,className:`mt-2`,children:e.footer})]});return m&&e.onClick?(0,c.jsx)(`div`,{role:`button`,tabIndex:0,onClick:e.onClick,onKeyDown:t=>(t.key===`Enter`||t.key===` `)&&e.onClick?.(),className:`rounded-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,children:g}):g}function te({data:e,formattedValue:n,size:i,showChange:a,showIcon:o,ariaLabel:s,className:l}){let u=e.icon;return(0,c.jsxs)(`div`,{className:t.cn(`flex items-center gap-3`,l),"aria-label":s,children:[!!o&&!!u&&(0,c.jsx)(`span`,{className:`inline-flex size-9 shrink-0 items-center justify-center rounded-lg bg-muted/60 text-muted-foreground`,children:(0,c.jsx)(u,{className:`size-4`,"aria-hidden":`true`})}),(0,c.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:e.label}),(0,c.jsx)(r.s,{tag:`span`,size:i===`sm`?`sm`:`base`,weight:`bold`,className:`block truncate tabular-nums`,children:n})]}),!!a&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:i,variant:`badge`,className:`shrink-0`})]})}function ne({data:e,formattedValue:n,size:i,showChange:a,ariaLabel:o,className:s}){return(0,c.jsxs)(`span`,{className:t.cn(`inline-flex items-baseline gap-2`,s),"aria-label":o,children:[(0,c.jsxs)(r.s,{tag:`span`,size:i===`lg`?`sm`:`xs`,type:`secondary`,children:[e.label,`:`]}),(0,c.jsx)(r.s,{tag:`span`,size:i===`lg`?`sm`:`xs`,weight:`semibold`,className:`tabular-nums`,children:n}),!!a&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:`sm`,variant:`inline`})]})}function re({data:e,formattedValue:n,trend:i,size:a,showSparkline:o,showChange:s,showIcon:l,colorScheme:u,ariaLabel:d,className:f}){let p=e.icon,m=w[u];return(0,c.jsxs)(`div`,{className:t.cn(`flex flex-col gap-3 rounded-xl border p-4 shadow-sm`,m.border,m.bg,f),"aria-label":d,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[!!l&&!!p&&(0,c.jsx)(p,{className:`size-4 shrink-0`,"aria-hidden":`true`}),(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,children:e.label})]}),!!s&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:a,variant:`badge`})]}),(0,c.jsx)(r.o,{tag:a===`lg`?`h3`:`h4`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-none`,E[a]),children:n}),!!e.subtitle&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,children:e.subtitle}),!!o&&!!e.sparkline?.length&&(0,c.jsx)(x,{data:e.sparkline,trend:i,className:D[a]}),!!e.footer&&(0,c.jsx)(r.s,{size:`xs`,type:`discrete`,children:e.footer})]})}function j({data:e,formattedValue:n,trend:i,size:a,showSparkline:o,showChange:s,ariaLabel:l,className:u}){let d=e.icon;return(0,c.jsxs)(`div`,{className:t.cn(`dark relative flex flex-col overflow-hidden rounded-lg bg-card text-card-foreground shadow-sm ring-1 ring-border`,u),"aria-label":l,children:[(0,c.jsxs)(`div`,{className:`flex flex-col gap-2 p-5`,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:e.label}),!!d&&(0,c.jsx)(`span`,{className:`inline-flex size-7 items-center justify-center rounded-lg bg-foreground/[0.08]`,children:(0,c.jsx)(d,{className:`size-3.5 text-muted-foreground`,"aria-hidden":`true`})})]}),(0,c.jsxs)(`div`,{className:`flex items-baseline gap-2.5`,children:[(0,c.jsx)(r.o,{tag:`h3`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-none text-foreground`,E[a]),children:n}),!!s&&!!e.change&&(0,c.jsx)(y,{change:e.change,trend:e.trend,size:a,variant:`compact`})]}),!!e.subtitle&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,children:e.subtitle})]}),!!o&&!!e.sparkline?.length&&(0,c.jsx)(x,{data:e.sparkline,trend:i,className:`h-12 w-full`})]})}function M({data:e,formattedValue:n,size:i,showChange:a,colorScheme:o,ariaLabel:s,className:u,progress:d=0}){let f=w[o==="default"?`primary`:o],p=Math.round(Math.min(Math.max(d,0),100)/100*O);return(0,c.jsxs)(`div`,{className:t.cn(`rounded-xl bg-card p-5 shadow-sm border border-border/50`,u),"aria-label":s,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`truncate`,children:e.label}),(0,c.jsx)(`span`,{className:t.cn(`size-1.5 rounded-full shrink-0`,f.dot),"aria-hidden":`true`})]}),(0,c.jsxs)(`div`,{className:`mt-2.5 flex items-baseline gap-2`,children:[(0,c.jsx)(r.o,{tag:`h3`,className:t.cn(`font-bold tabular-nums tracking-tight border-none pb-0 leading-none`,E[i]),children:n}),!!e.subtitle&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,children:e.subtitle})]}),(0,c.jsx)(`div`,{className:`mt-4 flex items-center gap-0.5`,role:`progressbar`,"aria-label":`${e.label} progress`,"aria-valuenow":d,"aria-valuemin":0,"aria-valuemax":100,"aria-valuetext":`${d}%`,children:Array.from({length:O},(e,n)=>(0,c.jsx)(`div`,{className:t.cn(`h-6 w-1.5 rounded-sm transition-colors`,n<p?f.bar:`bg-muted`)},`seg-${n}`))}),!!a&&!!e.change&&(0,c.jsx)(`div`,{className:`mt-3`,children:(0,c.jsx)(y,{change:e.change,trend:e.trend,size:i,variant:`default`})}),!!e.footer&&(0,c.jsxs)(`div`,{className:`mt-2 inline-flex items-center gap-1 text-muted-foreground`,children:[(0,c.jsx)(l.ArrowUpRight,{className:`size-3`,"aria-hidden":`true`}),(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,children:e.footer})]})]})}function N({metrics:e,period:i,onPeriodChange:a,variant:o=`default`,size:s=`sm`,showSparklines:u=!0,showChanges:d=!0,footerText:f,className:p}){let m=(0,c.jsx)(`div`,{className:`grid min-w-0 flex-1 grid-cols-1 divide-y divide-border lg:flex lg:items-stretch lg:divide-x lg:divide-y-0`,children:e.map(e=>(0,c.jsx)(`div`,{className:`min-w-0 px-4 py-2.5 lg:min-w-36 lg:flex-1`,children:(0,c.jsx)(k,{data:e,variant:`default`,size:s,showSparkline:u,showChange:d})},e.id))}),h=!!i&&(0,c.jsx)(`div`,{className:`flex shrink-0 items-center border-b border-border px-3 py-2 lg:border-b-0 lg:py-0`,children:(0,c.jsxs)(n.t,{variant:`secondary`,buttonStyle:`ghost`,className:`gap-1.5`,onClick:a?()=>a(i.value):void 0,children:[(0,c.jsx)(l.Calendar,{className:`size-3.5`,"aria-hidden":`true`}),(0,c.jsx)(r.s,{size:`xs`,weight:`medium`,children:i.label})]})});return o===`gradient`?(0,c.jsxs)(`div`,{className:t.cn(`metric-bar--component`,`w-full`,`rounded-lg bg-gradient-to-r from-primary/8 via-info/5 to-success/8 p-px`,p),children:[(0,c.jsxs)(`div`,{className:`flex min-w-0 flex-col overflow-hidden rounded-radius bg-card lg:flex-row`,children:[h&&(0,c.jsxs)(c.Fragment,{children:[h,(0,c.jsx)(`div`,{className:`hidden w-px bg-border lg:block`,"aria-hidden":`true`})]}),m]}),!!f&&(0,c.jsx)(`div`,{className:`rounded-b-radius border-t border-border/50 bg-card px-4 py-2`,children:(0,c.jsx)(r.s,{size:`xs`,type:`discrete`,children:f})})]}):(0,c.jsxs)(`div`,{className:t.cn(`metric-bar--component flex w-full flex-col overflow-hidden rounded-lg border border-border bg-card shadow-sm`,p),children:[(0,c.jsxs)(`div`,{className:`flex min-w-0 flex-col overflow-hidden lg:flex-row`,children:[h&&(0,c.jsxs)(c.Fragment,{children:[h,(0,c.jsx)(`div`,{className:`hidden w-px bg-border lg:block`,"aria-hidden":`true`})]}),m]}),!!f&&(0,c.jsx)(`div`,{className:`border-t border-border/50 px-4 py-2`,children:(0,c.jsx)(r.s,{size:`xs`,type:`discrete`,children:f})})]})}N.displayName=`MetricBar`;var ie={sm:`gap-2`,md:`gap-3`,lg:`gap-4`};function ae(e){return e<=1?`grid-cols-1`:e===2?`grid-cols-1 sm:grid-cols-2`:e===3?`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3`:e===4?`grid-cols-1 sm:grid-cols-2 lg:grid-cols-4`:e===5||e===6?`grid-cols-2 sm:grid-cols-3 lg:grid-cols-6`:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4`}var oe={1:`grid-cols-1`,2:`grid-cols-1 sm:grid-cols-2`,3:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3`,4:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-4`,6:`grid-cols-2 sm:grid-cols-3 lg:grid-cols-6`};function P({metrics:e,variant:n=`card`,size:r=`md`,colorScheme:i=`default`,columns:a=`auto`,gap:o=`md`,showSparklines:s=!0,showChanges:l=!0,showIcons:u=!0,loading:d=!1,className:f}){return(0,c.jsx)(`div`,{className:t.cn(`metric-grid--component`,`grid`,a===`auto`?ae(e.length):oe[a],ie[o],f),children:e.map(e=>(0,c.jsx)(k,{data:e,variant:n,size:r,colorScheme:i,showSparkline:s,showChange:l,showIcon:u,loading:d},e.id))})}P.displayName=`MetricGrid`;var F={title:`Comparison`,currentLabel:`This period`,previousLabel:`Previous period`,suffix:`vs previous`};function I(e){if(e==null)return null;if(typeof e==`number`)return e;let t=Number(e);return Number.isFinite(t)?t:null}function L({current:n,previous:a,title:o,currentPeriod:s,previousPeriod:u,className:d,strings:p}){let m=e.useStrings(F,p),h=I(n.value),g=I(a.value),_=h!==null&&g!==null,v=_?h-g:0,y=_&&g!==0?Math.round(v/g*100):0,b=v>0,x=v===0,S=x?l.Equal:b?l.ArrowUp:l.ArrowDown,C=x?{box:`bg-muted/40`,chip:`bg-card text-muted-foreground border border-border/60`}:b?{box:`bg-success/10`,chip:`bg-success/15 text-success`}:{box:`bg-destructive/10`,chip:`bg-destructive/15 text-destructive`};return(0,c.jsxs)(i.t,{title:o??m.title,className:t.cn(`metric-comparison--component`,d),children:[!!(s||u)&&(0,c.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[!!s&&(0,c.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,className:`rounded-full bg-muted px-2 py-0.5 uppercase tracking-wider text-muted-foreground`,children:s}),!!u&&(0,c.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,className:`rounded-full bg-muted px-2 py-0.5 uppercase tracking-wider text-muted-foreground`,children:u})]}),(0,c.jsxs)(`div`,{className:`mt-3 grid items-stretch gap-2 grid-cols-1 sm:grid-cols-[1fr_auto_1fr]`,children:[(0,c.jsxs)(`div`,{className:`rounded-lg border border-border/60 bg-card px-3 py-2.5`,children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:m.currentLabel}),(0,c.jsx)(r.o,{tag:`h5`,className:`text-base tabular-nums tracking-tight border-none pb-0`,children:f(n)})]}),(0,c.jsxs)(`div`,{className:`flex items-center justify-center text-muted-foreground/60`,children:[(0,c.jsx)(l.ArrowRight,{className:`hidden size-4 sm:block`,"aria-hidden":`true`}),(0,c.jsx)(l.ArrowDown,{className:`size-4 sm:hidden`,"aria-hidden":`true`})]}),(0,c.jsxs)(`div`,{className:`rounded-lg border border-border/60 bg-muted/30 px-3 py-2.5`,children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wider`,children:m.previousLabel}),(0,c.jsx)(r.o,{tag:`h5`,className:`text-base tabular-nums tracking-tight border-none pb-0 text-muted-foreground`,children:f(a)})]})]}),!!_&&(0,c.jsxs)(`div`,{className:t.cn(`mt-3 flex flex-wrap items-center gap-2 rounded-lg px-3 py-2`,C.box),children:[(0,c.jsxs)(`div`,{className:t.cn(`inline-flex items-center gap-1 rounded-full px-2 py-0.5`,C.chip),children:[(0,c.jsx)(S,{className:`size-3`,strokeWidth:2.5,"aria-hidden":`true`}),(0,c.jsxs)(r.s,{tag:`span`,size:`xs`,weight:`semibold`,className:`tabular-nums`,children:[b?`+`:x?``:`−`,(e=>{let t=Math.abs(e);return f({...n,value:t})})(v)]})]}),(0,c.jsxs)(r.s,{size:`xs`,type:`secondary`,className:t.cn(`tabular-nums`,b&&`text-success`,!b&&!x&&`text-destructive`),children:[b?`+`:x?``:`−`,Math.abs(y),`% `,m.suffix]})]})]})}L.displayName=`MetricComparison`;var R=[`bars`,`line`,`dots`,`progress`,`area`,`pie`],z={bars:`var(--primary)`,line:`var(--info)`,dots:`var(--warning)`,progress:`var(--success)`,area:`var(--primary)`,pie:`var(--success)`},B=[`var(--success)`,`var(--info)`,`var(--warning)`];function V({data:e,color:n}){let r=Math.max(...e,1);return(0,c.jsx)(`div`,{className:t.cn(`metric-micro-grid--component`,`flex h-5 items-end gap-0.5`),children:e.slice(0,6).map((e,t)=>(0,c.jsx)(`div`,{className:`flex-1 rounded-t-sm`,style:{height:`${e/r*100}%`,backgroundColor:n,opacity:.8}},`bar-${t}`))})}function H({data:e,color:t}){let n=Math.max(...e,1),r=Math.min(...e),i=n-r||1,a=e.slice(0,6);return(0,c.jsx)(`svg`,{viewBox:`0 0 60 16`,className:`h-5 w-full`,preserveAspectRatio:`none`,children:(0,c.jsx)(`polyline`,{fill:`none`,stroke:t,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,points:a.map((e,t)=>`${t/Math.max(a.length-1,1)*60},${16-(e-r)/i*14}`).join(` `)})})}function U({data:e,color:t}){let n=Math.max(...e,1);return(0,c.jsx)(`div`,{className:`flex h-5 items-end justify-around`,children:e.slice(0,5).map((e,r)=>(0,c.jsx)(`div`,{className:`h-1.5 w-1.5 rounded-full`,style:{marginBottom:`${e/n*12}px`,backgroundColor:t}},`dot-${r}`))})}function W({data:e,color:t}){let n=e[0]??0,r=e[1]??100;return(0,c.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-muted`,children:(0,c.jsx)(`div`,{className:`h-full rounded-full transition-all`,style:{width:`${Math.min(n/r*100,100)}%`,backgroundColor:t}})})}function G({data:e,color:t}){let n=`micro-area-${(0,s.useId)().replaceAll(`:`,``)}`;return(0,c.jsx)(`div`,{className:`h-5 w-full`,children:(0,c.jsx)(u.ResponsiveContainer,{width:`100%`,height:`100%`,initialDimension:{width:1,height:1},children:(0,c.jsxs)(u.AreaChart,{data:e.map((e,t)=>({i:t,v:e})),margin:{top:0,right:0,bottom:0,left:0},children:[(0,c.jsx)(`defs`,{children:(0,c.jsxs)(`linearGradient`,{id:n,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,c.jsx)(`stop`,{offset:`0%`,stopColor:t,stopOpacity:.3}),(0,c.jsx)(`stop`,{offset:`100%`,stopColor:t,stopOpacity:0})]})}),(0,c.jsx)(u.Area,{type:`monotone`,dataKey:`v`,stroke:t,strokeWidth:1.25,fill:`url(#${n})`})]})})})}function K({data:e}){let t=e.reduce((e,t)=>e+t,0)||1,n=0;return(0,c.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-6 w-6`,children:e.slice(0,3).map((e,r)=>{let i=e/t*360,a=n;n+=i;let o=(a-90)*Math.PI/180,s=(a+i-90)*Math.PI/180,l=+(i>180);return(0,c.jsx)(`path`,{d:`M12,12 L${12+10*Math.cos(o)},${12+10*Math.sin(o)} A10,10 0 ${l},1 ${12+10*Math.cos(s)},${12+10*Math.sin(s)} Z`,fill:B[r%B.length]},`slice-${r}`)})})}function se({kind:e,data:t}){let n=z[e];return e===`bars`?(0,c.jsx)(V,{data:t,color:n}):e===`line`?(0,c.jsx)(H,{data:t,color:n}):e===`dots`?(0,c.jsx)(U,{data:t,color:n}):e===`progress`?(0,c.jsx)(W,{data:t,color:n}):e===`area`?(0,c.jsx)(G,{data:t,color:n}):(0,c.jsx)(K,{data:t})}function q({title:e=`Overview`,cells:n,className:a}){return(0,c.jsx)(i.t,{title:e,className:a,padding:`default`,children:(0,c.jsx)(`div`,{className:`grid grid-cols-3 grid-rows-2 -m-2`,children:n.slice(0,6).map((e,n)=>(0,c.jsxs)(`div`,{className:t.cn(`flex flex-col gap-1.5 px-3 py-2.5`,n%3!=2&&`border-r border-border/50`,n<3&&`border-b border-border/50`),children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate uppercase tracking-wider`,children:e.label}),(0,c.jsx)(r.s,{tag:`span`,weight:`bold`,className:`tabular-nums truncate`,children:e.value}),(0,c.jsx)(`div`,{className:`mt-auto`,children:(0,c.jsx)(se,{kind:e.chart??R[n],data:e.data})})]},e.id??e.label))})})}q.displayName=`MetricMicroGrid`;var ce={green:`bg-gradient-to-br from-success via-primary to-success`,purple:`bg-gradient-to-br from-info via-primary to-info`,warm:`bg-gradient-to-br from-warning via-destructive to-warning`,ocean:`bg-gradient-to-br from-info via-primary to-info`},J=`var(--inverse-foreground)`,Y=`var(--inverse-muted)`;function X({title:e,value:n,change:i,data:a,theme:o=`green`,subtitle:l,className:d}){let f=`metric-grad-${(0,s.useId)().replaceAll(`:`,``)}`;return(0,c.jsxs)(`div`,{className:t.cn(`metric-gradient--component`,`relative overflow-hidden rounded-lg p-5 text-inverse-foreground shadow-sm ring-1 ring-inverse-border`,ce[o],d),children:[(0,c.jsxs)(`div`,{className:`relative flex items-start justify-between gap-3`,children:[(0,c.jsxs)(`div`,{className:`min-w-0`,children:[(0,c.jsx)(r.s,{size:`xs`,weight:`medium`,className:`uppercase tracking-wider text-inverse-muted`,children:e}),!!n&&(0,c.jsx)(r.o,{tag:`h3`,className:`mt-1 text-lg font-bold tabular-nums tracking-tight border-none pb-0 leading-none text-inverse-foreground`,children:n}),!!l&&(0,c.jsx)(r.s,{size:`xs`,className:`mt-1 text-inverse-muted`,children:l})]}),!!i&&(0,c.jsx)(y,{change:i,trend:i.direction===`up`?`positive`:i.direction===`down`?`negative`:`neutral`,size:`sm`,variant:`badge`,className:`shrink-0 !bg-inverse-surface-strong !text-inverse-foreground`})]}),(0,c.jsx)(`div`,{className:`relative -mx-1 mt-3 h-24`,children:(0,c.jsx)(u.ResponsiveContainer,{width:`100%`,height:`100%`,initialDimension:{width:1,height:1},children:(0,c.jsxs)(u.AreaChart,{data:a,margin:{top:4,right:0,bottom:0,left:0},children:[(0,c.jsx)(`defs`,{children:(0,c.jsxs)(`linearGradient`,{id:f,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,c.jsx)(`stop`,{offset:`0%`,stopColor:J,stopOpacity:.3}),(0,c.jsx)(`stop`,{offset:`100%`,stopColor:J,stopOpacity:0})]})}),(0,c.jsx)(u.Area,{type:`monotone`,dataKey:`value`,stroke:Y,strokeWidth:2,fill:`url(#${f})`,dot:!1,activeDot:{r:4,strokeWidth:2,fill:J,stroke:Y},isAnimationActive:!0,animationDuration:800})]})})})]})}X.displayName=`MetricGradient`;var Z={0:`bg-muted`,1:`bg-success/20`,2:`bg-success/40`,3:`bg-success/65`,4:`bg-success`};function le(e,t){if(e.length===0)return{weeks:[],monthLabels:[]};let n=[...e].sort((e,t)=>e.date.localeCompare(t.date)),r=new Date(n[0].date+`T00:00:00`),i=new Date(n[n.length-1].date+`T00:00:00`),a=r.getDay(),o=a===0?-6:1-a,s=new Date(r);s.setDate(s.getDate()+o);let c=new Map;for(let e of n)c.set(e.date,e.level);let l=[],u=[],d=-1,f=[],p=new Date(s);for(;p<=i;){let e=p.toISOString().slice(0,10),n=(p.getDay()+6)%7;n===0&&f.length>0&&(l.push(f),f=[]);let r=p.getMonth();if(r!==d){let e=n===0?l.length:l.length+1;u.find(t=>t.weekIndex===e)||u.push({label:t[r],weekIndex:e}),d=r}let i=c.get(e)??0;f.push({date:e,level:i}),p.setDate(p.getDate()+1)}if(f.length>0){for(;f.length<7;)f.push(null);l.push(f)}return{weeks:l,monthLabels:u}}function Q({title:n,description:a,data:o,className:s,strings:l}){let u=e.useStrings(d,l),{weeks:f,monthLabels:p}=le(o,u.heatmapMonthNames);return(0,c.jsxs)(i.t,{title:n,description:a,className:t.cn(`activity-heatmap--component`,s),children:[(0,c.jsxs)(`div`,{className:`overflow-x-auto`,children:[(0,c.jsx)(`div`,{className:`relative mb-1`,style:{paddingLeft:`28px`,height:`12px`},children:(0,c.jsx)(`div`,{className:`relative flex`,style:{width:`${f.length*15}px`},children:p.filter((e,t,n)=>t===0||e.weekIndex-n[t-1].weekIndex>=3).map(e=>(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,className:`absolute leading-none whitespace-nowrap`,style:{left:`${e.weekIndex*15}px`,top:0},children:e.label},`${e.label}-${e.weekIndex}`))})}),(0,c.jsxs)(`div`,{className:`flex gap-0`,children:[(0,c.jsx)(`div`,{className:`mr-1 flex flex-col gap-0.75`,children:u.heatmapDayLabels.map((e,t)=>(0,c.jsx)(`div`,{className:`flex h-3 w-6 items-center justify-end`,children:!!e&&(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,className:`leading-none`,children:e})},`day-${t}`))}),(0,c.jsx)(`div`,{className:`flex gap-0.75`,children:f.map((e,n)=>(0,c.jsx)(`div`,{className:`flex flex-col gap-0.75`,children:e.map((e,r)=>{let i=e?`${e.date}: Level ${e.level}`:void 0;return(0,c.jsx)(`div`,{className:t.cn(`size-3 rounded-sm`,e?Z[e.level]:`bg-transparent`),title:i},`d-${n}-${r}`)})},`w-${n}`))})]})]}),(0,c.jsxs)(`div`,{className:`mt-4 flex items-center justify-end gap-1.5`,children:[(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,children:u.heatmapLegendLess}),[0,1,2,3,4].map(e=>(0,c.jsx)(`div`,{className:t.cn(`size-3 rounded-sm`,Z[e])},`legend-${e}`)),(0,c.jsx)(r.s,{size:`xs`,type:`secondary`,children:u.heatmapLegendMore})]})]})}Q.displayName=`ActivityHeatmap`;function $({title:e,description:n,headerEnd:r,footer:a,config:s,children:l,initialDimension:u,surface:d,padding:f,className:p,contentClassName:m,chartClassName:h}){return(0,c.jsx)(i.t,{title:e,description:n,headerEnd:r,footerSlot:a,surface:d,padding:f,className:t.cn(`chart-card--component`,p),contentClassName:t.cn(`chart-card--content`,m),children:(0,c.jsx)(o.ChartContainer,{config:s,initialDimension:u,className:t.cn(`chart-card--chart min-h-[220px]`,h),children:l})})}$.displayName=`ChartCard`,exports.ActivityHeatmap=Q,exports.ChartCard=$,exports.Metric=k,exports.MetricBar=N,exports.MetricComparison=L,exports.MetricGradient=X,exports.MetricGrid=P,exports.MetricMicroGrid=q,exports.MetricSkeleton=C,exports.MetricSparkline=x,exports.MetricTrendChip=y,exports.defaultAnalyticsStrings=d,exports.defaultMetricComparisonStrings=F,exports.formatMetricValue=f,exports.resolveTrend=p;
2
2
  //# sourceMappingURL=index.cjs.map