admin-ui-starter-kit 0.6.6 → 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 (1143) hide show
  1. package/.agents/skills/component-library-rules/references/components/base__cards.md +4 -4
  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__typography.md +1 -1
  7. package/.agents/skills/component-library-rules/references/components/composed__metadata-list.md +3 -3
  8. package/.agents/skills/component-library-rules/references/components/features__activities.md +1 -1
  9. package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +6 -6
  10. package/.agents/skills/component-library-rules/references/components/features__metrics-overview.md +3 -3
  11. package/.agents/skills/component-library-rules/references/components/features__overlays.md +2 -2
  12. package/.agents/skills/component-library-rules/references/components/features__products.md +1 -1
  13. package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +1 -1
  14. package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +1 -1
  15. package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +2 -2
  16. package/dist/_shared/accordion-CxjH2WZG.js +135 -0
  17. package/dist/_shared/accordion-CxjH2WZG.js.map +1 -0
  18. package/dist/_shared/accordion-mTdJmy23.cjs +2 -0
  19. package/dist/_shared/accordion-mTdJmy23.cjs.map +1 -0
  20. package/dist/_shared/ai-artifact-CS2Pv-bu.js +1099 -0
  21. package/dist/_shared/ai-artifact-CS2Pv-bu.js.map +1 -0
  22. package/dist/_shared/ai-artifact-R4bxz5Iq.cjs +3 -0
  23. package/dist/_shared/ai-artifact-R4bxz5Iq.cjs.map +1 -0
  24. package/dist/_shared/alert-BisCSsOE.cjs +2 -0
  25. package/dist/_shared/alert-BisCSsOE.cjs.map +1 -0
  26. package/dist/_shared/alert-D23Q7I0W.js +81 -0
  27. package/dist/_shared/alert-D23Q7I0W.js.map +1 -0
  28. package/dist/_shared/auth-BV9Daibu.cjs +2 -0
  29. package/dist/_shared/auth-BV9Daibu.cjs.map +1 -0
  30. package/dist/_shared/auth-DACpcTnL.js +643 -0
  31. package/dist/_shared/auth-DACpcTnL.js.map +1 -0
  32. package/dist/_shared/badge-B4oBB5BJ.js +110 -0
  33. package/dist/_shared/badge-B4oBB5BJ.js.map +1 -0
  34. package/dist/_shared/badge-DvUA9Pr2.cjs +2 -0
  35. package/dist/_shared/badge-DvUA9Pr2.cjs.map +1 -0
  36. package/dist/_shared/card-radio-group-BL--IyPB.js +150 -0
  37. package/dist/_shared/card-radio-group-BL--IyPB.js.map +1 -0
  38. package/dist/_shared/card-radio-group-Cl5ptR1d.cjs +2 -0
  39. package/dist/_shared/card-radio-group-Cl5ptR1d.cjs.map +1 -0
  40. package/dist/_shared/cards-CMNXFo3Y.js +354 -0
  41. package/dist/_shared/cards-CMNXFo3Y.js.map +1 -0
  42. package/dist/_shared/cards-DQN9fcwo.cjs +2 -0
  43. package/dist/_shared/cards-DQN9fcwo.cjs.map +1 -0
  44. package/dist/_shared/combobox-D0avSXIB.cjs +2 -0
  45. package/dist/_shared/combobox-D0avSXIB.cjs.map +1 -0
  46. package/dist/_shared/combobox-Df0srISK.js +954 -0
  47. package/dist/_shared/combobox-Df0srISK.js.map +1 -0
  48. package/dist/_shared/command-B5BpMgBT.js +39 -0
  49. package/dist/_shared/command-B5BpMgBT.js.map +1 -0
  50. package/dist/_shared/command-en62SpQ7.cjs +2 -0
  51. package/dist/_shared/command-en62SpQ7.cjs.map +1 -0
  52. package/dist/_shared/comments-CfkortDW.js +952 -0
  53. package/dist/_shared/comments-CfkortDW.js.map +1 -0
  54. package/dist/_shared/comments-yVd7QMOu.cjs +2 -0
  55. package/dist/_shared/comments-yVd7QMOu.cjs.map +1 -0
  56. package/dist/_shared/copyable-Cn7tRGL5.js +38 -0
  57. package/dist/_shared/copyable-Cn7tRGL5.js.map +1 -0
  58. package/dist/_shared/copyable-CoKTxMSP.cjs +2 -0
  59. package/dist/_shared/copyable-CoKTxMSP.cjs.map +1 -0
  60. package/dist/_shared/data-display-BG7CD164.js +1873 -0
  61. package/dist/_shared/data-display-BG7CD164.js.map +1 -0
  62. package/dist/_shared/data-display-CXVoX3la.cjs +2 -0
  63. package/dist/_shared/data-display-CXVoX3la.cjs.map +1 -0
  64. package/dist/_shared/date-picker-Bf-nnyi-.js +1361 -0
  65. package/dist/_shared/date-picker-Bf-nnyi-.js.map +1 -0
  66. package/dist/_shared/date-picker-Cox4PAUt.cjs +2 -0
  67. package/dist/_shared/date-picker-Cox4PAUt.cjs.map +1 -0
  68. package/dist/_shared/date-pickers-DbN4q0dn.cjs +2 -0
  69. package/dist/_shared/date-pickers-DbN4q0dn.cjs.map +1 -0
  70. package/dist/_shared/date-pickers-DvrOCP-s.js +329 -0
  71. package/dist/_shared/date-pickers-DvrOCP-s.js.map +1 -0
  72. package/dist/_shared/display-BQijMo37.js +986 -0
  73. package/dist/_shared/display-BQijMo37.js.map +1 -0
  74. package/dist/_shared/display-C0ut-Lew.cjs +2 -0
  75. package/dist/_shared/display-C0ut-Lew.cjs.map +1 -0
  76. package/dist/_shared/forms-BjG7QIb1.cjs +2 -0
  77. package/dist/_shared/forms-BjG7QIb1.cjs.map +1 -0
  78. package/dist/_shared/forms-DljDdyXR.js +3533 -0
  79. package/dist/_shared/forms-DljDdyXR.js.map +1 -0
  80. package/dist/_shared/header-BpFJRINR.cjs +2 -0
  81. package/dist/_shared/header-BpFJRINR.cjs.map +1 -0
  82. package/dist/_shared/header-CKqQF4_r.js +447 -0
  83. package/dist/_shared/header-CKqQF4_r.js.map +1 -0
  84. package/dist/_shared/hooks-DcCkbP1F.js +95 -0
  85. package/dist/_shared/hooks-DcCkbP1F.js.map +1 -0
  86. package/dist/_shared/hooks-RkLytuGj.cjs +2 -0
  87. package/dist/_shared/hooks-RkLytuGj.cjs.map +1 -0
  88. package/dist/_shared/input-Cin0qpjj.js +182 -0
  89. package/dist/_shared/input-Cin0qpjj.js.map +1 -0
  90. package/dist/_shared/input-uuWeiagN.cjs +2 -0
  91. package/dist/_shared/input-uuWeiagN.cjs.map +1 -0
  92. package/dist/_shared/item-CIlSaQg8.js +226 -0
  93. package/dist/_shared/item-CIlSaQg8.js.map +1 -0
  94. package/dist/_shared/item-CSk9Y2qB.cjs +2 -0
  95. package/dist/_shared/item-CSk9Y2qB.cjs.map +1 -0
  96. package/dist/_shared/layout-Cun0HPL4.cjs +2 -0
  97. package/dist/_shared/layout-Cun0HPL4.cjs.map +1 -0
  98. package/dist/_shared/layout-HrU5gwH3.js +261 -0
  99. package/dist/_shared/layout-HrU5gwH3.js.map +1 -0
  100. package/dist/_shared/mentions-BqN82Fon.cjs +2 -0
  101. package/dist/_shared/mentions-BqN82Fon.cjs.map +1 -0
  102. package/dist/_shared/mentions-DV0FT1Th.js +506 -0
  103. package/dist/_shared/mentions-DV0FT1Th.js.map +1 -0
  104. package/dist/_shared/money-display-D5FCRhzB.cjs +2 -0
  105. package/dist/_shared/money-display-D5FCRhzB.cjs.map +1 -0
  106. package/dist/_shared/money-display-FcCAQDCz.js +198 -0
  107. package/dist/_shared/money-display-FcCAQDCz.js.map +1 -0
  108. package/dist/_shared/navigation-CI_Dd8jM.js +436 -0
  109. package/dist/_shared/navigation-CI_Dd8jM.js.map +1 -0
  110. package/dist/_shared/navigation-DUGhCPzJ.cjs +2 -0
  111. package/dist/_shared/navigation-DUGhCPzJ.cjs.map +1 -0
  112. package/dist/_shared/overlays-BRLemLSn.cjs +2 -0
  113. package/dist/_shared/overlays-BRLemLSn.cjs.map +1 -0
  114. package/dist/_shared/overlays-Bef7VNYY.js +735 -0
  115. package/dist/_shared/overlays-Bef7VNYY.js.map +1 -0
  116. package/dist/_shared/popover-menu-CAjhhTfX.js +93 -0
  117. package/dist/_shared/popover-menu-CAjhhTfX.js.map +1 -0
  118. package/dist/_shared/popover-menu-DlkRgOkR.cjs +2 -0
  119. package/dist/_shared/popover-menu-DlkRgOkR.cjs.map +1 -0
  120. package/dist/_shared/rich-text-editor-Bpt3r3J3.js +620 -0
  121. package/dist/_shared/rich-text-editor-Bpt3r3J3.js.map +1 -0
  122. package/dist/_shared/rich-text-editor-DUTX7kBa.cjs +2 -0
  123. package/dist/_shared/rich-text-editor-DUTX7kBa.cjs.map +1 -0
  124. package/dist/_shared/settings-CNT4-6u8.cjs +2 -0
  125. package/dist/_shared/settings-CNT4-6u8.cjs.map +1 -0
  126. package/dist/_shared/settings-CRP6409J.js +143 -0
  127. package/dist/_shared/settings-CRP6409J.js.map +1 -0
  128. package/dist/_shared/sidebar-B0LcBrfI.cjs +2 -0
  129. package/dist/_shared/sidebar-B0LcBrfI.cjs.map +1 -0
  130. package/dist/_shared/sidebar-Bc6JsOTD.js +548 -0
  131. package/dist/_shared/sidebar-Bc6JsOTD.js.map +1 -0
  132. package/dist/_shared/spinner-CVG62sGs.js +67 -0
  133. package/dist/_shared/spinner-CVG62sGs.js.map +1 -0
  134. package/dist/_shared/spinner-VjdonFU2.cjs +2 -0
  135. package/dist/_shared/spinner-VjdonFU2.cjs.map +1 -0
  136. package/dist/_shared/table-_yujELN3.js +1377 -0
  137. package/dist/_shared/table-_yujELN3.js.map +1 -0
  138. package/dist/_shared/table-iV8H1AE0.cjs +2 -0
  139. package/dist/_shared/table-iV8H1AE0.cjs.map +1 -0
  140. package/dist/_shared/textarea-B4zbbqff.cjs +2 -0
  141. package/dist/_shared/textarea-B4zbbqff.cjs.map +1 -0
  142. package/dist/_shared/textarea-Dp0RU-rc.js +118 -0
  143. package/dist/_shared/textarea-Dp0RU-rc.js.map +1 -0
  144. package/dist/_shared/typography-DXvCmE8w.js +201 -0
  145. package/dist/_shared/typography-DXvCmE8w.js.map +1 -0
  146. package/dist/_shared/typography-pzCKaFOc.cjs +2 -0
  147. package/dist/_shared/typography-pzCKaFOc.cjs.map +1 -0
  148. package/dist/_shared/workspace-C3U57t2a.cjs +2 -0
  149. package/dist/_shared/workspace-C3U57t2a.cjs.map +1 -0
  150. package/dist/_shared/workspace-Db--ow3r.js +357 -0
  151. package/dist/_shared/workspace-Db--ow3r.js.map +1 -0
  152. package/dist/components/base/accordion/index.cjs +1 -1
  153. package/dist/components/base/accordion/index.js +1 -1
  154. package/dist/components/base/badge/index.cjs +1 -1
  155. package/dist/components/base/badge/index.js +1 -1
  156. package/dist/components/base/cards/index.cjs +1 -1
  157. package/dist/components/base/cards/index.js +1 -1
  158. package/dist/components/base/combobox/index.cjs +1 -1
  159. package/dist/components/base/combobox/index.js +1 -1
  160. package/dist/components/base/command/index.cjs +1 -1
  161. package/dist/components/base/command/index.js +1 -1
  162. package/dist/components/base/copyable/index.cjs +1 -1
  163. package/dist/components/base/copyable/index.js +1 -1
  164. package/dist/components/base/currency/index.cjs +1 -1
  165. package/dist/components/base/currency/index.js +1 -1
  166. package/dist/components/base/date-pickers/index.cjs +1 -1
  167. package/dist/components/base/date-pickers/index.js +2 -2
  168. package/dist/components/base/display/chart.cjs +1 -1
  169. package/dist/components/base/display/chart.js +1 -1
  170. package/dist/components/base/display/index.cjs +1 -1
  171. package/dist/components/base/display/index.js +3 -3
  172. package/dist/components/base/event-calendar/index.cjs +1 -1
  173. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  174. package/dist/components/base/event-calendar/index.js +5 -5
  175. package/dist/components/base/event-calendar/index.js.map +1 -1
  176. package/dist/components/base/forms/index.cjs +1 -1
  177. package/dist/components/base/forms/index.js +5 -5
  178. package/dist/components/base/item/index.cjs +1 -1
  179. package/dist/components/base/item/index.js +1 -1
  180. package/dist/components/base/map/index.cjs +1 -1
  181. package/dist/components/base/map/index.js +1 -1
  182. package/dist/components/base/navigation/index.cjs +1 -1
  183. package/dist/components/base/navigation/index.js +1 -1
  184. package/dist/components/base/popover-menu/index.cjs +1 -1
  185. package/dist/components/base/popover-menu/index.js +1 -1
  186. package/dist/components/base/spinner/index.cjs +1 -1
  187. package/dist/components/base/spinner/index.js +1 -1
  188. package/dist/components/base/table/index.cjs +1 -1
  189. package/dist/components/base/table/index.js +1 -1
  190. package/dist/components/base/table/table-header.d.ts.map +1 -1
  191. package/dist/components/composed/admin/index.cjs +1 -1
  192. package/dist/components/composed/admin/index.cjs.map +1 -1
  193. package/dist/components/composed/admin/index.js +11 -11
  194. package/dist/components/composed/admin/index.js.map +1 -1
  195. package/dist/components/composed/ai/index.cjs +1 -1
  196. package/dist/components/composed/ai/index.cjs.map +1 -1
  197. package/dist/components/composed/ai/index.js +24 -24
  198. package/dist/components/composed/ai/index.js.map +1 -1
  199. package/dist/components/composed/analytics/index.cjs +1 -1
  200. package/dist/components/composed/analytics/index.cjs.map +1 -1
  201. package/dist/components/composed/analytics/index.js +25 -25
  202. package/dist/components/composed/analytics/index.js.map +1 -1
  203. package/dist/components/composed/cards/index.cjs +1 -1
  204. package/dist/components/composed/cards/index.cjs.map +1 -1
  205. package/dist/components/composed/cards/index.js +14 -14
  206. package/dist/components/composed/cards/index.js.map +1 -1
  207. package/dist/components/composed/commerce/index.cjs +1 -1
  208. package/dist/components/composed/commerce/index.cjs.map +1 -1
  209. package/dist/components/composed/commerce/index.js +27 -27
  210. package/dist/components/composed/commerce/index.js.map +1 -1
  211. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  212. package/dist/components/composed/dark-surfaces/index.js +3 -3
  213. package/dist/components/composed/data-display/index.cjs +1 -1
  214. package/dist/components/composed/data-display/index.js +1 -1
  215. package/dist/components/composed/data-display/metadata/metadata-list.d.ts.map +1 -1
  216. package/dist/components/composed/navigation/index.cjs +1 -1
  217. package/dist/components/composed/navigation/index.cjs.map +1 -1
  218. package/dist/components/composed/navigation/index.js +14 -14
  219. package/dist/components/composed/navigation/index.js.map +1 -1
  220. package/dist/components/composed/onboarding/index.cjs +1 -1
  221. package/dist/components/composed/onboarding/index.js +3 -3
  222. package/dist/components/composed/timelines/index.cjs +1 -1
  223. package/dist/components/composed/timelines/index.cjs.map +1 -1
  224. package/dist/components/composed/timelines/index.js +10 -10
  225. package/dist/components/composed/timelines/index.js.map +1 -1
  226. package/dist/components/features/activities/index.cjs +1 -1
  227. package/dist/components/features/activities/index.cjs.map +1 -1
  228. package/dist/components/features/activities/index.js +8 -8
  229. package/dist/components/features/activities/index.js.map +1 -1
  230. package/dist/components/features/ai-chat/index.cjs +2 -2
  231. package/dist/components/features/ai-chat/index.cjs.map +1 -1
  232. package/dist/components/features/ai-chat/index.js +7 -7
  233. package/dist/components/features/ai-chat/index.js.map +1 -1
  234. package/dist/components/features/card/index.cjs +1 -1
  235. package/dist/components/features/card/index.js +3 -3
  236. package/dist/components/features/comments/index.cjs +1 -1
  237. package/dist/components/features/comments/index.js +2 -2
  238. package/dist/components/features/data-view/index.cjs +1 -1
  239. package/dist/components/features/data-view/index.cjs.map +1 -1
  240. package/dist/components/features/data-view/index.js +2 -2
  241. package/dist/components/features/data-view/index.js.map +1 -1
  242. package/dist/components/features/event-log/index.cjs +1 -1
  243. package/dist/components/features/event-log/index.js +4 -4
  244. package/dist/components/features/filters/index.cjs +1 -1
  245. package/dist/components/features/filters/index.cjs.map +1 -1
  246. package/dist/components/features/filters/index.js +10 -10
  247. package/dist/components/features/filters/index.js.map +1 -1
  248. package/dist/components/features/global-search/index.cjs +1 -1
  249. package/dist/components/features/global-search/index.cjs.map +1 -1
  250. package/dist/components/features/global-search/index.js +13 -13
  251. package/dist/components/features/global-search/index.js.map +1 -1
  252. package/dist/components/features/kanban/index.cjs +1 -1
  253. package/dist/components/features/kanban/index.js +2 -2
  254. package/dist/components/features/media-library/index.cjs +1 -1
  255. package/dist/components/features/media-library/index.cjs.map +1 -1
  256. package/dist/components/features/media-library/index.js +22 -22
  257. package/dist/components/features/media-library/index.js.map +1 -1
  258. package/dist/components/features/mentions/index.cjs +1 -1
  259. package/dist/components/features/mentions/index.js +1 -1
  260. package/dist/components/features/overlays/index.cjs +1 -1
  261. package/dist/components/features/overlays/index.js +1 -1
  262. package/dist/components/features/products/index.cjs +1 -1
  263. package/dist/components/features/products/index.cjs.map +1 -1
  264. package/dist/components/features/products/index.js +13 -13
  265. package/dist/components/features/products/index.js.map +1 -1
  266. package/dist/components/features/resource/index.cjs +1 -1
  267. package/dist/components/features/resource/index.cjs.map +1 -1
  268. package/dist/components/features/resource/index.js +5 -5
  269. package/dist/components/features/resource/index.js.map +1 -1
  270. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  271. package/dist/components/features/rich-text-editor/index.js +1 -1
  272. package/dist/components/features/schema-form/index.cjs +1 -1
  273. package/dist/components/features/schema-form/index.js +7 -7
  274. package/dist/components/features/suggestions/index.cjs +1 -1
  275. package/dist/components/features/suggestions/index.js +1 -1
  276. package/dist/components/features/sync/index.cjs +1 -1
  277. package/dist/components/features/sync/index.js +2 -2
  278. package/dist/components/layout/auth/index.cjs +1 -1
  279. package/dist/components/layout/auth/index.js +1 -1
  280. package/dist/components/layout/header/index.cjs +1 -1
  281. package/dist/components/layout/header/index.js +1 -1
  282. package/dist/components/layout/hooks/index.cjs +1 -1
  283. package/dist/components/layout/hooks/index.js +1 -1
  284. package/dist/components/layout/index.cjs +1 -1
  285. package/dist/components/layout/index.js +7 -7
  286. package/dist/components/layout/page/index.cjs +1 -1
  287. package/dist/components/layout/page/index.js +1 -1
  288. package/dist/components/layout/settings/index.cjs +1 -1
  289. package/dist/components/layout/settings/index.js +1 -1
  290. package/dist/components/layout/sidebar/index.cjs +1 -1
  291. package/dist/components/layout/sidebar/index.js +2 -2
  292. package/dist/components/layout/workspace/index.cjs +1 -1
  293. package/dist/components/layout/workspace/index.js +1 -1
  294. package/dist/components/typography/index.cjs +1 -1
  295. package/dist/components/typography/index.js +1 -1
  296. package/dist/services/actions/index.cjs +1 -1
  297. package/dist/services/actions/index.js +1 -1
  298. package/dist/showcase/assets/AreaChart-DtVzijR8.js +6 -0
  299. package/dist/showcase/assets/CompositeItem-SL6R0H3r.js +1 -0
  300. package/dist/showcase/assets/CompositeRoot-CTygKc2d.js +1 -0
  301. package/dist/showcase/assets/DialogTrigger-m2m9VdXk.js +1 -0
  302. package/dist/showcase/assets/LabelableContext-D6DcOg5I.js +1 -0
  303. package/dist/showcase/assets/PreviewLayout-CHW8F5uE.js +1 -0
  304. package/dist/showcase/assets/RadioGroup-BAOoU1eO.js +1 -0
  305. package/dist/showcase/assets/ScrollAreaCorner-CrCCP65t.js +1 -0
  306. package/dist/showcase/assets/Separator-DMs71Vib.js +1 -0
  307. package/dist/showcase/assets/ToolbarRootContext-DWKxsCxT.js +1 -0
  308. package/dist/showcase/assets/accordion-Clw5XNXP.js +171 -0
  309. package/dist/showcase/assets/accordion-variants-jiwKaPjE.js +1 -0
  310. package/dist/showcase/assets/action-menu-CW8zR6Ne.js +1 -0
  311. package/dist/showcase/assets/actions-Cf7vl3u0.js +310 -0
  312. package/dist/showcase/assets/activities-CyI5sJuS.js +500 -0
  313. package/dist/showcase/assets/activities-feed-card-Gv-Y4BBq.js +1 -0
  314. package/dist/showcase/assets/admin-CQVbTxGD.js +140 -0
  315. package/dist/showcase/assets/ai-Bkp2BY_z.js +207 -0
  316. package/dist/showcase/assets/ai-artifact-Cf1vEdVD.js +2 -0
  317. package/dist/showcase/assets/ai-chat-Bs3x6cK3.js +568 -0
  318. package/dist/showcase/assets/ai-elements-VbMUV2-i.js +387 -0
  319. package/dist/showcase/assets/ai-tool-call-BQYg4QB_.js +1 -0
  320. package/dist/showcase/assets/alert-BUmpNcXV.js +1 -0
  321. package/dist/showcase/assets/alert-CWPNW7eb.js +93 -0
  322. package/dist/showcase/assets/alert-nUwhk3AB.js +62 -0
  323. package/dist/showcase/assets/api-key-list-B1qVywOP.js +73 -0
  324. package/dist/showcase/assets/api-key-list-BI2FGbzV.js +1 -0
  325. package/dist/showcase/assets/app-sidebar-B35a8HWK.js +1 -0
  326. package/dist/showcase/assets/arrow-down-C1w0M8tE.js +1 -0
  327. package/dist/showcase/assets/arrow-left-DtILDtAv.js +1 -0
  328. package/dist/showcase/assets/arrow-right-TnZMfDbP.js +1 -0
  329. package/dist/showcase/assets/arrow-up-BX-KDIDB.js +1 -0
  330. package/dist/showcase/assets/arrow-up-right-CrnWqXwJ.js +1 -0
  331. package/dist/showcase/assets/avatar-C5YI0roK.js +67 -0
  332. package/dist/showcase/assets/avatar-DsnH-Xmz.js +1 -0
  333. package/dist/showcase/assets/avatar-S4vMi7Be.js +57 -0
  334. package/dist/showcase/assets/avatar-q4wqX6yD.js +1 -0
  335. package/dist/showcase/assets/badge-DJacF8-J.js +31 -0
  336. package/dist/showcase/assets/badge-check-DDJtQHcD.js +1 -0
  337. package/dist/showcase/assets/bell-DiXXE8YI.js +1 -0
  338. package/dist/showcase/assets/bot-bONqc_7j.js +1 -0
  339. package/dist/showcase/assets/box-lhUq3Chj.js +1 -0
  340. package/dist/showcase/assets/braces-IKXiJgb3.js +1 -0
  341. package/dist/showcase/assets/brain-DcXlhbJZ.js +1 -0
  342. package/dist/showcase/assets/brand-CramZg2-.js +36 -0
  343. package/dist/showcase/assets/breadcrumb-BL7UjlLh.js +1 -0
  344. package/dist/showcase/assets/breadcrumb-CZRbcf09.js +52 -0
  345. package/dist/showcase/assets/breadcrumbs-DJzvSt_Z.js +1 -0
  346. package/dist/showcase/assets/briefcase-CQQ0m97G.js +1 -0
  347. package/dist/showcase/assets/building-2-BkQcv8WR.js +1 -0
  348. package/dist/showcase/assets/button-K7M0irWq.js +44 -0
  349. package/dist/showcase/assets/button-group-KCGa38c8.js +1 -0
  350. package/dist/showcase/assets/buttons-CvyBMRD6.js +272 -0
  351. package/dist/showcase/assets/calendar-BJHjhWQX.js +1 -0
  352. package/dist/showcase/assets/calendar-ChMVRsNC.js +16 -0
  353. package/dist/showcase/assets/calendar-days-BgkRJVxQ.js +1 -0
  354. package/dist/showcase/assets/calendar-xpHhfGnq.js +1 -0
  355. package/dist/showcase/assets/camera-C67freYi.js +1 -0
  356. package/dist/showcase/assets/card-CfOqXMVz.js +188 -0
  357. package/dist/showcase/assets/card-bLjedjT5.js +1 -0
  358. package/dist/showcase/assets/card-primitives-FUPmQCsu.js +1 -0
  359. package/dist/showcase/assets/card-radio-group-D_QNJ2Hm.js +1 -0
  360. package/dist/showcase/assets/cards-yHZa0kEf.js +353 -0
  361. package/dist/showcase/assets/carousel-DG1cKry4.js +449 -0
  362. package/dist/showcase/assets/cell-renderers-qfJ-7alN.js +1 -0
  363. package/dist/showcase/assets/chart-B_yVfbWJ.js +358 -0
  364. package/dist/showcase/assets/chart-column-CYrVWmMk.js +1 -0
  365. package/dist/showcase/assets/checkbox-NW6EcvtD.js +1 -0
  366. package/dist/showcase/assets/checkbox-pA_L1P-f.js +1 -0
  367. package/dist/showcase/assets/chevron-down-DLrHjdQ6.js +1 -0
  368. package/dist/showcase/assets/chevron-left-B_NQOEWI.js +1 -0
  369. package/dist/showcase/assets/chevron-up-6hst2jwR.js +1 -0
  370. package/dist/showcase/assets/chevrons-up-down-C_pj9oOa.js +1 -0
  371. package/dist/showcase/assets/circle-Cw9qV72m.js +1 -0
  372. package/dist/showcase/assets/circle-alert-D3Vcma6L.js +1 -0
  373. package/dist/showcase/assets/circle-check-DdjJpGc9.js +1 -0
  374. package/dist/showcase/assets/circle-check-big-Dnq-jwtv.js +1 -0
  375. package/dist/showcase/assets/circle-dot-DN8DFgIP.js +1 -0
  376. package/dist/showcase/assets/circle-question-mark-Dzgiv4oS.js +1 -0
  377. package/dist/showcase/assets/circle-x-BzTSkndC.js +1 -0
  378. package/dist/showcase/assets/clock-3-CVwHXCmo.js +1 -0
  379. package/dist/showcase/assets/clock-BIJ9p953.js +1 -0
  380. package/dist/showcase/assets/code-xml-DrU5ziCA.js +1 -0
  381. package/dist/showcase/assets/collapsible-7rdCo71k.js +27 -0
  382. package/dist/showcase/assets/collapsible-DCcTSlEH.js +1 -0
  383. package/dist/showcase/assets/combobox-mx8o5sV1.js +685 -0
  384. package/dist/showcase/assets/command-CKJDGdA9.js +1 -0
  385. package/dist/showcase/assets/command-CzGLPzoO.js +1 -0
  386. package/dist/showcase/assets/comment-composer-CSoEIapl.js +1 -0
  387. package/dist/showcase/assets/comment-item-pjaH53iB.js +1 -0
  388. package/dist/showcase/assets/comments-_ccotzWA.js +357 -0
  389. package/dist/showcase/assets/commerce-BuiQiRsf.js +267 -0
  390. package/dist/showcase/assets/composite-Bghohd0p.js +1 -0
  391. package/dist/showcase/assets/contact-card-CqM2uz_w.js +65 -0
  392. package/dist/showcase/assets/content-container-fC4z98GI.js +1 -0
  393. package/dist/showcase/assets/copyable-BMQK8sID.js +1 -0
  394. package/dist/showcase/assets/copyable-DVR2FAa0.js +96 -0
  395. package/dist/showcase/assets/course-card-Cku2z18g.js +77 -0
  396. package/dist/showcase/assets/cpu-A072t3kq.js +1 -0
  397. package/dist/showcase/assets/credit-card-BGwhx9Zo.js +1 -0
  398. package/dist/showcase/assets/css-variables-BAW_VrGk.js +1205 -0
  399. package/dist/showcase/assets/currency-Da3C0Uzb.js +149 -0
  400. package/dist/showcase/assets/dark-surfaces-BHYLEj80.js +90 -0
  401. package/dist/showcase/assets/data-view--EAYihh0.js +124 -0
  402. package/dist/showcase/assets/data-view-BAMwKzZO.js +4 -0
  403. package/dist/showcase/assets/database-C489WIbr.js +1 -0
  404. package/dist/showcase/assets/date-block-DuNaPSBU.js +1 -0
  405. package/dist/showcase/assets/date-picker-Dq-9L64y.js +1 -0
  406. package/dist/showcase/assets/date-pickers-D0ReMKc9.js +73 -0
  407. package/dist/showcase/assets/dense-info-CXwjqQB1.js +106 -0
  408. package/dist/showcase/assets/design-system-consistency-CGoKv0Vf.js +264 -0
  409. package/dist/showcase/assets/dialog-DIrJcAzq.js +1 -0
  410. package/dist/showcase/assets/dialog-O45UwQJs.js +1 -0
  411. package/dist/showcase/assets/display-utilities-VKOARJyC.js +267 -0
  412. package/dist/showcase/assets/dist-BavkTE-I.js +1 -0
  413. package/dist/showcase/assets/dist-DPxPKIgU.js +45 -0
  414. package/dist/showcase/assets/dollar-sign-CH2fcyek.js +1 -0
  415. package/dist/showcase/assets/download-whAw79X4.js +1 -0
  416. package/dist/showcase/assets/dropdown-menu-PVKwhWds.js +1 -0
  417. package/dist/showcase/assets/dropzone-B9sc8Mwa.js +1 -0
  418. package/dist/showcase/assets/earth-BpkE9LMh.js +1 -0
  419. package/dist/showcase/assets/ellipsis-CEVdIbhD.js +1 -0
  420. package/dist/showcase/assets/ellipsis-vertical-CBIvtUVz.js +1 -0
  421. package/dist/showcase/assets/empty-Dp1eCMIl.js +1 -0
  422. package/dist/showcase/assets/empty-item--dZz4VlJ.js +49 -0
  423. package/dist/showcase/assets/empty-state-ZOiE-hWY.js +190 -0
  424. package/dist/showcase/assets/empty-state-dsivN4CA.js +1 -0
  425. package/dist/showcase/assets/enhanced-activities-BpzUxaof.js +357 -0
  426. package/dist/showcase/assets/enhanced-combobox-D71BOuiX.js +1 -0
  427. package/dist/showcase/assets/esm-DT-TXPCJ.js +2 -0
  428. package/dist/showcase/assets/event-calendar-aVpAFZFq.js +138 -0
  429. package/dist/showcase/assets/event-log-DVcvyQ-P.js +330 -0
  430. package/dist/showcase/assets/example-CzbL5xoH.js +1 -0
  431. package/dist/showcase/assets/external-link-BaLE1QE5.js +1 -0
  432. package/dist/showcase/assets/eye-Dq0mLKrs.js +1 -0
  433. package/dist/showcase/assets/feature-announcement-sWKBC2fs.js +34 -0
  434. package/dist/showcase/assets/file-CgW3NvCL.js +1 -0
  435. package/dist/showcase/assets/file-text-JGaJQ8Wd.js +1 -0
  436. package/dist/showcase/assets/filter-layout-jfahl8aJ.js +1 -0
  437. package/dist/showcase/assets/filters-D7zegZVD.js +139 -0
  438. package/dist/showcase/assets/flag-H6U1f4wd.js +1 -0
  439. package/dist/showcase/assets/folder-open-sT96wRxJ.js +1 -0
  440. package/dist/showcase/assets/form-field-CQuSWnj8.js +1 -0
  441. package/dist/showcase/assets/format-DGPJ5dDq.js +1 -0
  442. package/dist/showcase/assets/forms-CdDJkAFt.js +915 -0
  443. package/dist/showcase/assets/funnel-Bh56GDO0.js +1 -0
  444. package/dist/showcase/assets/generic-CqSABKHr.js +1 -0
  445. package/dist/showcase/assets/getPseudoElementBounds-Cgw3-xUB.js +1 -0
  446. package/dist/showcase/assets/gift-ChVS2ovQ.js +1 -0
  447. package/dist/showcase/assets/giftcard-cards-CuaGn8-J.js +85 -0
  448. package/dist/showcase/assets/git-branch-86jQZnz4.js +1 -0
  449. package/dist/showcase/assets/global-search-C92CjOf8.js +215 -0
  450. package/dist/showcase/assets/global-search-DpVIWyO9.js +1 -0
  451. package/dist/showcase/assets/globe-DmGzYOlq.js +1 -0
  452. package/dist/showcase/assets/gradient-card-BUZzXFdZ.js +58 -0
  453. package/dist/showcase/assets/hash-pc6IIDge.js +1 -0
  454. package/dist/showcase/assets/header-DbM4l1Z6.js +1 -0
  455. package/dist/showcase/assets/header-notifications-CaymUd4n.js +1 -0
  456. package/dist/showcase/assets/heart-DtfPBlXq.js +1 -0
  457. package/dist/showcase/assets/hooks-JiLlGOJ-.js +220 -0
  458. package/dist/showcase/assets/house-CzNWewi5.js +1 -0
  459. package/dist/showcase/assets/icon-badge-G9Fp891n.js +1 -0
  460. package/dist/showcase/assets/icon-badge-e8N5BSYf.js +37 -0
  461. package/dist/showcase/assets/image-9IQW7agU.js +1 -0
  462. package/dist/showcase/assets/inbox-DU4YaGtc.js +1 -0
  463. package/dist/showcase/assets/index-CuXjv2p6.css +2 -0
  464. package/dist/showcase/assets/index-DN09-Vts.js +10 -0
  465. package/dist/showcase/assets/inertValue-kRQb7jwi.js +1 -0
  466. package/dist/showcase/assets/info-B9AXwUDF.js +1 -0
  467. package/dist/showcase/assets/inline-stat-BkLIKCvD.js +1 -0
  468. package/dist/showcase/assets/inline-stat-XqGHDQrK.js +15 -0
  469. package/dist/showcase/assets/input-BXHv6p9P.js +1 -0
  470. package/dist/showcase/assets/input-D_T9s_tn.js +1 -0
  471. package/dist/showcase/assets/input-group-Bs8dmhR6.js +47 -0
  472. package/dist/showcase/assets/input-group-CqkASeoV.js +1 -0
  473. package/dist/showcase/assets/inputs-DY7w_ssI.js +155 -0
  474. package/dist/showcase/assets/installation-Dg3FdGJ1.js +134 -0
  475. package/dist/showcase/assets/invoice-header-Ba-Y55Ag.js +36 -0
  476. package/dist/showcase/assets/invoice-items-CIJ8EfPg.js +36 -0
  477. package/dist/showcase/assets/invoice-mini-BISFvM7J.js +14 -0
  478. package/dist/showcase/assets/invoice-table-DcyVZTvl.js +30 -0
  479. package/dist/showcase/assets/isSameDay-av07hGac.js +1 -0
  480. package/dist/showcase/assets/isToday-GY5FlPL9.js +1 -0
  481. package/dist/showcase/assets/italic-Du0n76Xk.js +1 -0
  482. package/dist/showcase/assets/item-D8Lp4R-T.js +139 -0
  483. package/dist/showcase/assets/item-DTsZnSJG.js +1 -0
  484. package/dist/showcase/assets/item-Di7HZF5G.js +1 -0
  485. package/dist/showcase/assets/kanban-Dcminjsa.js +188 -0
  486. package/dist/showcase/assets/key-round-BBue3xKx.js +1 -0
  487. package/dist/showcase/assets/label-dkUEHYaz.js +1 -0
  488. package/dist/showcase/assets/languages-XxP8Uu82.js +1 -0
  489. package/dist/showcase/assets/layers-Bi_-RuHS.js +1 -0
  490. package/dist/showcase/assets/layout-app-shell-Cr6Ep0Zz.js +608 -0
  491. package/dist/showcase/assets/layout-auth-DffIslnp.js +790 -0
  492. package/dist/showcase/assets/layout-containers-BuSg6L6o.js +101 -0
  493. package/dist/showcase/assets/layout-header-DAxSUI18.js +203 -0
  494. package/dist/showcase/assets/layout-page-CVgVJHf1.js +314 -0
  495. package/dist/showcase/assets/layout-primitives-q8NXbEld.js +34 -0
  496. package/dist/showcase/assets/layout-sidebar-bB6AJaGs.js +224 -0
  497. package/dist/showcase/assets/layout-users-DG5u517t.js +117 -0
  498. package/dist/showcase/assets/layout-workspace-CKMDUM2b.js +191 -0
  499. package/dist/showcase/assets/lib-CaQvPpSJ.js +1 -0
  500. package/dist/showcase/assets/list-checks-Dhr60VvL.js +1 -0
  501. package/dist/showcase/assets/lock-CYVbyBpM.js +1 -0
  502. package/dist/showcase/assets/lock-keyhole-TUVID45I.js +1 -0
  503. package/dist/showcase/assets/mail-DfkwmVKE.js +1 -0
  504. package/dist/showcase/assets/mail-check-CnBhgH_h.js +1 -0
  505. package/dist/showcase/assets/map-Ck14_o-F.js +124 -0
  506. package/dist/showcase/assets/map-pin-Di7TUhai.js +1 -0
  507. package/dist/showcase/assets/media-library-CzM_to29.js +699 -0
  508. package/dist/showcase/assets/mention-inline-suggestions-B1RHUfnH.js +1 -0
  509. package/dist/showcase/assets/mentions-CdaPXOLl.js +138 -0
  510. package/dist/showcase/assets/menus-DuqcLdg1.js +171 -0
  511. package/dist/showcase/assets/message-square-DuW3PrFI.js +1 -0
  512. package/dist/showcase/assets/metadata-list-CCRGSPaS.js +286 -0
  513. package/dist/showcase/assets/metadata-list-Drvz5mwy.js +1 -0
  514. package/dist/showcase/assets/metric-BSaXa3Z_.js +1 -0
  515. package/dist/showcase/assets/metric-bar-CM1Rmk8y.js +1 -0
  516. package/dist/showcase/assets/metric-grid-BBGxdYNJ.js +1 -0
  517. package/dist/showcase/assets/metric-trend-chip-C_LrbPyT.js +1 -0
  518. package/dist/showcase/assets/metrics-analytics-bar-ByvVltQV.js +44 -0
  519. package/dist/showcase/assets/metrics-analytics-cards-CNGiVG1A.js +50 -0
  520. package/dist/showcase/assets/metrics-comparison-BLUvtt5N.js +76 -0
  521. package/dist/showcase/assets/metrics-heatmap-CZWhn4_i.js +27 -0
  522. package/dist/showcase/assets/metrics-inline-badge-CcPm2_ON.js +17 -0
  523. package/dist/showcase/assets/metrics-kpi-row-CitG5Aea.js +31 -0
  524. package/dist/showcase/assets/metrics-micro-grid-CAsplRVI.js +42 -0
  525. package/dist/showcase/assets/metrics-overview-DSRwW-3j.js +192 -0
  526. package/dist/showcase/assets/metrics-stat-cards-BTdSpUV_.js +54 -0
  527. package/dist/showcase/assets/minus-BaXg6nPb.js +1 -0
  528. package/dist/showcase/assets/money-display-HegN6NVU.js +1 -0
  529. package/dist/showcase/assets/month-year-picker-DGSalGea.js +1 -0
  530. package/dist/showcase/assets/navigation-B9kcgNmJ.js +90 -0
  531. package/dist/showcase/assets/navigation-D4OJbw4T.js +231 -0
  532. package/dist/showcase/assets/navigation-extras-xm_wzPZr.js +43 -0
  533. package/dist/showcase/assets/onboarding-checklist-CWuCJKDd.js +119 -0
  534. package/dist/showcase/assets/overflow-tab-bar-Dq-I4MUu.js +1 -0
  535. package/dist/showcase/assets/overlays-BHf9SZOh.js +159 -0
  536. package/dist/showcase/assets/overlays-DziL3nVU.js +408 -0
  537. package/dist/showcase/assets/overview-Cc69up8i.js +184 -0
  538. package/dist/showcase/assets/package-Bc-NuFnd.js +1 -0
  539. package/dist/showcase/assets/package-check-5LQwCfGh.js +1 -0
  540. package/dist/showcase/assets/page-B2o5HSfY.js +1 -0
  541. package/dist/showcase/assets/page-action-button-CfS6vsyC.js +1 -0
  542. package/dist/showcase/assets/page-header-W6quU5pO.js +1 -0
  543. package/dist/showcase/assets/pagination-Bfs7Zszm.js +1 -0
  544. package/dist/showcase/assets/pagination-DHs104ji.js +42 -0
  545. package/dist/showcase/assets/paperclip-CXeiMywc.js +1 -0
  546. package/dist/showcase/assets/password-input-C61t743N.js +1 -0
  547. package/dist/showcase/assets/pencil-C1TXsTfP.js +1 -0
  548. package/dist/showcase/assets/phone-Bh-68R_E.js +1 -0
  549. package/dist/showcase/assets/plus-CKBaO4jG.js +1 -0
  550. package/dist/showcase/assets/popover-C_7qLizt.js +1 -0
  551. package/dist/showcase/assets/popover-hgtHqd0h.js +1 -0
  552. package/dist/showcase/assets/popover-menu-DmYSBsji.js +1 -0
  553. package/dist/showcase/assets/products-DSvcQz-Q.js +423 -0
  554. package/dist/showcase/assets/progress-Chxeo8g4.js +18 -0
  555. package/dist/showcase/assets/progress-fYPoCyf-.js +1 -0
  556. package/dist/showcase/assets/props-table-izArO1Pv.js +1 -0
  557. package/dist/showcase/assets/quote-wvfNu9t7.js +1 -0
  558. package/dist/showcase/assets/receipt-BlXBX4ZJ.js +1 -0
  559. package/dist/showcase/assets/receipt-text-stSsUTV5.js +1 -0
  560. package/dist/showcase/assets/refinement-guide-Bri81J9N.js +189 -0
  561. package/dist/showcase/assets/refresh-cw-tZzNDEGO.js +1 -0
  562. package/dist/showcase/assets/resolveValueLabel-Cti97iX8.js +1 -0
  563. package/dist/showcase/assets/resource-B727CTVi.js +139 -0
  564. package/dist/showcase/assets/resource-DytT_quB.js +1 -0
  565. package/dist/showcase/assets/resource-selector-card-wNuW382N.js +43 -0
  566. package/dist/showcase/assets/rich-text-editor-DdK5YD0y.js +143 -0
  567. package/dist/showcase/assets/rich-text-editor-DqY2H6e0.js +124 -0
  568. package/dist/showcase/assets/rotate-ccw-Bp4aMDrI.js +1 -0
  569. package/dist/showcase/assets/route-D2owHMka.js +1 -0
  570. package/dist/showcase/assets/save-DjC_iy0t.js +1 -0
  571. package/dist/showcase/assets/schema-form-CQtLwGC1.js +327 -0
  572. package/dist/showcase/assets/scroll-area-BQlHFfkG.js +32 -0
  573. package/dist/showcase/assets/scroll-area-D3Rrt85s.js +1 -0
  574. package/dist/showcase/assets/section-DYfGx1Q5.js +1 -0
  575. package/dist/showcase/assets/select-BCJGhRpc.js +1 -0
  576. package/dist/showcase/assets/select-Cf5EigqA.js +1 -0
  577. package/dist/showcase/assets/send-86Vr11Ys.js +1 -0
  578. package/dist/showcase/assets/separator-BHjNVb5O.js +1 -0
  579. package/dist/showcase/assets/separator-BejjbTbO.js +28 -0
  580. package/dist/showcase/assets/settings-2-DNNVOsjP.js +1 -0
  581. package/dist/showcase/assets/settings-Bsi5BLx5.js +1 -0
  582. package/dist/showcase/assets/sheet-BazhMvfb.js +1 -0
  583. package/dist/showcase/assets/shield-alert-D-Jbocfj.js +1 -0
  584. package/dist/showcase/assets/shield-check-D9eDVcJ1.js +1 -0
  585. package/dist/showcase/assets/shield-xI2P9G5d.js +1 -0
  586. package/dist/showcase/assets/shopping-bag-DOGs3sez.js +1 -0
  587. package/dist/showcase/assets/showcase-s-5CuLAJ.js +132 -0
  588. package/dist/showcase/assets/sidebar-Rz44gw_a.js +1 -0
  589. package/dist/showcase/assets/sidebar.context-Bbcdo3o8.js +1 -0
  590. package/dist/showcase/assets/skeleton-CY8ieqD-.js +1 -0
  591. package/dist/showcase/assets/skeleton-CgoH6CPT.js +29 -0
  592. package/dist/showcase/assets/slider-okW2bgkG.js +1 -0
  593. package/dist/showcase/assets/smart-card-CVwEPwfI.js +1 -0
  594. package/dist/showcase/assets/sonner-CixCpxj2.js +22 -0
  595. package/dist/showcase/assets/sortable.esm-DKcVtGTb.js +5 -0
  596. package/dist/showcase/assets/sparkles-DDEVdtmy.js +1 -0
  597. package/dist/showcase/assets/spinner-BVGPoAEv.js +49 -0
  598. package/dist/showcase/assets/spinner-FURXSp1Q.js +1 -0
  599. package/dist/showcase/assets/spinner-u6TwJ3Ii.js +30 -0
  600. package/dist/showcase/assets/square-pen-DVXVT0cQ.js +1 -0
  601. package/dist/showcase/assets/stacked-avatars-CKOQhAx4.js +1 -0
  602. package/dist/showcase/assets/star-B3ZPfxuz.js +1 -0
  603. package/dist/showcase/assets/startOfDay-LwMBRUSU.js +1 -0
  604. package/dist/showcase/assets/styles-UIKkojWJ.js +1 -0
  605. package/dist/showcase/assets/suggestions-DbrzKjbi.js +126 -0
  606. package/dist/showcase/assets/switch-CAw84QpS.js +1 -0
  607. package/dist/showcase/assets/switch-Cjt2MCgr.js +1 -0
  608. package/dist/showcase/assets/sync-DWbqfpBH.js +124 -0
  609. package/dist/showcase/assets/table-Bx5lo5FP.js +686 -0
  610. package/dist/showcase/assets/table-C2RQulDb.js +1 -0
  611. package/dist/showcase/assets/table-actions-Clo3WEfM.js +1 -0
  612. package/dist/showcase/assets/tabs-DRtlcg6b.js +19 -0
  613. package/dist/showcase/assets/tabs-wMPtvuT5.js +1 -0
  614. package/dist/showcase/assets/tags-input-D5FpWOWF.js +1 -0
  615. package/dist/showcase/assets/text-button-Cwh6D6qG.js +1 -0
  616. package/dist/showcase/assets/text-link-DI1uXdGl.js +1 -0
  617. package/dist/showcase/assets/textarea-CGbt4gBZ.js +1 -0
  618. package/dist/showcase/assets/textarea-JPgPLhyk.js +1 -0
  619. package/dist/showcase/assets/timelines-CkHN08n6.js +200 -0
  620. package/dist/showcase/assets/toggle-group-BpXkR9uD.js +1 -0
  621. package/dist/showcase/assets/toggles-DK9iCbki.js +71 -0
  622. package/dist/showcase/assets/toggles-group-DwzRj0f7.js +32 -0
  623. package/dist/showcase/assets/tooltip-PtP1suag.js +31 -0
  624. package/dist/showcase/assets/trash-2-BE4XUI2g.js +1 -0
  625. package/dist/showcase/assets/trending-up-ByxOf-nR.js +1 -0
  626. package/dist/showcase/assets/truck-RTOdcRV0.js +1 -0
  627. package/dist/showcase/assets/typography-BKLgHDxU.js +223 -0
  628. package/dist/showcase/assets/ui-badge-DIh_3Wmo.js +28 -0
  629. package/dist/showcase/assets/ui-card-BOdHnZwv.js +30 -0
  630. package/dist/showcase/assets/ui-table-BW4FCClv.js +42 -0
  631. package/dist/showcase/assets/upload-tray-CV9_5Lpa.js +138 -0
  632. package/dist/showcase/assets/use-layout-link-MyeE-CDj.js +1 -0
  633. package/dist/showcase/assets/useAnchoredPopupScrollLock-DSaog2w5.js +1 -0
  634. package/dist/showcase/assets/useAriaLabelledBy-DSpPzrxG.js +1 -0
  635. package/dist/showcase/assets/useCollapsiblePanel-DsuJtES0.js +1 -0
  636. package/dist/showcase/assets/useCompositeItem-lbAimLrR.js +1 -0
  637. package/dist/showcase/assets/useCompositeListItem-pRXWGj4x.js +1 -0
  638. package/dist/showcase/assets/useLabelableId-IRM1zB5m.js +1 -0
  639. package/dist/showcase/assets/useOpenInteractionType-CHDcTj9f.js +1 -0
  640. package/dist/showcase/assets/useRender-Ogz5zjeJ.js +1 -0
  641. package/dist/showcase/assets/useTriggerFocusGuards-Du6btFNB.js +1 -0
  642. package/dist/showcase/assets/useValueChanged-CXpsR4fl.js +1 -0
  643. package/dist/showcase/assets/user-plus-CLj8AZe1.js +1 -0
  644. package/dist/showcase/assets/user-ymdT26JK.js +1 -0
  645. package/dist/showcase/assets/users-BGba2Xwv.js +1 -0
  646. package/dist/showcase/assets/vendor-profile-Ci6c9mFC.js +37 -0
  647. package/dist/showcase/assets/video-BcKa36-p.js +1 -0
  648. package/dist/showcase/assets/wrench-Cj2hRrih.js +1 -0
  649. package/dist/showcase/assets/x-iCqjAC2D.js +1 -0
  650. package/dist/showcase/assets/zap-H4bc_OhS.js +1 -0
  651. package/dist/showcase/index.html +2 -2
  652. package/dist/style.css +1 -1
  653. package/package.json +1 -1
  654. package/src/css/tokens/foundation.css +19 -5
  655. package/dist/_shared/accordion-BRj4TDQx.js +0 -135
  656. package/dist/_shared/accordion-BRj4TDQx.js.map +0 -1
  657. package/dist/_shared/accordion-DvlDjk29.cjs +0 -2
  658. package/dist/_shared/accordion-DvlDjk29.cjs.map +0 -1
  659. package/dist/_shared/ai-artifact-BHgd3agA.js +0 -1099
  660. package/dist/_shared/ai-artifact-BHgd3agA.js.map +0 -1
  661. package/dist/_shared/ai-artifact-BRM5cvGv.cjs +0 -3
  662. package/dist/_shared/ai-artifact-BRM5cvGv.cjs.map +0 -1
  663. package/dist/_shared/alert-CMVVt2Br.js +0 -81
  664. package/dist/_shared/alert-CMVVt2Br.js.map +0 -1
  665. package/dist/_shared/alert-Dmhtbmpg.cjs +0 -2
  666. package/dist/_shared/alert-Dmhtbmpg.cjs.map +0 -1
  667. package/dist/_shared/auth-DZW6NkJx.cjs +0 -2
  668. package/dist/_shared/auth-DZW6NkJx.cjs.map +0 -1
  669. package/dist/_shared/auth-Dh790NI_.js +0 -643
  670. package/dist/_shared/auth-Dh790NI_.js.map +0 -1
  671. package/dist/_shared/badge-B8xGFpfM.cjs +0 -2
  672. package/dist/_shared/badge-B8xGFpfM.cjs.map +0 -1
  673. package/dist/_shared/badge-BYNwSWh5.js +0 -110
  674. package/dist/_shared/badge-BYNwSWh5.js.map +0 -1
  675. package/dist/_shared/card-radio-group-Bhe8gAbH.js +0 -150
  676. package/dist/_shared/card-radio-group-Bhe8gAbH.js.map +0 -1
  677. package/dist/_shared/card-radio-group-CdG1zr8M.cjs +0 -2
  678. package/dist/_shared/card-radio-group-CdG1zr8M.cjs.map +0 -1
  679. package/dist/_shared/cards-Cu6p1Brd.cjs +0 -2
  680. package/dist/_shared/cards-Cu6p1Brd.cjs.map +0 -1
  681. package/dist/_shared/cards-cQ9lL6zy.js +0 -354
  682. package/dist/_shared/cards-cQ9lL6zy.js.map +0 -1
  683. package/dist/_shared/combobox-BGYjyXeN.cjs +0 -2
  684. package/dist/_shared/combobox-BGYjyXeN.cjs.map +0 -1
  685. package/dist/_shared/combobox-DTwomOBt.js +0 -954
  686. package/dist/_shared/combobox-DTwomOBt.js.map +0 -1
  687. package/dist/_shared/command-ByedBajF.js +0 -39
  688. package/dist/_shared/command-ByedBajF.js.map +0 -1
  689. package/dist/_shared/command-EGR0nhGc.cjs +0 -2
  690. package/dist/_shared/command-EGR0nhGc.cjs.map +0 -1
  691. package/dist/_shared/comments-C97vL5km.js +0 -952
  692. package/dist/_shared/comments-C97vL5km.js.map +0 -1
  693. package/dist/_shared/comments-DBe6dP-d.cjs +0 -2
  694. package/dist/_shared/comments-DBe6dP-d.cjs.map +0 -1
  695. package/dist/_shared/copyable-BgFdERqs.js +0 -38
  696. package/dist/_shared/copyable-BgFdERqs.js.map +0 -1
  697. package/dist/_shared/copyable-Ce8rmE-V.cjs +0 -2
  698. package/dist/_shared/copyable-Ce8rmE-V.cjs.map +0 -1
  699. package/dist/_shared/data-display-DUWxoDKq.js +0 -1873
  700. package/dist/_shared/data-display-DUWxoDKq.js.map +0 -1
  701. package/dist/_shared/data-display-o-rbMuIA.cjs +0 -2
  702. package/dist/_shared/data-display-o-rbMuIA.cjs.map +0 -1
  703. package/dist/_shared/date-picker-Cxx9jllA.js +0 -1361
  704. package/dist/_shared/date-picker-Cxx9jllA.js.map +0 -1
  705. package/dist/_shared/date-picker-DE5A8yqN.cjs +0 -2
  706. package/dist/_shared/date-picker-DE5A8yqN.cjs.map +0 -1
  707. package/dist/_shared/date-pickers-Dex1Mfye.cjs +0 -2
  708. package/dist/_shared/date-pickers-Dex1Mfye.cjs.map +0 -1
  709. package/dist/_shared/date-pickers-m0dpDcqH.js +0 -329
  710. package/dist/_shared/date-pickers-m0dpDcqH.js.map +0 -1
  711. package/dist/_shared/display-Bro3Kufg.js +0 -986
  712. package/dist/_shared/display-Bro3Kufg.js.map +0 -1
  713. package/dist/_shared/display-CRQjSjgB.cjs +0 -2
  714. package/dist/_shared/display-CRQjSjgB.cjs.map +0 -1
  715. package/dist/_shared/forms-D-SNQmtB.cjs +0 -2
  716. package/dist/_shared/forms-D-SNQmtB.cjs.map +0 -1
  717. package/dist/_shared/forms-p7cfzJwf.js +0 -3533
  718. package/dist/_shared/forms-p7cfzJwf.js.map +0 -1
  719. package/dist/_shared/header-8C71wVRp.js +0 -447
  720. package/dist/_shared/header-8C71wVRp.js.map +0 -1
  721. package/dist/_shared/header-CYgFCnjZ.cjs +0 -2
  722. package/dist/_shared/header-CYgFCnjZ.cjs.map +0 -1
  723. package/dist/_shared/hooks-Ci1LFWRG.js +0 -95
  724. package/dist/_shared/hooks-Ci1LFWRG.js.map +0 -1
  725. package/dist/_shared/hooks-Cjl7LJpn.cjs +0 -2
  726. package/dist/_shared/hooks-Cjl7LJpn.cjs.map +0 -1
  727. package/dist/_shared/input-BgcP6x4C.js +0 -182
  728. package/dist/_shared/input-BgcP6x4C.js.map +0 -1
  729. package/dist/_shared/input-DV3g7Fm5.cjs +0 -2
  730. package/dist/_shared/input-DV3g7Fm5.cjs.map +0 -1
  731. package/dist/_shared/item-D7GTzvhf.js +0 -226
  732. package/dist/_shared/item-D7GTzvhf.js.map +0 -1
  733. package/dist/_shared/item-DTrnHpfm.cjs +0 -2
  734. package/dist/_shared/item-DTrnHpfm.cjs.map +0 -1
  735. package/dist/_shared/layout-BExg7Vlx.js +0 -261
  736. package/dist/_shared/layout-BExg7Vlx.js.map +0 -1
  737. package/dist/_shared/layout-CKRD_goE.cjs +0 -2
  738. package/dist/_shared/layout-CKRD_goE.cjs.map +0 -1
  739. package/dist/_shared/mentions-BtGhYisA.js +0 -506
  740. package/dist/_shared/mentions-BtGhYisA.js.map +0 -1
  741. package/dist/_shared/mentions-CnVOuQJU.cjs +0 -2
  742. package/dist/_shared/mentions-CnVOuQJU.cjs.map +0 -1
  743. package/dist/_shared/money-display-BvVpRUs5.cjs +0 -2
  744. package/dist/_shared/money-display-BvVpRUs5.cjs.map +0 -1
  745. package/dist/_shared/money-display-D6Qtvyyv.js +0 -198
  746. package/dist/_shared/money-display-D6Qtvyyv.js.map +0 -1
  747. package/dist/_shared/navigation-C4dO1I82.cjs +0 -2
  748. package/dist/_shared/navigation-C4dO1I82.cjs.map +0 -1
  749. package/dist/_shared/navigation-Ct-LFlpY.js +0 -436
  750. package/dist/_shared/navigation-Ct-LFlpY.js.map +0 -1
  751. package/dist/_shared/overlays-ChyqXn0n.js +0 -735
  752. package/dist/_shared/overlays-ChyqXn0n.js.map +0 -1
  753. package/dist/_shared/overlays-Dn2bt3CL.cjs +0 -2
  754. package/dist/_shared/overlays-Dn2bt3CL.cjs.map +0 -1
  755. package/dist/_shared/popover-menu-17Dxn25O.js +0 -93
  756. package/dist/_shared/popover-menu-17Dxn25O.js.map +0 -1
  757. package/dist/_shared/popover-menu-DXVN0bvj.cjs +0 -2
  758. package/dist/_shared/popover-menu-DXVN0bvj.cjs.map +0 -1
  759. package/dist/_shared/rich-text-editor-BRpcNkj1.js +0 -620
  760. package/dist/_shared/rich-text-editor-BRpcNkj1.js.map +0 -1
  761. package/dist/_shared/rich-text-editor-BXxGNbmI.cjs +0 -2
  762. package/dist/_shared/rich-text-editor-BXxGNbmI.cjs.map +0 -1
  763. package/dist/_shared/settings-CW9yzfQM.js +0 -143
  764. package/dist/_shared/settings-CW9yzfQM.js.map +0 -1
  765. package/dist/_shared/settings-cCPrw7si.cjs +0 -2
  766. package/dist/_shared/settings-cCPrw7si.cjs.map +0 -1
  767. package/dist/_shared/sidebar-Cq6J_I4l.cjs +0 -2
  768. package/dist/_shared/sidebar-Cq6J_I4l.cjs.map +0 -1
  769. package/dist/_shared/sidebar-DtF_ihE3.js +0 -548
  770. package/dist/_shared/sidebar-DtF_ihE3.js.map +0 -1
  771. package/dist/_shared/spinner-DY2de3Wt.cjs +0 -2
  772. package/dist/_shared/spinner-DY2de3Wt.cjs.map +0 -1
  773. package/dist/_shared/spinner-ZmIq_zsx.js +0 -67
  774. package/dist/_shared/spinner-ZmIq_zsx.js.map +0 -1
  775. package/dist/_shared/table-BBWc-wIw.js +0 -1377
  776. package/dist/_shared/table-BBWc-wIw.js.map +0 -1
  777. package/dist/_shared/table-DMDkdLzV.cjs +0 -2
  778. package/dist/_shared/table-DMDkdLzV.cjs.map +0 -1
  779. package/dist/_shared/textarea-C1TeJ7Vt.cjs +0 -2
  780. package/dist/_shared/textarea-C1TeJ7Vt.cjs.map +0 -1
  781. package/dist/_shared/textarea-CGRkgH5z.js +0 -118
  782. package/dist/_shared/textarea-CGRkgH5z.js.map +0 -1
  783. package/dist/_shared/typography-CzFVA1w1.js +0 -201
  784. package/dist/_shared/typography-CzFVA1w1.js.map +0 -1
  785. package/dist/_shared/typography-GtkgK9QX.cjs +0 -2
  786. package/dist/_shared/typography-GtkgK9QX.cjs.map +0 -1
  787. package/dist/_shared/workspace-BF5BtDhD.cjs +0 -2
  788. package/dist/_shared/workspace-BF5BtDhD.cjs.map +0 -1
  789. package/dist/_shared/workspace-IvsczduM.js +0 -357
  790. package/dist/_shared/workspace-IvsczduM.js.map +0 -1
  791. package/dist/showcase/assets/AreaChart-CsIm9z7Y.js +0 -6
  792. package/dist/showcase/assets/CompositeItem-D9zznn01.js +0 -1
  793. package/dist/showcase/assets/CompositeRoot-CvxtZ81W.js +0 -1
  794. package/dist/showcase/assets/DialogTrigger-C-osQGHu.js +0 -1
  795. package/dist/showcase/assets/LabelableContext-_EE-HBND.js +0 -1
  796. package/dist/showcase/assets/PreviewLayout-KdEsSl3b.js +0 -1
  797. package/dist/showcase/assets/RadioGroup-4jOeNTc1.js +0 -1
  798. package/dist/showcase/assets/ScrollAreaCorner-CXTdUcaE.js +0 -1
  799. package/dist/showcase/assets/Separator-CHVXO6nj.js +0 -1
  800. package/dist/showcase/assets/ToolbarRootContext-CM5tQGGX.js +0 -1
  801. package/dist/showcase/assets/accordion-CA84bxb2.js +0 -171
  802. package/dist/showcase/assets/accordion-variants-DqWzAOO3.js +0 -1
  803. package/dist/showcase/assets/action-menu-D0q5z-Kq.js +0 -1
  804. package/dist/showcase/assets/actions-DnqxABJU.js +0 -310
  805. package/dist/showcase/assets/activities-BC9hoMy9.js +0 -500
  806. package/dist/showcase/assets/activities-feed-card-D6wGLpbH.js +0 -1
  807. package/dist/showcase/assets/admin-CMnMsugJ.js +0 -140
  808. package/dist/showcase/assets/ai-B6_sE9Zg.js +0 -207
  809. package/dist/showcase/assets/ai-artifact-BVvbsSJB.js +0 -2
  810. package/dist/showcase/assets/ai-chat-lcXeqJrA.js +0 -568
  811. package/dist/showcase/assets/ai-elements-B32o_UjE.js +0 -387
  812. package/dist/showcase/assets/ai-tool-call-BLrAioKz.js +0 -1
  813. package/dist/showcase/assets/alert-B1p1Grce.js +0 -62
  814. package/dist/showcase/assets/alert-BBiffYsY.js +0 -93
  815. package/dist/showcase/assets/alert-vH0nJ8J9.js +0 -1
  816. package/dist/showcase/assets/api-key-list-BrSc6V1y.js +0 -1
  817. package/dist/showcase/assets/api-key-list-CoKe_PaL.js +0 -73
  818. package/dist/showcase/assets/app-sidebar-R93lRPB4.js +0 -1
  819. package/dist/showcase/assets/arrow-down-xxVIADbv.js +0 -1
  820. package/dist/showcase/assets/arrow-left-DxnlnN8R.js +0 -1
  821. package/dist/showcase/assets/arrow-right-S5k93UPM.js +0 -1
  822. package/dist/showcase/assets/arrow-up-OlEVG7a-.js +0 -1
  823. package/dist/showcase/assets/arrow-up-right-j55bbl4b.js +0 -1
  824. package/dist/showcase/assets/avatar-BbiXvZq7.js +0 -67
  825. package/dist/showcase/assets/avatar-Bwpw-hQo.js +0 -57
  826. package/dist/showcase/assets/avatar-D0DKQ1lK.js +0 -1
  827. package/dist/showcase/assets/avatar-WyjSBov9.js +0 -1
  828. package/dist/showcase/assets/badge-BzLZQO3L.js +0 -31
  829. package/dist/showcase/assets/badge-check-TFWm1m3F.js +0 -1
  830. package/dist/showcase/assets/bell-CmuQlO_k.js +0 -1
  831. package/dist/showcase/assets/bot-Bu518AJB.js +0 -1
  832. package/dist/showcase/assets/box-D-wrSdOJ.js +0 -1
  833. package/dist/showcase/assets/braces-CgCdmdAl.js +0 -1
  834. package/dist/showcase/assets/brain-DkHdwgHO.js +0 -1
  835. package/dist/showcase/assets/brand-CpovnVoG.js +0 -36
  836. package/dist/showcase/assets/breadcrumb-BUc0WC5d.js +0 -1
  837. package/dist/showcase/assets/breadcrumb-Do_Dazt1.js +0 -52
  838. package/dist/showcase/assets/breadcrumbs-Bj21o2zm.js +0 -1
  839. package/dist/showcase/assets/briefcase-CQBh2kok.js +0 -1
  840. package/dist/showcase/assets/building-2-D07Ej6iR.js +0 -1
  841. package/dist/showcase/assets/button-CCZ4KEGQ.js +0 -44
  842. package/dist/showcase/assets/button-group-BTjeHOvz.js +0 -1
  843. package/dist/showcase/assets/buttons-D45Wwiwn.js +0 -272
  844. package/dist/showcase/assets/calendar-BsEWULmZ.js +0 -16
  845. package/dist/showcase/assets/calendar-CkPefzIO.js +0 -1
  846. package/dist/showcase/assets/calendar-DZlT3qTq.js +0 -1
  847. package/dist/showcase/assets/calendar-days-C9awTMru.js +0 -1
  848. package/dist/showcase/assets/camera-CQhMw-RD.js +0 -1
  849. package/dist/showcase/assets/card-CKrz_UHt.js +0 -1
  850. package/dist/showcase/assets/card-DZgZgjXO.js +0 -188
  851. package/dist/showcase/assets/card-primitives-CpkDLK3Y.js +0 -1
  852. package/dist/showcase/assets/card-radio-group-BjXwMI4v.js +0 -1
  853. package/dist/showcase/assets/cards-Cd24XZ9l.js +0 -353
  854. package/dist/showcase/assets/carousel-Doon04yO.js +0 -449
  855. package/dist/showcase/assets/cell-renderers-CTay3duH.js +0 -1
  856. package/dist/showcase/assets/chart-CkvbdpWw.js +0 -358
  857. package/dist/showcase/assets/chart-column-Dz57kUMl.js +0 -1
  858. package/dist/showcase/assets/checkbox-L-L4-wvA.js +0 -1
  859. package/dist/showcase/assets/checkbox-sP254E7e.js +0 -1
  860. package/dist/showcase/assets/chevron-down-CLc_a2Ua.js +0 -1
  861. package/dist/showcase/assets/chevron-left-CMRIGOJt.js +0 -1
  862. package/dist/showcase/assets/chevron-up-BDw6LdDZ.js +0 -1
  863. package/dist/showcase/assets/chevrons-up-down-C519RKki.js +0 -1
  864. package/dist/showcase/assets/circle-B_tOHWTY.js +0 -1
  865. package/dist/showcase/assets/circle-alert-B56AFULT.js +0 -1
  866. package/dist/showcase/assets/circle-check-B4XZj4Ty.js +0 -1
  867. package/dist/showcase/assets/circle-check-big-C0iEkwPB.js +0 -1
  868. package/dist/showcase/assets/circle-dot-DPdJZkc6.js +0 -1
  869. package/dist/showcase/assets/circle-question-mark-LTetdrq6.js +0 -1
  870. package/dist/showcase/assets/circle-x-B4FwM-sI.js +0 -1
  871. package/dist/showcase/assets/clock-3-DZhjBuw8.js +0 -1
  872. package/dist/showcase/assets/clock-B9Fna2Q3.js +0 -1
  873. package/dist/showcase/assets/code-xml-B6Xb_vIg.js +0 -1
  874. package/dist/showcase/assets/collapsible-Bf7Oo37i.js +0 -27
  875. package/dist/showcase/assets/collapsible-BfLeooy8.js +0 -1
  876. package/dist/showcase/assets/combobox-4NYfJznY.js +0 -685
  877. package/dist/showcase/assets/command-7jRRucHf.js +0 -1
  878. package/dist/showcase/assets/command-D56CjgNc.js +0 -1
  879. package/dist/showcase/assets/comment-composer-BWeXIZfK.js +0 -1
  880. package/dist/showcase/assets/comment-item-ChkiK-ut.js +0 -1
  881. package/dist/showcase/assets/comments-YnEop7v3.js +0 -357
  882. package/dist/showcase/assets/commerce-7XxWJChs.js +0 -267
  883. package/dist/showcase/assets/composite-CHcyYCsk.js +0 -1
  884. package/dist/showcase/assets/contact-card-BXw-VuBm.js +0 -65
  885. package/dist/showcase/assets/content-container-C4uopCBg.js +0 -1
  886. package/dist/showcase/assets/copyable-CjVYEJ0P.js +0 -1
  887. package/dist/showcase/assets/copyable-Cz2jW7yL.js +0 -96
  888. package/dist/showcase/assets/course-card-CvK3dw9W.js +0 -77
  889. package/dist/showcase/assets/cpu-Vk5WgcC1.js +0 -1
  890. package/dist/showcase/assets/credit-card-CaigqZGk.js +0 -1
  891. package/dist/showcase/assets/css-variables-hLaBmeMt.js +0 -1190
  892. package/dist/showcase/assets/currency-yO1giHp1.js +0 -149
  893. package/dist/showcase/assets/dark-surfaces-BPQnyk9a.js +0 -90
  894. package/dist/showcase/assets/data-view-CjjXn5VT.js +0 -124
  895. package/dist/showcase/assets/data-view-DF0n8uva.js +0 -4
  896. package/dist/showcase/assets/database-ChUBDe8E.js +0 -1
  897. package/dist/showcase/assets/date-block-DUg1Oyn4.js +0 -1
  898. package/dist/showcase/assets/date-picker-CoQPZa34.js +0 -1
  899. package/dist/showcase/assets/date-pickers-B-IUbyXw.js +0 -73
  900. package/dist/showcase/assets/dense-info-zVQSWqOU.js +0 -106
  901. package/dist/showcase/assets/design-system-consistency-Bnz_h3-6.js +0 -264
  902. package/dist/showcase/assets/dialog-BtilpgxJ.js +0 -1
  903. package/dist/showcase/assets/dialog-kf9WwmTC.js +0 -1
  904. package/dist/showcase/assets/display-utilities-BBzG5EPX.js +0 -267
  905. package/dist/showcase/assets/dist-9gFIhkw-.js +0 -45
  906. package/dist/showcase/assets/dist-CGpz_7Mu.js +0 -1
  907. package/dist/showcase/assets/dollar-sign-CWbYI3Pd.js +0 -1
  908. package/dist/showcase/assets/download-Bt_z-poH.js +0 -1
  909. package/dist/showcase/assets/dropdown-menu-C1_SYTHm.js +0 -1
  910. package/dist/showcase/assets/dropzone-D5BGVTnl.js +0 -1
  911. package/dist/showcase/assets/earth-sP5mIgG3.js +0 -1
  912. package/dist/showcase/assets/ellipsis-vertical-BD7kMOzj.js +0 -1
  913. package/dist/showcase/assets/ellipsis-yqIF49C8.js +0 -1
  914. package/dist/showcase/assets/empty-DIrJgtrh.js +0 -1
  915. package/dist/showcase/assets/empty-item-GgnZk2yf.js +0 -49
  916. package/dist/showcase/assets/empty-state-ZGKkJ6sf.js +0 -190
  917. package/dist/showcase/assets/empty-state-n_Fspzt-.js +0 -1
  918. package/dist/showcase/assets/enhanced-activities-CCw_hZnZ.js +0 -357
  919. package/dist/showcase/assets/enhanced-combobox-bBF-ADDs.js +0 -1
  920. package/dist/showcase/assets/esm-CyFPn936.js +0 -2
  921. package/dist/showcase/assets/event-calendar-Czo7yBDx.js +0 -138
  922. package/dist/showcase/assets/event-log-DJ3B3nMV.js +0 -330
  923. package/dist/showcase/assets/example-eGsLGIcp.js +0 -1
  924. package/dist/showcase/assets/external-link-DPOQEVWH.js +0 -1
  925. package/dist/showcase/assets/eye-CN92NVL0.js +0 -1
  926. package/dist/showcase/assets/feature-announcement-BXkSW17e.js +0 -34
  927. package/dist/showcase/assets/file-CFHePlKG.js +0 -1
  928. package/dist/showcase/assets/file-text--WYCYQMw.js +0 -1
  929. package/dist/showcase/assets/filter-layout-B35gGmcO.js +0 -1
  930. package/dist/showcase/assets/filters-GDW_oiT3.js +0 -139
  931. package/dist/showcase/assets/flag-XsT9XFPr.js +0 -1
  932. package/dist/showcase/assets/folder-open-RtsQ8vxf.js +0 -1
  933. package/dist/showcase/assets/form-field-Bijd1Gex.js +0 -1
  934. package/dist/showcase/assets/format-Ckw4OM66.js +0 -1
  935. package/dist/showcase/assets/forms-00bU7LN8.js +0 -915
  936. package/dist/showcase/assets/funnel-qu25WlXD.js +0 -1
  937. package/dist/showcase/assets/generic-Bf82Wiol.js +0 -1
  938. package/dist/showcase/assets/getPseudoElementBounds-BR4_m2HH.js +0 -1
  939. package/dist/showcase/assets/gift-D4GQoqzV.js +0 -1
  940. package/dist/showcase/assets/giftcard-cards-CMutwaAY.js +0 -85
  941. package/dist/showcase/assets/git-branch-B2QG2zRg.js +0 -1
  942. package/dist/showcase/assets/global-search-CRAB9TSF.js +0 -1
  943. package/dist/showcase/assets/global-search-DY0cKfhY.js +0 -215
  944. package/dist/showcase/assets/globe-BxZW28rG.js +0 -1
  945. package/dist/showcase/assets/gradient-card-CQGnXG8r.js +0 -58
  946. package/dist/showcase/assets/hash-CsRtIoKK.js +0 -1
  947. package/dist/showcase/assets/header-DzYOgZLP.js +0 -1
  948. package/dist/showcase/assets/header-notifications-D_CJPbvs.js +0 -1
  949. package/dist/showcase/assets/heart-B2YsYprq.js +0 -1
  950. package/dist/showcase/assets/hooks-BhUMA4Tb.js +0 -220
  951. package/dist/showcase/assets/house-HeRFNhI0.js +0 -1
  952. package/dist/showcase/assets/icon-badge-CpDkc-S0.js +0 -37
  953. package/dist/showcase/assets/icon-badge-eNEGgpAV.js +0 -1
  954. package/dist/showcase/assets/image-T88JyDag.js +0 -1
  955. package/dist/showcase/assets/inbox-DLrLLnTR.js +0 -1
  956. package/dist/showcase/assets/index-DDZl6kOS.js +0 -10
  957. package/dist/showcase/assets/index-nOkXemgw.css +0 -2
  958. package/dist/showcase/assets/inertValue-BajuuRy4.js +0 -1
  959. package/dist/showcase/assets/info-CNYfw2Yz.js +0 -1
  960. package/dist/showcase/assets/inline-stat-BN6yhDR5.js +0 -15
  961. package/dist/showcase/assets/inline-stat-Bqw3lVfk.js +0 -1
  962. package/dist/showcase/assets/input-C-9K6F0N.js +0 -1
  963. package/dist/showcase/assets/input-DaZzfkZV.js +0 -1
  964. package/dist/showcase/assets/input-group-DE-Xdhv4.js +0 -1
  965. package/dist/showcase/assets/input-group-DIQZnytn.js +0 -47
  966. package/dist/showcase/assets/inputs-Cl_JgSR4.js +0 -155
  967. package/dist/showcase/assets/installation-DdhD4Dkq.js +0 -134
  968. package/dist/showcase/assets/invoice-header-DOs2ACqQ.js +0 -36
  969. package/dist/showcase/assets/invoice-items-1EuA62mF.js +0 -36
  970. package/dist/showcase/assets/invoice-mini-vCrYEtWp.js +0 -14
  971. package/dist/showcase/assets/invoice-table--mDTs1Iz.js +0 -30
  972. package/dist/showcase/assets/isSameDay-BNB1yam4.js +0 -1
  973. package/dist/showcase/assets/isToday-BugOpGJC.js +0 -1
  974. package/dist/showcase/assets/italic-Ck4UD2ZT.js +0 -1
  975. package/dist/showcase/assets/item-BcesxqFS.js +0 -139
  976. package/dist/showcase/assets/item-BgPlwUMv.js +0 -1
  977. package/dist/showcase/assets/item-CB9k_rmo.js +0 -1
  978. package/dist/showcase/assets/kanban-cPuSVqWY.js +0 -188
  979. package/dist/showcase/assets/key-round-BmYjd5dk.js +0 -1
  980. package/dist/showcase/assets/label-BTIBJBqN.js +0 -1
  981. package/dist/showcase/assets/languages-he6FNXRs.js +0 -1
  982. package/dist/showcase/assets/layers-B_48DtOz.js +0 -1
  983. package/dist/showcase/assets/layout-app-shell-zwLv6jTP.js +0 -608
  984. package/dist/showcase/assets/layout-auth-2Zv5lr52.js +0 -790
  985. package/dist/showcase/assets/layout-containers-Dzw3xlKn.js +0 -101
  986. package/dist/showcase/assets/layout-header-TJ-WVmG3.js +0 -203
  987. package/dist/showcase/assets/layout-page-CIVQCKXK.js +0 -314
  988. package/dist/showcase/assets/layout-primitives-i_O81fzT.js +0 -34
  989. package/dist/showcase/assets/layout-sidebar-eH_pwBq_.js +0 -224
  990. package/dist/showcase/assets/layout-users-CWSaFBLj.js +0 -117
  991. package/dist/showcase/assets/layout-workspace-w3oe32GE.js +0 -191
  992. package/dist/showcase/assets/lib-CoS0xjP8.js +0 -1
  993. package/dist/showcase/assets/list-checks-DecRPpK3.js +0 -1
  994. package/dist/showcase/assets/lock-D9f8uXol.js +0 -1
  995. package/dist/showcase/assets/lock-keyhole-C20eixH6.js +0 -1
  996. package/dist/showcase/assets/mail-CVgP8Qlo.js +0 -1
  997. package/dist/showcase/assets/mail-check-mplTKcSH.js +0 -1
  998. package/dist/showcase/assets/map-B6OGeOup.js +0 -124
  999. package/dist/showcase/assets/map-pin-BZXSwrzT.js +0 -1
  1000. package/dist/showcase/assets/media-library-DSlVIM1Q.js +0 -699
  1001. package/dist/showcase/assets/mention-inline-suggestions-CNAEeXgy.js +0 -1
  1002. package/dist/showcase/assets/mentions-Cb3g4hDN.js +0 -138
  1003. package/dist/showcase/assets/menus-CE0Hlj8N.js +0 -171
  1004. package/dist/showcase/assets/message-square-HliU8vbW.js +0 -1
  1005. package/dist/showcase/assets/metadata-list-CJ5v5Bvc.js +0 -286
  1006. package/dist/showcase/assets/metadata-list-DY92-pw2.js +0 -1
  1007. package/dist/showcase/assets/metric-DxMTjIvU.js +0 -1
  1008. package/dist/showcase/assets/metric-bar-cW9nWCRl.js +0 -1
  1009. package/dist/showcase/assets/metric-grid-CvfO52X1.js +0 -1
  1010. package/dist/showcase/assets/metric-trend-chip-BmjQdRus.js +0 -1
  1011. package/dist/showcase/assets/metrics-analytics-bar-BZqB5d1y.js +0 -44
  1012. package/dist/showcase/assets/metrics-analytics-cards-jAhlrQCI.js +0 -50
  1013. package/dist/showcase/assets/metrics-comparison-DURZ6qEL.js +0 -76
  1014. package/dist/showcase/assets/metrics-heatmap-HhJDBguh.js +0 -27
  1015. package/dist/showcase/assets/metrics-inline-badge-Dq5k-P6F.js +0 -17
  1016. package/dist/showcase/assets/metrics-kpi-row-DXzhwa6z.js +0 -31
  1017. package/dist/showcase/assets/metrics-micro-grid-C6O5b0wP.js +0 -42
  1018. package/dist/showcase/assets/metrics-overview-Hv2mseb3.js +0 -192
  1019. package/dist/showcase/assets/metrics-stat-cards-CW42vBCS.js +0 -54
  1020. package/dist/showcase/assets/minus-BW62vCxf.js +0 -1
  1021. package/dist/showcase/assets/money-display-CAdGk5Lr.js +0 -1
  1022. package/dist/showcase/assets/month-year-picker-dHuvgz1E.js +0 -1
  1023. package/dist/showcase/assets/navigation-C4uSLvbZ.js +0 -90
  1024. package/dist/showcase/assets/navigation-SjsZrtIc.js +0 -231
  1025. package/dist/showcase/assets/navigation-extras-CMVNVskk.js +0 -43
  1026. package/dist/showcase/assets/onboarding-checklist-C1jwRdMU.js +0 -119
  1027. package/dist/showcase/assets/overflow-tab-bar-BYFLpl5w.js +0 -1
  1028. package/dist/showcase/assets/overlays-0Y8MAz39.js +0 -159
  1029. package/dist/showcase/assets/overlays-ClOnjahL.js +0 -408
  1030. package/dist/showcase/assets/overview-B5ztGmTp.js +0 -184
  1031. package/dist/showcase/assets/package-check-MeSw6bS4.js +0 -1
  1032. package/dist/showcase/assets/package-vYJ0q0QM.js +0 -1
  1033. package/dist/showcase/assets/page-4lMKtBQ7.js +0 -1
  1034. package/dist/showcase/assets/page-action-button-C5-TGSzy.js +0 -1
  1035. package/dist/showcase/assets/page-header-C_-KYryO.js +0 -1
  1036. package/dist/showcase/assets/pagination-D3L3Iwus.js +0 -1
  1037. package/dist/showcase/assets/pagination-dZXPxwHx.js +0 -42
  1038. package/dist/showcase/assets/paperclip-BZhdPOw8.js +0 -1
  1039. package/dist/showcase/assets/password-input-CDSMtGxt.js +0 -1
  1040. package/dist/showcase/assets/pencil-DiYr3CZ9.js +0 -1
  1041. package/dist/showcase/assets/phone-Dm5qzlG8.js +0 -1
  1042. package/dist/showcase/assets/plus-pfGaA3St.js +0 -1
  1043. package/dist/showcase/assets/popover-CjVWDO7C.js +0 -1
  1044. package/dist/showcase/assets/popover-menu-JcZyGV3Y.js +0 -1
  1045. package/dist/showcase/assets/popover-pZ4Jbp0s.js +0 -1
  1046. package/dist/showcase/assets/products-C62MKtAR.js +0 -423
  1047. package/dist/showcase/assets/progress-Btw-ZUaU.js +0 -18
  1048. package/dist/showcase/assets/progress-DpB5LL6R.js +0 -1
  1049. package/dist/showcase/assets/props-table-Bjc9IHmp.js +0 -1
  1050. package/dist/showcase/assets/quote-DcxVd1fj.js +0 -1
  1051. package/dist/showcase/assets/receipt-BHns-S5Q.js +0 -1
  1052. package/dist/showcase/assets/receipt-text-L0aYasyt.js +0 -1
  1053. package/dist/showcase/assets/refinement-guide-BBOGBJ4I.js +0 -189
  1054. package/dist/showcase/assets/refresh-cw-z6mlm0HI.js +0 -1
  1055. package/dist/showcase/assets/resolveValueLabel-hsarzg5A.js +0 -1
  1056. package/dist/showcase/assets/resource-CIn_zKZ4.js +0 -139
  1057. package/dist/showcase/assets/resource-DxktLgEK.js +0 -1
  1058. package/dist/showcase/assets/resource-selector-card-dkcEQ6bl.js +0 -43
  1059. package/dist/showcase/assets/rich-text-editor-Dd-rWisw.js +0 -124
  1060. package/dist/showcase/assets/rich-text-editor-DvJMFj48.js +0 -143
  1061. package/dist/showcase/assets/rotate-ccw-DEz6nb5P.js +0 -1
  1062. package/dist/showcase/assets/route-BeXaXTk8.js +0 -1
  1063. package/dist/showcase/assets/save-EE7Tc5OT.js +0 -1
  1064. package/dist/showcase/assets/schema-form-RK9Zpz1E.js +0 -327
  1065. package/dist/showcase/assets/scroll-area-BejQJ0Q1.js +0 -32
  1066. package/dist/showcase/assets/scroll-area-DS8LJ7LG.js +0 -1
  1067. package/dist/showcase/assets/section-Cv8i4DIx.js +0 -1
  1068. package/dist/showcase/assets/select-Cuy3YKW9.js +0 -1
  1069. package/dist/showcase/assets/select-qFy1jm91.js +0 -1
  1070. package/dist/showcase/assets/send-CXv0ST9u.js +0 -1
  1071. package/dist/showcase/assets/separator-CecGyBaV.js +0 -1
  1072. package/dist/showcase/assets/separator-CqtFQXrk.js +0 -28
  1073. package/dist/showcase/assets/settings-2-CCeMwMOj.js +0 -1
  1074. package/dist/showcase/assets/settings-CXjN6wTC.js +0 -1
  1075. package/dist/showcase/assets/sheet-Csyrmkqp.js +0 -1
  1076. package/dist/showcase/assets/shield-DR0ZfAFA.js +0 -1
  1077. package/dist/showcase/assets/shield-alert-Bp1iFJ2q.js +0 -1
  1078. package/dist/showcase/assets/shield-check-ClL4B_Cd.js +0 -1
  1079. package/dist/showcase/assets/shopping-bag-DnSmbPUX.js +0 -1
  1080. package/dist/showcase/assets/showcase-CQKt5VGi.js +0 -132
  1081. package/dist/showcase/assets/sidebar-CXy94md1.js +0 -1
  1082. package/dist/showcase/assets/sidebar.context-C8gkOwJ5.js +0 -1
  1083. package/dist/showcase/assets/skeleton-B8wC5P66.js +0 -29
  1084. package/dist/showcase/assets/skeleton-DBlCLlBC.js +0 -1
  1085. package/dist/showcase/assets/slider-BcjkNx6W.js +0 -1
  1086. package/dist/showcase/assets/smart-card-Cg6rtWH9.js +0 -1
  1087. package/dist/showcase/assets/sonner-ZGBQ13wS.js +0 -22
  1088. package/dist/showcase/assets/sortable.esm-CGFWc-Cn.js +0 -5
  1089. package/dist/showcase/assets/sparkles-q1-9JZqa.js +0 -1
  1090. package/dist/showcase/assets/spinner-CKg8QLHu.js +0 -1
  1091. package/dist/showcase/assets/spinner-D1Ao9j9T.js +0 -49
  1092. package/dist/showcase/assets/spinner-oahLIkgb.js +0 -30
  1093. package/dist/showcase/assets/square-pen-DZ3bQJia.js +0 -1
  1094. package/dist/showcase/assets/stacked-avatars-CKPtb3Hj.js +0 -1
  1095. package/dist/showcase/assets/star-suetD-KI.js +0 -1
  1096. package/dist/showcase/assets/startOfDay-OjIsUeiv.js +0 -1
  1097. package/dist/showcase/assets/styles-1mYOoC2k.js +0 -1
  1098. package/dist/showcase/assets/suggestions-DLYaI-In.js +0 -126
  1099. package/dist/showcase/assets/switch-CTTrJNwo.js +0 -1
  1100. package/dist/showcase/assets/switch-ChJWWmxN.js +0 -1
  1101. package/dist/showcase/assets/sync-DsHYydvo.js +0 -124
  1102. package/dist/showcase/assets/table-Ck2ptin2.js +0 -686
  1103. package/dist/showcase/assets/table-DyJ9oADQ.js +0 -1
  1104. package/dist/showcase/assets/table-actions-COU4zHfh.js +0 -1
  1105. package/dist/showcase/assets/tabs-Bl_RHGIw.js +0 -1
  1106. package/dist/showcase/assets/tabs-DS-4VSkb.js +0 -19
  1107. package/dist/showcase/assets/tags-input-BlYzb5fF.js +0 -1
  1108. package/dist/showcase/assets/text-button-OPdNs3fb.js +0 -1
  1109. package/dist/showcase/assets/text-link-D27gqGeg.js +0 -1
  1110. package/dist/showcase/assets/textarea-DpC7J5F-.js +0 -1
  1111. package/dist/showcase/assets/textarea-JtXUjxvc.js +0 -1
  1112. package/dist/showcase/assets/timelines-DQM-B4Xo.js +0 -200
  1113. package/dist/showcase/assets/toggle-group-CMneKREH.js +0 -1
  1114. package/dist/showcase/assets/toggles-CAXXgjO_.js +0 -71
  1115. package/dist/showcase/assets/toggles-group-CHRqrpoM.js +0 -32
  1116. package/dist/showcase/assets/tooltip-CwGZAioX.js +0 -31
  1117. package/dist/showcase/assets/trash-2-BpMb9Zbb.js +0 -1
  1118. package/dist/showcase/assets/trending-up-B1BzitCg.js +0 -1
  1119. package/dist/showcase/assets/truck-CDSE5-HZ.js +0 -1
  1120. package/dist/showcase/assets/typography-BoNJ1hRZ.js +0 -223
  1121. package/dist/showcase/assets/ui-badge-Djh6NiB2.js +0 -28
  1122. package/dist/showcase/assets/ui-card-QC_rl_H2.js +0 -30
  1123. package/dist/showcase/assets/ui-table-qAGsc3qN.js +0 -42
  1124. package/dist/showcase/assets/upload-tray-DKCJgW5u.js +0 -138
  1125. package/dist/showcase/assets/use-layout-link-BPlsZ8Ys.js +0 -1
  1126. package/dist/showcase/assets/useAnchoredPopupScrollLock-526MebAC.js +0 -1
  1127. package/dist/showcase/assets/useAriaLabelledBy-CqySZiH9.js +0 -1
  1128. package/dist/showcase/assets/useCollapsiblePanel-DWX7LbGX.js +0 -1
  1129. package/dist/showcase/assets/useCompositeItem-DGEBUXgE.js +0 -1
  1130. package/dist/showcase/assets/useCompositeListItem-B2nuNlc2.js +0 -1
  1131. package/dist/showcase/assets/useLabelableId-DY4O1lpt.js +0 -1
  1132. package/dist/showcase/assets/useOpenInteractionType-DxwujDvt.js +0 -1
  1133. package/dist/showcase/assets/useRender-BPoNv-Lm.js +0 -1
  1134. package/dist/showcase/assets/useTriggerFocusGuards-BnOSAjfy.js +0 -1
  1135. package/dist/showcase/assets/useValueChanged-CXmDOWxx.js +0 -1
  1136. package/dist/showcase/assets/user-BGchdtV_.js +0 -1
  1137. package/dist/showcase/assets/user-plus-BifI_xVA.js +0 -1
  1138. package/dist/showcase/assets/users-Cl5yYqdg.js +0 -1
  1139. package/dist/showcase/assets/vendor-profile-BNW4FYna.js +0 -37
  1140. package/dist/showcase/assets/video-BtQPixYN.js +0 -1
  1141. package/dist/showcase/assets/wrench-CRalc5fG.js +0 -1
  1142. package/dist/showcase/assets/x-D6hUY89S.js +0 -1
  1143. package/dist/showcase/assets/zap-v_qbqeI5.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":";;;;;;;;;;;;;;;;AAoBA,IAAa,KAA4C;CACxD,OAAO;CACP,YAAY;CACZ,YAAY;CACZ,kBAAkB;EAAE,KAAK;EAAO,QAAQ;EAAU,MAAM;CAAO;AAChE,GAea,KAA0D;CACtE,OAAO;CACP,iBAAiB;CACjB,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB,iBAAiB;EAAE,KAAK;EAAO,QAAQ;EAAU,MAAM;CAAO;AAC/D,GCnCM,KAAkD;CACpD,KAAK;CACL,QAAQ;CACR,MAAM;AACV;AAEA,SAAS,GAAe,EAAE,UAAO,YAAoD;CACjF,IAAM,IAAS,GAAe;CAC9B,OACK,kBAAC,OAAD;EAAK,WAAW,EAAG,0BAA0B,2BAA2B;YAAxE,CACG,kBAAC,OAAD;GAAK,WAAU;aACV,MAAM,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,MAC3B,kBAAC,OAAD,EAEI,WAAW,EACP,wBACA,IAAI,IAAS,qBAAqB,wBACtC,EACH,GALQ,OAAO,OAAO,CAAC,GAKvB,CACJ;EACA,CAAA,GACL,kBAAC,GAAD;GAAM,MAAK;GAAK,MAAK;GAAY,KAAI;GAAO,WAAU;aACjD;EACC,CAAA,CACL;;AAEb;AAEA,SAAgB,GAAe,EAAE,SAAM,SAAS,KAAoC;CAChF,IAAM,IAAU,EAAW,IAAyB,CAAW;CAC/D,OACK,kBAAC,GAAD;EACI,MAAM,kBAAC,GAAD,EAAc,WAAU,SAAU,CAAA;EACxC,OAAO,EAAQ;EACf,WAAU;EACX,aACI,kBAAC,GAAD;GAAO,SAAQ;aACV,EAAQ;EACN,CAAA;EAEX,YACI,kBAAC,OAAD;GAAK,WAAU;aAAf,CACI,kBAAC,OAAD;IAAK,WAAU;cAAf,CACI,kBAAC,GAAD;KAAM,MAAK;KAAK,MAAK;KAAY,KAAI;eAChC,EAAK;IACJ,CAAA,GACN,kBAAC,GAAD;KAAM,MAAK;KAAK,MAAK;KAAW,KAAI;eAC/B,EAAK;IACJ,CAAA,CACL;OACJ,CAAC,CAAC,EAAK,gBACJ,kBAAC,GAAD;IAAQ,SAAQ;IAAY,aAAY;IAAQ,SAAS,EAAK;cAA9D,CACI,kBAAC,IAAD,EAAW,WAAU,eAAgB,CAAA,GACpC,EAAQ,UACL;KAEX;;YAGT,kBAAC,OAAD;GAAK,WAAU;aAAf;IACI,kBAAC,GAAD;KAAM,MAAK;KAAK,YAAW;eACtB,EAAK;IACJ,CAAA;IAEL,EAAK,SAAS,SAAS,KACpB,kBAAC,OAAD;KAAK,WAAU;eACV,EAAK,SAAS,KAAK,MAChB,kBAAC,GAAD;MAAoB,SAAQ;gBACvB;KACE,GAFK,CAEL,CACV;IACA,CAAA;IAGT,kBAAC,IAAD;KAAgB,OAAO,EAAK;KAAY,OAAO,EAAQ,iBAAiB,EAAK;IAAc,CAAA;GAC1F;;CACE,CAAA;AAEnB;;;AC7EA,SAAgB,GAAsB,EAAE,SAAM,SAAS,KAA2C;CACjG,IAAM,IAAU,EAAW,IAAgC,CAAW,GAChE,IACL,EAAK,cAAc,KAChB,EAAQ,gBAAgB,OACxB,EAAK,cAAc,KAClB,EAAQ,gBAAgB,SACxB,EAAQ,gBAAgB;CAE7B,OACC,kBAAC,GAAD;EACC,MAAM,kBAAC,GAAD,EAAc,WAAU,SAAU,CAAA;EACxC,OAAO,EAAQ;EACf,WAAU;YAEV,kBAAC,OAAD;GAAK,WAAU;aAAf;IACC,kBAAC,OAAD;KAAK,WAAU;eAAf;MACC,kBAAC,GAAD;OACC,SAAQ;iBAEP,EAAK;MACA,CAAA;MACP,kBAAC,GAAD;OACC,SAAS,EAAK;iBAEb,EAAK;MACA,CAAA;MACP,kBAAC,GAAD;OACC,SAAS,EAAK;OACd,KAAA;iBAEC,EAAK;MACA,CAAA;KACH;;IAEL,kBAAC,GAAD;KACC,OAAO,EAAQ;KACf,gBAAe;KACf,OACC,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACE,MAAM,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,MAC9B,kBAAC,QAAD,EAEC,WAAW,EACV,wBACA,IAAI,EAAK,kBACN,qBACA,UACJ,EACA,GAPK,MAAM,OAAO,CAAC,GAOnB,CACD,GACD,kBAAC,GAAD;OAAM,KAAI;OAAO,MAAK;OAAK,MAAK;OAAY,WAAU;iBAAtD,CACE,OAAO,EAAK,eAAe,GAAE,IACzB;QACD;;IAEP,CAAA;IAEA,EAAK,MAAM,SAAS,KACpB,kBAAC,GAAD;KACC,OAAO,EAAQ;KACf,gBAAe;KACf,OACC,kBAAC,QAAD;MAAM,WAAU;gBACd,EAAK,MAAM,KAAK,MAChB,kBAAC,GAAD;OAAkB,SAAQ;iBACxB;MACK,GAFK,CAEL,CACP;KACI,CAAA;IAEP,CAAA;IAGF,kBAAC,GAAD;KACC,OAAO,EAAQ;KACf,gBAAe;KACf,OAAO,kBAAC,GAAD;MAAO,SAAQ;gBAAQ,EAAK;KAAuB,CAAA;IAC1D,CAAA;IAED,kBAAC,GAAD;KACC,MAAK;KACL,YAAW;KACX,MAAK;eAEJ,EAAK;IACD,CAAA;IAEN,kBAAC,GAAD,CAAY,CAAA;IAEZ,kBAAC,OAAD;KAAK,WAAU;eAAf,CACC,kBAAC,GAAD;MACC,SAAQ;gBADT;OAGE,EAAQ;OAAiB;OAAG;MACvB;SACP,kBAAC,GAAD;MACC,MAAK;MACL,MAAK;MACL,KAAI;gBAEH,EAAK;KACD,CAAA,CACF;;GACD;;CACK,CAAA;AAEb;;;AC3GA,IAAa,IAA0D;CACtE,OAAO;CACP,iBAAiB;CACjB,cAAc;AACf;;;ACHA,SAAS,GAAW,GAAe;CAGlC,OAFI,KAAS,MAAa;EAAE,OAAO;EAAQ,SAAS;CAAmB,IACnE,KAAS,KAAY;EAAE,OAAO;EAAU,SAAS;CAAmB,IACjE;EAAE,OAAO;EAAO,SAAS;CAAiB;AAClD;AAEA,SAAgB,EAAiB,EAAE,UAAO,UAAO,YAAS,cAAW,SAAS,KAAsC;CACnH,IAAM,IAAU,EAAW,GAAgC,CAAW,GAChE,IAAM,KAAK,MAAM,IAAQ,GAAG,GAC5B,EAAE,UAAO,eAAY,GAAW,CAAK,GACrC,IAAI,IAAI,KAAK,KAAK,IAClB,IAAO,IAAK,IAAM,MAAO;CAE/B,OACC,kBAAC,GAAD;EACC,MAAM,kBAAC,GAAD,EAAU,WAAU,SAAU,CAAA;EACpC,OAAO,EAAQ;EACf,aAAa,CAAC,CAAC,KAAS,kBAAC,GAAD;GAAO,SAAQ;GAAY,MAAK;aAAS;EAAa,CAAA;EAC9E,WAAW,EAAG,4BAA4B,CAAS;YAJpD,CAMC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACC,kBAAC,OAAD;IAAK,WAAU;cAAf,CACC,kBAAC,OAAD;KAAK,OAAM;KAAK,QAAO;KAAK,SAAQ;KAAY,eAAY;eAA5D,CACC,kBAAC,UAAD;MAAQ,IAAG;MAAK,IAAG;MAAK,GAAE;MAAK,MAAK;MAAO,QAAO;MAAe,aAAY;MAAI,WAAU;KAAiB,CAAA,GAC5G,kBAAC,UAAD;MACC,IAAG;MACH,IAAG;MACH,GAAE;MACF,MAAK;MACL,QAAO;MACP,aAAY;MACZ,eAAc;MACd,iBAAiB;MACjB,kBAAkB;MAClB,WAAU;MACV,WAAW,EACV,MAAY,aAAa,gBACzB,MAAY,aAAa,gBACzB,MAAY,WAAW,kBACxB;KACA,CAAA,CACG;QACL,kBAAC,OAAD;KAAK,WAAU;eACd,kBAAC,GAAD;MAAM,QAAO;MAAW,WAAU;gBAAlC,CAA+D,GAAI,GAAO;;IACtE,CAAA,CACD;OACL,kBAAC,OAAD;IAAK,WAAU;cAAf,CACC,kBAAC,GAAD;KAAM,MAAK;KAAK,MAAK;KAAY,QAAO;KAAS,WAAU;eACzD,EAAQ;IACJ,CAAA,GACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACC,kBAAC,GAAD;MAAgB;gBAAU;KAAa,CAAA,GACtC,CAAC,CAAC,KACF,kBAAC,GAAD;MAAM,MAAK;MAAK,MAAK;MAAY,WAAU;gBACzC;KACI,CAAA,CAEH;MACD;KACD;MAEJ,CAAC,CAAC,KAAW,EAAQ,SAAS,KAC9B,kBAAC,OAAD;GAAK,WAAU;aAAf,CACC,kBAAC,GAAD;IAAM,MAAK;IAAK,MAAK;IAAY,QAAO;IAAS,WAAU;cACzD,EAAQ;GACJ,CAAA,GACL,EAAQ,KAAK,MACb,kBAAC,OAAD;IAAmB,WAAU;cAA7B,CACC,kBAAC,GAAD;KACC,OAAO,EAAE;KACT,OAAO,GAAG,KAAK,MAAM,EAAE,QAAQ,GAAG,EAAE;KACpC,MAAA;KACA,gBAAe;KACf,gBAAe;IACf,CAAA,GACD,kBAAC,OAAD;KAAK,WAAU;eACd,kBAAC,OAAD;MAAK,WAAU;MAAiC,OAAO,EAAE,OAAO,GAAG,KAAK,MAAM,EAAE,QAAQ,GAAG,EAAE,GAAG;KAAI,CAAA;IAChG,CAAA,CACD;MAXK,EAAE,KAWP,CACL,CACG;IAEI;;AAEb;AAEA,EAAiB,cAAc;;;ACrF/B,IAAa,IAAgE;CAC5E,OAAO;CACP,MAAM;AACP;;;ACIA,SAAgB,EAAoB,EAAE,gBAAa,WAAQ,cAAW,SAAS,KAAyC;CACvH,IAAM,IAAU,EAAW,GAAmC,CAAW;CAEzE,OACC,kBAAC,GAAD;EACC,MAAM,kBAAC,GAAD,EAAU,WAAU,SAAU,CAAA;EACpC,OAAO,EAAQ;EACf,aAAa,EAAQ;EACrB,WAAW,EAAG,oCAAoC,CAAS;YAE3D,kBAAC,OAAD;GAAK,WAAU;aACb,EAAY,KAAK,MAAM;IACvB,IAAM,IAAO,EAAE;IACf,OACC,kBAAC,GAAD;KAEC,SAAQ;KACR,QAAQ,kBAAC,UAAD;MAAQ,MAAK;MAAS,eAAe,IAAS,CAAC;KAAI,CAAA;KAC3D,WAAW,EACV,0IACA,8CACD;eAPD,CASE,CAAC,CAAC,KACF,kBAAC,GAAD,EAAA,UACC,kBAAC,GAAD;MAAW,MAAM;MAAM,MAAK;MAAU,MAAK;MAAU,OAAM;KAAU,CAAA,EAC3D,CAAA,GAEZ,kBAAC,GAAD;MAAa,WAAU;gBAAvB,CACC,kBAAC,GAAD,EAAA,UAAY,EAAE,MAAiB,CAAA,GAC9B,CAAC,CAAC,EAAE,eACJ,kBAAC,GAAD,EAAA,UAAkB,EAAE,YAA6B,CAAA,CAEtC;OACR;OAnBA,EAAE,EAmBF;GAER,CAAC;EACG,CAAA;CACK,CAAA;AAEb;AAEA,EAAoB,cAAc;;;ACtDlC,IAAa,IAAkD;CAC9D,OAAO;CACP,OAAO;CACP,QAAQ;CACR,OAAO;CACP,MAAM;AACP;;;ACFA,SAAgB,EAAiB,EAChC,UACA,gBACA,iBACA,SACA,cACA,cACA,SAAS,KACgB;CACzB,IAAM,IAAU,EAAW,GAA4B,CAAW,GAC5D,IAAQ,IAAc,GACtB,IAAM,IAAY,KAAK,IAAI,KAAK,KAAK,MAAO,IAAQ,IAAa,GAAG,CAAC,IAAI;CAE/E,OACC,kBAAC,GAAD;EACC,MAAM,kBAAC,GAAD,EAAK,WAAU,SAAU,CAAA;EAC/B,OAAO,EAAQ;EACf,aAAa,CAAC,CAAC,KAAS,kBAAC,GAAD;GAAO,SAAQ;aAAa;EAAa,CAAA;EACjE,WAAW,EAAG,6BAA6B,CAAS;YAJrD;GAMC,kBAAC,OAAD;IAAK,WAAU;cACb;KACA;MAAE,OAAO,EAAQ;MAAO,OAAO;KAAY;KAC3C;MAAE,OAAO,EAAQ;MAAQ,OAAO;KAAa;KAC7C;MAAE,OAAO,EAAQ;MAAO,OAAO;KAAM;IACtC,EAAE,KAAK,MACN,kBAAC,OAAD;KAAsB,WAAU;eAAhC,CACC,kBAAC,GAAD;MAAM,MAAK;MAAK,MAAK;MAAY,QAAO;MAAS,WAAU;gBAA4B,EAAK;KAAY,CAAA,GACxG,kBAAC,GAAD;MAAM,MAAK;MAAK,QAAO;MAAW,WAAU;gBAAgB,EAAK,MAAM,eAAe;KAAQ,CAAA,CAC1F;OAHK,EAAK,KAGV,CACL;GACG,CAAA;GACJ,CAAC,CAAC,KACF,kBAAC,OAAD;IAAK,WAAU;cAAf,CACC,kBAAC,GAAD;KACC,OAAO,GAAG,EAAM,eAAe,EAAE,KAAK,EAAU,eAAe;KAC/D,OAAO,GAAG,EAAI;KACd,MAAA;KACA,gBAAe;KACf,gBAAe;IACf,CAAA,GACD,kBAAC,OAAD;KAAK,WAAU;eACd,kBAAC,OAAD;MAAK,WAAU;MAAiC,OAAO,EAAE,OAAO,GAAG,EAAI,GAAG;KAAI,CAAA;IAC1E,CAAA,CACD;;GAEL,CAAC,CAAC,KACF,kBAAC,GAAD;IACC,WAAU;IACV,OAAO,EAAQ;IACf,OAAO;IACP,MAAA;IACA,gBAAe;IACf,gBAAe;GACf,CAAA;EAEQ;;AAEb;AAEA,EAAiB,cAAc;;;AC7D/B,IAAa,IAA8C;CAC1D,QAAQ;CACR,cAAc;CACd,gBAAgB;CAChB,oBAAoB;CACpB,QAAQ;CACR,QAAQ;AACT;;;ACCA,SAAgB,EAAW,EAC1B,UACA,WACA,oBACA,kBAAe,IACf,eAAY,IACZ,cACA,SAAS,KACU;CACnB,IAAM,IAAU,EAAW,GAA0B,CAAW,GAC1D,CAAC,GAAc,KAAmB,EAAyB,IAAI,GAC/D,CAAC,GAAS,KAAc,EAAS,EAAE,GACnC,IAAO,KAAS,GAEhB,KAAQ,MAAyB;EACtC,IAAM,IAAW,MAAS,IAAO,OAAO;EAExC,AADI,MAAU,KAAA,KAAW,EAAgB,CAAQ,GACjD,IAAS,CAAQ;CAClB;CAkBA,OAhBI,IAEF,kBAAC,OAAD;EACC,WAAW,EAAG,0BACb,yEACA,CACD;YAJD,CAMC,kBAAC,GAAD,EAAU,WAAU,wBAAyB,CAAA,GAC7C,kBAAC,GAAD;GAAM,MAAK;GAAK,MAAK;GAAU,QAAO;aACpC,EAAQ;EACJ,CAAA,CACF;MAKN,kBAAC,OAAD;EAAK,WAAW,EAAG,qDAAqD,CAAS;YAAjF,CACC,kBAAC,OAAD;GAAK,WAAU;aAAf;IACC,kBAAC,GAAD;KAAM,MAAK;KAAK,MAAK;eAAa,EAAQ;IAAa,CAAA;IACvD,kBAAC,GAAD;KACC,MAAK;KACL,SAAQ;KACR,aAAa,MAAS,OAAO,UAAU;KACvC,MAAK;KACL,cAAY,EAAQ;KACpB,gBAAc,MAAS;KACvB,eAAe,EAAK,IAAI;KACxB,WAAW,EAAG,MAAS,QAAQ,gDAAgD;eAE/E,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;IACzB,CAAA;IACR,kBAAC,GAAD;KACC,MAAK;KACL,SAAQ;KACR,aAAa,MAAS,SAAS,UAAU;KACzC,MAAK;KACL,cAAY,EAAQ;KACpB,gBAAc,MAAS;KACvB,eAAe,EAAK,MAAM;KAC1B,WAAW,EAAG,MAAS,UAAU,4DAA4D;eAE7F,kBAAC,IAAD,EAAY,WAAU,WAAY,CAAA;IAC3B,CAAA;GACJ;MAEJ,CAAC,CAAC,KAAgB,CAAC,CAAC,KACpB,kBAAC,OAAD;GAAK,WAAU;aAAf,CACC,kBAAC,GAAD;IACC,OAAO;IACP,WAAW,MAAM,EAAY,EAAE,OAA+B,KAAK;IACnE,aAAa,EAAQ;IACrB,SAAS;GACT,CAAA,GACD,kBAAC,OAAD;IAAK,WAAU;cACd,kBAAC,GAAD;KACC,MAAK;KACL,eAAe;MAEd,AADA,IAAkB,GAAS,CAAI,GAC/B,EAAW,EAAE;KACd;KACA,UAAU,CAAC,EAAQ,KAAK;eAEvB,EAAQ;IACF,CAAA;GACJ,CAAA,CACD;IAEF;;AAEP;AAEA,EAAW,cAAc;;;AC3FzB,IAAa,IAA8C;CAC1D,OAAO;CACP,cAAc,MAAe,MAAM,IAAI,aAAa,GAAG,EAAE;CACzD,QAAQ;CACR,UAAU;CACV,OAAO;CACP,WAAW;AACZ;;;ACIA,SAAgB,EAAW,EAC1B,YACA,qBAAkB,IAClB,sBAAmB,GACnB,cACA,SAAS,KACU;CAGnB,IAAM,IAAU,EAAa,GAA0B,CAAW,GAC5D,CAAC,GAAU,KAAe,EAAS,CAAe,GAClD,IAAU,IAAW,IAAU,EAAQ,MAAM,GAAG,KAAK,IAAI,GAAG,CAAgB,CAAC,GAC7E,IAAS,EAAQ,SAAS,EAAQ;CAExC,OACC,kBAAC,OAAD;EACC,WAAW,EACV,0BACA,iFACA,oBACA,CACD;YAND,CAQC,kBAAC,GAAD;GACC,MAAK;GACL,SAAQ;GACR,aAAY;GACZ,MAAK;GACL,eAAe,GAAa,MAAM,CAAC,CAAC;GACpC,WAAW,EACV,yFACA,+DACD;GACA,iBAAe;GACf,cAAY,IAAW,EAAQ,WAAW,EAAQ;aAXnD;IAaC,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;IAC7B,kBAAC,GAAD;KAAM,MAAK;KAAK,QAAO;eAAvB;MACE,EAAQ;MAAM;MAAI,EAAQ,YAAY,EAAQ,MAAM;KAChD;;IAEL,EADA,IACC,IAEA,GAFD,EAAa,WAAU,WAAY,CAEC;GAE9B;OAEN,KAAY,IAAmB,MAChC,kBAAC,GAAD,EAAA,UAAA,CACE,EAAQ,KAAK,GAAG,MAChB,kBAAC,IAAD;GAAwB,QAAQ;GAAG,OAAO,IAAI;GAAY;EAAU,GAAlD,EAAE,EAAgD,CACpE,GACA,CAAC,KAAY,IAAS,KACtB,kBAAC,GAAD;GAAM,MAAK;GAAK,MAAK;aAArB;IAAiC;IAC9B;IAAO;GACJ;IAEG,EAAA,CAAA,CAER;;AAEP;AAEA,EAAW,cAAc;AAEzB,SAAS,GAAY,EACpB,WACA,UACA,cAKE;CACF,IAAM,IACL,OAAO,EAAO,aAAc,WACzB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,EAAO,SAAS,CAAC,IAAI,GAAG,IAC3D,MAEE,IAAU,EAAO,MAAM,MAAM,QAC7B,IAAa,EAAO,MACvB;EAAE,MAAM,EAAO;EAAK,QAAQ;EAAmB,KAAK;CAAsB,IAC1E,CAAC;CAEJ,OACC,kBAAC,GAAD;EAAM,SAAQ;EAAU,MAAK;EAAQ,WAAU;YAA/C;GACC,kBAAC,GAAD,EAAA,UACC,kBAAC,QAAD;IAAM,WAAU;cACd;GACI,CAAA,EACI,CAAA;GACX,kBAAC,GAAD,EAAA,UAAA;IACC,kBAAC,GAAD;KAAW,WAAU;eACpB,kBAAC,GAAD;MACC,GAAI;MACJ,WAAW,EACV,YACA,EAAO,OAAO,oCACf;gBALD,CAOE,EAAO,OACP,CAAC,CAAC,EAAO,OAAO,kBAAC,GAAD,EAAc,WAAU,oCAAqC,CAAA,CACtE;;IACC,CAAA;IACV,CAAC,CAAC,EAAO,WAAW,kBAAC,GAAD;KAAiB,OAAO;eAAI,EAAO;IAAyB,CAAA;KAC/E,EAAO,aAAa,EAAO,gBAC5B,kBAAC,GAAD;KAAY,WAAU;eAAtB;MACE,CAAC,CAAC,EAAO,aACT,kBAAC,GAAD;OAAM,MAAK;OAAK,MAAK;iBACnB,EAAO;MACH,CAAA;MAEN,CAAC,CAAC,EAAO,aAAa,CAAC,CAAC,EAAO,eAC/B,kBAAC,GAAD;OAAM,MAAK;OAAK,MAAK;iBAAW;MAAO,CAAA;MAEvC,CAAC,CAAC,EAAO,eACT,kBAAC,GAAD;OAAM,MAAK;OAAK,MAAK;OAAW,WAAU;iBACxC,EAAO;MACH,CAAA;KAEI;;GAED,EAAA,CAAA;GACZ,MAAiB,QACjB,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACC,kBAAC,GAAD;KAAM,MAAK;KAAK,MAAK;KAAY,QAAO;KAAS,WAAU;eAA3D,CACE,GAAa,GACT;QACN,kBAAC,OAAD;KACC,WAAU;KACV,cAAY,EAAQ;eAEpB,kBAAC,OAAD;MACC,WAAU;MACV,OAAO,EAAE,OAAO,GAAG,EAAa,GAAG;KACnC,CAAA;IACG,CAAA,CACO;;EAET;;AAER;;;ACrKA,IAAa,IAA0D;CACtE,cAAc;CACd,UAAU;AACX;;;ACGA,SAAS,GAAY,GAAkB,GAAiD;CACvF,OAAO,EAAS,QAAQ,yBAAyB,GAAG,MAAM;EACzD,IAAM,IAAI,EAAO;EACjB,OAAO,MAAM,KAAA,IAAY,IAAI,OAAO,CAAC;CACtC,CAAC;AACF;AAEA,SAAgB,EAAiB,EAChC,UACA,UACA,QACA,aACA,cACA,SAAS,KACgB;CACzB,IAAM,IAAU,EAAa,GAAgC,CAAW,GAClE,IAAY,GAAY,EAAQ,UAAU;EAC/C,GAAG;EACH,OAAO,KAAS;CACjB,CAAC,GACK,IAAU,IAAQ,GAAG,EAAQ,aAAa,GAAG,EAAM,IAAI,MAAU,GAAG,EAAQ,aAAa,GAAG,KAM5F,IAAU,EACf,oFACA,iDACA,kCACA,0CACA,kCACA,8EACA,CACD;CAsCA,OApCI,IAEF,kBAAC,KAAD;EACC,MAAM;EACN,QAAO;EACP,KAAI;EACJ,OAAO;EACP,cAAY;EACZ,WAAW,EAAG,iCAAiC,CAAO;YAEtD,kBAAC,GAAD;GAAM,KAAI;GAAO,MAAK;GAAK,QAAO;GAAS,WAAU;aACnD;EACI,CAAA;CACJ,CAAA,IAID,IAEF,kBAAC,GAAD;EACC,MAAK;EACL,SAAQ;EACR,aAAY;EACZ,MAAK;EACL,SAAS;EACT,OAAO;EACP,cAAY;EACZ,WAAW,EAAG,iCAAiC,CAAO;YAEtD,kBAAC,GAAD;GAAM,KAAI;GAAO,MAAK;GAAK,QAAO;GAAS,WAAU;aACnD;EACI,CAAA;CACC,CAAA,IAKT,kBAAC,QAAD;EACC,OAAO;EACP,cAAY;EACZ,WAAW,EAAG,iCAAiC,CAAO;YAEtD,kBAAC,GAAD;GAAM,KAAI;GAAO,MAAK;GAAK,QAAO;GAAS,WAAU;aACnD;EACI,CAAA;CACD,CAAA;AAER;AAEA,EAAiB,cAAc;;;ACxF/B,IAAa,IAAoD;CAChE,cAAc;CACd,cAAc;CACd,gBAAgB;CAChB,cAAc;CACd,gBAAgB;CAChB,sBAAsB;AACvB;;;ACLA,SAAgB,EAAc,EAC7B,SACA,YACA,gBACA,YACA,gBACA,aACA,eACA,oBACA,aACA,aACA,cACA,SAAS,KACa;CACtB,IAAM,IAAU,EAAW,GAA6B,CAAW;CAUnE,OACC,kBATe,IAAW,WAAW,OASrC;EACC,GATmB,IAClB;GACA,MAAM;GACN,SAAS;EACV,IACC,CAAC;EAKF,WAAW,EAAG,8BACb,qEACA,KACC,6KACD,CACD;YAPD,CASC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACC,kBAAC,QAAD;IACC,eAAA;IACA,WAAU;cAEV,kBAAC,IAAD,EAAS,WAAU,SAAU,CAAA;GACxB,CAAA,GACN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACC,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACC,kBAAC,GAAD;OAAM,QAAO;OAAW,WAAU;iBAChC;MACI,CAAA,GACL,CAAC,CAAC,KACF,kBAAC,GAAD;OAAO,SAAQ;OAAY,WAAU;iBAArC,CAA8D,KAC3D,EAAQ,QAAQ,MAAM,EAAE,CACpB;QAEJ;;KACJ,CAAC,CAAC,KACF,kBAAC,GAAD;MAAM,MAAK;MAAK,MAAK;MAAY,WAAU;gBACzC;KACI,CAAA;MAGL,KAAW,KAAe,MAAoB,KAAA,MAC/C,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,CAAC,CAAC,KACF,kBAAC,GAAD;QAAU,OAAO,EAAQ;QAAc,OAAO;OAAU,CAAA;OAExD,CAAC,CAAC,KACF,kBAAC,GAAD;QAAU,OAAO,EAAQ;QAAgB,OAAO;OAAc,CAAA;OAE9D,MAAoB,KAAA,KACpB,kBAAC,GAAD;QACC,OAAO,EAAQ;QACf,OAAO,OAAO,CAAe;OAC7B,CAAA;MAEE;;KAGL,CAAC,CAAC,GAAU,UACZ,kBAAC,OAAD;MAAK,WAAU;gBACb,EAAS,MAAM,GAAG,CAAC,EAAE,KAAK,MAC1B,kBAAC,GAAD;OAAgB,SAAQ;iBACtB;MACK,GAFK,CAEL,CACP;KACG,CAAA;IAEF;KACD;OAEH,KAAY,MACb,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,CAAC,CAAC,KACF,kBAAC,KAAD;KACC,MAAM;KACN,QAAO;KACP,KAAI;KACJ,UAAU,MAAM,EAAE,gBAAgB;KAClC,cAAY,EAAQ;KACpB,WAAU;eANX;MAQC,kBAAC,IAAD,EAAO,WAAU,WAAY,CAAA;MAC7B,kBAAC,GAAD;OAAM,KAAI;OAAO,MAAK;OAAK,QAAO;iBAAS;MAErC,CAAA;MACN,kBAAC,GAAD,EAAc,WAAU,SAAU,CAAA;KAChC;;IAEH,CAAC,CAAC,KAAY,CAAC,CAAC,KAChB,kBAAC,QAAD;KAAM,eAAA;KAAY,WAAU;eAA2B;IAEjD,CAAA;IAEN,CAAC,CAAC,KACF,kBAAC,KAAD;KACC,MAAM;KACN,QAAO;KACP,KAAI;KACJ,UAAU,MAAM,EAAE,gBAAgB;KAClC,cAAY,EAAQ;KACpB,WAAU;eANX;MAQC,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;MAC7B,kBAAC,GAAD;OAAM,KAAI;OAAO,MAAK;OAAK,QAAO;iBAAS;MAErC,CAAA;MACN,kBAAC,GAAD,EAAc,WAAU,SAAU,CAAA;KAChC;;GAEA;IAEE;;AAEX;AAEA,EAAc,cAAc;AAE5B,SAAS,EAAS,EAAE,UAAO,YAA2C;CACrE,OACC,kBAAC,OAAD;EAAK,WAAU;YAAf,CACC,kBAAC,GAAD;GAAM,MAAK;GAAK,MAAK;aACnB;EACI,CAAA,GACN,kBAAC,GAAD;GAAM,MAAK;GAAK,MAAK;GAAY,QAAO;GAAS,WAAU;aACzD;EACI,CAAA,CACF;;AAEP;;;ACjIA,IAAa,IAA8C;CAC1D,YAAY;CACZ,cAAc;CACd,cAAc;EACb,OAAO;EACP,UAAU;EACV,SAAS;EACT,SAAS;CACV;AACD,GCTM,KAA6E;CAClF,OAAO;EAAE,KAAK;EAAqB,MAAM;CAA6B;CACtE,UAAU;EAAE,KAAK;EAAqB,MAAM;CAA6B;CACzE,SAAS;EAAE,KAAK;EAAyB,MAAM;CAAqC;CACpF,SAAS;EAAE,KAAK;EAAkB,MAAM;CAAuB;AAChE;AAEA,SAAS,GAAa,GAA0B;CAC/C,IAAM,IAAM,EAAK,MAAM,GAAG,EAAE,IAAI,GAAG,YAAY,KAAK;CAOpD,OANI;EAAC;EAAM;EAAO;EAAM;EAAO;EAAO;EAAO;EAAQ;EAAO;EAAQ;EAAQ;EAAM;EAAM;EAAM;CAAI,EAAE,SAAS,CAAG,IACxG,IAEJ;EAAC;EAAM;EAAO;CAAK,EAAE,SAAS,CAAG,IAC7B,IAED;AACR;AAEA,SAAgB,EAAW,EAC1B,UACA,eACA,aACA,sBAAmB,IACnB,YAAS,IACT,cACA,SAAS,KACU;CACnB,IAAM,IAAU,EAAW,GAA0B,CAAW;CAChE,OACC,kBAAC,OAAD;EACC,WAAW,EAAG,2BACb,gFACA,CACD;YAEA,kBAAC,MAAD,EAAA,UACE,EAAM,KAAK,MACX,kBAAC,GAAD;GAEO;GACN,OAAO;GACK;GACF;GACQ;GACV;GACC;EACT,GARK,EAAK,EAQV,CACD,EACE,CAAA;CACA,CAAA;AAEP;AAEA,EAAW,cAAc;AAEzB,SAAS,EAAQ,EAChB,SACA,UACA,eACA,aACA,qBACA,WACA,cASE;CACF,IAAM,CAAC,GAAM,KAAW,EAAS,EAAK,mBAAmB,IAAQ,CAAC,GAC5D,IAAQ,EAAK,SAAS,aACtB,IAAa,MAAe,EAAK,IACjC,IAAS,EAAK,QACd,IAAO,IAAS,GAAY,KAAU,KAAA,GAEtC,IACL,EAAK,SACJ,IAAS,IAAO,KAAa,KAAU,GAAa,EAAK,IAAI,IAEzD,UAAoB;EACzB,AAAI,IAAO,GAAS,MAAM,CAAC,CAAC,IACvB,IAAW,CAAI;CACrB,GAEM,IACL,kBAAA,IAAA,EAAA,UAAA,CACE,CAAC,CAAC,KAAU,CAAC,KACb,kBAAC,QAAD;EACC,WAAW,EACV,mEACA,4CACA,GAAM,IACP;YAEC,EAAQ,aAAa;CACjB,CAAA,GAEN,CAAC,CAAC,EAAK,YACP,kBAAC,GAAD;EAAM,KAAI;EAAO,MAAK;EAAK,MAAK;EAAY,WAAU;YACpD,EAAK;CACD,CAAA,CAEN,EAAA,CAAA;CAGH,OACC,kBAAC,MAAD,EAAA,UAAA,CACC,kBAAC,GAAD;EACC,MAAK;EACL,SAAQ;EACR,aAAY;EACZ,MAAK;EACL,SAAS;EACT,iBAAe,IAAQ,IAAO,KAAA;EAC9B,cACC,IAAS,IAAO,EAAQ,eAAe,EAAQ,aAAc,KAAA;EAE9D,WAAW,EACV,2HACA,qBACA,4BACA,KAAc,iBACd,CAAC,CAAC,KACD,yEACD,GAAM,KACN,MAAW,aAAa,0BACzB;EACA,OAAO,EAAE,aAAa,IAAI,IAAQ,EAAO;YApB1C;GAsBE,IAEC,EADD,IACE,IAEA,GAFD,EAAa,WAAU,0CAA2C,CAEC,IAGpE,kBAAC,QAAD;IAAM,eAAA;IAAY,WAAU;GAAqB,CAAA;GAElD,kBAAC,GAAD,EACC,WAAW,EACV,qBACA,IAAQ,0BAA0B,0BACnC,EACA,CAAA;GACD,kBAAC,QAAD;IACC,WAAW,EACV,mBACA,MAAW,aAAa,cACzB;cAEC,EAAK;GACD,CAAA;GACN,kBAAC,QAAD;IAAM,WAAU;cAAqC;GAAe,CAAA;EAC7D;KACP,KAAS,KAAQ,CAAC,CAAC,EAAK,UAAU,UAClC,kBAAC,MAAD,EAAA,UACE,EAAK,SAAS,KAAK,MACnB,kBAAC,GAAD;EAEC,MAAM;EACN,OAAO,IAAQ;EACH;EACF;EACQ;EACV;EACC;CACT,GARK,EAAM,EAQX,CACD,EACE,CAAA,CAEF,EAAA,CAAA;AAEN"}
@@ -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-BMiPFJIb.cjs"),r=require("../../../_shared/typography-GtkgK9QX.cjs"),i=require("../../../_shared/cards-Cu6p1Brd.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