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.cjs","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.cjs","names":[],"sources":["../../../../src/components/composed/ai/ai.strings.ts","../../../../src/components/composed/ai/ai-summary/ai-summary.tsx","../../../../src/components/composed/ai/ai-classification/ai-classification.tsx","../../../../src/components/composed/ai/ai-confidence/types.ts","../../../../src/components/composed/ai/ai-confidence/ai-confidence.tsx","../../../../src/components/composed/ai/ai-prompt-suggestions/types.ts","../../../../src/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.tsx","../../../../src/components/composed/ai/ai-token-usage/types.ts","../../../../src/components/composed/ai/ai-token-usage/ai-token-usage.tsx","../../../../src/components/composed/ai/ai-feedback/types.ts","../../../../src/components/composed/ai/ai-feedback/ai-feedback.tsx","../../../../src/components/composed/ai/ai-citation/types.ts","../../../../src/components/composed/ai/ai-citation/ai-citation.tsx","../../../../src/components/composed/ai/ai-inline-citation/types.ts","../../../../src/components/composed/ai/ai-inline-citation/ai-inline-citation.tsx","../../../../src/components/composed/ai/ai-package-info/types.ts","../../../../src/components/composed/ai/ai-package-info/ai-package-info.tsx","../../../../src/components/composed/ai/ai-file-tree/types.ts","../../../../src/components/composed/ai/ai-file-tree/ai-file-tree.tsx"],"sourcesContent":["/**\n * Shared default strings for `composed/ai` components.\n *\n * Each component accepts a `strings` prop deep-merged over the default subset\n * it reads. Consumers wire backend i18n at the call site:\n *\n * <AiSummaryBlock strings={{ title: t('ai.summary.title') }} … />\n */\n\nexport interface AiSummaryStrings {\n\t/** Card title rendered in the header. */\n\ttitle: string;\n\t/** Suffix badge label (e.g. \"AI\"). */\n\tbadgeLabel: string;\n\t/** Footer regenerate button label. */\n\tregenerate: string;\n\t/** Confidence-bar level labels. */\n\tconfidenceLevels: { low: string; medium: string; high: string };\n}\n\nexport const defaultAiSummaryStrings: AiSummaryStrings = {\n\ttitle: 'AI Summary',\n\tbadgeLabel: 'AI',\n\tregenerate: 'Regenerate',\n\tconfidenceLevels: { low: 'low', medium: 'medium', high: 'high' },\n};\n\nexport interface AiClassificationStrings {\n\t/** Card title rendered in the header. */\n\ttitle: string;\n\t/** Inline-stat row labels. */\n\tcomplexityLabel: string;\n\tflagsLabel: string;\n\tnextStepLabel: string;\n\t/** Confidence pill prefix (e.g. \"Confidence: High\"). */\n\tconfidencePrefix: string;\n\t/** Confidence band labels. */\n\tconfidenceBands: { low: string; medium: string; high: string };\n}\n\nexport const defaultAiClassificationStrings: AiClassificationStrings = {\n\ttitle: 'Classification',\n\tcomplexityLabel: 'Complexity',\n\tflagsLabel: 'Flags',\n\tnextStepLabel: 'Next Step',\n\tconfidencePrefix: 'Confidence',\n\tconfidenceBands: { low: 'Low', medium: 'Medium', high: 'High' },\n};\n","import { BrainCircuit, RefreshCw } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport { Text } from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiSummaryStrings } from '../ai.strings';\nimport type { AiSummaryBlockProps, ConfidenceLevel } from './types';\n\nconst confidenceBars: Record<ConfidenceLevel, number> = {\n low: 1,\n medium: 2,\n high: 3,\n};\n\nfunction ConfidenceBars({ level, label }: { level: ConfidenceLevel; label: string }) {\n const filled = confidenceBars[level];\n return (\n\t <div className={cn('ai-summary--confidence', 'flex items-center gap-1.5')}>\n <div className=\"flex items-center gap-0.5\">\n {Array.from({ length: 3 }, (_, i) => (\n <div\n key={`bar-${String(i)}`}\n className={cn(\n 'h-2.5 w-1 rounded-sm',\n i < filled ? 'bg-foreground/60' : 'bg-muted-foreground/20',\n )}\n />\n ))}\n </div>\n <Text size=\"xs\" type=\"secondary\" tag=\"span\" className=\"capitalize\">\n {label}\n </Text>\n </div>\n );\n}\n\nexport function AiSummaryBlock({ data, strings: stringsProp }: AiSummaryBlockProps) {\n const strings = useStrings(defaultAiSummaryStrings, stringsProp);\n return (\n\t <SmartCard\n\t icon={<BrainCircuit className=\"size-4\" />}\n\t title={strings.title}\n\t className=\"ai-summary--component\"\n titleSuffix={\n <Badge variant=\"secondary\">\n {strings.badgeLabel}\n </Badge>\n }\n footerText={\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Text size=\"xs\" type=\"secondary\" tag=\"span\">\n {data.generatedAt}\n </Text>\n <Text size=\"xs\" type=\"discrete\" tag=\"span\">\n {data.model}\n </Text>\n </div>\n {!!data.onRegenerate && (\n <Button variant=\"secondary\" buttonStyle=\"ghost\" onClick={data.onRegenerate}>\n <RefreshCw className=\"mr-1 h-3 w-3\" />\n {strings.regenerate}\n </Button>\n )}\n </div>\n }\n >\n <div className=\"space-y-3\">\n <Text size=\"sm\" lineHeight=\"relaxed\">\n {data.summary}\n </Text>\n\n {data.entities.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {data.entities.map((entity) => (\n <Badge key={entity} variant=\"secondary\">\n {entity}\n </Badge>\n ))}\n </div>\n )}\n\n <ConfidenceBars level={data.confidence} label={strings.confidenceLevels[data.confidence]} />\n </div>\n </SmartCard>\n );\n}\n","import { BrainCircuit } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge/badge';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport { Text } from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiClassificationStrings } from '../ai.strings';\nimport type { AiClassificationPanelProps } from './types';\n\nexport function AiClassificationPanel({ data, strings: stringsProp }: AiClassificationPanelProps) {\n\tconst strings = useStrings(defaultAiClassificationStrings, stringsProp);\n\tconst confidenceLabel =\n\t\tdata.confidence >= 0.9\n\t\t\t? strings.confidenceBands.high\n\t\t\t: data.confidence >= 0.7\n\t\t\t\t? strings.confidenceBands.medium\n\t\t\t\t: strings.confidenceBands.low;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<BrainCircuit className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName=\"ai-classification--component\"\n\t\t>\n\t\t\t<div className=\"space-y-3\">\n\t\t\t\t<div className=\"flex flex-wrap items-center gap-1.5\">\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.requestType}\n\t\t\t\t\t</Badge>\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant={data.urgencyVariant}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.urgency}\n\t\t\t\t\t</Badge>\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant={data.toneVariant}\n\t\t\t\t\t\tdot\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.tone}\n\t\t\t\t\t</Badge>\n\t\t\t\t</div>\n\n\t\t\t\t<InlineStat\n\t\t\t\t\tlabel={strings.complexityLabel}\n\t\t\t\t\tlabelClassName=\"text-sm font-medium text-foreground\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t{Array.from({ length: 5 }, (_, i) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tkey={`cx-${String(i)}`}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'h-1.5 w-3 rounded-sm',\n\t\t\t\t\t\t\t\t\t\ti < data.complexityScore\n\t\t\t\t\t\t\t\t\t\t\t? 'bg-foreground/60'\n\t\t\t\t\t\t\t\t\t\t\t: 'bg-muted',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"ml-1\">\n\t\t\t\t\t\t\t\t{String(data.complexityScore)}/5\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t/>\n\n\t\t\t\t{data.flags.length > 0 && (\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tlabel={strings.flagsLabel}\n\t\t\t\t\t\tlabelClassName=\"text-sm font-medium text-foreground\"\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t<span className=\"flex gap-1\">\n\t\t\t\t\t\t\t\t{data.flags.map((flag) => (\n\t\t\t\t\t\t\t\t\t<Badge key={flag} variant=\"warning\">\n\t\t\t\t\t\t\t\t\t\t{flag}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<InlineStat\n\t\t\t\t\tlabel={strings.nextStepLabel}\n\t\t\t\t\tlabelClassName=\"text-sm font-medium text-foreground\"\n\t\t\t\t\tvalue={<Badge variant=\"info\">{data.suggestedAction}</Badge>}\n\t\t\t\t/>\n\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t{data.summary}\n\t\t\t\t</Text>\n\n\t\t\t\t<Separator />\n\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.confidencePrefix}: {confidenceLabel}\n\t\t\t\t\t</Badge>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\ttype=\"discrete\"\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.model}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface AiConfidenceFactor {\n\tlabel: string;\n\tscore: number; // 0–1\n}\n\nexport interface AiConfidenceCardStrings {\n\ttitle: string;\n\tconfidenceLabel: string;\n\tfactorsLabel: string;\n}\n\nexport const defaultAiConfidenceCardStrings: AiConfidenceCardStrings = {\n\ttitle: 'AI Confidence',\n\tconfidenceLabel: 'Overall',\n\tfactorsLabel: 'Contributing factors',\n};\n\nexport interface AiConfidenceCardProps {\n\tscore: number; // 0–1\n\tmodel?: string;\n\tfactors?: AiConfidenceFactor[];\n\tclassName?: string;\n\tstrings?: StringsProp<AiConfidenceCardStrings>;\n}\n","/**\n * AiConfidenceCard — visualises an AI model's overall confidence with a circular\n * progress dial and a list of weighted contributing factors. Strings are overridable.\n */\nimport { Sparkles } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiConfidenceCardStrings, type AiConfidenceCardProps } from './types';\n\nfunction levelLabel(score: number) {\n\tif (score >= 0.85) return { label: 'High', variant: 'success' as const };\n\tif (score >= 0.6) return { label: 'Medium', variant: 'warning' as const };\n\treturn { label: 'Low', variant: 'error' as const };\n}\n\nexport function AiConfidenceCard({ score, model, factors, className, strings: stringsProp }: AiConfidenceCardProps) {\n\tconst strings = useStrings(defaultAiConfidenceCardStrings, stringsProp);\n\tconst pct = Math.round(score * 100);\n\tconst { label, variant } = levelLabel(score);\n\tconst c = 2 * Math.PI * 24;\n\tconst dash = c - (pct / 100) * c;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Sparkles className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={!!model && <Badge variant=\"secondary\" size=\"small\">{model}</Badge>}\n\t\t\tclassName={cn('ai-confidence--component', className)}\n\t\t>\n\t\t\t<div className=\"grid gap-space-xl md:grid-cols-[auto_minmax(0,1fr)] md:items-center\">\n\t\t\t\t<div className=\"relative shrink-0\">\n\t\t\t\t\t<svg width=\"56\" height=\"56\" viewBox=\"0 0 64 64\" aria-hidden=\"true\">\n\t\t\t\t\t\t<circle cx=\"32\" cy=\"32\" r=\"24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"5\" className=\"text-muted/60\" />\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tcx=\"32\"\n\t\t\t\t\t\t\tcy=\"32\"\n\t\t\t\t\t\t\tr=\"24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"5\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeDasharray={c}\n\t\t\t\t\t\t\tstrokeDashoffset={dash}\n\t\t\t\t\t\t\ttransform=\"rotate(-90 32 32)\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\tvariant === 'success' && 'text-success',\n\t\t\t\t\t\t\t\tvariant === 'warning' && 'text-warning',\n\t\t\t\t\t\t\t\tvariant === 'error' && 'text-destructive',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n\t\t\t\t\t\t<Text weight=\"semibold\" className=\"tabular-nums leading-none\">{pct}%</Text>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"grid min-w-0 gap-space-sm\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t{strings.confidenceLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-space-sm\">\n\t\t\t\t\t\t<Badge variant={variant}>{label}</Badge>\n\t\t\t\t\t\t{!!model && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t\t{model}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{!!factors && factors.length > 0 && (\n\t\t\t\t<div className=\"mt-space-xl grid gap-space-md\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t{strings.factorsLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{factors.map((f) => (\n\t\t\t\t\t\t<div key={f.label} className=\"grid gap-space-sm\">\n\t\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\t\tlabel={f.label}\n\t\t\t\t\t\t\t\tvalue={`${Math.round(f.score * 100)}%`}\n\t\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\t\tlabelClassName=\"text-xs font-medium text-foreground\"\n\t\t\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"h-1.5 w-full overflow-hidden rounded-full bg-muted/70\">\n\t\t\t\t\t\t\t\t<div className=\"h-full rounded-full bg-primary\" style={{ width: `${Math.round(f.score * 100)}%` }} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nAiConfidenceCard.displayName = 'AiConfidenceCard';\n","import type { LucideIcon } from 'lucide-react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface AiPromptSuggestion {\n\tid: string;\n\tlabel: string;\n\tdescription?: string;\n\ticon?: LucideIcon;\n}\n\nexport interface AiPromptSuggestionsStrings {\n\ttitle: string;\n\thint: string;\n}\n\nexport const defaultAiPromptSuggestionsStrings: AiPromptSuggestionsStrings = {\n\ttitle: 'Try asking',\n\thint: 'Tap a prompt to start',\n};\n\nexport interface AiPromptSuggestionsProps {\n\tsuggestions: AiPromptSuggestion[];\n\tonPick?: (suggestion: AiPromptSuggestion) => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AiPromptSuggestionsStrings>;\n}\n","/**\n * AiPromptSuggestions — grid of clickable prompt cards.\n * Use to seed a chat or assistant input with curated starting prompts.\n */\nimport { Sparkles } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { IconBadge } from '@/components/base/display';\nimport {\n\tItem,\n\tItemContent,\n\tItemDescription,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { cn } from '@/lib/utils';\nimport { useStrings } from '@/lib/strings';\n\nimport {\n\tdefaultAiPromptSuggestionsStrings,\n\ttype AiPromptSuggestionsProps,\n} from './types';\n\nexport function AiPromptSuggestions({ suggestions, onPick, className, strings: stringsProp }: AiPromptSuggestionsProps) {\n\tconst strings = useStrings(defaultAiPromptSuggestionsStrings, stringsProp);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Sparkles className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.hint}\n\t\t\tclassName={cn('ai-prompt-suggestions--component', className)}\n\t\t>\n\t\t\t<div className=\"grid grid-cols-[repeat(auto-fit,minmax(min(15rem,100%),1fr))] gap-space-xl\">\n\t\t\t\t{suggestions.map((s) => {\n\t\t\t\t\tconst Icon = s.icon;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\tkey={s.id}\n\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\trender={<button type=\"button\" onClick={() => onPick?.(s)} />}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'ai-prompt-suggestions--item h-full items-start gap-space-lg px-surface py-surface-sm transition-[border-color,background] duration-150',\n\t\t\t\t\t\t\t\t'hover:border-foreground/20 hover:bg-muted/40',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t\t<IconBadge icon={Icon} tone=\"primary\" size=\"default\" shape=\"square\" />\n\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<ItemContent className=\"min-w-0 gap-space-sm\">\n\t\t\t\t\t\t\t\t<ItemTitle>{s.label}</ItemTitle>\n\t\t\t\t\t\t\t\t{!!s.description && (\n\t\t\t\t\t\t\t\t\t<ItemDescription>{s.description}</ItemDescription>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t</Item>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nAiPromptSuggestions.displayName = 'AiPromptSuggestions';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface AiTokenUsageStrings {\n\ttitle: string;\n\tinput: string;\n\toutput: string;\n\ttotal: string;\n\tcost: string;\n}\n\nexport const defaultAiTokenUsageStrings: AiTokenUsageStrings = {\n\ttitle: 'Token usage',\n\tinput: 'Input',\n\toutput: 'Output',\n\ttotal: 'Total',\n\tcost: 'Estimated cost',\n};\n\nexport interface AiTokenUsageCardProps {\n\tmodel?: string;\n\tinputTokens: number;\n\toutputTokens: number;\n\tcost?: string;\n\tmaxTokens?: number;\n\tclassName?: string;\n\tstrings?: StringsProp<AiTokenUsageStrings>;\n}\n","/**\n * AiTokenUsageCard — input + output token counts with a usage bar\n * relative to a max context window, plus optional cost estimate.\n */\nimport { Cpu } from 'lucide-react';\nimport { useStrings } from '@/lib/strings';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { InlineStat } from '@/components/composed/data-display';\n\nimport { defaultAiTokenUsageStrings, type AiTokenUsageCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nexport function AiTokenUsageCard({\n\tmodel,\n\tinputTokens,\n\toutputTokens,\n\tcost,\n\tmaxTokens,\n\tclassName,\n\tstrings: stringsProp,\n}: AiTokenUsageCardProps) {\n\tconst strings = useStrings(defaultAiTokenUsageStrings, stringsProp);\n\tconst total = inputTokens + outputTokens;\n\tconst pct = maxTokens ? Math.min(100, Math.round((total / maxTokens) * 100)) : 0;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Cpu className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={!!model && <Badge variant=\"secondary\">{model}</Badge>}\n\t\t\tclassName={cn('ai-token-usage--component', className)}\n\t\t>\n\t\t\t<div className=\"grid grid-cols-3 gap-2\">\n\t\t\t\t{[\n\t\t\t\t\t{ label: strings.input, value: inputTokens },\n\t\t\t\t\t{ label: strings.output, value: outputTokens },\n\t\t\t\t\t{ label: strings.total, value: total },\n\t\t\t\t].map((cell) => (\n\t\t\t\t\t<div key={cell.label} className=\"rounded-md bg-muted/40 px-3 py-2\">\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">{cell.label}</Text>\n\t\t\t\t\t\t<Text size=\"lg\" weight=\"semibold\" className=\"tabular-nums\">{cell.value.toLocaleString()}</Text>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{!!maxTokens && (\n\t\t\t\t<div className=\"mt-3\">\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tlabel={`${total.toLocaleString()} / ${maxTokens.toLocaleString()}`}\n\t\t\t\t\t\tvalue={`${pct}%`}\n\t\t\t\t\t\tmono\n\t\t\t\t\t\tlabelClassName=\"text-xs\"\n\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-muted\">\n\t\t\t\t\t\t<div className=\"h-full rounded-full bg-primary\" style={{ width: `${pct}%` }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!cost && (\n\t\t\t\t<InlineStat\n\t\t\t\t\tclassName=\"mt-3 rounded-md bg-primary/5 px-3 py-2\"\n\t\t\t\t\tlabel={strings.cost}\n\t\t\t\t\tvalue={cost}\n\t\t\t\t\tmono\n\t\t\t\t\tlabelClassName=\"text-xs\"\n\t\t\t\t\tvalueClassName=\"text-sm font-bold\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nAiTokenUsageCard.displayName = 'AiTokenUsageCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport type AiFeedbackVote = 'up' | 'down' | null;\n\nexport interface AiFeedbackStrings {\n\tprompt: string;\n\tthumbsUpAria: string;\n\tthumbsDownAria: string;\n\tcommentPlaceholder: string;\n\tsubmit: string;\n\tthanks: string;\n}\n\nexport const defaultAiFeedbackStrings: AiFeedbackStrings = {\n\tprompt: 'Was this helpful?',\n\tthumbsUpAria: 'Mark as helpful',\n\tthumbsDownAria: 'Mark as not helpful',\n\tcommentPlaceholder: 'Tell us more (optional)',\n\tsubmit: 'Send feedback',\n\tthanks: 'Thanks for your feedback.',\n};\n\nexport interface AiFeedbackProps {\n\tvalue?: AiFeedbackVote;\n\tonVote?: (vote: AiFeedbackVote) => void;\n\tonSubmitComment?: (comment: string, vote: AiFeedbackVote) => void;\n\tallowComment?: boolean;\n\tsubmitted?: boolean;\n\tclassName?: string;\n\tstrings?: StringsProp<AiFeedbackStrings>;\n}\n","/**\n * AiFeedback — thumbs-up / thumbs-down voter with an optional follow-up\n * comment field. Wires into model-improvement loops: emits the vote via\n * `onVote` immediately and a comment via `onSubmitComment` when the user\n * submits the textarea. After `submitted=true` the surface is replaced with\n * a thank-you confirmation. Strings overridable for i18n.\n */\nimport { useState } from 'react';\nimport { ThumbsDown, ThumbsUp } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Textarea } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiFeedbackStrings,\n\ttype AiFeedbackProps,\n\ttype AiFeedbackVote,\n} from './types';\n\nexport function AiFeedback({\n\tvalue,\n\tonVote,\n\tonSubmitComment,\n\tallowComment = true,\n\tsubmitted = false,\n\tclassName,\n\tstrings: stringsProp,\n}: AiFeedbackProps) {\n\tconst strings = useStrings(defaultAiFeedbackStrings, stringsProp);\n\tconst [internalVote, setInternalVote] = useState<AiFeedbackVote>(null);\n\tconst [comment, setComment] = useState('');\n\tconst vote = value ?? internalVote;\n\n\tconst cast = (next: AiFeedbackVote) => {\n\t\tconst resolved = vote === next ? null : next;\n\t\tif (value === undefined) setInternalVote(resolved);\n\t\tonVote?.(resolved);\n\t};\n\n\tif (submitted) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn('ai-feedback--component', \n\t\t\t\t\t'inline-flex items-center gap-2 rounded-full bg-success/10 px-3 py-1.5',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<ThumbsUp className=\"size-3.5 text-success\" />\n\t\t\t\t<Text size=\"xs\" type=\"success\" weight=\"medium\">\n\t\t\t\t\t{strings.thanks}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('ai-feedback--component inline-flex flex-col gap-2', className)}>\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">{strings.prompt}</Text>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle={vote === 'up' ? 'solid' : 'ghost'}\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\taria-label={strings.thumbsUpAria}\n\t\t\t\t\taria-pressed={vote === 'up'}\n\t\t\t\t\tonClick={() => cast('up')}\n\t\t\t\t\tclassName={cn(vote === 'up' && 'text-success bg-success/15 hover:bg-success/20')}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsUp className=\"size-3.5\" />\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle={vote === 'down' ? 'solid' : 'ghost'}\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\taria-label={strings.thumbsDownAria}\n\t\t\t\t\taria-pressed={vote === 'down'}\n\t\t\t\t\tonClick={() => cast('down')}\n\t\t\t\t\tclassName={cn(vote === 'down' && 'text-destructive bg-destructive/15 hover:bg-destructive/20')}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsDown className=\"size-3.5\" />\n\t\t\t\t</Button>\n\t\t\t</div>\n\n\t\t\t{!!allowComment && !!vote && (\n\t\t\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t\t\t<Textarea\n\t\t\t\t\t\tvalue={comment}\n\t\t\t\t\t\tonChange={(e) => setComment((e.target as HTMLTextAreaElement).value)}\n\t\t\t\t\t\tplaceholder={strings.commentPlaceholder}\n\t\t\t\t\t\tminRows={2}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tonSubmitComment?.(comment, vote);\n\t\t\t\t\t\t\t\tsetComment('');\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdisabled={!comment.trim()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.submit}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiFeedback.displayName = 'AiFeedback';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface AiCitationSource {\n\tid: string;\n\ttitle: ReactNode;\n\turl?: string;\n\tsnippet?: ReactNode;\n\tpublisher?: string;\n\tpublishedAt?: string;\n\trelevance?: number; // 0–1\n}\n\nexport interface AiCitationStrings {\n\ttitle: string;\n\tsourceCount: (n: number) => string;\n\texpand: string;\n\tcollapse: string;\n\tvisit: string;\n\trelevance: string;\n}\n\nexport const defaultAiCitationStrings: AiCitationStrings = {\n\ttitle: 'Sources',\n\tsourceCount: (n: number) => (n === 1 ? '1 source' : `${n} sources`),\n\texpand: 'Show sources',\n\tcollapse: 'Hide sources',\n\tvisit: 'Visit',\n\trelevance: 'Relevance',\n};\n\nexport interface AiCitationProps {\n\tsources: AiCitationSource[];\n\tdefaultExpanded?: boolean;\n\tmaxCollapsedRows?: number;\n\tclassName?: string;\n\tstrings?: StringsProp<AiCitationStrings>;\n}\n","/**\n * AiCitation — expandable source list for AI-grounded responses. Renders an\n * inline footnote-style header (e.g. \"3 sources\") that toggles a list of\n * source rows: title link, snippet, publisher / date, and a relevance bar.\n * Use under `AiSummaryBlock` and `AiMessageBubble` to make AI claims\n * traceable. Strings overridable for i18n.\n *\n * Note: `strings.sourceCount` is a function (single / plural form) — pass an\n * override if your locale needs more complex pluralisation.\n */\nimport { useState } from 'react';\nimport { ChevronDown, ChevronRight, ExternalLink, Quote } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemFooter,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { mergeStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiCitationStrings,\n\ttype AiCitationProps,\n\ttype AiCitationSource,\n} from './types';\n\nexport function AiCitation({\n\tsources,\n\tdefaultExpanded = false,\n\tmaxCollapsedRows = 0,\n\tclassName,\n\tstrings: stringsProp,\n}: AiCitationProps) {\n\t// `sourceCount` is a function so we cannot use `useStrings` deep-merge\n\t// (the merger replaces functions wholesale, which is what we want).\n\tconst strings = mergeStrings(defaultAiCitationStrings, stringsProp);\n\tconst [expanded, setExpanded] = useState(defaultExpanded);\n\tconst visible = expanded ? sources : sources.slice(0, Math.max(0, maxCollapsedRows));\n\tconst hidden = sources.length - visible.length;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'ai-citation--component',\n\t\t\t\t'rounded-lg border border-border bg-card px-surface-sm py-surface-sm shadow-xs',\n\t\t\t\t'space-y-space-lg',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={() => setExpanded((v) => !v)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'ai-citation--trigger h-auto justify-start gap-space-sm rounded-md px-control py-row-y',\n\t\t\t\t\t'text-muted-foreground hover:text-foreground hover:bg-muted/40',\n\t\t\t\t)}\n\t\t\t\taria-expanded={expanded}\n\t\t\t\taria-label={expanded ? strings.collapse : strings.expand}\n\t\t\t>\n\t\t\t\t<Quote className=\"size-3.5\" />\n\t\t\t\t<Text size=\"xs\" weight=\"medium\">\n\t\t\t\t\t{strings.title} · {strings.sourceCount(sources.length)}\n\t\t\t\t</Text>\n\t\t\t\t{expanded ? (\n\t\t\t\t\t<ChevronDown className=\"size-3.5\" />\n\t\t\t\t) : (\n\t\t\t\t\t<ChevronRight className=\"size-3.5\" />\n\t\t\t\t)}\n\t\t\t</Button>\n\n\t\t\t{(expanded || maxCollapsedRows > 0) && (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{visible.map((s, i) => (\n\t\t\t\t\t\t<CitationRow key={s.id} source={s} index={i + 1} strings={strings} />\n\t\t\t\t\t))}\n\t\t\t\t\t{!expanded && hidden > 0 && (\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t+{hidden} more\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiCitation.displayName = 'AiCitation';\n\nfunction CitationRow({\n\tsource,\n\tindex,\n\tstrings,\n}: {\n\tsource: AiCitationSource;\n\tindex: number;\n\tstrings: ReturnType<typeof mergeStrings<typeof defaultAiCitationStrings>>;\n}) {\n\tconst relevancePct =\n\t\ttypeof source.relevance === 'number'\n\t\t\t? Math.round(Math.max(0, Math.min(1, source.relevance)) * 100)\n\t\t\t: null;\n\n\tconst TitleEl = source.url ? 'a' : 'span';\n\tconst titleProps = source.url\n\t\t? { href: source.url, target: '_blank' as const, rel: 'noopener noreferrer' }\n\t\t: {};\n\n\treturn (\n\t\t<Item variant=\"outline\" size=\"small\" className=\"items-start px-surface-sm py-surface-sm\">\n\t\t\t<ItemMedia>\n\t\t\t\t<span className=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-semibold text-muted-foreground tabular-nums\">\n\t\t\t\t\t{index}\n\t\t\t\t</span>\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent>\n\t\t\t\t<ItemTitle className=\"truncate\">\n\t\t\t\t\t<TitleEl\n\t\t\t\t\t\t{...titleProps}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'truncate',\n\t\t\t\t\t\t\tsource.url && 'hover:text-primary hover:underline',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{source.title}\n\t\t\t\t\t\t{!!source.url && <ExternalLink className=\"ml-1 inline size-3 align-baseline\" />}\n\t\t\t\t\t</TitleEl>\n\t\t\t\t</ItemTitle>\n\t\t\t\t{!!source.snippet && <ItemDescription clamp={2}>{source.snippet}</ItemDescription>}\n\t\t\t\t{(source.publisher || source.publishedAt) && (\n\t\t\t\t\t<ItemFooter className=\"mt-1 justify-start gap-1.5\">\n\t\t\t\t\t\t{!!source.publisher && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"discrete\">\n\t\t\t\t\t\t\t\t{source.publisher}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!source.publisher && !!source.publishedAt && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"discrete\">·</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!source.publishedAt && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"discrete\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t{source.publishedAt}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ItemFooter>\n\t\t\t\t)}\n\t\t\t</ItemContent>\n\t\t\t{relevancePct !== null && (\n\t\t\t\t<ItemActions className=\"w-16 flex-col items-end gap-0.5\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"tabular-nums\">\n\t\t\t\t\t\t{relevancePct}%\n\t\t\t\t\t</Text>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"h-1 w-full overflow-hidden rounded-full bg-muted\"\n\t\t\t\t\t\taria-label={strings.relevance}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"h-full rounded-full bg-primary\"\n\t\t\t\t\t\t\tstyle={{ width: `${relevancePct}%` }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</ItemActions>\n\t\t\t)}\n\t\t</Item>\n\t);\n}\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface AiInlineCitationStrings {\n\t/** Tooltip prefix when only a number is rendered. */\n\tsourcePrefix: string;\n\t/** Aria label template — supports `{{n}}` and `{{title}}` placeholders. */\n\topenAria: string;\n}\n\nexport const defaultAiInlineCitationStrings: AiInlineCitationStrings = {\n\tsourcePrefix: 'Source',\n\topenAria: 'Open source {{n}}: {{title}}',\n};\n\nexport interface AiInlineCitationProps {\n\t/** 1-indexed citation number rendered inside the pill. */\n\tindex: number;\n\t/** Title of the cited source — used in the tooltip / aria-label. */\n\ttitle?: string;\n\t/** Optional URL — when provided, the pill renders as a link. */\n\turl?: string;\n\t/** Click handler — preferred over `url` for SPA / virtual link routing. */\n\tonSelect?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AiInlineCitationStrings>;\n}\n","/**\n * AiInlineCitation — small footnote-style pill rendered inline inside AI\n * response prose. The number references a position in the parent\n * sources/AiCitation list. Hover to see the source title; click to jump.\n */\nimport { Text } from '@/components/typography';\nimport { Button } from '@/components/base/buttons';\nimport { mergeStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiInlineCitationStrings,\n\ttype AiInlineCitationProps,\n} from './types';\n\nfunction interpolate(template: string, params: Record<string, string | number>): string {\n\treturn template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (m, k) => {\n\t\tconst v = params[k];\n\t\treturn v === undefined ? m : String(v);\n\t});\n}\n\nexport function AiInlineCitation({\n\tindex,\n\ttitle,\n\turl,\n\tonSelect,\n\tclassName,\n\tstrings: stringsProp,\n}: AiInlineCitationProps) {\n\tconst strings = mergeStrings(defaultAiInlineCitationStrings, stringsProp);\n\tconst ariaLabel = interpolate(strings.openAria, {\n\t\tn: index,\n\t\ttitle: title ?? '',\n\t});\n\tconst tooltip = title ? `${strings.sourcePrefix} ${index}: ${title}` : `${strings.sourcePrefix} ${index}`;\n\n\t// Sizes here are em-relative on purpose: an inline citation chip must\n\t// scale with the surrounding paragraph (whatever Text size it's nested in)\n\t// rather than pick a fixed token. This is the rule-3 exception for\n\t// \"load-bearing inline relative units\" — do NOT refactor to `text-xs`.\n\tconst baseCls = cn(\n\t\t'inline-flex h-5 min-w-5 -translate-y-px items-center justify-center rounded px-1',\n\t\t'align-middle text-xs font-medium tabular-nums',\n\t\t'bg-muted text-muted-foreground',\n\t\t'hover:bg-primary/10 hover:text-primary',\n\t\t'transition-colors duration-150',\n\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\tclassName,\n\t);\n\n\tif (url) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\thref={url}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\ttitle={tooltip}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={cn('ai-inline-citation--component', baseCls)}\n\t\t\t>\n\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"leading-none\">\n\t\t\t\t\t{index}\n\t\t\t\t</Text>\n\t\t\t</a>\n\t\t);\n\t}\n\n\tif (onSelect) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={onSelect}\n\t\t\t\ttitle={tooltip}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={cn('ai-inline-citation--component', baseCls)}\n\t\t\t>\n\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"leading-none\">\n\t\t\t\t\t{index}\n\t\t\t\t</Text>\n\t\t\t</Button>\n\t\t);\n\t}\n\n\treturn (\n\t\t<span\n\t\t\ttitle={tooltip}\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={cn('ai-inline-citation--component', baseCls)}\n\t\t>\n\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"leading-none\">\n\t\t\t\t{index}\n\t\t\t</Text>\n\t\t</span>\n\t);\n}\n\nAiInlineCitation.displayName = 'AiInlineCitation';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface AiPackageInfoStrings {\n\tversionLabel: string;\n\tlicenseLabel: string;\n\tpublishedLabel: string;\n\thomepageAria: string;\n\trepositoryAria: string;\n\tweeklyDownloadsLabel: string;\n}\n\nexport const defaultAiPackageInfoStrings: AiPackageInfoStrings = {\n\tversionLabel: 'Version',\n\tlicenseLabel: 'License',\n\tpublishedLabel: 'Published',\n\thomepageAria: 'Open homepage',\n\trepositoryAria: 'Open repository',\n\tweeklyDownloadsLabel: 'Weekly downloads',\n};\n\nexport interface AiPackageInfoProps {\n\t/** Package name (npm-style: optional `@scope/`). */\n\tname: string;\n\t/** Latest / pinned version. */\n\tversion?: string;\n\t/** Short description from the package manifest. */\n\tdescription?: ReactNode;\n\t/** SPDX-style license identifier (e.g. \"MIT\"). */\n\tlicense?: string;\n\t/** ISO date or human label of last publish. */\n\tpublishedAt?: string;\n\t/** Package homepage URL. */\n\thomepage?: string;\n\t/** Repository URL (typically GitHub). */\n\trepository?: string;\n\t/** Weekly downloads — formatted by the consumer. */\n\tweeklyDownloads?: string | number;\n\t/** Comma-separated tag list rendered as small chips. */\n\tkeywords?: ReadonlyArray<string>;\n\t/** Click handler for the whole card. */\n\tonSelect?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AiPackageInfoStrings>;\n}\n","/**\n * AiPackageInfo — compact card describing an npm / library package referenced\n * by the model. Header: name + version chip; body: description + optional\n * meta (license, published date, weekly downloads) and keyword chips. Footer\n * exposes homepage / repository links when provided.\n */\nimport { Code2, ExternalLink, Globe, Package } from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiPackageInfoStrings, type AiPackageInfoProps } from './types';\n\nexport function AiPackageInfo({\n\tname,\n\tversion,\n\tdescription,\n\tlicense,\n\tpublishedAt,\n\thomepage,\n\trepository,\n\tweeklyDownloads,\n\tkeywords,\n\tonSelect,\n\tclassName,\n\tstrings: stringsProp,\n}: AiPackageInfoProps) {\n\tconst strings = useStrings(defaultAiPackageInfoStrings, stringsProp);\n\n\tconst Wrapper = onSelect ? 'button' : 'div';\n\tconst wrapperProps = onSelect\n\t\t? {\n\t\t\t\ttype: 'button' as const,\n\t\t\t\tonClick: onSelect,\n\t\t\t}\n\t\t: {};\n\n\treturn (\n\t\t<Wrapper\n\t\t\t{...wrapperProps}\n\t\t\tclassName={cn('ai-package-info--component', \n\t\t\t\t'block w-full rounded-lg border border-border/60 bg-card text-left',\n\t\t\t\tonSelect &&\n\t\t\t\t\t'transition-[border-color,background] duration-150 hover:border-foreground/20 hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex items-start gap-3 px-3.5 py-3\">\n\t\t\t\t<span\n\t\t\t\t\taria-hidden\n\t\t\t\t\tclassName=\"inline-flex size-9 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground\"\n\t\t\t\t>\n\t\t\t\t\t<Package className=\"size-4\" />\n\t\t\t\t</span>\n\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate font-mono\">\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t{!!version && (\n\t\t\t\t\t\t\t<Badge variant=\"secondary\" className=\"font-mono tabular-nums\">\n\t\t\t\t\t\t\t\tv{version.replace(/^v/, '')}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-1 line-clamp-2\">\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{(license || publishedAt || weeklyDownloads !== undefined) && (\n\t\t\t\t\t\t<div className=\"mt-2 flex flex-wrap items-center gap-x-3 gap-y-1\">\n\t\t\t\t\t\t\t{!!license && (\n\t\t\t\t\t\t\t\t<MetaItem label={strings.licenseLabel} value={license} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!publishedAt && (\n\t\t\t\t\t\t\t\t<MetaItem label={strings.publishedLabel} value={publishedAt} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{weeklyDownloads !== undefined && (\n\t\t\t\t\t\t\t\t<MetaItem\n\t\t\t\t\t\t\t\t\tlabel={strings.weeklyDownloadsLabel}\n\t\t\t\t\t\t\t\t\tvalue={String(weeklyDownloads)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!keywords?.length && (\n\t\t\t\t\t\t<div className=\"mt-2 flex flex-wrap gap-1\">\n\t\t\t\t\t\t\t{keywords.slice(0, 6).map((kw) => (\n\t\t\t\t\t\t\t\t<Badge key={kw} variant=\"secondary\">\n\t\t\t\t\t\t\t\t\t{kw}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{(homepage || repository) && (\n\t\t\t\t<div className=\"flex items-center gap-2 border-t border-border/60 bg-muted/20 px-3.5 py-2\">\n\t\t\t\t\t{!!homepage && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={homepage}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t\t\taria-label={strings.homepageAria}\n\t\t\t\t\t\t\tclassName=\"inline-flex items-center gap-1 rounded text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Globe className=\"size-3.5\" />\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t\tHomepage\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<ExternalLink className=\"size-3\" />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!homepage && !!repository && (\n\t\t\t\t\t\t<span aria-hidden className=\"text-muted-foreground/40\">\n\t\t\t\t\t\t\t·\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!repository && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={repository}\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t\t\taria-label={strings.repositoryAria}\n\t\t\t\t\t\t\tclassName=\"inline-flex items-center gap-1 rounded text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Code2 className=\"size-3.5\" />\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t\tRepository\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<ExternalLink className=\"size-3\" />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Wrapper>\n\t);\n}\n\nAiPackageInfo.displayName = 'AiPackageInfo';\n\nfunction MetaItem({ label, value }: { label: string; value: string }) {\n\treturn (\n\t\t<div className=\"inline-flex items-baseline gap-1\">\n\t\t\t<Text size=\"xs\" type=\"discrete\">\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"tabular-nums\">\n\t\t\t\t{value}\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n","import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport type AiFileTreeNodeKind = 'directory' | 'file';\n\nexport type AiFileTreeChangeStatus = 'added' | 'modified' | 'removed' | 'renamed';\n\nexport interface AiFileTreeNode {\n\tid: string;\n\tname: string;\n\tkind: AiFileTreeNodeKind;\n\t/** Children — only meaningful for directories. */\n\tchildren?: ReadonlyArray<AiFileTreeNode>;\n\t/** Custom icon override (file kinds, etc.). */\n\ticon?: LucideIcon;\n\t/** Diff status — drives the trailing pill / row tint. */\n\tstatus?: AiFileTreeChangeStatus;\n\t/** Trailing slot — badge, line count, etc. */\n\ttrailing?: ReactNode;\n\t/** Default-expanded state for directories. */\n\tdefaultExpanded?: boolean;\n}\n\nexport interface AiFileTreeStrings {\n\texpandAria: string;\n\tcollapseAria: string;\n\tstatusLabels: Record<AiFileTreeChangeStatus, string>;\n}\n\nexport const defaultAiFileTreeStrings: AiFileTreeStrings = {\n\texpandAria: 'Expand directory',\n\tcollapseAria: 'Collapse directory',\n\tstatusLabels: {\n\t\tadded: 'A',\n\t\tmodified: 'M',\n\t\tremoved: 'D',\n\t\trenamed: 'R',\n\t},\n};\n\nexport interface AiFileTreeProps {\n\t/** Root nodes — typically one entry but the API accepts multiple. */\n\tnodes: ReadonlyArray<AiFileTreeNode>;\n\t/** Selected node id — drives the active row tint. */\n\tselectedId?: string;\n\t/** Click handler — fires for files only by default. */\n\tonSelect?: (node: AiFileTreeNode) => void;\n\t/** Hide the diff status pills (still tints the row). */\n\thideStatusLabels?: boolean;\n\t/** Indent width per nesting level (px). */\n\tindent?: number;\n\tclassName?: string;\n\tstrings?: StringsProp<AiFileTreeStrings>;\n}\n","/**\n * AiFileTree — compact file/directory tree used to surface a model's proposed\n * file changes (a new repo scaffold, a multi-file edit set, an artifact\n * bundle). Accepts a recursive `nodes` array; rows are click-selectable\n * (files), directories toggle expanded. Diff status (added / modified /\n * removed / renamed) drives both a trailing pill and a subtle row tint.\n */\nimport { useState, type ReactNode } from 'react';\nimport {\n\tChevronDown,\n\tChevronRight,\n\tFile,\n\tFileCode,\n\tFileText,\n\tFolder,\n\tFolderOpen,\n\ttype LucideIcon,\n} from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiFileTreeStrings,\n\ttype AiFileTreeChangeStatus,\n\ttype AiFileTreeNode,\n\ttype AiFileTreeProps,\n} from './types';\n\nconst STATUS_TINT: Record<AiFileTreeChangeStatus, { row: string; pill: string }> = {\n\tadded: { row: 'before:bg-success', pill: 'bg-success/15 text-success' },\n\tmodified: { row: 'before:bg-warning', pill: 'bg-warning/20 text-warning' },\n\tremoved: { row: 'before:bg-destructive', pill: 'bg-destructive/15 text-destructive' },\n\trenamed: { row: 'before:bg-info', pill: 'bg-info/15 text-info' },\n};\n\nfunction pickFileIcon(name: string): LucideIcon {\n\tconst ext = name.split('.').pop()?.toLowerCase() ?? '';\n\tif (['ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'json', 'css', 'scss', 'html', 'sh', 'py', 'rs', 'go'].includes(ext)) {\n\t\treturn FileCode;\n\t}\n\tif (['md', 'mdx', 'txt'].includes(ext)) {\n\t\treturn FileText;\n\t}\n\treturn File;\n}\n\nexport function AiFileTree({\n\tnodes,\n\tselectedId,\n\tonSelect,\n\thideStatusLabels = false,\n\tindent = 14,\n\tclassName,\n\tstrings: stringsProp,\n}: AiFileTreeProps) {\n\tconst strings = useStrings(defaultAiFileTreeStrings, stringsProp);\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('ai-file-tree--component', \n\t\t\t\t'overflow-hidden rounded-lg border border-border/60 bg-card font-mono text-xs',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<ul>\n\t\t\t\t{nodes.map((node) => (\n\t\t\t\t\t<TreeRow\n\t\t\t\t\t\tkey={node.id}\n\t\t\t\t\t\tnode={node}\n\t\t\t\t\t\tdepth={0}\n\t\t\t\t\t\tselectedId={selectedId}\n\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\thideStatusLabels={hideStatusLabels}\n\t\t\t\t\t\tindent={indent}\n\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t</div>\n\t);\n}\n\nAiFileTree.displayName = 'AiFileTree';\n\nfunction TreeRow({\n\tnode,\n\tdepth,\n\tselectedId,\n\tonSelect,\n\thideStatusLabels,\n\tindent,\n\tstrings,\n}: {\n\tnode: AiFileTreeNode;\n\tdepth: number;\n\tselectedId?: string;\n\tonSelect?: (n: AiFileTreeNode) => void;\n\thideStatusLabels: boolean;\n\tindent: number;\n\tstrings: ReturnType<typeof useStrings<typeof defaultAiFileTreeStrings>>;\n}) {\n\tconst [open, setOpen] = useState(node.defaultExpanded ?? depth < 1);\n\tconst isDir = node.kind === 'directory';\n\tconst isSelected = selectedId === node.id;\n\tconst status = node.status;\n\tconst tint = status ? STATUS_TINT[status] : undefined;\n\n\tconst Icon: LucideIcon =\n\t\tnode.icon ??\n\t\t(isDir ? (open ? FolderOpen : Folder) : pickFileIcon(node.name));\n\n\tconst handleClick = () => {\n\t\tif (isDir) setOpen((v) => !v);\n\t\telse onSelect?.(node);\n\t};\n\n\tconst Trailing: ReactNode = (\n\t\t<>\n\t\t\t{!!status && !hideStatusLabels && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'inline-flex size-4 shrink-0 items-center justify-center rounded',\n\t\t\t\t\t\t'text-xs font-bold leading-none uppercase',\n\t\t\t\t\t\ttint?.pill,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{strings.statusLabels[status]}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t{!!node.trailing && (\n\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t{node.trailing}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<li>\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={handleClick}\n\t\t\t\taria-expanded={isDir ? open : undefined}\n\t\t\t\taria-label={\n\t\t\t\t\tisDir ? (open ? strings.collapseAria : strings.expandAria) : undefined\n\t\t\t\t}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'ai-file-tree--row group relative h-auto w-full justify-start gap-1.5 rounded-none px-2 py-1 text-left font-mono text-xs',\n\t\t\t\t\t'hover:bg-muted/40',\n\t\t\t\t\t'focus-visible:ring-inset',\n\t\t\t\t\tisSelected && 'bg-primary/10',\n\t\t\t\t\t!!status &&\n\t\t\t\t\t\t'before:absolute before:left-0 before:top-0 before:h-full before:w-0.5',\n\t\t\t\t\ttint?.row,\n\t\t\t\t\tstatus === 'removed' && 'text-muted-foreground/80',\n\t\t\t\t)}\n\t\t\t\tstyle={{ paddingLeft: 8 + depth * indent }}\n\t\t\t>\n\t\t\t\t{isDir ? (\n\t\t\t\t\topen ? (\n\t\t\t\t\t\t<ChevronDown className=\"size-3.5 shrink-0 text-muted-foreground\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ChevronRight className=\"size-3.5 shrink-0 text-muted-foreground\" />\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\t<span aria-hidden className=\"size-3.5 shrink-0\" />\n\t\t\t\t)}\n\t\t\t\t<Icon\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'size-3.5 shrink-0',\n\t\t\t\t\t\tisDir ? 'text-muted-foreground' : 'text-muted-foreground/80',\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'flex-1 truncate',\n\t\t\t\t\t\tstatus === 'removed' && 'line-through',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{node.name}\n\t\t\t\t</span>\n\t\t\t\t<span className=\"ml-auto flex items-center gap-1.5\">{Trailing}</span>\n\t\t\t</Button>\n\t\t\t{isDir && open && !!node.children?.length && (\n\t\t\t\t<ul>\n\t\t\t\t\t{node.children.map((child) => (\n\t\t\t\t\t\t<TreeRow\n\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\tnode={child}\n\t\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\t\tselectedId={selectedId}\n\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\thideStatusLabels={hideStatusLabels}\n\t\t\t\t\t\t\tindent={indent}\n\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\t\t</li>\n\t);\n}\n"],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  import { mergeStrings as e, useStrings as t } from "../../../lib/strings.js";
2
2
  import { cn as n } from "../../../lib/utils.js";
3
3
  import { t as r } from "../../../_shared/button-vv59_uS_.js";
4
- import { s as i } from "../../../_shared/typography-CzFVA1w1.js";
4
+ import { s as i } from "../../../_shared/typography-DXvCmE8w.js";
5
5
  import { t as a } from "../../../_shared/icon-badge-dZQPvuas.js";
6
- import { t as o } from "../../../_shared/badge-BYNwSWh5.js";
7
- import { t as s } from "../../../_shared/cards-cQ9lL6zy.js";
8
- import { t as c } from "../../../_shared/textarea-CGRkgH5z.js";
6
+ import { t as o } from "../../../_shared/badge-B4oBB5BJ.js";
7
+ import { t as s } from "../../../_shared/cards-CMNXFo3Y.js";
8
+ import { t as c } from "../../../_shared/textarea-Dp0RU-rc.js";
9
9
  import { t as l } from "../../../_shared/separator-B8FBp-7E.js";
10
- import { a as u, c as d, i as f, n as p, o as m, r as h, t as g, u as _ } from "../../../_shared/item-D7GTzvhf.js";
11
- import { i as v } from "../../../_shared/data-display-DUWxoDKq.js";
12
- import { C as ee, S as te, _ as ne, a as y, b as re, c as ie, d as ae, f as oe, g as b, h as se, i as ce, l as le, m as ue, n as de, o as fe, p as pe, r as me, s as he, t as ge, u as _e, v as ve, x as ye, y as be } from "../../../_shared/ai-artifact-BHgd3agA.js";
10
+ import { a as u, c as d, i as f, n as p, o as m, r as h, t as g, u as _ } from "../../../_shared/item-CIlSaQg8.js";
11
+ import { i as v } from "../../../_shared/data-display-BG7CD164.js";
12
+ import { C as ee, S as te, _ as ne, a as y, b as re, c as ie, d as ae, f as oe, g as b, h as se, i as ce, l as le, m as ue, n as de, o as fe, p as pe, r as me, s as he, t as ge, u as _e, v as ve, x as ye, y as be } from "../../../_shared/ai-artifact-CS2Pv-bu.js";
13
13
  import { useState as x } from "react";
14
14
  import { Fragment as xe, jsx as S, jsxs as C } from "react/jsx-runtime";
15
15
  import { BrainCircuit as w, ChevronDown as T, ChevronRight as E, Code2 as D, Cpu as O, ExternalLink as k, File as A, FileCode as j, FileText as M, Folder as Se, FolderOpen as Ce, Globe as we, Package as Te, Quote as N, RefreshCw as Ee, Sparkles as P, ThumbsDown as De, ThumbsUp as F } from "lucide-react";
@@ -399,7 +399,7 @@ function V({ model: e, inputTokens: r, outputTokens: a, cost: c, maxTokens: l, c
399
399
  ].map((e) => /* @__PURE__ */ C("div", {
400
400
  className: "rounded-md bg-muted/40 px-3 py-2",
401
401
  children: [/* @__PURE__ */ S(i, {
402
- size: "xxs",
402
+ size: "xs",
403
403
  type: "secondary",
404
404
  weight: "medium",
405
405
  className: "uppercase tracking-wider",
@@ -563,7 +563,7 @@ function G({ sources: t, defaultExpanded: a = !1, maxCollapsedRows: o = 0, class
563
563
  index: t + 1,
564
564
  strings: l
565
565
  }, e.id)), !u && p > 0 && /* @__PURE__ */ C(i, {
566
- size: "xxs",
566
+ size: "xs",
567
567
  type: "secondary",
568
568
  children: [
569
569
  "+",
@@ -586,7 +586,7 @@ function Fe({ source: e, index: t, strings: r }) {
586
586
  className: "items-start px-surface-sm py-surface-sm",
587
587
  children: [
588
588
  /* @__PURE__ */ S(d, { children: /* @__PURE__ */ S("span", {
589
- className: "inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-muted text-xxs font-semibold text-muted-foreground tabular-nums",
589
+ className: "inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-semibold text-muted-foreground tabular-nums",
590
590
  children: t
591
591
  }) }),
592
592
  /* @__PURE__ */ C(h, { children: [
@@ -606,17 +606,17 @@ function Fe({ source: e, index: t, strings: r }) {
606
606
  className: "mt-1 justify-start gap-1.5",
607
607
  children: [
608
608
  !!e.publisher && /* @__PURE__ */ S(i, {
609
- size: "xxs",
609
+ size: "xs",
610
610
  type: "discrete",
611
611
  children: e.publisher
612
612
  }),
613
613
  !!e.publisher && !!e.publishedAt && /* @__PURE__ */ S(i, {
614
- size: "xxs",
614
+ size: "xs",
615
615
  type: "discrete",
616
616
  children: "·"
617
617
  }),
618
618
  !!e.publishedAt && /* @__PURE__ */ S(i, {
619
- size: "xxs",
619
+ size: "xs",
620
620
  type: "discrete",
621
621
  className: "tabular-nums",
622
622
  children: e.publishedAt
@@ -627,7 +627,7 @@ function Fe({ source: e, index: t, strings: r }) {
627
627
  a !== null && /* @__PURE__ */ C(p, {
628
628
  className: "w-16 flex-col items-end gap-0.5",
629
629
  children: [/* @__PURE__ */ C(i, {
630
- size: "xxs",
630
+ size: "xs",
631
631
  type: "secondary",
632
632
  weight: "medium",
633
633
  className: "tabular-nums",
@@ -662,7 +662,7 @@ function q({ index: t, title: a, url: o, onSelect: s, className: c, strings: l }
662
662
  let u = e(K, l), d = Ie(u.openAria, {
663
663
  n: t,
664
664
  title: a ?? ""
665
- }), f = a ? `${u.sourcePrefix} ${t}: ${a}` : `${u.sourcePrefix} ${t}`, p = n("inline-flex h-5 min-w-5 -translate-y-px items-center justify-center rounded px-1", "align-middle text-xxs font-medium tabular-nums", "bg-muted text-muted-foreground", "hover:bg-primary/10 hover:text-primary", "transition-colors duration-150", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40", c);
665
+ }), f = a ? `${u.sourcePrefix} ${t}: ${a}` : `${u.sourcePrefix} ${t}`, p = n("inline-flex h-5 min-w-5 -translate-y-px items-center justify-center rounded px-1", "align-middle text-xs font-medium tabular-nums", "bg-muted text-muted-foreground", "hover:bg-primary/10 hover:text-primary", "transition-colors duration-150", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40", c);
666
666
  return o ? /* @__PURE__ */ S("a", {
667
667
  href: o,
668
668
  target: "_blank",
@@ -672,7 +672,7 @@ function q({ index: t, title: a, url: o, onSelect: s, className: c, strings: l }
672
672
  className: n("ai-inline-citation--component", p),
673
673
  children: /* @__PURE__ */ S(i, {
674
674
  tag: "span",
675
- size: "xxs",
675
+ size: "xs",
676
676
  weight: "medium",
677
677
  className: "leading-none",
678
678
  children: t
@@ -688,7 +688,7 @@ function q({ index: t, title: a, url: o, onSelect: s, className: c, strings: l }
688
688
  className: n("ai-inline-citation--component", p),
689
689
  children: /* @__PURE__ */ S(i, {
690
690
  tag: "span",
691
- size: "xxs",
691
+ size: "xs",
692
692
  weight: "medium",
693
693
  className: "leading-none",
694
694
  children: t
@@ -699,7 +699,7 @@ function q({ index: t, title: a, url: o, onSelect: s, className: c, strings: l }
699
699
  className: n("ai-inline-citation--component", p),
700
700
  children: /* @__PURE__ */ S(i, {
701
701
  tag: "span",
702
- size: "xxs",
702
+ size: "xs",
703
703
  weight: "medium",
704
704
  className: "leading-none",
705
705
  children: t
@@ -794,7 +794,7 @@ function Y({ name: e, version: r, description: a, license: s, publishedAt: c, ho
794
794
  /* @__PURE__ */ S(we, { className: "size-3.5" }),
795
795
  /* @__PURE__ */ S(i, {
796
796
  tag: "span",
797
- size: "xxs",
797
+ size: "xs",
798
798
  weight: "medium",
799
799
  children: "Homepage"
800
800
  }),
@@ -817,7 +817,7 @@ function Y({ name: e, version: r, description: a, license: s, publishedAt: c, ho
817
817
  /* @__PURE__ */ S(D, { className: "size-3.5" }),
818
818
  /* @__PURE__ */ S(i, {
819
819
  tag: "span",
820
- size: "xxs",
820
+ size: "xs",
821
821
  weight: "medium",
822
822
  children: "Repository"
823
823
  }),
@@ -833,11 +833,11 @@ function X({ label: e, value: t }) {
833
833
  return /* @__PURE__ */ C("div", {
834
834
  className: "inline-flex items-baseline gap-1",
835
835
  children: [/* @__PURE__ */ S(i, {
836
- size: "xxs",
836
+ size: "xs",
837
837
  type: "discrete",
838
838
  children: e
839
839
  }), /* @__PURE__ */ S(i, {
840
- size: "xxs",
840
+ size: "xs",
841
841
  type: "secondary",
842
842
  weight: "medium",
843
843
  className: "tabular-nums",
@@ -917,11 +917,11 @@ function $({ node: e, depth: t, selectedId: a, onSelect: o, hideStatusLabels: s,
917
917
  let [u, d] = x(e.defaultExpanded ?? t < 1), f = e.kind === "directory", p = a === e.id, m = e.status, h = m ? Le[m] : void 0, g = e.icon ?? (f ? u ? Ce : Se : Re(e.name)), _ = () => {
918
918
  f ? d((e) => !e) : o?.(e);
919
919
  }, v = /* @__PURE__ */ C(xe, { children: [!!m && !s && /* @__PURE__ */ S("span", {
920
- className: n("inline-flex size-4 shrink-0 items-center justify-center rounded", "text-xxs font-bold leading-none uppercase", h?.pill),
920
+ className: n("inline-flex size-4 shrink-0 items-center justify-center rounded", "text-xs font-bold leading-none uppercase", h?.pill),
921
921
  children: l.statusLabels[m]
922
922
  }), !!e.trailing && /* @__PURE__ */ S(i, {
923
923
  tag: "span",
924
- size: "xxs",
924
+ size: "xs",
925
925
  type: "secondary",
926
926
  className: "tabular-nums",
927
927
  children: e.trailing