admin-ui-starter-kit 0.4.5 → 0.5.0

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 (980) hide show
  1. package/.agents/skills/admin-ui-consumer-migration/SKILL.md +26 -4
  2. package/.agents/skills/admin-ui-consumer-migration/references/actions-service.md +57 -47
  3. package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +52 -0
  4. package/.agents/skills/component-library-rules/references/components/INDEX.json +8 -7
  5. package/.agents/skills/component-library-rules/references/components/INDEX.md +1 -0
  6. package/.agents/skills/component-library-rules/references/components/base__combobox.md +37 -1
  7. package/.agents/skills/component-library-rules/references/components/base__forms.md +56 -1
  8. package/.agents/skills/component-library-rules/references/components/base__table.md +145 -3
  9. package/.agents/skills/component-library-rules/references/components/composed__admin.md +66 -0
  10. package/.agents/skills/component-library-rules/references/components/composed__resource-selector-card.md +85 -0
  11. package/.agents/skills/component-library-rules/references/components/features__filters.md +69 -0
  12. package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +35 -0
  13. package/.agents/skills/component-library-rules/references/components/layout__layout-page.md +170 -7
  14. package/CHANGELOG.md +19 -3
  15. package/COMPONENT_SELECTION.md +30 -3
  16. package/INTEGRATION.md +69 -20
  17. package/README.md +60 -27
  18. package/dist/_shared/ai-artifact--vEDQFvM.cjs +3 -0
  19. package/dist/_shared/ai-artifact--vEDQFvM.cjs.map +1 -0
  20. package/dist/_shared/ai-artifact-p45wDWWX.js +1099 -0
  21. package/dist/_shared/ai-artifact-p45wDWWX.js.map +1 -0
  22. package/dist/_shared/auth-1Fl_2u-c.js +643 -0
  23. package/dist/_shared/auth-1Fl_2u-c.js.map +1 -0
  24. package/dist/_shared/auth-CVDNwcge.cjs +2 -0
  25. package/dist/_shared/auth-CVDNwcge.cjs.map +1 -0
  26. package/dist/_shared/badge-A8wQRShC.js +108 -0
  27. package/dist/_shared/badge-A8wQRShC.js.map +1 -0
  28. package/dist/_shared/badge-D7A2LnSf.cjs +2 -0
  29. package/dist/_shared/badge-D7A2LnSf.cjs.map +1 -0
  30. package/dist/_shared/combobox-CEzH533Y.cjs +2 -0
  31. package/dist/_shared/combobox-CEzH533Y.cjs.map +1 -0
  32. package/dist/_shared/combobox-Dc4vaeGt.js +927 -0
  33. package/dist/_shared/combobox-Dc4vaeGt.js.map +1 -0
  34. package/dist/_shared/comments-BDnq4RPN.js +952 -0
  35. package/dist/_shared/comments-BDnq4RPN.js.map +1 -0
  36. package/dist/_shared/comments-C4djB-nG.cjs +2 -0
  37. package/dist/_shared/comments-C4djB-nG.cjs.map +1 -0
  38. package/dist/_shared/display-AtPyyUZc.cjs +2 -0
  39. package/dist/_shared/display-AtPyyUZc.cjs.map +1 -0
  40. package/dist/_shared/display-CL69dmsv.js +1471 -0
  41. package/dist/_shared/display-CL69dmsv.js.map +1 -0
  42. package/dist/_shared/forms-Bi5rUH3t.cjs +2 -0
  43. package/dist/_shared/forms-Bi5rUH3t.cjs.map +1 -0
  44. package/dist/_shared/forms-Yd0b-3MQ.js +3556 -0
  45. package/dist/_shared/forms-Yd0b-3MQ.js.map +1 -0
  46. package/dist/_shared/header-C4SvsbMn.cjs +2 -0
  47. package/dist/_shared/header-C4SvsbMn.cjs.map +1 -0
  48. package/dist/_shared/header-CcnW83Vs.js +447 -0
  49. package/dist/_shared/header-CcnW83Vs.js.map +1 -0
  50. package/dist/_shared/hooks-DsDGr8xz.cjs +2 -0
  51. package/dist/_shared/hooks-DsDGr8xz.cjs.map +1 -0
  52. package/dist/_shared/hooks-IEM3N4VG.js +95 -0
  53. package/dist/_shared/hooks-IEM3N4VG.js.map +1 -0
  54. package/dist/_shared/layout.types-CYuDZ_4h.cjs +2 -0
  55. package/dist/_shared/layout.types-CYuDZ_4h.cjs.map +1 -0
  56. package/dist/_shared/layout.types-j7zZAPtg.js +28 -0
  57. package/dist/_shared/layout.types-j7zZAPtg.js.map +1 -0
  58. package/dist/_shared/mentions-CqwT7pUL.cjs +2 -0
  59. package/dist/_shared/mentions-CqwT7pUL.cjs.map +1 -0
  60. package/dist/_shared/mentions-RxzSRAWE.js +506 -0
  61. package/dist/_shared/mentions-RxzSRAWE.js.map +1 -0
  62. package/dist/_shared/navigation-B-TE-HR-.cjs +2 -0
  63. package/dist/_shared/navigation-B-TE-HR-.cjs.map +1 -0
  64. package/dist/_shared/navigation-Cg0UqMDP.js +424 -0
  65. package/dist/_shared/navigation-Cg0UqMDP.js.map +1 -0
  66. package/dist/_shared/page-Bl_eSGLh.js +262 -0
  67. package/dist/_shared/page-Bl_eSGLh.js.map +1 -0
  68. package/dist/_shared/page-DTEqSyEK.cjs +2 -0
  69. package/dist/_shared/page-DTEqSyEK.cjs.map +1 -0
  70. package/dist/_shared/resource-Bb7dj-aj.cjs +2 -0
  71. package/dist/_shared/resource-Bb7dj-aj.cjs.map +1 -0
  72. package/dist/_shared/resource-DljsYA7W.js +243 -0
  73. package/dist/_shared/resource-DljsYA7W.js.map +1 -0
  74. package/dist/_shared/settings-BtNkFHl3.cjs +2 -0
  75. package/dist/_shared/settings-BtNkFHl3.cjs.map +1 -0
  76. package/dist/_shared/settings-Do6SuM-H.js +143 -0
  77. package/dist/_shared/settings-Do6SuM-H.js.map +1 -0
  78. package/dist/_shared/sidebar-BhcdQ9e9.cjs +2 -0
  79. package/dist/_shared/sidebar-BhcdQ9e9.cjs.map +1 -0
  80. package/dist/_shared/sidebar-CMoxtuSw.js +538 -0
  81. package/dist/_shared/sidebar-CMoxtuSw.js.map +1 -0
  82. package/dist/_shared/table-BgpL5Yt8.cjs +2 -0
  83. package/dist/_shared/table-BgpL5Yt8.cjs.map +1 -0
  84. package/dist/_shared/table-Ct3nl0lV.js +1381 -0
  85. package/dist/_shared/table-Ct3nl0lV.js.map +1 -0
  86. package/dist/_shared/workspace-BzTFBkmd.cjs +2 -0
  87. package/dist/_shared/workspace-BzTFBkmd.cjs.map +1 -0
  88. package/dist/_shared/workspace-CvUYln5V.js +357 -0
  89. package/dist/_shared/workspace-CvUYln5V.js.map +1 -0
  90. package/dist/components/base/badge/badge.d.ts.map +1 -1
  91. package/dist/components/base/badge/index.cjs +1 -1
  92. package/dist/components/base/badge/index.js +1 -1
  93. package/dist/components/base/combobox/async-resource-combobox.d.ts +41 -0
  94. package/dist/components/base/combobox/async-resource-combobox.d.ts.map +1 -0
  95. package/dist/components/base/combobox/index.cjs +1 -1
  96. package/dist/components/base/combobox/index.d.ts +1 -0
  97. package/dist/components/base/combobox/index.d.ts.map +1 -1
  98. package/dist/components/base/combobox/index.js +2 -2
  99. package/dist/components/base/data-view/data-view.d.ts +6 -0
  100. package/dist/components/base/data-view/data-view.d.ts.map +1 -0
  101. package/dist/components/base/data-view/data-view.strings.d.ts +7 -0
  102. package/dist/components/base/data-view/data-view.strings.d.ts.map +1 -0
  103. package/dist/components/base/data-view/data-view.types.d.ts +57 -0
  104. package/dist/components/base/data-view/data-view.types.d.ts.map +1 -0
  105. package/dist/components/base/data-view/index.cjs +2 -0
  106. package/dist/components/base/data-view/index.cjs.map +1 -0
  107. package/dist/components/base/data-view/index.d.ts +4 -0
  108. package/dist/components/base/data-view/index.d.ts.map +1 -0
  109. package/dist/components/base/data-view/index.js +146 -0
  110. package/dist/components/base/data-view/index.js.map +1 -0
  111. package/dist/components/base/display/index.cjs +1 -1
  112. package/dist/components/base/display/index.js +5 -5
  113. package/dist/components/base/forms/index.cjs +1 -1
  114. package/dist/components/base/forms/index.d.ts +1 -0
  115. package/dist/components/base/forms/index.d.ts.map +1 -1
  116. package/dist/components/base/forms/index.js +5 -6
  117. package/dist/components/base/forms/workflow.d.ts +47 -0
  118. package/dist/components/base/forms/workflow.d.ts.map +1 -0
  119. package/dist/components/base/navigation/index.cjs +1 -1
  120. package/dist/components/base/navigation/index.js +1 -1
  121. package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -1
  122. package/dist/components/base/table/data-table.d.ts +1 -1
  123. package/dist/components/base/table/data-table.d.ts.map +1 -1
  124. package/dist/components/base/table/index.cjs +1 -1
  125. package/dist/components/base/table/index.d.ts +1 -1
  126. package/dist/components/base/table/index.d.ts.map +1 -1
  127. package/dist/components/base/table/index.js +2 -2
  128. package/dist/components/base/table/partials/cell-renderers.d.ts +69 -0
  129. package/dist/components/base/table/partials/cell-renderers.d.ts.map +1 -1
  130. package/dist/components/base/table/table.strings.d.ts.map +1 -1
  131. package/dist/components/base/table/table.types.d.ts +22 -1
  132. package/dist/components/base/table/table.types.d.ts.map +1 -1
  133. package/dist/components/composed/admin/action-surfaces/index.d.ts +118 -0
  134. package/dist/components/composed/admin/action-surfaces/index.d.ts.map +1 -0
  135. package/dist/components/composed/admin/index.cjs +1 -1
  136. package/dist/components/composed/admin/index.cjs.map +1 -1
  137. package/dist/components/composed/admin/index.d.ts +1 -0
  138. package/dist/components/composed/admin/index.d.ts.map +1 -1
  139. package/dist/components/composed/admin/index.js +392 -131
  140. package/dist/components/composed/admin/index.js.map +1 -1
  141. package/dist/components/composed/ai/index.cjs +1 -1
  142. package/dist/components/composed/ai/index.js +17 -17
  143. package/dist/components/composed/cards/index.cjs +1 -1
  144. package/dist/components/composed/cards/index.js +2 -2
  145. package/dist/components/composed/commerce/index.cjs +1 -1
  146. package/dist/components/composed/commerce/index.cjs.map +1 -1
  147. package/dist/components/composed/commerce/index.js +43 -44
  148. package/dist/components/composed/commerce/index.js.map +1 -1
  149. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  150. package/dist/components/composed/dark-surfaces/index.js +17 -17
  151. package/dist/components/composed/data-display/index.cjs +1 -1
  152. package/dist/components/composed/data-display/index.cjs.map +1 -1
  153. package/dist/components/composed/data-display/index.d.ts +1 -0
  154. package/dist/components/composed/data-display/index.d.ts.map +1 -1
  155. package/dist/components/composed/data-display/index.js +355 -285
  156. package/dist/components/composed/data-display/index.js.map +1 -1
  157. package/dist/components/composed/data-display/resource-selector-card.d.ts +43 -0
  158. package/dist/components/composed/data-display/resource-selector-card.d.ts.map +1 -0
  159. package/dist/components/composed/navigation/index.cjs +1 -1
  160. package/dist/components/composed/navigation/index.js +1 -1
  161. package/dist/components/composed/timelines/index.cjs +1 -1
  162. package/dist/components/composed/timelines/index.js +1 -1
  163. package/dist/components/features/activities/index.cjs +1 -1
  164. package/dist/components/features/activities/index.js +1 -1
  165. package/dist/components/features/ai-chat/index.cjs +1 -1
  166. package/dist/components/features/ai-chat/index.js +2 -2
  167. package/dist/components/features/comments/index.cjs +1 -1
  168. package/dist/components/features/comments/index.js +2 -2
  169. package/dist/components/features/event-log/index.cjs +1 -1
  170. package/dist/components/features/event-log/index.js +2 -2
  171. package/dist/components/features/filters/filter-query.d.ts +22 -0
  172. package/dist/components/features/filters/filter-query.d.ts.map +1 -0
  173. package/dist/components/features/filters/index.cjs +1 -1
  174. package/dist/components/features/filters/index.cjs.map +1 -1
  175. package/dist/components/features/filters/index.d.ts +1 -0
  176. package/dist/components/features/filters/index.d.ts.map +1 -1
  177. package/dist/components/features/filters/index.js +105 -22
  178. package/dist/components/features/filters/index.js.map +1 -1
  179. package/dist/components/features/global-search/index.cjs +1 -1
  180. package/dist/components/features/global-search/index.js +1 -1
  181. package/dist/components/features/media-library/index.cjs +1 -1
  182. package/dist/components/features/media-library/index.cjs.map +1 -1
  183. package/dist/components/features/media-library/index.js +36 -37
  184. package/dist/components/features/media-library/index.js.map +1 -1
  185. package/dist/components/features/mentions/index.cjs +1 -1
  186. package/dist/components/features/mentions/index.js +1 -1
  187. package/dist/components/features/products/index.cjs +1 -1
  188. package/dist/components/features/products/index.cjs.map +1 -1
  189. package/dist/components/features/products/index.js +4 -5
  190. package/dist/components/features/products/index.js.map +1 -1
  191. package/dist/components/features/schema-form/index.cjs +1 -1
  192. package/dist/components/features/schema-form/index.cjs.map +1 -1
  193. package/dist/components/features/schema-form/index.js +20 -20
  194. package/dist/components/features/suggestions/index.cjs +1 -1
  195. package/dist/components/features/suggestions/index.js +1 -1
  196. package/dist/components/layout/app-shell/index.cjs +1 -1
  197. package/dist/components/layout/app-shell/index.d.ts +1 -0
  198. package/dist/components/layout/app-shell/index.d.ts.map +1 -1
  199. package/dist/components/layout/app-shell/index.js +1 -1
  200. package/dist/components/layout/auth/index.cjs +1 -1
  201. package/dist/components/layout/auth/index.js +1 -1
  202. package/dist/components/layout/header/header.types.d.ts +40 -4
  203. package/dist/components/layout/header/header.types.d.ts.map +1 -1
  204. package/dist/components/layout/header/index.cjs +1 -1
  205. package/dist/components/layout/header/index.d.ts +5 -1
  206. package/dist/components/layout/header/index.d.ts.map +1 -1
  207. package/dist/components/layout/header/index.js +2 -2
  208. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +3 -0
  209. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts.map +1 -0
  210. package/dist/components/layout/header/partials/header-notifications.d.ts.map +1 -1
  211. package/dist/components/layout/header/partials/header-search.d.ts.map +1 -1
  212. package/dist/components/layout/header/partials/header-tool-button.d.ts +5 -0
  213. package/dist/components/layout/header/partials/header-tool-button.d.ts.map +1 -0
  214. package/dist/components/layout/header/partials/header-tool-popover.d.ts +3 -0
  215. package/dist/components/layout/header/partials/header-tool-popover.d.ts.map +1 -0
  216. package/dist/components/layout/header/partials/header-user-menu.d.ts.map +1 -1
  217. package/dist/components/layout/hooks/index.cjs +1 -1
  218. package/dist/components/layout/hooks/index.js +1 -1
  219. package/dist/components/layout/index.cjs +1 -1
  220. package/dist/components/layout/index.d.ts +2 -0
  221. package/dist/components/layout/index.d.ts.map +1 -1
  222. package/dist/components/layout/index.js +13 -10
  223. package/dist/components/layout/page/index.cjs +1 -1
  224. package/dist/components/layout/page/index.js +1 -1
  225. package/dist/components/layout/resource/index.cjs +1 -0
  226. package/dist/components/layout/resource/index.d.ts +3 -0
  227. package/dist/components/layout/resource/index.d.ts.map +1 -0
  228. package/dist/components/layout/resource/index.js +2 -0
  229. package/dist/components/layout/resource/resource.d.ts +13 -0
  230. package/dist/components/layout/resource/resource.d.ts.map +1 -0
  231. package/dist/components/layout/resource/resource.types.d.ts +86 -0
  232. package/dist/components/layout/resource/resource.types.d.ts.map +1 -0
  233. package/dist/components/layout/settings/index.cjs +1 -0
  234. package/dist/components/layout/settings/index.d.ts +2 -0
  235. package/dist/components/layout/settings/index.d.ts.map +1 -0
  236. package/dist/components/layout/settings/index.js +2 -0
  237. package/dist/components/layout/settings/settings.d.ts +47 -0
  238. package/dist/components/layout/settings/settings.d.ts.map +1 -0
  239. package/dist/components/layout/sidebar/index.cjs +1 -1
  240. package/dist/components/layout/sidebar/index.d.ts +1 -0
  241. package/dist/components/layout/sidebar/index.d.ts.map +1 -1
  242. package/dist/components/layout/sidebar/index.js +3 -3
  243. package/dist/components/layout/workspace/index.cjs +1 -1
  244. package/dist/components/layout/workspace/index.js +1 -1
  245. package/dist/services/actions/action-adapters.d.ts +5 -0
  246. package/dist/services/actions/action-adapters.d.ts.map +1 -1
  247. package/dist/services/actions/action-provider.d.ts +1 -1
  248. package/dist/services/actions/action-provider.d.ts.map +1 -1
  249. package/dist/services/actions/action-store.d.ts.map +1 -1
  250. package/dist/services/actions/actions.types.d.ts +25 -0
  251. package/dist/services/actions/actions.types.d.ts.map +1 -1
  252. package/dist/services/actions/index.cjs +1 -1
  253. package/dist/services/actions/index.cjs.map +1 -1
  254. package/dist/services/actions/index.d.ts +1 -1
  255. package/dist/services/actions/index.d.ts.map +1 -1
  256. package/dist/services/actions/index.js +113 -95
  257. package/dist/services/actions/index.js.map +1 -1
  258. package/dist/showcase/assets/AreaChart-CPs34Emq.js +6 -0
  259. package/dist/showcase/assets/CompositeItem-CRBdF4lY.js +1 -0
  260. package/dist/showcase/assets/CompositeRoot-BJL04x4e.js +1 -0
  261. package/dist/showcase/assets/DialogTrigger-DLTfNVyT.js +1 -0
  262. package/dist/showcase/assets/LabelableContext-DqxJotB_.js +1 -0
  263. package/dist/showcase/assets/PreviewLayout-DQIZaXaO.js +1 -0
  264. package/dist/showcase/assets/RadioGroup-Bd_Zncc1.js +1 -0
  265. package/dist/showcase/assets/Separator-BP98bGSM.js +1 -0
  266. package/dist/showcase/assets/ToolbarRootContext-CHQj8-IW.js +1 -0
  267. package/dist/showcase/assets/accordion-C-grh_FX.js +171 -0
  268. package/dist/showcase/assets/accordion-variants-xiD_mqaf.js +1 -0
  269. package/dist/showcase/assets/action-menu-BkBav9jX.js +1 -0
  270. package/dist/showcase/assets/activities-DWhVEoyf.js +501 -0
  271. package/dist/showcase/assets/activities-feed-card-BW5nKGmZ.js +1 -0
  272. package/dist/showcase/assets/activity-poGMMgYW.js +1 -0
  273. package/dist/showcase/assets/admin-Dd5rNbt8.js +140 -0
  274. package/dist/showcase/assets/ai-B-HxItKA.js +41 -0
  275. package/dist/showcase/assets/ai-artifact-CakosBY2.js +2 -0
  276. package/dist/showcase/assets/ai-chat-DdxooReQ.js +568 -0
  277. package/dist/showcase/assets/ai-elements-D1Vv9_Tw.js +387 -0
  278. package/dist/showcase/assets/ai-new-nIwh-IOk.js +167 -0
  279. package/dist/showcase/assets/ai-tool-call-D_D0wP5v.js +1 -0
  280. package/dist/showcase/assets/alert-BUcCtIUZ.js +1 -0
  281. package/dist/showcase/assets/alert-Dia0s7JO.js +62 -0
  282. package/dist/showcase/assets/alert-T1jitthq.js +93 -0
  283. package/dist/showcase/assets/api-key-list-BH7hCegB.js +1 -0
  284. package/dist/showcase/assets/api-key-list-DGw5v3TM.js +73 -0
  285. package/dist/showcase/assets/app-sidebar-C9tjHr7T.js +1 -0
  286. package/dist/showcase/assets/arrow-down-B6kyPDb5.js +1 -0
  287. package/dist/showcase/assets/arrow-left-D0CtgCZo.js +1 -0
  288. package/dist/showcase/assets/arrow-right-KBaOzj0x.js +1 -0
  289. package/dist/showcase/assets/arrow-up-C4Mo45qq.js +1 -0
  290. package/dist/showcase/assets/arrow-up-right-DP1T-yaT.js +1 -0
  291. package/dist/showcase/assets/avatar-D7SDbnVK.js +57 -0
  292. package/dist/showcase/assets/avatar-Dk78XyHT.js +1 -0
  293. package/dist/showcase/assets/badge-BynPmAU-.js +28 -0
  294. package/dist/showcase/assets/badge-check-BLKxMna6.js +1 -0
  295. package/dist/showcase/assets/bell-YYeVQNAQ.js +1 -0
  296. package/dist/showcase/assets/bot-DW1y5yQ-.js +1 -0
  297. package/dist/showcase/assets/box-xRYm3qua.js +1 -0
  298. package/dist/showcase/assets/brain-D_5EG0Lz.js +1 -0
  299. package/dist/showcase/assets/brand-Dyp6oyOk.js +36 -0
  300. package/dist/showcase/assets/breadcrumb-DXvRsHCJ.js +52 -0
  301. package/dist/showcase/assets/breadcrumb-IsBRcWTe.js +1 -0
  302. package/dist/showcase/assets/breadcrumbs-BU7Rgcpu.js +1 -0
  303. package/dist/showcase/assets/briefcase-DNJAkTSQ.js +1 -0
  304. package/dist/showcase/assets/building-2-ew23uhTO.js +1 -0
  305. package/dist/showcase/assets/button-Vw1Oyu_k.js +44 -0
  306. package/dist/showcase/assets/button-group-B-jDeq6X.js +1 -0
  307. package/dist/showcase/assets/buttons-C51ePl4d.js +270 -0
  308. package/dist/showcase/assets/calendar-B5HmDXFy.js +16 -0
  309. package/dist/showcase/assets/calendar-BcfonDWf.js +1 -0
  310. package/dist/showcase/assets/calendar-C30zoOBE.js +1 -0
  311. package/dist/showcase/assets/calendar-days-RYOuU9Cg.js +1 -0
  312. package/dist/showcase/assets/camera-CyHnOpqm.js +1 -0
  313. package/dist/showcase/assets/card-Btuv-VxD.js +188 -0
  314. package/dist/showcase/assets/card-BvOjmZEl.js +1 -0
  315. package/dist/showcase/assets/card-primitives-FJQ8zNnk.js +1 -0
  316. package/dist/showcase/assets/card-radio-group-CEX1QGZc.js +1 -0
  317. package/dist/showcase/assets/cards-CL6XfZ22.js +328 -0
  318. package/dist/showcase/assets/carousel-D9G8bQhs.js +449 -0
  319. package/dist/showcase/assets/cell-renderers-CFw3ElYS.js +1 -0
  320. package/dist/showcase/assets/chart-CXAM6h1e.js +358 -0
  321. package/dist/showcase/assets/chart-column-BAuLvocu.js +1 -0
  322. package/dist/showcase/assets/checkbox-Bu3lf4gm.js +1 -0
  323. package/dist/showcase/assets/chevron-down-BbbFJsFU.js +1 -0
  324. package/dist/showcase/assets/chevron-left-CmperXCk.js +1 -0
  325. package/dist/showcase/assets/chevron-right-0nQcAzMY.js +1 -0
  326. package/dist/showcase/assets/chevron-up-BXSFzrxh.js +1 -0
  327. package/dist/showcase/assets/chevrons-up-down-lvrM2T-O.js +1 -0
  328. package/dist/showcase/assets/circle-DswWOvJq.js +1 -0
  329. package/dist/showcase/assets/circle-alert-DM8Q0Da0.js +1 -0
  330. package/dist/showcase/assets/circle-check-BYi8zv0a.js +1 -0
  331. package/dist/showcase/assets/circle-check-big-WtxiRvrB.js +1 -0
  332. package/dist/showcase/assets/circle-dot-MfYw-Dij.js +1 -0
  333. package/dist/showcase/assets/circle-question-mark-CbXDG7RP.js +1 -0
  334. package/dist/showcase/assets/circle-x-DeZby2HN.js +1 -0
  335. package/dist/showcase/assets/clock-3-BxradwSg.js +1 -0
  336. package/dist/showcase/assets/clock-BBX3LCxu.js +1 -0
  337. package/dist/showcase/assets/code-xml-ldsBhjwS.js +1 -0
  338. package/dist/showcase/assets/collapsible-COxB1q4f.js +1 -0
  339. package/dist/showcase/assets/collapsible-D8iHSi7O.js +27 -0
  340. package/dist/showcase/assets/combobox-gNdpv0PU.js +726 -0
  341. package/dist/showcase/assets/command-BNVn6pYm.js +1 -0
  342. package/dist/showcase/assets/command-Bwp2eLDF.js +1 -0
  343. package/dist/showcase/assets/comment-composer-eU5HG1ZD.js +1 -0
  344. package/dist/showcase/assets/comment-item-AKJEHLvt.js +1 -0
  345. package/dist/showcase/assets/comments-hcLJicNU.js +357 -0
  346. package/dist/showcase/assets/commerce-C_RgOVxU.js +79 -0
  347. package/dist/showcase/assets/commerce-extras-CVVnDyB5.js +189 -0
  348. package/dist/showcase/assets/composite-BW91WkOo.js +1 -0
  349. package/dist/showcase/assets/contact-card-CE82BDxj.js +65 -0
  350. package/dist/showcase/assets/content-container-Cc8Vv5Wp.js +1 -0
  351. package/dist/showcase/assets/copyable-CD9f6sxk.js +96 -0
  352. package/dist/showcase/assets/copyable-DRvJ9iOu.js +1 -0
  353. package/dist/showcase/assets/course-card-DYzULN2A.js +77 -0
  354. package/dist/showcase/assets/cpu-Cc__BewW.js +1 -0
  355. package/dist/showcase/assets/credit-card-CoIW8_5L.js +1 -0
  356. package/dist/showcase/assets/currency-DEKUvlFU.js +149 -0
  357. package/dist/showcase/assets/dark-surfaces-D5WXaLLj.js +90 -0
  358. package/dist/showcase/assets/database-C8o4g1ov.js +1 -0
  359. package/dist/showcase/assets/date-block-Aw2riL52.js +1 -0
  360. package/dist/showcase/assets/date-picker-BrBCLxZ8.js +1 -0
  361. package/dist/showcase/assets/date-pickers-B84_YAGT.js +73 -0
  362. package/dist/showcase/assets/dense-info-BaI61NnP.js +106 -0
  363. package/dist/showcase/assets/dialog-CfKGB1qy.js +1 -0
  364. package/dist/showcase/assets/dialog-DpfYwJPk.js +1 -0
  365. package/dist/showcase/assets/display-ZDXpxNSP.js +403 -0
  366. package/dist/showcase/assets/dist-DRkwLUFP.js +45 -0
  367. package/dist/showcase/assets/dollar-sign-BTuul0J-.js +1 -0
  368. package/dist/showcase/assets/download-Nn6XkM9l.js +1 -0
  369. package/dist/showcase/assets/dropdown-menu-CrcweCup.js +1 -0
  370. package/dist/showcase/assets/dropzone-MajEhAfA.js +1 -0
  371. package/dist/showcase/assets/earth-Cv_-EtPW.js +1 -0
  372. package/dist/showcase/assets/ellipsis-D0y6rUzm.js +1 -0
  373. package/dist/showcase/assets/ellipsis-vertical-B6ICYsU2.js +1 -0
  374. package/dist/showcase/assets/empty-CWtvDL2Z.js +1 -0
  375. package/dist/showcase/assets/empty-item-CBdSL5K4.js +49 -0
  376. package/dist/showcase/assets/empty-state-DpAXXKE_.js +1 -0
  377. package/dist/showcase/assets/empty-state-x7W66Jff.js +188 -0
  378. package/dist/showcase/assets/enhanced-activities-BgQBDjph.js +361 -0
  379. package/dist/showcase/assets/enhanced-combobox-BT-d7sfw.js +1 -0
  380. package/dist/showcase/assets/event-calendar-Bl3N30L5.js +138 -0
  381. package/dist/showcase/assets/event-log-BI24HOvx.js +330 -0
  382. package/dist/showcase/assets/example-CbMg22fx.js +1 -0
  383. package/dist/showcase/assets/external-link-C4QW5KPr.js +1 -0
  384. package/dist/showcase/assets/eye-rvb4fYw0.js +1 -0
  385. package/dist/showcase/assets/feature-announcement-CChQvOnH.js +34 -0
  386. package/dist/showcase/assets/file-GOMuLez7.js +1 -0
  387. package/dist/showcase/assets/file-text-B21ZcL9w.js +1 -0
  388. package/dist/showcase/assets/filters-Crp5EI1q.js +139 -0
  389. package/dist/showcase/assets/flag-D1iXMqPC.js +1 -0
  390. package/dist/showcase/assets/folder-open-CjZE_PS8.js +1 -0
  391. package/dist/showcase/assets/form-field-Dtn_NArM.js +1 -0
  392. package/dist/showcase/assets/format-Cu09wP-k.js +1 -0
  393. package/dist/showcase/assets/forms-noSArwvn.js +911 -0
  394. package/dist/showcase/assets/frame-2DJdBXkw.js +167 -0
  395. package/dist/showcase/assets/getPseudoElementBounds-DxlN6Yut.js +1 -0
  396. package/dist/showcase/assets/gift-DBIsZsVg.js +1 -0
  397. package/dist/showcase/assets/giftcard-cards-B3ffDDjK.js +85 -0
  398. package/dist/showcase/assets/git-branch-6eIv9W2g.js +1 -0
  399. package/dist/showcase/assets/global-search-BelZn8mj.js +215 -0
  400. package/dist/showcase/assets/global-search-DSMNBBiZ.js +1 -0
  401. package/dist/showcase/assets/globe-B_Lqx3uz.js +1 -0
  402. package/dist/showcase/assets/gradient-card-D_2eaE6O.js +58 -0
  403. package/dist/showcase/assets/hash-BC0RnYwr.js +1 -0
  404. package/dist/showcase/assets/header-CMjgUhtM.js +1 -0
  405. package/dist/showcase/assets/header-notifications-fOFoqfCR.js +1 -0
  406. package/dist/showcase/assets/heart-BM6yPMXn.js +1 -0
  407. package/dist/showcase/assets/house-CnsMNKdQ.js +1 -0
  408. package/dist/showcase/assets/icon-badge-IP9B3lQm.js +1 -0
  409. package/dist/showcase/assets/image-B5jt_w43.js +1 -0
  410. package/dist/showcase/assets/inbox-BcbV9uGN.js +1 -0
  411. package/dist/showcase/assets/index-Bn8k0P7-.css +2 -0
  412. package/dist/showcase/assets/index-DNH0y0r-.js +10 -0
  413. package/dist/showcase/assets/inertValue-B82SGILi.js +1 -0
  414. package/dist/showcase/assets/info-DO5VmDSw.js +1 -0
  415. package/dist/showcase/assets/inline-stat-B2s_ozrX.js +1 -0
  416. package/dist/showcase/assets/input-BCxdburb.js +1 -0
  417. package/dist/showcase/assets/input-DcQuALxy.js +1 -0
  418. package/dist/showcase/assets/input-group-DZJrOGbm.js +1 -0
  419. package/dist/showcase/assets/input-group-PwfoPR94.js +47 -0
  420. package/dist/showcase/assets/inputs-DetnUcEp.js +155 -0
  421. package/dist/showcase/assets/invoice-header-BMWL_9sW.js +36 -0
  422. package/dist/showcase/assets/invoice-items-DLEQR54f.js +36 -0
  423. package/dist/showcase/assets/invoice-mini-BxO8W_p2.js +14 -0
  424. package/dist/showcase/assets/invoice-table-ClMTdfvZ.js +30 -0
  425. package/dist/showcase/assets/isSameDay-B9x5Mpln.js +1 -0
  426. package/dist/showcase/assets/isToday-CT4NGB5x.js +1 -0
  427. package/dist/showcase/assets/italic-BiQv-7DA.js +1 -0
  428. package/dist/showcase/assets/item-CdgzxWcL.js +1 -0
  429. package/dist/showcase/assets/item-JreKWzkR.js +134 -0
  430. package/dist/showcase/assets/item-a8FCQMvC.js +1 -0
  431. package/dist/showcase/assets/kanban-CekpGtlO.js +186 -0
  432. package/dist/showcase/assets/key-round-CpIUGlhG.js +1 -0
  433. package/dist/showcase/assets/label-BE1d_Rxi.js +1 -0
  434. package/dist/showcase/assets/languages-DaFWrOam.js +1 -0
  435. package/dist/showcase/assets/layers-DDIuTz4-.js +1 -0
  436. package/dist/showcase/assets/layout-app-shell-BkqOwNe9.js +608 -0
  437. package/dist/showcase/assets/layout-auth-Bng_0NM0.js +754 -0
  438. package/dist/showcase/assets/layout-containers-Bk_jSDWd.js +101 -0
  439. package/dist/showcase/assets/layout-header-CuJVU1Rx.js +203 -0
  440. package/dist/showcase/assets/layout-page-DHOPox5Z.js +278 -0
  441. package/dist/showcase/assets/layout-primitives-BnIgANs6.js +34 -0
  442. package/dist/showcase/assets/layout-sidebar-BUOjQm9-.js +224 -0
  443. package/dist/showcase/assets/layout-users-DFlJQAuB.js +117 -0
  444. package/dist/showcase/assets/layout-workspace-Cq63UWwT.js +183 -0
  445. package/dist/showcase/assets/lock-DTD3z5Vh.js +1 -0
  446. package/dist/showcase/assets/lock-keyhole-Bbs1Ry2S.js +1 -0
  447. package/dist/showcase/assets/mail-DAa8myka.js +1 -0
  448. package/dist/showcase/assets/mail-check-DrmYfqQb.js +1 -0
  449. package/dist/showcase/assets/map-DfYPJKDx.js +124 -0
  450. package/dist/showcase/assets/map-pin-Cf_uffQY.js +1 -0
  451. package/dist/showcase/assets/media-library-Duyf6M0c.js +695 -0
  452. package/dist/showcase/assets/mention-inline-suggestions-tOlG56Jr.js +1 -0
  453. package/dist/showcase/assets/mentions-LbZlN995.js +138 -0
  454. package/dist/showcase/assets/menus-Cs95R125.js +165 -0
  455. package/dist/showcase/assets/message-square-CjaeUwPc.js +1 -0
  456. package/dist/showcase/assets/metadata-list-Bcy5s1_q.js +1 -0
  457. package/dist/showcase/assets/metadata-list-C9L63gMM2.js +288 -0
  458. package/dist/showcase/assets/metric-D8bF87C1.js +1 -0
  459. package/dist/showcase/assets/metric-bar-DQF1jEsY.js +1 -0
  460. package/dist/showcase/assets/metric-grid-DJZjbFrm.js +1 -0
  461. package/dist/showcase/assets/metric-trend-chip-C9YeKxwe.js +1 -0
  462. package/dist/showcase/assets/metrics-analytics-bar-CfGjnKEG.js +44 -0
  463. package/dist/showcase/assets/metrics-analytics-cards-C4R2q2ia.js +50 -0
  464. package/dist/showcase/assets/metrics-comparison-B2FZ-rUG.js +76 -0
  465. package/dist/showcase/assets/metrics-heatmap-BS4EafAM.js +27 -0
  466. package/dist/showcase/assets/metrics-inline-badge-CyWA0Plw.js +17 -0
  467. package/dist/showcase/assets/metrics-kpi-row-CH_KTuo2.js +31 -0
  468. package/dist/showcase/assets/metrics-micro-grid-Dw1rbkBU.js +42 -0
  469. package/dist/showcase/assets/metrics-overview-BuLSn0GC.js +192 -0
  470. package/dist/showcase/assets/metrics-stat-cards-Zo4F0-y4.js +54 -0
  471. package/dist/showcase/assets/minus-COUx_vHQ.js +1 -0
  472. package/dist/showcase/assets/money-display-prumQLQ2.js +1 -0
  473. package/dist/showcase/assets/month-year-picker-BDTiuGOD.js +1 -0
  474. package/dist/showcase/assets/navigation-Bf_sgFei.js +90 -0
  475. package/dist/showcase/assets/navigation-Dnqq0un0.js +230 -0
  476. package/dist/showcase/assets/navigation-extras-ydwfzYfj.js +43 -0
  477. package/dist/showcase/assets/onboarding-checklist-DBLaUqhZ.js +119 -0
  478. package/dist/showcase/assets/overflow-tab-bar-UXs-T5Fq.js +1 -0
  479. package/dist/showcase/assets/overlays-C1ET_VvE.js +408 -0
  480. package/dist/showcase/assets/overlays-dMd0EOT1.js +159 -0
  481. package/dist/showcase/assets/package-C9EnWNEP.js +1 -0
  482. package/dist/showcase/assets/package-check-BGT72daQ.js +1 -0
  483. package/dist/showcase/assets/page-action-button-8faHdFOD.js +1 -0
  484. package/dist/showcase/assets/page-header-DoZnb9z9.js +1 -0
  485. package/dist/showcase/assets/pagination-BJ3wQQtL.js +42 -0
  486. package/dist/showcase/assets/pagination-DJnga08n.js +1 -0
  487. package/dist/showcase/assets/paperclip-DsQ_IPLp.js +1 -0
  488. package/dist/showcase/assets/password-input-CLxvZdDC.js +1 -0
  489. package/dist/showcase/assets/pencil-37DzPmX5.js +1 -0
  490. package/dist/showcase/assets/phone-CLDh9lYU.js +1 -0
  491. package/dist/showcase/assets/plus-PKSdX45c.js +1 -0
  492. package/dist/showcase/assets/popover-BWbBoxN0.js +1 -0
  493. package/dist/showcase/assets/popover-DoEhmJ7G.js +1 -0
  494. package/dist/showcase/assets/popover-menu-wt8kWbr1.js +1 -0
  495. package/dist/showcase/assets/products-Bvl2zRfb.js +407 -0
  496. package/dist/showcase/assets/progress-BeusdG_D.js +18 -0
  497. package/dist/showcase/assets/progress-CQr08MPz.js +1 -0
  498. package/dist/showcase/assets/props-table-DSdjPLVr.js +1 -0
  499. package/dist/showcase/assets/props.generated-AlskAQY9.json +41579 -0
  500. package/dist/showcase/assets/quote-D1DrZRcn.js +1 -0
  501. package/dist/showcase/assets/receipt-CxNJvyC5.js +1 -0
  502. package/dist/showcase/assets/receipt-text-2YwFjXVP.js +1 -0
  503. package/dist/showcase/assets/refresh-cw-DlkWEAjG.js +1 -0
  504. package/dist/showcase/assets/resolveValueLabel-Ctt-9xwK.js +1 -0
  505. package/dist/showcase/assets/resource-selector-card-C9zM67wN.js +39 -0
  506. package/dist/showcase/assets/rich-text-editor-DUWBkEdn.js +124 -0
  507. package/dist/showcase/assets/rich-text-editor-DjsgN-HX.js +143 -0
  508. package/dist/showcase/assets/rotate-ccw-ZkWMrEMJ.js +1 -0
  509. package/dist/showcase/assets/save-CQjTFBwm.js +1 -0
  510. package/dist/showcase/assets/schema-form-yfcV7ZHE.js +325 -0
  511. package/dist/showcase/assets/scroll-area-D73Zq5No.js +32 -0
  512. package/dist/showcase/assets/scroll-area-Toa6lE_G.js +1 -0
  513. package/dist/showcase/assets/select-BQWY3ndy.js +1 -0
  514. package/dist/showcase/assets/select-x02n3iNp.js +1 -0
  515. package/dist/showcase/assets/send-L-LNhDVx.js +1 -0
  516. package/dist/showcase/assets/separator-B57lhXSg.js +28 -0
  517. package/dist/showcase/assets/separator-kwh2KDqD.js +1 -0
  518. package/dist/showcase/assets/settings-Mbnp6hDe.js +1 -0
  519. package/dist/showcase/assets/sheet-DwYghriA.js +1 -0
  520. package/dist/showcase/assets/shield-D084AWSl.js +1 -0
  521. package/dist/showcase/assets/shield-alert-h6F2vnr-.js +1 -0
  522. package/dist/showcase/assets/shield-check-UiN6QwPl.js +1 -0
  523. package/dist/showcase/assets/shopping-bag-oxYbVKoz.js +1 -0
  524. package/dist/showcase/assets/sidebar-BWDrvFY1.js +1 -0
  525. package/dist/showcase/assets/sidebar.context-BhexAjPM.js +1 -0
  526. package/dist/showcase/assets/skeleton-BIS2X39p.js +29 -0
  527. package/dist/showcase/assets/skeleton-uyUucxJA.js +1 -0
  528. package/dist/showcase/assets/slider-DL--Jsf0.js +1 -0
  529. package/dist/showcase/assets/sliders-horizontal-C6SHwI9f.js +1 -0
  530. package/dist/showcase/assets/smart-card-DpvRHqI9.js +1 -0
  531. package/dist/showcase/assets/sonner-CvCutMP9.js +22 -0
  532. package/dist/showcase/assets/sortable.esm-COtQXiwU.js +5 -0
  533. package/dist/showcase/assets/sparkles-bMR7rbuC.js +1 -0
  534. package/dist/showcase/assets/spinner-CBXhPGyW.js +30 -0
  535. package/dist/showcase/assets/spinner-Dl2u80sI.js +49 -0
  536. package/dist/showcase/assets/spinner-ULnFdoGj.js +1 -0
  537. package/dist/showcase/assets/square-pen-3jbmTAqh.js +1 -0
  538. package/dist/showcase/assets/stacked-avatars-XKXaLCmk.js +1 -0
  539. package/dist/showcase/assets/star-0BUJBDj_.js +1 -0
  540. package/dist/showcase/assets/startOfDay-C8cGxdjJ.js +1 -0
  541. package/dist/showcase/assets/styles-Cl6qvIKS.js +1 -0
  542. package/dist/showcase/assets/suggestions-EB3TFZpP.js +126 -0
  543. package/dist/showcase/assets/switch-BbZ7_Rk-.js +1 -0
  544. package/dist/showcase/assets/switch-C0QtKm5H.js +1 -0
  545. package/dist/showcase/assets/sync-BAO20Naa.js +107 -0
  546. package/dist/showcase/assets/table-CnCYxSnD.js +509 -0
  547. package/dist/showcase/assets/table-DF7x4TGI.js +1 -0
  548. package/dist/showcase/assets/table-actions-CjaUIKQl.js +1 -0
  549. package/dist/showcase/assets/tabs-D3YHyrQ5.js +1 -0
  550. package/dist/showcase/assets/tabs-vUgN5IPn.js +19 -0
  551. package/dist/showcase/assets/tags-input-jtEAac1b.js +1 -0
  552. package/dist/showcase/assets/text-button-fiMDoWms.js +1 -0
  553. package/dist/showcase/assets/text-link-CSzy09hn.js +1 -0
  554. package/dist/showcase/assets/textarea-DnvQVkFU.js +1 -0
  555. package/dist/showcase/assets/textarea-mATRsiLJ.js +1 -0
  556. package/dist/showcase/assets/timelines-fQQIiGc4.js +200 -0
  557. package/dist/showcase/assets/toggle-group-B0hN7VRz.js +1 -0
  558. package/dist/showcase/assets/toggles-group-CXm2HDJ1.js +32 -0
  559. package/dist/showcase/assets/toggles-kwgQf4hQ.js +71 -0
  560. package/dist/showcase/assets/trash-2-xwHdvAn6.js +1 -0
  561. package/dist/showcase/assets/trending-up-CKnZUURN.js +1 -0
  562. package/dist/showcase/assets/truck-8P8-8rHh.js +1 -0
  563. package/dist/showcase/assets/typography-BP3SCf0c.js +223 -0
  564. package/dist/showcase/assets/ui-badge-eTC8uxVw.js +28 -0
  565. package/dist/showcase/assets/ui-card-AQkRKit0.js +30 -0
  566. package/dist/showcase/assets/ui-table-BTE7t50V.js +42 -0
  567. package/dist/showcase/assets/upload-tray-DpW8ZnxN.js +138 -0
  568. package/dist/showcase/assets/use-layout-link-DR4Apqbc.js +1 -0
  569. package/dist/showcase/assets/useAnchoredPopupScrollLock-CT1urU5D.js +1 -0
  570. package/dist/showcase/assets/useAriaLabelledBy-DiHf8Ou_.js +1 -0
  571. package/dist/showcase/assets/useCollapsiblePanel-NNLPWtyS.js +1 -0
  572. package/dist/showcase/assets/useCompositeItem-BE0Lg9Iz.js +1 -0
  573. package/dist/showcase/assets/useCompositeListItem-OwLLy0R3.js +1 -0
  574. package/dist/showcase/assets/useLabelableId-Y-6YW07q.js +1 -0
  575. package/dist/showcase/assets/useOpenInteractionType-CUTVNS1V.js +1 -0
  576. package/dist/showcase/assets/useRender-BiaVVD8L.js +1 -0
  577. package/dist/showcase/assets/useTriggerFocusGuards-DCMcmSgH.js +1 -0
  578. package/dist/showcase/assets/useValueChanged-kq4oH4So.js +1 -0
  579. package/dist/showcase/assets/user-BCzeUL5p.js +1 -0
  580. package/dist/showcase/assets/user-plus-CUbfQtkK.js +1 -0
  581. package/dist/showcase/assets/users-DOGJZmUN.js +1 -0
  582. package/dist/showcase/assets/vendor-profile-C7dXfVv_.js +37 -0
  583. package/dist/showcase/assets/video-DbaCGki8.js +1 -0
  584. package/dist/showcase/assets/wrench-TbDfItHQ.js +1 -0
  585. package/dist/showcase/assets/x-BpAEmld2.js +1 -0
  586. package/dist/showcase/assets/zap-E8G3kjwh.js +1 -0
  587. package/dist/showcase/index.html +2 -2
  588. package/dist/style.css +1 -1
  589. package/package.json +16 -1
  590. package/dist/_shared/ai-artifact-D4EjKoq6.cjs +0 -3
  591. package/dist/_shared/ai-artifact-D4EjKoq6.cjs.map +0 -1
  592. package/dist/_shared/ai-artifact-nlOrSeqT.js +0 -1099
  593. package/dist/_shared/ai-artifact-nlOrSeqT.js.map +0 -1
  594. package/dist/_shared/auth-C5HawWvp.cjs +0 -2
  595. package/dist/_shared/auth-C5HawWvp.cjs.map +0 -1
  596. package/dist/_shared/auth-DnMEJXP9.js +0 -643
  597. package/dist/_shared/auth-DnMEJXP9.js.map +0 -1
  598. package/dist/_shared/badge-6WYAMJwA.js +0 -108
  599. package/dist/_shared/badge-6WYAMJwA.js.map +0 -1
  600. package/dist/_shared/badge-CBof1rbF.cjs +0 -2
  601. package/dist/_shared/badge-CBof1rbF.cjs.map +0 -1
  602. package/dist/_shared/combobox-B4KmDZK0.cjs +0 -2
  603. package/dist/_shared/combobox-B4KmDZK0.cjs.map +0 -1
  604. package/dist/_shared/combobox-YUGi3xSc.js +0 -810
  605. package/dist/_shared/combobox-YUGi3xSc.js.map +0 -1
  606. package/dist/_shared/comments-GzXdwpq4.js +0 -952
  607. package/dist/_shared/comments-GzXdwpq4.js.map +0 -1
  608. package/dist/_shared/comments-Zj_foV1V.cjs +0 -2
  609. package/dist/_shared/comments-Zj_foV1V.cjs.map +0 -1
  610. package/dist/_shared/display-Dhy5ogxC.cjs +0 -2
  611. package/dist/_shared/display-Dhy5ogxC.cjs.map +0 -1
  612. package/dist/_shared/display-NBtWdAMl.js +0 -1154
  613. package/dist/_shared/display-NBtWdAMl.js.map +0 -1
  614. package/dist/_shared/form-field-B7taMVbC.js +0 -329
  615. package/dist/_shared/form-field-B7taMVbC.js.map +0 -1
  616. package/dist/_shared/form-field-rMGPvHFK.cjs +0 -2
  617. package/dist/_shared/form-field-rMGPvHFK.cjs.map +0 -1
  618. package/dist/_shared/forms-BweX9Lm8.cjs +0 -2
  619. package/dist/_shared/forms-BweX9Lm8.cjs.map +0 -1
  620. package/dist/_shared/forms-L1hyNKpZ.js +0 -3430
  621. package/dist/_shared/forms-L1hyNKpZ.js.map +0 -1
  622. package/dist/_shared/header-BSBPtGn4.cjs +0 -2
  623. package/dist/_shared/header-BSBPtGn4.cjs.map +0 -1
  624. package/dist/_shared/header-No6GSp4R.js +0 -360
  625. package/dist/_shared/header-No6GSp4R.js.map +0 -1
  626. package/dist/_shared/hooks-BkXvZ4py.js +0 -118
  627. package/dist/_shared/hooks-BkXvZ4py.js.map +0 -1
  628. package/dist/_shared/hooks-D3SbLBRk.cjs +0 -2
  629. package/dist/_shared/hooks-D3SbLBRk.cjs.map +0 -1
  630. package/dist/_shared/mentions-CA1Ka_Bv.cjs +0 -2
  631. package/dist/_shared/mentions-CA1Ka_Bv.cjs.map +0 -1
  632. package/dist/_shared/mentions-CdvvLGQG.js +0 -506
  633. package/dist/_shared/mentions-CdvvLGQG.js.map +0 -1
  634. package/dist/_shared/navigation-BemwPPC8.cjs +0 -2
  635. package/dist/_shared/navigation-BemwPPC8.cjs.map +0 -1
  636. package/dist/_shared/navigation-DY540HB0.js +0 -419
  637. package/dist/_shared/navigation-DY540HB0.js.map +0 -1
  638. package/dist/_shared/page-Cg_gNpyK.js +0 -262
  639. package/dist/_shared/page-Cg_gNpyK.js.map +0 -1
  640. package/dist/_shared/page-CpFWQuWU.cjs +0 -2
  641. package/dist/_shared/page-CpFWQuWU.cjs.map +0 -1
  642. package/dist/_shared/sidebar-BTFfxmNG.cjs +0 -2
  643. package/dist/_shared/sidebar-BTFfxmNG.cjs.map +0 -1
  644. package/dist/_shared/sidebar-wmztVpnO.js +0 -538
  645. package/dist/_shared/sidebar-wmztVpnO.js.map +0 -1
  646. package/dist/_shared/switch-BBP3u1z5.js +0 -55
  647. package/dist/_shared/switch-BBP3u1z5.js.map +0 -1
  648. package/dist/_shared/switch-zFZhhOEP.cjs +0 -2
  649. package/dist/_shared/switch-zFZhhOEP.cjs.map +0 -1
  650. package/dist/_shared/table-BItnJ8lG.cjs +0 -2
  651. package/dist/_shared/table-BItnJ8lG.cjs.map +0 -1
  652. package/dist/_shared/table-D3349b-v.js +0 -1189
  653. package/dist/_shared/table-D3349b-v.js.map +0 -1
  654. package/dist/_shared/workspace-BGVeTeJy.js +0 -357
  655. package/dist/_shared/workspace-BGVeTeJy.js.map +0 -1
  656. package/dist/_shared/workspace-CWyzTUmE.cjs +0 -2
  657. package/dist/_shared/workspace-CWyzTUmE.cjs.map +0 -1
  658. package/dist/showcase/assets/AreaChart-BYEewdc_.js +0 -6
  659. package/dist/showcase/assets/CompositeItem-Duekeg4m.js +0 -1
  660. package/dist/showcase/assets/CompositeRoot-BgNU3T7R.js +0 -1
  661. package/dist/showcase/assets/DialogTrigger-9xWmoeF5.js +0 -1
  662. package/dist/showcase/assets/LabelableContext-B3W_70Qk.js +0 -1
  663. package/dist/showcase/assets/PreviewLayout-nADJqRlP.js +0 -1
  664. package/dist/showcase/assets/RadioGroup-Bp1VCzxr.js +0 -1
  665. package/dist/showcase/assets/Separator-9PWX3shz.js +0 -1
  666. package/dist/showcase/assets/ToolbarRootContext-DwELw9xS.js +0 -1
  667. package/dist/showcase/assets/accordion-CfqHO9_z.js +0 -171
  668. package/dist/showcase/assets/accordion-variants-pkPHxkLW.js +0 -1
  669. package/dist/showcase/assets/action-menu-DFzSuDjI.js +0 -1
  670. package/dist/showcase/assets/activities-Bo97b2-I.js +0 -501
  671. package/dist/showcase/assets/activities-feed-card-D77gf27B.js +0 -1
  672. package/dist/showcase/assets/activity-BUlCWLI8.js +0 -1
  673. package/dist/showcase/assets/admin-CxTV4kZX.js +0 -80
  674. package/dist/showcase/assets/ai-Bym5H8bn.js +0 -41
  675. package/dist/showcase/assets/ai-artifact-DZVl1WmK.js +0 -2
  676. package/dist/showcase/assets/ai-chat-M3X5-PgT.js +0 -568
  677. package/dist/showcase/assets/ai-elements-DjppcMBD.js +0 -387
  678. package/dist/showcase/assets/ai-new-CXnrIi5S.js +0 -167
  679. package/dist/showcase/assets/ai-tool-call-DyMI8DqD.js +0 -1
  680. package/dist/showcase/assets/alert-D6Pygy2s.js +0 -62
  681. package/dist/showcase/assets/alert-DCrWLbEx.js +0 -93
  682. package/dist/showcase/assets/alert-qTNM0vld.js +0 -1
  683. package/dist/showcase/assets/api-key-list-CCpuHYHc.js +0 -73
  684. package/dist/showcase/assets/app-sidebar-CxTRNC5L.js +0 -1
  685. package/dist/showcase/assets/arrow-down--phuskCV.js +0 -1
  686. package/dist/showcase/assets/arrow-left-B__WWqyA.js +0 -1
  687. package/dist/showcase/assets/arrow-right-1-EvXxjB.js +0 -1
  688. package/dist/showcase/assets/arrow-up-lWotnmo7.js +0 -1
  689. package/dist/showcase/assets/arrow-up-right-IyQ3oeq0.js +0 -1
  690. package/dist/showcase/assets/avatar-gugtNx4D.js +0 -57
  691. package/dist/showcase/assets/avatar-n1nywTlx.js +0 -1
  692. package/dist/showcase/assets/badge-TuE-u3Hv.js +0 -28
  693. package/dist/showcase/assets/badge-check-CPDvpVzK.js +0 -1
  694. package/dist/showcase/assets/bell-DeCVddCA.js +0 -1
  695. package/dist/showcase/assets/bot-B_vzJEJH.js +0 -1
  696. package/dist/showcase/assets/box-z4O8t_K5.js +0 -1
  697. package/dist/showcase/assets/brain-DdKBE4Bh.js +0 -1
  698. package/dist/showcase/assets/brand-CfW7mgTY.js +0 -36
  699. package/dist/showcase/assets/breadcrumb-B4TBbKv3.js +0 -52
  700. package/dist/showcase/assets/breadcrumb-bF_sFVBL.js +0 -1
  701. package/dist/showcase/assets/breadcrumbs-CBv3EaMX.js +0 -1
  702. package/dist/showcase/assets/briefcase-ClqzeNt3.js +0 -1
  703. package/dist/showcase/assets/building-2-BQuWgjZj.js +0 -1
  704. package/dist/showcase/assets/button-CWKNCI82.js +0 -44
  705. package/dist/showcase/assets/button-group-BYhxtFwV.js +0 -1
  706. package/dist/showcase/assets/buttons-mBRyBw3Q.js +0 -270
  707. package/dist/showcase/assets/calendar-BgloJjlW.js +0 -1
  708. package/dist/showcase/assets/calendar-CJDWspzi.js +0 -1
  709. package/dist/showcase/assets/calendar-CgML2kJt.js +0 -16
  710. package/dist/showcase/assets/calendar-days-C0gTLVnY.js +0 -1
  711. package/dist/showcase/assets/camera-nIlaz4Sn.js +0 -1
  712. package/dist/showcase/assets/card-1ncRnRvq.js +0 -1
  713. package/dist/showcase/assets/card-CcgWzFB-.js +0 -188
  714. package/dist/showcase/assets/card-primitives-By4-RTuP.js +0 -1
  715. package/dist/showcase/assets/card-radio-group-DeX3qsRg.js +0 -1
  716. package/dist/showcase/assets/cards-DdqQr8rY.js +0 -328
  717. package/dist/showcase/assets/carousel-CV8ltDl8.js +0 -449
  718. package/dist/showcase/assets/chart-BNzHjskC.js +0 -358
  719. package/dist/showcase/assets/chart-column-CpTxRLEH.js +0 -1
  720. package/dist/showcase/assets/checkbox-CZTTm4Dv.js +0 -1
  721. package/dist/showcase/assets/chevron-down-LWBNHe9S.js +0 -1
  722. package/dist/showcase/assets/chevron-left-BsshO7nf.js +0 -1
  723. package/dist/showcase/assets/chevron-right-t68um2_G.js +0 -1
  724. package/dist/showcase/assets/chevron-up-DjhlESJB.js +0 -1
  725. package/dist/showcase/assets/chevrons-up-down-ZUo0Do59.js +0 -1
  726. package/dist/showcase/assets/circle-BL52dLr9.js +0 -1
  727. package/dist/showcase/assets/circle-alert-CXCt6zxc.js +0 -1
  728. package/dist/showcase/assets/circle-check-CbiRRw7s.js +0 -1
  729. package/dist/showcase/assets/circle-check-big-BSgn7lyt.js +0 -1
  730. package/dist/showcase/assets/circle-dot-WEOpGGJf.js +0 -1
  731. package/dist/showcase/assets/circle-question-mark-C9hLlsD7.js +0 -1
  732. package/dist/showcase/assets/circle-x-BT9TJbJC.js +0 -1
  733. package/dist/showcase/assets/clock-3-CfRK8ckc.js +0 -1
  734. package/dist/showcase/assets/clock-D-3zf0c1.js +0 -1
  735. package/dist/showcase/assets/code-xml-CQYKKuBU.js +0 -1
  736. package/dist/showcase/assets/collapsible-BC0hQvat.js +0 -27
  737. package/dist/showcase/assets/collapsible-CRVtVDCF.js +0 -1
  738. package/dist/showcase/assets/combobox-D4VYvYCT.js +0 -696
  739. package/dist/showcase/assets/command-CxeHT4lL.js +0 -1
  740. package/dist/showcase/assets/command-Do_t_Zou.js +0 -1
  741. package/dist/showcase/assets/comment-composer-DoFwvVlq.js +0 -1
  742. package/dist/showcase/assets/comment-item-CT8UbVeg.js +0 -1
  743. package/dist/showcase/assets/comments-CqdXrjUn.js +0 -357
  744. package/dist/showcase/assets/commerce-B9V2Wo_q.js +0 -79
  745. package/dist/showcase/assets/commerce-extras-CNT3QmAT.js +0 -189
  746. package/dist/showcase/assets/composite-BXLXcagx.js +0 -1
  747. package/dist/showcase/assets/contact-card-BLcAXepj.js +0 -65
  748. package/dist/showcase/assets/content-container-DJVD3ZmI.js +0 -1
  749. package/dist/showcase/assets/copyable-od17NrMu.js +0 -96
  750. package/dist/showcase/assets/course-card-CdZQr5yy.js +0 -77
  751. package/dist/showcase/assets/cpu-B8kRNR1R.js +0 -1
  752. package/dist/showcase/assets/credit-card-BYMQj03s.js +0 -1
  753. package/dist/showcase/assets/currency-Cxv3Cp6B.js +0 -149
  754. package/dist/showcase/assets/dark-surfaces-Cfp58iFb.js +0 -90
  755. package/dist/showcase/assets/database-DuUABvxU.js +0 -1
  756. package/dist/showcase/assets/date-block-E9qfY7W7.js +0 -1
  757. package/dist/showcase/assets/date-picker-I8BdaiiU.js +0 -1
  758. package/dist/showcase/assets/date-pickers-BLJaqhcS.js +0 -73
  759. package/dist/showcase/assets/dense-info-Bk1K_7Ww.js +0 -106
  760. package/dist/showcase/assets/dialog-BuatDnQ9.js +0 -1
  761. package/dist/showcase/assets/dialog-DCx-LydW.js +0 -1
  762. package/dist/showcase/assets/display-Bt7busw5.js +0 -403
  763. package/dist/showcase/assets/dist-BPyBHOXU.js +0 -45
  764. package/dist/showcase/assets/dollar-sign-qXQSS6Gh.js +0 -1
  765. package/dist/showcase/assets/download-B2JAmHmJ.js +0 -1
  766. package/dist/showcase/assets/dropdown-menu-DXT3BZLa.js +0 -1
  767. package/dist/showcase/assets/dropzone-BKIxDJNy.js +0 -1
  768. package/dist/showcase/assets/earth-7-Z3Gv2v.js +0 -1
  769. package/dist/showcase/assets/ellipsis-6Krb3RRW.js +0 -1
  770. package/dist/showcase/assets/ellipsis-vertical-DeOMIw1J.js +0 -1
  771. package/dist/showcase/assets/empty-BSYKaeXQ.js +0 -1
  772. package/dist/showcase/assets/empty-item-YElgv25f.js +0 -49
  773. package/dist/showcase/assets/empty-state-D-LrvnKF.js +0 -1
  774. package/dist/showcase/assets/empty-state-dNh1GtVU.js +0 -188
  775. package/dist/showcase/assets/enhanced-activities-Bw99ItYl.js +0 -361
  776. package/dist/showcase/assets/enhanced-combobox-CqLZmU3K.js +0 -1
  777. package/dist/showcase/assets/event-calendar-CcSi7g5A.js +0 -138
  778. package/dist/showcase/assets/event-log-2uq-eYxh.js +0 -330
  779. package/dist/showcase/assets/example-CTJ8AdNR.js +0 -1
  780. package/dist/showcase/assets/external-link-D0gqSa1q.js +0 -1
  781. package/dist/showcase/assets/eye-CDMCDLei.js +0 -1
  782. package/dist/showcase/assets/feature-announcement-BlyNck35.js +0 -34
  783. package/dist/showcase/assets/file-Y5EbzufX.js +0 -1
  784. package/dist/showcase/assets/file-text-DH1mBuPi.js +0 -1
  785. package/dist/showcase/assets/filters-BtHF4GSM.js +0 -78
  786. package/dist/showcase/assets/flag-CJ08LwLY.js +0 -1
  787. package/dist/showcase/assets/folder-open-DODo2pjy.js +0 -1
  788. package/dist/showcase/assets/form-field-CHY7jh1q.js +0 -1
  789. package/dist/showcase/assets/format-DYJqAuDM.js +0 -1
  790. package/dist/showcase/assets/forms-DgvQQXHO.js +0 -862
  791. package/dist/showcase/assets/frame-CdKicP4A.js +0 -167
  792. package/dist/showcase/assets/getPseudoElementBounds-D9-Hr3mO.js +0 -1
  793. package/dist/showcase/assets/gift-DD8O7cld.js +0 -1
  794. package/dist/showcase/assets/giftcard-cards-Dp9eYodY.js +0 -85
  795. package/dist/showcase/assets/git-branch-DZq1Vo2G.js +0 -1
  796. package/dist/showcase/assets/global-search-BqDotXql.js +0 -215
  797. package/dist/showcase/assets/global-search-PH6LXqZw.js +0 -1
  798. package/dist/showcase/assets/globe-mRTwrUxM.js +0 -1
  799. package/dist/showcase/assets/gradient-card-CaL88YKv.js +0 -58
  800. package/dist/showcase/assets/hash-DuqvHQHv.js +0 -1
  801. package/dist/showcase/assets/header-CiNgDop3.js +0 -1
  802. package/dist/showcase/assets/header-notifications-B9XMBsK_.js +0 -1
  803. package/dist/showcase/assets/heart-DsGJfnDx.js +0 -1
  804. package/dist/showcase/assets/house-B504aFIP.js +0 -1
  805. package/dist/showcase/assets/icon-badge-DMNu8xb5.js +0 -1
  806. package/dist/showcase/assets/image-C3DaMxmn.js +0 -1
  807. package/dist/showcase/assets/inbox-BWKQMLMx.js +0 -1
  808. package/dist/showcase/assets/index-DN3tqopz.css +0 -2
  809. package/dist/showcase/assets/index-DaYVSqKu.js +0 -10
  810. package/dist/showcase/assets/inertValue-DrtTkMGx.js +0 -1
  811. package/dist/showcase/assets/info-_FrGoCay.js +0 -1
  812. package/dist/showcase/assets/inline-stat-BYu-tiUU.js +0 -1
  813. package/dist/showcase/assets/input-C96HMHWR.js +0 -1
  814. package/dist/showcase/assets/input-fMPi7XxI.js +0 -1
  815. package/dist/showcase/assets/input-group-BZnSgFCn.js +0 -47
  816. package/dist/showcase/assets/input-group-CVONNP3T.js +0 -1
  817. package/dist/showcase/assets/inputs-Blh0LJ8-.js +0 -155
  818. package/dist/showcase/assets/invoice-header-Bpo4iwX3.js +0 -36
  819. package/dist/showcase/assets/invoice-items-OVIrbG0k.js +0 -36
  820. package/dist/showcase/assets/invoice-mini-CaOMTiUO.js +0 -14
  821. package/dist/showcase/assets/invoice-table-BXd_HhUg.js +0 -30
  822. package/dist/showcase/assets/isSameDay-NBVO9AKF.js +0 -1
  823. package/dist/showcase/assets/isToday-Bk5HMXWn.js +0 -1
  824. package/dist/showcase/assets/italic-BOv5bW4H.js +0 -1
  825. package/dist/showcase/assets/item-B4rdcVVp.js +0 -134
  826. package/dist/showcase/assets/item-BVt0zZ12.js +0 -1
  827. package/dist/showcase/assets/item-C4Xk3DC1.js +0 -1
  828. package/dist/showcase/assets/kanban-BXbelelR.js +0 -186
  829. package/dist/showcase/assets/label-Cv6wotdv.js +0 -1
  830. package/dist/showcase/assets/languages-BofyvcCF.js +0 -1
  831. package/dist/showcase/assets/layers-DJK0t5px.js +0 -1
  832. package/dist/showcase/assets/layout-app-shell-D_yMonSl.js +0 -608
  833. package/dist/showcase/assets/layout-auth-BTvSTwUz.js +0 -754
  834. package/dist/showcase/assets/layout-containers-PMuo__2O.js +0 -101
  835. package/dist/showcase/assets/layout-header-DQ3zeCHz.js +0 -170
  836. package/dist/showcase/assets/layout-page-CbvWdHrK.js +0 -122
  837. package/dist/showcase/assets/layout-primitives-6nsFFIdE.js +0 -34
  838. package/dist/showcase/assets/layout-sidebar-CKqeVCSY.js +0 -224
  839. package/dist/showcase/assets/layout-users-Cypq-42s.js +0 -117
  840. package/dist/showcase/assets/layout-workspace-DiRR8vDv.js +0 -183
  841. package/dist/showcase/assets/lock-DXmvLEEx.js +0 -1
  842. package/dist/showcase/assets/lock-keyhole-Cu6M-jjE.js +0 -1
  843. package/dist/showcase/assets/mail-CXVFHkzh.js +0 -1
  844. package/dist/showcase/assets/mail-check-BNEu3j2a.js +0 -1
  845. package/dist/showcase/assets/map-DnE1pFCQ.js +0 -124
  846. package/dist/showcase/assets/map-pin-CpOVa8IH.js +0 -1
  847. package/dist/showcase/assets/media-library-C-KfEvm4.js +0 -695
  848. package/dist/showcase/assets/mention-inline-suggestions-DlmslsfR.js +0 -1
  849. package/dist/showcase/assets/mentions-C8ZdNFuC.js +0 -138
  850. package/dist/showcase/assets/menus-B8yUL75K.js +0 -165
  851. package/dist/showcase/assets/message-square-DNOTaOFs.js +0 -1
  852. package/dist/showcase/assets/metadata-list-BQAanxM-.js +0 -1
  853. package/dist/showcase/assets/metadata-list-DL9qgDAp.js +0 -288
  854. package/dist/showcase/assets/metric-CYi09Ltx.js +0 -1
  855. package/dist/showcase/assets/metric-bar-CQH1z8T3.js +0 -1
  856. package/dist/showcase/assets/metric-grid-H1ixqMCI.js +0 -1
  857. package/dist/showcase/assets/metric-trend-chip-BBzWzFZ-.js +0 -1
  858. package/dist/showcase/assets/metrics-analytics-bar-C7Z2ITl4.js +0 -44
  859. package/dist/showcase/assets/metrics-analytics-cards-CZZSWiMn.js +0 -50
  860. package/dist/showcase/assets/metrics-comparison-BPqz8k30.js +0 -76
  861. package/dist/showcase/assets/metrics-heatmap-C3NYZAfx.js +0 -27
  862. package/dist/showcase/assets/metrics-inline-badge-RjHfm7um.js +0 -17
  863. package/dist/showcase/assets/metrics-kpi-row-DnBjyDH4.js +0 -31
  864. package/dist/showcase/assets/metrics-micro-grid-CKn405qb.js +0 -42
  865. package/dist/showcase/assets/metrics-overview-D8YGtdrh.js +0 -192
  866. package/dist/showcase/assets/metrics-stat-cards-Dxh6cAha.js +0 -54
  867. package/dist/showcase/assets/minus-20OTSSxf.js +0 -1
  868. package/dist/showcase/assets/money-display-BoiAMxH8.js +0 -1
  869. package/dist/showcase/assets/month-year-picker-Bl59Ygq9.js +0 -1
  870. package/dist/showcase/assets/navigation-B8d2CDU6.js +0 -90
  871. package/dist/showcase/assets/navigation-D16JX3kL.js +0 -230
  872. package/dist/showcase/assets/navigation-extras-Dm83uT6i.js +0 -43
  873. package/dist/showcase/assets/onboarding-checklist-DznDpP9M.js +0 -119
  874. package/dist/showcase/assets/overlays-CzlSqbFz.js +0 -408
  875. package/dist/showcase/assets/overlays-DUFqbkb9.js +0 -159
  876. package/dist/showcase/assets/package-BCXIwEPz.js +0 -1
  877. package/dist/showcase/assets/package-check-Ol-Cw3j-.js +0 -1
  878. package/dist/showcase/assets/page-action-button-DpzdSYvw.js +0 -1
  879. package/dist/showcase/assets/page-header-B_b7SqW8.js +0 -1
  880. package/dist/showcase/assets/pagination-BPDQo9Dl.js +0 -1
  881. package/dist/showcase/assets/pagination-PvkEX0qs.js +0 -42
  882. package/dist/showcase/assets/paperclip-CznEsmLN.js +0 -1
  883. package/dist/showcase/assets/password-input-CWMY5q3b.js +0 -1
  884. package/dist/showcase/assets/pencil-Cl9qi90g.js +0 -1
  885. package/dist/showcase/assets/phone-DbvK_QQJ.js +0 -1
  886. package/dist/showcase/assets/plus-CO8t66Yo.js +0 -1
  887. package/dist/showcase/assets/popover-3QIVx9lU.js +0 -1
  888. package/dist/showcase/assets/popover-Cyg9oYIU.js +0 -1
  889. package/dist/showcase/assets/popover-menu-DJPHeIL1.js +0 -1
  890. package/dist/showcase/assets/products-WsU-qdMz.js +0 -407
  891. package/dist/showcase/assets/progress-C61sf-qt.js +0 -1
  892. package/dist/showcase/assets/progress-PvTl8Fgf.js +0 -18
  893. package/dist/showcase/assets/props-table-C8la6vcG.js +0 -1
  894. package/dist/showcase/assets/props.generated-vFrhDrth.json +0 -38618
  895. package/dist/showcase/assets/quote-N1_lRDnX.js +0 -1
  896. package/dist/showcase/assets/receipt-C6a_WyLu.js +0 -1
  897. package/dist/showcase/assets/receipt-text-CDOh8FAv.js +0 -1
  898. package/dist/showcase/assets/refresh-cw-D4-ECZ1x.js +0 -1
  899. package/dist/showcase/assets/resolveValueLabel-DqAP3zJd.js +0 -1
  900. package/dist/showcase/assets/rich-text-editor-CU0IZpwV.js +0 -143
  901. package/dist/showcase/assets/rich-text-editor-DCU7mMoO.js +0 -124
  902. package/dist/showcase/assets/rotate-ccw-Dd5zEmr7.js +0 -1
  903. package/dist/showcase/assets/save-DDmFSQli.js +0 -1
  904. package/dist/showcase/assets/schema-form-B7naqMvv.js +0 -325
  905. package/dist/showcase/assets/scroll-area-CdaYm4UK.js +0 -32
  906. package/dist/showcase/assets/scroll-area-DwWSHYHB.js +0 -1
  907. package/dist/showcase/assets/select-CNzpb5ug.js +0 -1
  908. package/dist/showcase/assets/select-DBXZ_Wzf.js +0 -1
  909. package/dist/showcase/assets/send-eDm7YMmA.js +0 -1
  910. package/dist/showcase/assets/separator-4IC9ED7s.js +0 -1
  911. package/dist/showcase/assets/separator-DPGDsZpG.js +0 -28
  912. package/dist/showcase/assets/settings-IANZGo2i.js +0 -1
  913. package/dist/showcase/assets/sheet-2oCce5ae.js +0 -1
  914. package/dist/showcase/assets/shield-CDZhhvFW.js +0 -1
  915. package/dist/showcase/assets/shield-alert-5hL3sdf3.js +0 -1
  916. package/dist/showcase/assets/shield-check-CaO2dhVS.js +0 -1
  917. package/dist/showcase/assets/shopping-bag-Bt3iK-Bv.js +0 -1
  918. package/dist/showcase/assets/sidebar-Cds60-PS.js +0 -1
  919. package/dist/showcase/assets/sidebar.context-CdH_DH9M.js +0 -1
  920. package/dist/showcase/assets/skeleton-2HajJKO4.js +0 -29
  921. package/dist/showcase/assets/skeleton-CGEJwPdD.js +0 -1
  922. package/dist/showcase/assets/slider-BjQViBR0.js +0 -1
  923. package/dist/showcase/assets/sliders-horizontal-C3JH5WQu.js +0 -1
  924. package/dist/showcase/assets/smart-card-CHouYi8U.js +0 -1
  925. package/dist/showcase/assets/sonner-Cog559j7.js +0 -22
  926. package/dist/showcase/assets/sortable.esm-hUEKsxpQ.js +0 -5
  927. package/dist/showcase/assets/sparkles-B18eTHVN.js +0 -1
  928. package/dist/showcase/assets/spinner-BSI97i4D.js +0 -1
  929. package/dist/showcase/assets/spinner-D0WhVyye.js +0 -30
  930. package/dist/showcase/assets/spinner-DQmJ7k9y.js +0 -49
  931. package/dist/showcase/assets/square-pen-CLyDWdhj.js +0 -1
  932. package/dist/showcase/assets/stacked-avatars-ECnU27uV.js +0 -1
  933. package/dist/showcase/assets/star-C3mhkpSK.js +0 -1
  934. package/dist/showcase/assets/startOfDay-ECIxhJGC.js +0 -1
  935. package/dist/showcase/assets/styles-CDD7mDye.js +0 -1
  936. package/dist/showcase/assets/suggestions-DOW6NBJp.js +0 -126
  937. package/dist/showcase/assets/switch-D59YKmf6.js +0 -1
  938. package/dist/showcase/assets/switch-NICmdoPn.js +0 -1
  939. package/dist/showcase/assets/sync-B8nBZXQ9.js +0 -107
  940. package/dist/showcase/assets/table-CckompuR.js +0 -382
  941. package/dist/showcase/assets/table-DtA4-Q0p.js +0 -1
  942. package/dist/showcase/assets/table-actions-DdoPJTMy.js +0 -1
  943. package/dist/showcase/assets/tabs-BrC_HxL_.js +0 -1
  944. package/dist/showcase/assets/tabs-UVxr80vY.js +0 -19
  945. package/dist/showcase/assets/tags-input-iDfvhzZD.js +0 -1
  946. package/dist/showcase/assets/text-button-DHFCLCoc.js +0 -1
  947. package/dist/showcase/assets/text-link-nCLLDcS_.js +0 -1
  948. package/dist/showcase/assets/textarea-DsSuQHQY.js +0 -1
  949. package/dist/showcase/assets/textarea-DyGI3Kcn.js +0 -1
  950. package/dist/showcase/assets/timelines-JmMcH657.js +0 -200
  951. package/dist/showcase/assets/toggle-group-BZKzMmC8.js +0 -1
  952. package/dist/showcase/assets/toggles-BSJvy4Tw.js +0 -71
  953. package/dist/showcase/assets/toggles-group-Bsc6eaWw.js +0 -32
  954. package/dist/showcase/assets/trash-2-C9AC7Pcv.js +0 -1
  955. package/dist/showcase/assets/trending-up-CGaDZj0S.js +0 -1
  956. package/dist/showcase/assets/truck-Dq6heokm.js +0 -1
  957. package/dist/showcase/assets/typography-ByvwR6Kg.js +0 -223
  958. package/dist/showcase/assets/ui-badge-BYgJSE_w.js +0 -28
  959. package/dist/showcase/assets/ui-card-BdueUfow.js +0 -30
  960. package/dist/showcase/assets/ui-table-CxtCQUsg.js +0 -42
  961. package/dist/showcase/assets/upload-tray-DKJ8nFZp.js +0 -138
  962. package/dist/showcase/assets/use-layout-link-CGBQHZon.js +0 -1
  963. package/dist/showcase/assets/useAnchoredPopupScrollLock-CywAbxVB.js +0 -1
  964. package/dist/showcase/assets/useAriaLabelledBy-B2bZzE7D.js +0 -1
  965. package/dist/showcase/assets/useCollapsiblePanel-SLdY_s6S.js +0 -1
  966. package/dist/showcase/assets/useCompositeItem-g6aCBp84.js +0 -1
  967. package/dist/showcase/assets/useCompositeListItem-DK0Tpege.js +0 -1
  968. package/dist/showcase/assets/useLabelableId-hdKzFCp2.js +0 -1
  969. package/dist/showcase/assets/useOpenInteractionType-CnhifZ1E.js +0 -1
  970. package/dist/showcase/assets/useRender-QhawWhpb.js +0 -1
  971. package/dist/showcase/assets/useTriggerFocusGuards-Cht7Sa7e.js +0 -1
  972. package/dist/showcase/assets/useValueChanged-DURO1kfZ.js +0 -1
  973. package/dist/showcase/assets/user-plus-DbOuTfr7.js +0 -1
  974. package/dist/showcase/assets/user-u65Fo7k7.js +0 -1
  975. package/dist/showcase/assets/users-BUb7CmVp.js +0 -1
  976. package/dist/showcase/assets/vendor-profile-wfI3PBuO.js +0 -37
  977. package/dist/showcase/assets/video-e4hDbTQ2.js +0 -1
  978. package/dist/showcase/assets/wrench-CBUvtxdr.js +0 -1
  979. package/dist/showcase/assets/x-oVTJnCJn.js +0 -1
  980. package/dist/showcase/assets/zap-CzABYL3c.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-artifact-p45wDWWX.js","names":[],"sources":["../../src/components/composed/ai/ai-message-bubble/types.ts","../../src/components/composed/ai/ai-message-bubble/ai-message-bubble.tsx","../../src/components/composed/ai/ai-tool-call/types.ts","../../src/components/composed/ai/ai-tool-call/ai-tool-call.tsx","../../src/components/composed/ai/ai-shimmer/ai-shimmer.tsx","../../src/components/composed/ai/ai-code-block/types.ts","../../src/components/composed/ai/ai-code-block/ai-code-block.tsx","../../src/components/composed/ai/ai-attachment/types.ts","../../src/components/composed/ai/ai-attachment/ai-attachment.tsx","../../src/components/composed/ai/ai-agent/types.ts","../../src/components/composed/ai/ai-agent/ai-agent.tsx","../../src/components/composed/ai/ai-confirmation/types.ts","../../src/components/composed/ai/ai-confirmation/ai-confirmation.tsx","../../src/components/composed/ai/ai-sources/types.ts","../../src/components/composed/ai/ai-sources/ai-sources.tsx","../../src/components/composed/ai/ai-reasoning/types.ts","../../src/components/composed/ai/ai-reasoning/ai-reasoning.tsx","../../src/components/composed/ai/ai-chain-of-thought/types.ts","../../src/components/composed/ai/ai-chain-of-thought/ai-chain-of-thought.tsx","../../src/components/composed/ai/ai-task/types.ts","../../src/components/composed/ai/ai-task/ai-task.tsx","../../src/components/composed/ai/ai-artifact/types.ts","../../src/components/composed/ai/ai-artifact/ai-artifact.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport type AiMessageRole = 'assistant' | 'user' | 'system';\n\nexport interface AiMessageBubbleStrings {\n\tcopyAria: string;\n\tcopied: string;\n\tregenerateAria: string;\n}\n\nexport const defaultAiMessageBubbleStrings: AiMessageBubbleStrings = {\n\tcopyAria: 'Copy message',\n\tcopied: 'Copied',\n\tregenerateAria: 'Regenerate response',\n};\n\nexport interface AiMessageBubbleProps {\n\trole?: AiMessageRole;\n\tavatar?: ReactNode;\n\tavatarLabel?: string;\n\tauthorName?: ReactNode;\n\ttimestamp?: ReactNode;\n\tchildren?: ReactNode;\n\t/** Plain-text version of the message content; used for the copy action. */\n\tplainText?: string;\n\tloading?: boolean;\n\tonCopy?: () => void;\n\tonRegenerate?: () => void;\n\tclassName?: string;\n\tstrings?: Partial<AiMessageBubbleStrings>;\n}\n","/**\n * AiMessageBubble — chat bubble surface with an avatar slot, role-aware\n * styling (assistant / user / system), an optional author + timestamp meta\n * row, and a trailing action toolbar (copy, regenerate). Use as the building\n * block for AI chat transcripts; pair with `AiThinking`, `AiFeedback`, and\n * `AiCitation` for richer turns. Strings overridable for i18n.\n */\nimport { useState, type ReactNode } from 'react';\nimport { Bot, Copy, RotateCcw, User } 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\tdefaultAiMessageBubbleStrings,\n\ttype AiMessageBubbleProps,\n\ttype AiMessageRole,\n} from './types';\n\nconst ROLE_TONE: Record<AiMessageRole, { wrap: string; avatar: string; bubble: string }> = {\n\tassistant: {\n\t\twrap: 'flex-row',\n\t\tavatar: 'bg-primary/15 text-primary',\n\t\tbubble: 'bg-card border border-border/60',\n\t},\n\tuser: {\n\t\twrap: 'flex-row-reverse text-right',\n\t\tavatar: 'bg-muted text-foreground',\n\t\tbubble: 'bg-primary text-primary-foreground',\n\t},\n\tsystem: {\n\t\twrap: 'flex-row',\n\t\tavatar: 'bg-muted text-muted-foreground',\n\t\tbubble: 'bg-muted/40 border border-dashed border-border/60',\n\t},\n};\n\nconst ROLE_FALLBACK_ICON = {\n\tassistant: Bot,\n\tuser: User,\n\tsystem: Bot,\n} as const;\n\nexport function AiMessageBubble({\n\trole = 'assistant',\n\tavatar,\n\tavatarLabel,\n\tauthorName,\n\ttimestamp,\n\tchildren,\n\tplainText,\n\tloading = false,\n\tonCopy,\n\tonRegenerate,\n\tclassName,\n\tstrings: stringsProp,\n}: AiMessageBubbleProps) {\n\tconst strings = useStrings(defaultAiMessageBubbleStrings, stringsProp);\n\tconst [copied, setCopied] = useState(false);\n\tconst tone = ROLE_TONE[role];\n\tconst FallbackIcon = ROLE_FALLBACK_ICON[role];\n\n\tconst handleCopy = () => {\n\t\tconst text = plainText ?? (typeof children === 'string' ? children : '');\n\t\tif (text && typeof navigator !== 'undefined' && navigator.clipboard) {\n\t\t\tvoid navigator.clipboard.writeText(text);\n\t\t}\n\t\tsetCopied(true);\n\t\tonCopy?.();\n\t\twindow.setTimeout(() => setCopied(false), 1500);\n\t};\n\n\tconst renderedAvatar: ReactNode = avatar ?? (\n\t\t<span\n\t\t\taria-label={avatarLabel}\n\t\t\tclassName={cn(\n\t\t\t\t'inline-flex size-7 shrink-0 items-center justify-center rounded-full',\n\t\t\t\ttone.avatar,\n\t\t\t)}\n\t\t>\n\t\t\t<FallbackIcon className=\"size-3.5\" />\n\t\t</span>\n\t);\n\n\treturn (\n\t\t<div className={cn('ai-message-bubble--component', 'flex w-full items-start gap-2', tone.wrap, className)}>\n\t\t\t{renderedAvatar}\n\n\t\t\t<div className=\"flex max-w-[80%] flex-col gap-1\">\n\t\t\t\t{(authorName || timestamp) && (\n\t\t\t\t\t<div className=\"flex items-baseline gap-2\">\n\t\t\t\t\t\t{!!authorName && (\n\t\t\t\t\t\t\t<Text size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t\t{authorName}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!timestamp && (\n\t\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t{timestamp}\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)}\n\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'rounded-2xl px-3.5 py-2.5 text-sm leading-relaxed',\n\t\t\t\t\t\ttone.bubble,\n\t\t\t\t\t\tloading && 'animate-pulse',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\n\t\t\t\t{(onCopy !== undefined || plainText || onRegenerate) && role === 'assistant' && (\n\t\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\taria-label={strings.copyAria}\n\t\t\t\t\t\t\tonClick={handleCopy}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Copy className=\"size-3.5\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t{copied && (\n\t\t\t\t\t\t\t<Text size=\"xxs\" type=\"success\">\n\t\t\t\t\t\t\t\t{strings.copied}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!onRegenerate && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\t\taria-label={strings.regenerateAria}\n\t\t\t\t\t\t\t\tonClick={onRegenerate}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RotateCcw className=\"size-3.5\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nAiMessageBubble.displayName = 'AiMessageBubble';\n","import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nexport type AiToolCallStatus = 'pending' | 'running' | 'success' | 'error';\n\nexport interface AiToolCallStrings {\n\tpending: string;\n\trunning: string;\n\tsuccess: string;\n\terror: string;\n\texpand: string;\n\tcollapse: string;\n\targs: string;\n\tresult: string;\n\tdurationLabel: string;\n}\n\nexport const defaultAiToolCallStrings: AiToolCallStrings = {\n\tpending: 'Queued',\n\trunning: 'Running',\n\tsuccess: 'Success',\n\terror: 'Failed',\n\texpand: 'Show details',\n\tcollapse: 'Hide details',\n\targs: 'Arguments',\n\tresult: 'Result',\n\tdurationLabel: 'Took',\n};\n\nexport interface AiToolCallProps {\n\tname: string;\n\tstatus: AiToolCallStatus;\n\ticon?: LucideIcon;\n\targs?: ReactNode;\n\tresult?: ReactNode;\n\terror?: ReactNode;\n\t/** Duration in ms; rendered as \"Took 1.2s\". */\n\tdurationMs?: number;\n\tdefaultExpanded?: boolean;\n\tclassName?: string;\n\tstrings?: Partial<AiToolCallStrings>;\n}\n","/**\n * AiToolCall — collapsible trace for a model-invoked tool / function. Header\n * shows the tool name, status pill, and an expand/collapse toggle. Expanded\n * content reveals JSON-style `args` and `result` blocks (or an error block\n * when status is `error`) plus an optional duration. Use to surface tool-use\n * transparency in chat / agent UIs. Strings overridable for i18n.\n */\nimport { useState, type ReactNode } from 'react';\nimport {\n\tAlertCircle,\n\tChevronDown,\n\tChevronRight,\n\tCircleDot,\n\tLoader2,\n\tWrench,\n\ttype LucideIcon,\n} from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { IconBadge } from '@/components/base/display';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiToolCallStrings,\n\ttype AiToolCallProps,\n\ttype AiToolCallStatus,\n} from './types';\n\nconst STATUS_BADGE: Record<\n\tAiToolCallStatus,\n\t{ variant: 'secondary' | 'primary' | 'success' | 'error'; icon?: LucideIcon }\n> = {\n\tpending: { variant: 'secondary', icon: CircleDot },\n\trunning: { variant: 'primary', icon: Loader2 },\n\tsuccess: { variant: 'success' },\n\terror: { variant: 'error', icon: AlertCircle },\n};\n\nfunction formatDuration(ms: number): string {\n\tif (ms < 1000) return `${Math.round(ms)}ms`;\n\treturn `${(ms / 1000).toFixed(ms < 10000 ? 1 : 0)}s`;\n}\n\nexport function AiToolCall({\n\tname,\n\tstatus,\n\ticon: IconComponent = Wrench,\n\targs,\n\tresult,\n\terror,\n\tdurationMs,\n\tdefaultExpanded = false,\n\tclassName,\n\tstrings: stringsProp,\n}: AiToolCallProps) {\n\tconst strings = useStrings(defaultAiToolCallStrings, stringsProp);\n\tconst [expanded, setExpanded] = useState(defaultExpanded);\n\tconst labelByStatus: Record<AiToolCallStatus, string> = {\n\t\tpending: strings.pending,\n\t\trunning: strings.running,\n\t\tsuccess: strings.success,\n\t\terror: strings.error,\n\t};\n\tconst StatusIcon = STATUS_BADGE[status].icon;\n\n\tconst hasDetails = Boolean(args || result || error);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('ai-tool-call--component', \n\t\t\t\t'overflow-hidden rounded-lg border border-border/60 bg-card',\n\t\t\t\tstatus === 'error' && 'border-destructive/40 bg-destructive/5',\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=\"sm\"\n\t\t\t\tonClick={() => hasDetails && setExpanded((v) => !v)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'ai-tool-call--trigger h-auto w-full justify-start gap-2 rounded-none px-3 py-2 text-left',\n\t\t\t\t\thasDetails ? 'cursor-pointer hover:bg-muted/40' : 'cursor-default',\n\t\t\t\t)}\n\t\t\t\taria-expanded={hasDetails ? expanded : undefined}\n\t\t\t\taria-label={hasDetails ? (expanded ? strings.collapse : strings.expand) : undefined}\n\t\t\t>\n\t\t\t\t<IconBadge icon={IconComponent} tone=\"muted\" size=\"sm\" shape=\"square\" />\n\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t<Text weight=\"medium\" className=\"truncate font-mono\">\n\t\t\t\t\t\t{name}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t\t<Badge variant={STATUS_BADGE[status].variant} className=\"gap-1\">\n\t\t\t\t\t{!!StatusIcon && (\n\t\t\t\t\t\t<StatusIcon\n\t\t\t\t\t\t\tclassName={cn('size-3', status === 'running' && 'animate-spin')}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{labelByStatus[status]}\n\t\t\t\t</Badge>\n\t\t\t\t{!!durationMs && (\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t\t{strings.durationLabel} {formatDuration(durationMs)}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t\t{hasDetails &&\n\t\t\t\t\t(expanded ? (\n\t\t\t\t\t\t<ChevronDown className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ChevronRight className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t\t))}\n\t\t\t</Button>\n\n\t\t\t{!!expanded && hasDetails && (\n\t\t\t\t<div className=\"border-t border-border/60 bg-muted/20 px-3 py-2 space-y-2\">\n\t\t\t\t\t{!!args && (\n\t\t\t\t\t\t<DetailBlock label={strings.args}>{args}</DetailBlock>\n\t\t\t\t\t)}\n\t\t\t\t\t{status === 'error' && !!error ? (\n\t\t\t\t\t\t<DetailBlock label={strings.error} tone=\"error\">\n\t\t\t\t\t\t\t{error}\n\t\t\t\t\t\t</DetailBlock>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t!!result && <DetailBlock label={strings.result}>{result}</DetailBlock>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiToolCall.displayName = 'AiToolCall';\n\nfunction DetailBlock({\n\tlabel,\n\tchildren,\n\ttone = 'neutral',\n}: {\n\tlabel: string;\n\tchildren: ReactNode;\n\ttone?: 'neutral' | 'error';\n}) {\n\treturn (\n\t\t<div className=\"space-y-1\">\n\t\t\t<Text size=\"xxs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t<pre\n\t\t\t\ttabIndex={0}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'overflow-x-auto rounded-md bg-card px-2.5 py-2 font-mono text-xs leading-relaxed',\n\t\t\t\t\ttone === 'error' && 'text-destructive bg-destructive/5',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</pre>\n\t\t</div>\n\t);\n}\n","/**\n * AiShimmer — gradient text shimmer for streaming / loading copy. Renders\n * children with a moving highlight band that draws the eye while a model is\n * thinking. Use anywhere a static \"Loading…\" feels too inert: agent typing,\n * tool warm-up, awaiting first token.\n */\nimport type { CSSProperties } from 'react';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { AiShimmerProps } from './types';\n\nexport function AiShimmer({\n\tchildren = 'Thinking…',\n\tpaused = false,\n\tduration = 2.4,\n\tclassName,\n}: AiShimmerProps) {\n\tif (paused) {\n\t\treturn (\n\t\t\t<Text type=\"secondary\" className={cn('ai-shimmer--component', className)}>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst style: CSSProperties = {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t['--ai-shimmer-duration' as any]: `${duration}s`,\n\t};\n\n\treturn (\n\t\t<span\n\t\t\tdata-ai-shimmer\n\t\t\trole=\"status\"\n\t\t\taria-live=\"polite\"\n\t\t\tclassName={cn(\n\t\t\t\t'inline-block bg-clip-text text-sm font-medium text-transparent',\n\t\t\t\t// foreground -> muted -> foreground gradient swept across\n\t\t\t\t'bg-[linear-gradient(110deg,var(--ai-shimmer-base)_30%,var(--ai-shimmer-highlight)_50%,var(--ai-shimmer-base)_70%)]',\n\t\t\t\t'bg-[length:200%_100%]',\n\t\t\t\t'animate-[ai-shimmer-sweep_var(--ai-shimmer-duration,2.4s)_linear_infinite]',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{children}\n\t\t</span>\n\t);\n}\n\nAiShimmer.displayName = 'AiShimmer';\n","import type { ReactNode } from 'react';\n\nexport interface AiCodeBlockStrings {\n\tcopy: string;\n\tcopied: string;\n\tcopyAria: string;\n\t/** Header label when no language is provided. */\n\tdefaultLanguageLabel: string;\n}\n\nexport const defaultAiCodeBlockStrings: AiCodeBlockStrings = {\n\tcopy: 'Copy',\n\tcopied: 'Copied',\n\tcopyAria: 'Copy code',\n\tdefaultLanguageLabel: 'Code',\n};\n\nexport interface AiCodeBlockProps {\n\t/** The code to render. Pre-formatted text. */\n\tcode: string;\n\t/** Display label for the language (e.g. \"TypeScript\", \"shell\"). */\n\tlanguage?: string;\n\t/** Optional filename rendered in the header next to the language label. */\n\tfilename?: string;\n\t/** Render with line numbers. */\n\tshowLineNumbers?: boolean;\n\t/** Highlight specific 1-indexed line numbers. */\n\thighlightLines?: ReadonlyArray<number>;\n\t/** Hide the header strip entirely. */\n\thideHeader?: boolean;\n\t/** Force max-height before scroll. */\n\tmaxHeight?: number | string;\n\t/** Trailing slot inside the header (e.g. extra action button). */\n\theaderActions?: ReactNode;\n\t/** Fired when the user copies (after the navigator.clipboard write). */\n\tonCopy?: () => void;\n\tclassName?: string;\n\tstrings?: Partial<AiCodeBlockStrings>;\n}\n","/**\n * AiCodeBlock — code surface used inside AI responses and artifacts.\n * Renders a header (language label, optional filename, copy button), a\n * scrollable `<pre>` body, and optional line numbers / highlighted ranges.\n * No syntax highlighting is performed here — that belongs to a consumer-side\n * highlighter pass; we focus on the chrome, layout, and copy UX.\n */\nimport { useMemo, useState } from 'react';\nimport { Check, Copy } 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 { defaultAiCodeBlockStrings, type AiCodeBlockProps } from './types';\n\nexport function AiCodeBlock({\n\tcode,\n\tlanguage,\n\tfilename,\n\tshowLineNumbers = false,\n\thighlightLines,\n\thideHeader = false,\n\tmaxHeight,\n\theaderActions,\n\tonCopy,\n\tclassName,\n\tstrings: stringsProp,\n}: AiCodeBlockProps) {\n\tconst strings = useStrings(defaultAiCodeBlockStrings, stringsProp);\n\tconst [copied, setCopied] = useState(false);\n\n\tconst lines = useMemo(() => code.split('\\n'), [code]);\n\tconst highlightSet = useMemo(\n\t\t() => new Set(highlightLines ?? []),\n\t\t[highlightLines],\n\t);\n\n\tconst handleCopy = () => {\n\t\tif (typeof navigator !== 'undefined' && navigator.clipboard) {\n\t\t\tvoid navigator.clipboard.writeText(code);\n\t\t}\n\t\tsetCopied(true);\n\t\tonCopy?.();\n\t\twindow.setTimeout(() => setCopied(false), 1500);\n\t};\n\n\tconst headerLabel = filename || language || strings.defaultLanguageLabel;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('ai-code-block--component', \n\t\t\t\t'w-full min-w-0 max-w-full overflow-hidden rounded-lg border border-border/60 bg-card',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{!hideHeader && (\n\t\t\t\t<div className=\"flex min-w-0 items-center gap-2 border-b border-border/60 bg-muted/30 px-3 py-1.5\">\n\t\t\t\t\t<Text\n\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\tclassName=\"min-w-0 truncate font-mono uppercase tracking-wider\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{headerLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!filename && !!language && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<span aria-hidden className=\"text-muted-foreground/60\">\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\t<Text size=\"xxs\" type=\"discrete\" className=\"font-mono lowercase\">\n\t\t\t\t\t\t\t\t{language}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"ml-auto flex shrink-0 items-center gap-1\">\n\t\t\t\t\t\t{headerActions}\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\taria-label={strings.copyAria}\n\t\t\t\t\t\t\tonClick={handleCopy}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{copied ? (\n\t\t\t\t\t\t\t\t<Check className=\"size-3.5 text-success\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Copy className=\"size-3.5\" />\n\t\t\t\t\t\t\t)}\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\t<div\n\t\t\t\tclassName=\"min-w-0 max-w-full overflow-auto\"\n\t\t\t\ttabIndex={0}\n\t\t\t\tstyle={\n\t\t\t\t\tmaxHeight !== undefined\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tmaxHeight:\n\t\t\t\t\t\t\t\t\ttypeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<pre className=\"m-0 px-3 py-2.5 font-mono text-xs leading-relaxed\">\n\t\t\t\t\t{showLineNumbers ? (\n\t\t\t\t\t\t<table className=\"w-full border-collapse\">\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t{lines.map((line, idx) => {\n\t\t\t\t\t\t\t\t\tconst lineNum = idx + 1;\n\t\t\t\t\t\t\t\t\tconst highlighted = highlightSet.has(lineNum);\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<tr\n\t\t\t\t\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\thighlighted && 'bg-primary/10',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'select-none pr-3 text-right tabular-nums text-muted-foreground/70',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'w-[2.25rem] min-w-[2.25rem]',\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{lineNum}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td className=\"whitespace-pre\">{line || ' '}</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\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</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<code className=\"block whitespace-pre\">{code}</code>\n\t\t\t\t\t)}\n\t\t\t\t</pre>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nAiCodeBlock.displayName = 'AiCodeBlock';\n","import type { LucideIcon } from 'lucide-react';\n\nexport type AiAttachmentKind = 'image' | 'document' | 'audio' | 'video' | 'code' | 'archive' | 'generic';\n\nexport interface AiAttachmentStrings {\n\tremoveAria: string;\n\topenAria: string;\n\tuploadProgressAria: string;\n}\n\nexport const defaultAiAttachmentStrings: AiAttachmentStrings = {\n\tremoveAria: 'Remove attachment',\n\topenAria: 'Open attachment',\n\tuploadProgressAria: 'Upload progress',\n};\n\nexport interface AiAttachmentProps {\n\t/** Filename / display label. */\n\tname: string;\n\t/** Optional secondary label — formatted size, file extension, etc. */\n\tmeta?: string;\n\t/** Pre-categorized kind. Defaults to \"generic\" — drives the fallback icon. */\n\tkind?: AiAttachmentKind;\n\t/** Override the auto-picked kind icon. */\n\ticon?: LucideIcon;\n\t/** When set, renders the chip as a thumbnail tile with this image. */\n\tthumbnailUrl?: string;\n\t/** Show a small loading bar (in-flight upload). */\n\tprogress?: number; // 0..1\n\t/** Show as errored — overrides progress. */\n\terrored?: boolean;\n\t/** Open / download callback (clicking the chip body). */\n\tonOpen?: () => void;\n\t/** Render a remove (×) action. */\n\tonRemove?: () => void;\n\tclassName?: string;\n\tstrings?: Partial<AiAttachmentStrings>;\n}\n","/**\n * AiAttachment — single attachment chip used in chat messages, prompt input\n * staging, and tool inputs. Renders an icon (or thumbnail), filename, and\n * optional meta line, with optional remove + click-to-open. When `progress`\n * is in `[0,1)` a thin progress bar runs underneath while the upload is in\n * flight.\n */\nimport {\n\tAlertCircle,\n\tArchive,\n\tAudioLines,\n\tFileCode,\n\tFileText,\n\tImageIcon,\n\tVideo,\n\tX,\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\tdefaultAiAttachmentStrings,\n\ttype AiAttachmentKind,\n\ttype AiAttachmentProps,\n} from './types';\n\nconst KIND_ICON: Record<AiAttachmentKind, LucideIcon> = {\n\timage: ImageIcon,\n\tdocument: FileText,\n\taudio: AudioLines,\n\tvideo: Video,\n\tcode: FileCode,\n\tarchive: Archive,\n\tgeneric: FileText,\n};\n\nexport function AiAttachment({\n\tname,\n\tmeta,\n\tkind = 'generic',\n\ticon,\n\tthumbnailUrl,\n\tprogress,\n\terrored = false,\n\tonOpen,\n\tonRemove,\n\tclassName,\n\tstrings: stringsProp,\n}: AiAttachmentProps) {\n\tconst strings = useStrings(defaultAiAttachmentStrings, stringsProp);\n\tconst Icon = icon ?? KIND_ICON[kind];\n\tconst showProgress =\n\t\t!errored && typeof progress === 'number' && progress >= 0 && progress < 1;\n\n\tconst Body = (\n\t\t<>\n\t\t\t{thumbnailUrl ? (\n\t\t\t\t<span\n\t\t\t\t\taria-hidden\n\t\t\t\t\tclassName=\"size-9 shrink-0 overflow-hidden rounded-md bg-muted\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tbackgroundImage: `url(${thumbnailUrl})`,\n\t\t\t\t\t\tbackgroundSize: 'cover',\n\t\t\t\t\t\tbackgroundPosition: 'center',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<span\n\t\t\t\t\taria-hidden\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'inline-flex size-9 shrink-0 items-center justify-center rounded-md',\n\t\t\t\t\t\terrored\n\t\t\t\t\t\t\t? 'bg-destructive/10 text-destructive'\n\t\t\t\t\t\t\t: 'bg-muted text-muted-foreground',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{errored ? (\n\t\t\t\t\t\t<AlertCircle className=\"size-4\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Icon className=\"size-4\" />\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t<Text weight=\"medium\" className=\"block truncate\">\n\t\t\t\t\t{name}\n\t\t\t\t</Text>\n\t\t\t\t{!!meta && (\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"block truncate tabular-nums\">\n\t\t\t\t\t\t{meta}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t\t{showProgress && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"mt-1 h-1 overflow-hidden rounded-full bg-muted\"\n\t\t\t\t\t\taria-label={strings.uploadProgressAria}\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 transition-[width] duration-150\"\n\t\t\t\t\t\t\tstyle={{ width: `${Math.round((progress ?? 0) * 100)}%` }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('ai-attachment--component', \n\t\t\t\t'group inline-flex max-w-full items-center gap-2.5 rounded-lg border border-border/60 bg-card px-2.5 py-2',\n\t\t\t\terrored && 'border-destructive/40 bg-destructive/5',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{onOpen ? (\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=\"ghost\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tonClick={onOpen}\n\t\t\t\t\taria-label={strings.openAria}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'h-auto min-w-0 flex-1 justify-start gap-2.5 rounded-md px-0 py-0 text-left',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{Body}\n\t\t\t\t</Button>\n\t\t\t) : (\n\t\t\t\t<div className=\"flex min-w-0 flex-1 items-center gap-2.5\">{Body}</div>\n\t\t\t)}\n\n\t\t\t{!!onRemove && (\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=\"ghost\"\n\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\taria-label={strings.removeAria}\n\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\tclassName=\"opacity-60 group-hover:opacity-100\"\n\t\t\t\t>\n\t\t\t\t\t<X className=\"size-3.5\" />\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiAttachment.displayName = 'AiAttachment';\n","import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nexport type AiAgentStatus = 'idle' | 'thinking' | 'working' | 'done' | 'error' | 'offline';\n\nexport interface AiAgentStrings {\n\tstatusLabels: Record<AiAgentStatus, string>;\n}\n\nexport const defaultAiAgentStrings: AiAgentStrings = {\n\tstatusLabels: {\n\t\tidle: 'Idle',\n\t\tthinking: 'Thinking',\n\t\tworking: 'Working',\n\t\tdone: 'Done',\n\t\terror: 'Error',\n\t\toffline: 'Offline',\n\t},\n};\n\nexport interface AiAgentProps {\n\t/** Display name (e.g. \"Atlas\", \"Claude\"). */\n\tname: string;\n\t/** Avatar / mark — typically an icon or short emoji. */\n\ticon?: LucideIcon;\n\t/** Override avatar with arbitrary content (image, gradient mark, etc.). */\n\tavatar?: ReactNode;\n\t/** Short blurb / model identifier rendered under the name. */\n\tsubtitle?: ReactNode;\n\t/** Tone color for the avatar wash. */\n\ttone?: 'primary' | 'success' | 'warning' | 'destructive' | 'info' | 'neutral';\n\t/** Live status displayed as a pill next to the name. */\n\tstatus?: AiAgentStatus;\n\t/** Density variant — `inline` is a single-line chip, `card` is a tile. */\n\tvariant?: 'inline' | 'card';\n\t/** Trailing slot — typically actions, badges. */\n\ttrailing?: ReactNode;\n\tclassName?: string;\n\tstrings?: Partial<AiAgentStrings>;\n}\n","/**\n * AiAgent — identity card for an AI persona / model. Renders avatar (icon\n * or custom), name, optional subtitle (model id, role), and a live status\n * pill. `variant='inline'` is a one-line chip (header strips, breadcrumbs);\n * `variant='card'` is a small tile (model picker, agent dock).\n */\nimport { Bot, type LucideIcon } 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 {\n\tdefaultAiAgentStrings,\n\ttype AiAgentProps,\n\ttype AiAgentStatus,\n} from './types';\n\nconst TONE_AVATAR: Record<NonNullable<AiAgentProps['tone']>, string> = {\n\tprimary: 'bg-primary/15 text-primary',\n\tsuccess: 'bg-success/15 text-success',\n\twarning: 'bg-warning/20 text-warning',\n\tdestructive: 'bg-destructive/15 text-destructive',\n\tinfo: 'bg-info/15 text-info',\n\tneutral: 'bg-muted text-muted-foreground',\n};\n\nconst STATUS_VARIANT: Record<\n\tAiAgentStatus,\n\t'secondary' | 'primary' | 'success' | 'warning' | 'error'\n> = {\n\tidle: 'secondary',\n\tthinking: 'primary',\n\tworking: 'primary',\n\tdone: 'success',\n\terror: 'error',\n\toffline: 'secondary',\n};\n\nexport function AiAgent({\n\tname,\n\ticon,\n\tavatar,\n\tsubtitle,\n\ttone = 'primary',\n\tstatus,\n\tvariant = 'inline',\n\ttrailing,\n\tclassName,\n\tstrings: stringsProp,\n}: AiAgentProps) {\n\tconst strings = useStrings(defaultAiAgentStrings, stringsProp);\n\tconst Icon: LucideIcon = icon ?? Bot;\n\n\tconst avatarSize = variant === 'card' ? 'size-9' : 'size-7';\n\tconst iconSize = variant === 'card' ? 'size-4' : 'size-3.5';\n\n\tconst renderedAvatar =\n\t\tavatar ?? (\n\t\t\t<span\n\t\t\t\taria-hidden\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'inline-flex shrink-0 items-center justify-center rounded-full',\n\t\t\t\t\tavatarSize,\n\t\t\t\t\tTONE_AVATAR[tone],\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<Icon className={iconSize} />\n\t\t\t</span>\n\t\t);\n\n\tconst StatusPill = !!status && (\n\t\t<Badge variant={STATUS_VARIANT[status]} className=\"gap-1\">\n\t\t\t<span\n\t\t\t\taria-hidden\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'inline-block size-1.5 rounded-full',\n\t\t\t\t\tstatus === 'thinking' || status === 'working'\n\t\t\t\t\t\t? 'animate-pulse bg-current'\n\t\t\t\t\t\t: 'bg-current',\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t{strings.statusLabels[status]}\n\t\t</Badge>\n\t);\n\n\tif (variant === 'card') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn('ai-agent--component', \n\t\t\t\t\t'flex items-center gap-3 rounded-lg border border-border/60 bg-card px-3 py-2.5',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{renderedAvatar}\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\">\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t{StatusPill}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!subtitle && (\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 line-clamp-1\">\n\t\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{!!trailing && <div className=\"ml-auto flex items-center gap-1\">{trailing}</div>}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('inline-flex items-center gap-2', className)}>\n\t\t\t{renderedAvatar}\n\t\t\t<div className=\"flex min-w-0 items-center gap-2\">\n\t\t\t\t<Text size=\"xs\" weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t{name}\n\t\t\t\t</Text>\n\t\t\t\t{!!subtitle && (\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t\t{StatusPill}\n\t\t\t</div>\n\t\t\t{!!trailing && <div className=\"ml-1 flex items-center gap-1\">{trailing}</div>}\n\t\t</div>\n\t);\n}\n\nAiAgent.displayName = 'AiAgent';\n","import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nexport type AiConfirmationTone = 'neutral' | 'destructive' | 'warning' | 'info' | 'primary';\n\nexport interface AiConfirmationStrings {\n\tapprove: string;\n\treject: string;\n\tpending: string;\n\tapproved: string;\n\trejected: string;\n}\n\nexport const defaultAiConfirmationStrings: AiConfirmationStrings = {\n\tapprove: 'Approve',\n\treject: 'Reject',\n\tpending: 'Awaiting your approval',\n\tapproved: 'Approved',\n\trejected: 'Rejected',\n};\n\nexport type AiConfirmationStatus = 'pending' | 'approved' | 'rejected';\n\nexport interface AiConfirmationProps {\n\t/** Title — short, action-oriented (e.g. \"Run npm install\"). */\n\ttitle: ReactNode;\n\t/** Body description / details. */\n\tdescription?: ReactNode;\n\t/** Decorative icon. */\n\ticon?: LucideIcon;\n\t/** Tone variant — drives accent colour. */\n\ttone?: AiConfirmationTone;\n\t/** Current status — when set, the action row is replaced with a result pill. */\n\tstatus?: AiConfirmationStatus;\n\t/** Approve callback. */\n\tonApprove?: () => void;\n\t/** Reject callback. */\n\tonReject?: () => void;\n\t/** Override the approve button label. */\n\tapproveLabel?: ReactNode;\n\t/** Override the reject button label. */\n\trejectLabel?: ReactNode;\n\t/** Render a \"details\" expandable area. */\n\tdetails?: ReactNode;\n\tclassName?: string;\n\tstrings?: Partial<AiConfirmationStrings>;\n}\n","/**\n * AiConfirmation — inline approval prompt rendered in-stream when an agent\n * needs user permission before taking a side-effecting action (run command,\n * call write API, charge a card). Carries title, description, icon, optional\n * details, and an approve/reject pair. After resolution, the action row\n * collapses into a status pill.\n */\nimport { Check, ShieldCheck, X, type LucideIcon } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { IconBadge } from '@/components/base/display';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiConfirmationStrings,\n\ttype AiConfirmationProps,\n\ttype AiConfirmationTone,\n} from './types';\n\nconst TONE: Record<\n\tAiConfirmationTone,\n\t{ ring: string; icon: 'primary' | 'success' | 'warning' | 'destructive' | 'info' | 'muted' }\n> = {\n\tneutral: { ring: 'border-border/60 bg-card', icon: 'muted' },\n\tdestructive: { ring: 'border-destructive/40 bg-destructive/5', icon: 'destructive' },\n\twarning: { ring: 'border-warning/40 bg-warning/5', icon: 'warning' },\n\tinfo: { ring: 'border-info/40 bg-info/5', icon: 'info' },\n\tprimary: { ring: 'border-primary/40 bg-primary/5', icon: 'primary' },\n};\n\nexport function AiConfirmation({\n\ttitle,\n\tdescription,\n\ticon,\n\ttone = 'neutral',\n\tstatus = 'pending',\n\tonApprove,\n\tonReject,\n\tapproveLabel,\n\trejectLabel,\n\tdetails,\n\tclassName,\n\tstrings: stringsProp,\n}: AiConfirmationProps) {\n\tconst strings = useStrings(defaultAiConfirmationStrings, stringsProp);\n\tconst Icon: LucideIcon = icon ?? ShieldCheck;\n\tconst toneCfg = TONE[tone];\n\n\treturn (\n\t\t<div\n\t\t\trole=\"region\"\n\t\t\taria-live=\"polite\"\n\t\t\tclassName={cn('ai-confirmation--component', \n\t\t\t\t'rounded-lg border px-3 py-2.5',\n\t\t\t\ttoneCfg.ring,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex items-start gap-3\">\n\t\t\t\t<IconBadge icon={Icon} tone={toneCfg.icon} size=\"sm\" shape=\"square\" />\n\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t<Text weight=\"semibold\">{title}</Text>\n\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!details && <div className=\"mt-2\">{details}</div>}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{status === 'pending' ? (\n\t\t\t\t<div className=\"mt-3 flex items-center justify-between gap-2 border-t border-border/60 pt-2.5\">\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\">\n\t\t\t\t\t\t{strings.pending}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tonClick={onReject}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"size-3.5\" />\n\t\t\t\t\t\t\t{rejectLabel ?? strings.reject}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant={tone === 'destructive' ? 'error' : 'primary'}\n\t\t\t\t\t\t\tonClick={onApprove}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Check className=\"size-3.5\" />\n\t\t\t\t\t\t\t{approveLabel ?? strings.approve}\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\t\t<div className=\"mt-3 flex items-center gap-2 border-t border-border/60 pt-2.5\">\n\t\t\t\t\t{status === 'approved' ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Check className=\"size-3.5 text-success\" />\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"success\" weight=\"medium\">\n\t\t\t\t\t\t\t\t{strings.approved}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<X className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n\t\t\t\t\t\t\t\t{strings.rejected}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiConfirmation.displayName = 'AiConfirmation';\n","import type { ReactNode } from 'react';\n\nexport interface AiSourceItem {\n\tid: string;\n\ttitle: ReactNode;\n\turl?: string;\n\t/** Hostname / publisher / \"doc-section\" — rendered under the title. */\n\tpublisher?: string;\n\t/** Favicon / logo URL — rendered as a small avatar; falls back to a globe. */\n\tfaviconUrl?: string;\n\t/** Optional short snippet shown only in the expanded variant. */\n\tsnippet?: ReactNode;\n}\n\nexport interface AiSourcesStrings {\n\t/** Header title — `{{count}}` placeholder for the source count. */\n\ttitle: string;\n\texpand: string;\n\tcollapse: string;\n\tvisit: string;\n}\n\nexport const defaultAiSourcesStrings: AiSourcesStrings = {\n\ttitle: '{{count}} sources',\n\texpand: 'Show all sources',\n\tcollapse: 'Hide sources',\n\tvisit: 'Visit source',\n};\n\nexport type AiSourcesVariant = 'list' | 'avatars';\n\nexport interface AiSourcesProps {\n\t/** Source list. Order is significant — index drives the displayed number. */\n\tsources: ReadonlyArray<AiSourceItem>;\n\t/** `list` is a vertical row layout; `avatars` is a stacked-favicons strip. */\n\tvariant?: AiSourcesVariant;\n\t/** Number of sources rendered in the avatar strip before the \"+N\" overflow. */\n\tmaxAvatars?: number;\n\t/** Render the list expanded by default (only applies to `list` variant). */\n\tdefaultExpanded?: boolean;\n\t/** Click handler — preferred over `url` for SPA routing. */\n\tonSelect?: (source: AiSourceItem, index: number) => void;\n\tclassName?: string;\n\tstrings?: Partial<AiSourcesStrings>;\n}\n","/**\n * AiSources — light-weight source list rendered under streamed content. Two\n * shapes: `list` is a vertical stack of source rows (favicon + title + host);\n * `avatars` is a compact stacked-favicon strip used when space is tight (chat\n * footer, side panel header). For richer \"expandable\" footnote-style sources\n * with relevance bars and snippets, see `<AiCitation>`.\n */\nimport { useEffect, useState } from 'react';\nimport { ChevronDown, ChevronRight, ExternalLink, Globe } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { mergeStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiSourcesStrings,\n\ttype AiSourceItem,\n\ttype AiSourcesProps,\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 AiSources({\n\tsources,\n\tvariant = 'list',\n\tmaxAvatars = 5,\n\tdefaultExpanded = false,\n\tonSelect,\n\tclassName,\n\tstrings: stringsProp,\n}: AiSourcesProps) {\n\tconst strings = mergeStrings(defaultAiSourcesStrings, stringsProp);\n\tconst [expanded, setExpanded] = useState(defaultExpanded);\n\tconst titleText = interpolate(strings.title, { count: sources.length });\n\n\tif (variant === 'avatars') {\n\t\treturn (\n\t\t\t<AvatarStrip\n\t\t\t\tsources={sources}\n\t\t\t\tmax={maxAvatars}\n\t\t\t\ttitle={titleText}\n\t\t\t\tonSelect={onSelect}\n\t\t\t\tclassName={cn('ai-sources--component', className)}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst visible = expanded ? sources : sources.slice(0, 0);\n\n\treturn (\n\t\t<div className={cn('ai-sources--component rounded-lg border border-border/60 bg-card', className)}>\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=\"sm\"\n\t\t\t\tonClick={() => setExpanded((v) => !v)}\n\t\t\t\taria-expanded={expanded}\n\t\t\t\taria-label={expanded ? strings.collapse : strings.expand}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'ai-sources--trigger h-auto w-full justify-start gap-2 px-3 py-2 text-left',\n\t\t\t\t\t'rounded-lg hover:bg-muted/40',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<AvatarStack sources={sources.slice(0, 4)} />\n\t\t\t\t<Text size=\"xs\" weight=\"medium\" className=\"flex-1\">\n\t\t\t\t\t{titleText}\n\t\t\t\t</Text>\n\t\t\t\t{expanded ? (\n\t\t\t\t\t<ChevronDown className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t) : (\n\t\t\t\t\t<ChevronRight className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t)}\n\t\t\t</Button>\n\n\t\t\t{expanded && (\n\t\t\t\t<ol className=\"border-t border-border/60 px-2 py-2 space-y-0.5\">\n\t\t\t\t\t{visible.map((source, idx) => (\n\t\t\t\t\t\t<SourceRow\n\t\t\t\t\t\t\tkey={source.id}\n\t\t\t\t\t\t\tsource={source}\n\t\t\t\t\t\t\tindex={idx + 1}\n\t\t\t\t\t\t\tonSelect={onSelect ? () => onSelect(source, idx) : undefined}\n\t\t\t\t\t\t\tvisitLabel={strings.visit}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</ol>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiSources.displayName = 'AiSources';\n\nfunction AvatarStrip({\n\tsources,\n\tmax,\n\ttitle,\n\tonSelect,\n\tclassName,\n}: {\n\tsources: ReadonlyArray<AiSourceItem>;\n\tmax: number;\n\ttitle: string;\n\tonSelect?: (source: AiSourceItem, index: number) => void;\n\tclassName?: string;\n}) {\n\tconst visible = sources.slice(0, max);\n\tconst overflow = sources.length - visible.length;\n\treturn (\n\t\t<div className={cn('inline-flex items-center gap-2', className)}>\n\t\t\t<AvatarStack sources={visible} onSelect={onSelect} />\n\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t{title}\n\t\t\t</Text>\n\t\t\t{overflow > 0 && (\n\t\t\t\t<Text size=\"xxs\" type=\"discrete\" className=\"tabular-nums\">\n\t\t\t\t\t+{overflow}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction AvatarStack({\n\tsources,\n\tonSelect,\n}: {\n\tsources: ReadonlyArray<AiSourceItem>;\n\tonSelect?: (source: AiSourceItem, index: number) => void;\n}) {\n\treturn (\n\t\t<div className=\"flex -space-x-1.5\">\n\t\t\t{sources.map((s, i) => {\n\t\t\t\tconst visual = (\n\t\t\t\t\t<span\n\t\t\t\t\t\tkey={s.id}\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\ttitle={typeof s.title === 'string' ? s.title : undefined}\n\t\t\t\t\t\tclassName=\"inline-flex size-5 items-center justify-center overflow-hidden rounded-full border border-card bg-muted text-muted-foreground ring-1 ring-border/60\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<SourceFavicon src={s.faviconUrl} />\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t\tif (onSelect) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={s.id}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\tonClick={() => onSelect(s, i)}\n\t\t\t\t\t\t\tclassName=\"size-5 rounded-full p-0\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{visual}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn visual;\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nfunction SourceFavicon({ src }: { src?: string }) {\n\tconst [failed, setFailed] = useState(false);\n\n\tuseEffect(() => {\n\t\tsetFailed(false);\n\t}, [src]);\n\n\tif (!src || failed) {\n\t\treturn <Globe className=\"size-3\" />;\n\t}\n\n\treturn (\n\t\t<img\n\t\t\tsrc={src}\n\t\t\talt=\"\"\n\t\t\tclassName=\"size-full object-cover\"\n\t\t\tonError={() => setFailed(true)}\n\t\t/>\n\t);\n}\n\nfunction SourceRow({\n\tsource,\n\tindex,\n\tonSelect,\n\tvisitLabel,\n}: {\n\tsource: AiSourceItem;\n\tindex: number;\n\tonSelect?: () => void;\n\tvisitLabel: string;\n}) {\n\tconst TitleEl = source.url && !onSelect ? 'a' : onSelect ? 'button' : 'span';\n\tconst titleProps =\n\t\tsource.url && !onSelect\n\t\t\t? { href: source.url, target: '_blank' as const, rel: 'noopener noreferrer' }\n\t\t\t: onSelect\n\t\t\t\t? { type: 'button' as const, onClick: onSelect }\n\t\t\t\t: {};\n\treturn (\n\t\t<li>\n\t\t\t<TitleEl\n\t\t\t\t{...titleProps}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'group flex w-full items-start gap-2.5 rounded-md px-2 py-1.5 text-left',\n\t\t\t\t\t(source.url || onSelect) &&\n\t\t\t\t\t\t'hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t)}\n\t\t\t\taria-label={source.url ? visitLabel : undefined}\n\t\t\t>\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\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t<Text weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t\t{source.title}\n\t\t\t\t\t\t{!!source.url && (\n\t\t\t\t\t\t\t<ExternalLink className=\"ml-1 inline size-3 text-muted-foreground/70 align-baseline\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!source.publisher && (\n\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t{source.publisher}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!source.snippet && (\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{source.snippet}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</TitleEl>\n\t\t</li>\n\t);\n}\n","import type { ReactNode } from 'react';\n\nexport interface AiReasoningStrings {\n\t/** Header label when collapsed and reasoning is in progress. */\n\tthinking: string;\n\t/** Header label when reasoning is complete (uses `{{seconds}}` placeholder). */\n\tthoughtFor: string;\n\t/** Header label when no duration is available. */\n\tthoughtDone: string;\n\texpandAria: string;\n\tcollapseAria: string;\n}\n\nexport const defaultAiReasoningStrings: AiReasoningStrings = {\n\tthinking: 'Thinking…',\n\tthoughtFor: 'Thought for {{seconds}}s',\n\tthoughtDone: 'Reasoning complete',\n\texpandAria: 'Expand reasoning',\n\tcollapseAria: 'Collapse reasoning',\n};\n\nexport interface AiReasoningProps {\n\t/** Reasoning trace — typically streamed plaintext. */\n\tchildren?: ReactNode;\n\t/** Show the live \"Thinking…\" header with shimmer. */\n\tstreaming?: boolean;\n\t/** Total elapsed time in seconds — shown in the collapsed-done header. */\n\tdurationSeconds?: number;\n\t/** Auto-expand while streaming. */\n\texpandWhileStreaming?: boolean;\n\t/** Initial expanded state. */\n\tdefaultExpanded?: boolean;\n\t/** Controlled expanded state. */\n\texpanded?: boolean;\n\tonExpandedChange?: (expanded: boolean) => void;\n\tclassName?: string;\n\tstrings?: Partial<AiReasoningStrings>;\n}\n","/**\n * AiReasoning — collapsible \"thinking\" trace shown above the assistant's\n * final answer. While `streaming` is true the header runs the shimmer label\n * and the body is auto-expanded; once streaming ends, the header switches\n * to \"Thought for Ns\" and the body collapses to a peek.\n *\n * Accept the trace as `children` so the consumer can stream raw text, JSX\n * blocks (substeps, code), or Markdown via their own renderer.\n */\nimport { useEffect, useState, type ReactNode } from 'react';\nimport { Brain, ChevronDown, ChevronRight } 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 { AiShimmer } from '../ai-shimmer/ai-shimmer';\nimport { defaultAiReasoningStrings, type AiReasoningProps } 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 AiReasoning({\n\tchildren,\n\tstreaming = false,\n\tdurationSeconds,\n\texpandWhileStreaming = true,\n\tdefaultExpanded = false,\n\texpanded: expandedProp,\n\tonExpandedChange,\n\tclassName,\n\tstrings: stringsProp,\n}: AiReasoningProps) {\n\tconst strings = useStrings(defaultAiReasoningStrings, stringsProp);\n\tconst [internalExpanded, setInternalExpanded] = useState(defaultExpanded);\n\tconst expanded = expandedProp ?? internalExpanded;\n\tconst setExpanded = (next: boolean) => {\n\t\tif (expandedProp === undefined) setInternalExpanded(next);\n\t\tonExpandedChange?.(next);\n\t};\n\n\tuseEffect(() => {\n\t\tif (streaming && expandWhileStreaming && !expanded) {\n\t\t\tsetExpanded(true);\n\t\t}\n\t\tif (!streaming && expandWhileStreaming && expanded && !defaultExpanded && expandedProp === undefined) {\n\t\t\t// auto-collapse only once when streaming flips off and consumer hasn't pinned state\n\t\t\tsetExpanded(false);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [streaming]);\n\n\tconst headerLabel: ReactNode = streaming ? (\n\t\t<AiShimmer>{strings.thinking}</AiShimmer>\n\t) : durationSeconds !== undefined ? (\n\t\t<Text weight=\"medium\">\n\t\t\t{interpolate(strings.thoughtFor, { seconds: durationSeconds.toFixed(1) })}\n\t\t</Text>\n\t) : (\n\t\t<Text weight=\"medium\">\n\t\t\t{strings.thoughtDone}\n\t\t</Text>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('ai-reasoning--component', \n\t\t\t\t'overflow-hidden rounded-lg border border-border/60 bg-muted/20',\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=\"sm\"\n\t\t\t\tonClick={() => setExpanded(!expanded)}\n\t\t\t\taria-expanded={expanded}\n\t\t\t\taria-label={expanded ? strings.collapseAria : strings.expandAria}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'ai-reasoning--trigger h-auto w-full justify-start gap-2 rounded-none px-3 py-2 text-left',\n\t\t\t\t\t'hover:bg-muted/30',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<Brain className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t<div className=\"flex-1\">{headerLabel}</div>\n\t\t\t\t{expanded ? (\n\t\t\t\t\t<ChevronDown className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t) : (\n\t\t\t\t\t<ChevronRight className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t)}\n\t\t\t</Button>\n\n\t\t\t{expanded && (\n\t\t\t\t<div className=\"border-t border-border/60 px-3 py-2.5\">\n\t\t\t\t\t{typeof children === 'string' ? (\n\t\t\t\t\t\t<Text type=\"secondary\" lineHeight=\"relaxed\" className=\"whitespace-pre-wrap\">\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"whitespace-pre-wrap\">{children}</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAiReasoning.displayName = 'AiReasoning';\n","import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nexport type AiChainStepStatus = 'pending' | 'active' | 'completed' | 'failed';\n\nexport interface AiChainStep {\n\tid: string;\n\ttitle: ReactNode;\n\t/** Optional rationale rendered under the title. */\n\tdescription?: ReactNode;\n\t/** Step status — drives the marker style. */\n\tstatus?: AiChainStepStatus;\n\t/** Custom icon override for the step marker. */\n\ticon?: LucideIcon;\n\t/** Free-form children rendered inside the step body (substeps, code, …). */\n\tbody?: ReactNode;\n}\n\nexport interface AiChainOfThoughtStrings {\n\ttitle: string;\n\tstreamingHint: string;\n}\n\nexport const defaultAiChainOfThoughtStrings: AiChainOfThoughtStrings = {\n\ttitle: 'Reasoning',\n\tstreamingHint: 'Working through the steps…',\n};\n\nexport interface AiChainOfThoughtProps {\n\t/** Step list — order is significant. */\n\tsteps: ReadonlyArray<AiChainStep>;\n\t/** Hide the header strip. */\n\thideHeader?: boolean;\n\t/** Show the streaming hint under the header. */\n\tstreaming?: boolean;\n\tclassName?: string;\n\tstrings?: Partial<AiChainOfThoughtStrings>;\n}\n","/**\n * AiChainOfThought — vertical timeline of reasoning steps an agent took (or\n * is taking) to reach a conclusion. Status-aware markers; per-step body slot\n * for nested content (tool calls, code, sub-steps). Pair with `AiReasoning`\n * (free-form trace) when the model emits structured plan steps.\n */\nimport { AlertCircle, Check, Circle, Loader2, type LucideIcon } from 'lucide-react';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { AiShimmer } from '../ai-shimmer/ai-shimmer';\nimport {\n\tdefaultAiChainOfThoughtStrings,\n\ttype AiChainOfThoughtProps,\n\ttype AiChainStepStatus,\n} from './types';\n\nconst STATUS_VISUAL: Record<\n\tAiChainStepStatus,\n\t{ icon: LucideIcon; iconCls: string; ring: string; spin?: boolean }\n> = {\n\tpending: {\n\t\ticon: Circle,\n\t\ticonCls: 'text-muted-foreground/60',\n\t\tring: 'border-border/60 bg-card',\n\t},\n\tactive: {\n\t\ticon: Loader2,\n\t\ticonCls: 'text-primary',\n\t\tring: 'border-primary/40 bg-primary/5',\n\t\tspin: true,\n\t},\n\tcompleted: {\n\t\ticon: Check,\n\t\ticonCls: 'text-success-foreground',\n\t\tring: 'border-success/40 bg-success',\n\t},\n\tfailed: {\n\t\ticon: AlertCircle,\n\t\ticonCls: 'text-destructive-foreground',\n\t\tring: 'border-destructive/40 bg-destructive',\n\t},\n};\n\nexport function AiChainOfThought({\n\tsteps,\n\thideHeader = false,\n\tstreaming = false,\n\tclassName,\n\tstrings: stringsProp,\n}: AiChainOfThoughtProps) {\n\tconst strings = useStrings(defaultAiChainOfThoughtStrings, stringsProp);\n\n\treturn (\n\t\t<div className={cn('ai-chain-of-thought--component', 'rounded-lg border border-border/60 bg-card', className)}>\n\t\t\t{!hideHeader && (\n\t\t\t\t<div className=\"flex items-center gap-2 border-b border-border/60 px-3 py-2\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t\t{strings.title}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{streaming && (\n\t\t\t\t\t\t<AiShimmer className=\"ml-auto !text-xs\">\n\t\t\t\t\t\t\t{strings.streamingHint}\n\t\t\t\t\t\t</AiShimmer>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<ol className=\"relative px-3 py-3\">\n\t\t\t\t{steps.map((step, idx) => {\n\t\t\t\t\tconst status: AiChainStepStatus = step.status ?? 'pending';\n\t\t\t\t\tconst visual = STATUS_VISUAL[status];\n\t\t\t\t\tconst Icon = step.icon ?? visual.icon;\n\t\t\t\t\tconst isLast = idx === steps.length - 1;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li key={step.id} className=\"relative flex gap-3 pb-3 last:pb-0\">\n\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t\t\tclassName=\"absolute left-[11px] top-[26px] h-[calc(100%-26px)] w-px bg-border/60\"\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<span\n\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'relative z-[1] mt-0.5 inline-flex size-[22px] shrink-0 items-center justify-center rounded-full border',\n\t\t\t\t\t\t\t\t\tvisual.ring,\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\t<Icon\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'size-3',\n\t\t\t\t\t\t\t\t\t\tvisual.iconCls,\n\t\t\t\t\t\t\t\t\t\tvisual.spin && 'animate-spin',\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</span>\n\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tweight={status === 'active' ? 'semibold' : 'medium'}\n\t\t\t\t\t\t\t\t\tclassName={cn(status === 'pending' && 'text-muted-foreground')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{step.title}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t{!!step.description && (\n\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-0.5\">\n\t\t\t\t\t\t\t\t\t\t{step.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!step.body && (\n\t\t\t\t\t\t\t\t\t<div className=\"mt-2\">{step.body}</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ol>\n\t\t</div>\n\t);\n}\n\nAiChainOfThought.displayName = 'AiChainOfThought';\n","import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nexport type AiTaskStatus = 'queued' | 'running' | 'completed' | 'failed' | 'cancelled' | 'skipped';\n\nexport interface AiTaskItem {\n\tid: string;\n\ttitle: ReactNode;\n\t/** Status — drives the marker pill and icon. */\n\tstatus?: AiTaskStatus;\n\t/** Optional sub-task list rendered nested. */\n\tchildren?: ReadonlyArray<AiTaskItem>;\n\t/** Decorative icon override. */\n\ticon?: LucideIcon;\n\t/** Right-aligned slot — duration, byte count, etc. */\n\trightSlot?: ReactNode;\n\t/** Free-form body rendered under the title (logs, code, …). */\n\tbody?: ReactNode;\n}\n\nexport interface AiTaskStrings {\n\tstatusLabels: Record<AiTaskStatus, string>;\n\tcollapseSubtasks: string;\n\texpandSubtasks: string;\n}\n\nexport const defaultAiTaskStrings: AiTaskStrings = {\n\tstatusLabels: {\n\t\tqueued: 'Queued',\n\t\trunning: 'Running',\n\t\tcompleted: 'Done',\n\t\tfailed: 'Failed',\n\t\tcancelled: 'Cancelled',\n\t\tskipped: 'Skipped',\n\t},\n\tcollapseSubtasks: 'Collapse subtasks',\n\texpandSubtasks: 'Expand subtasks',\n};\n\nexport interface AiTaskProps {\n\t/** Top-level task. */\n\ttask: AiTaskItem;\n\t/** Compact = single row with collapsible children; expanded = always show. */\n\tdensity?: 'compact' | 'expanded';\n\t/** Indentation width per nesting level (px). */\n\tindent?: number;\n\tclassName?: string;\n\tstrings?: Partial<AiTaskStrings>;\n}\n","/**\n * AiTask — single task (with optional sub-tasks) used by agent surfaces to\n * surface long-running plans: scaffolding, package installs, multi-file\n * edits. Each row carries a status marker, a title, and optional body /\n * right-slot. Children render nested under the parent and are auto-\n * collapsed by default in the `compact` density.\n */\nimport { useState } from 'react';\nimport {\n\tAlertCircle,\n\tCheck,\n\tChevronDown,\n\tChevronRight,\n\tCircle,\n\tLoader2,\n\tMinusCircle,\n\tXCircle,\n\ttype LucideIcon,\n} from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultAiTaskStrings,\n\ttype AiTaskItem,\n\ttype AiTaskProps,\n\ttype AiTaskStatus,\n} from './types';\n\nconst STATUS_ICON: Record<AiTaskStatus, { icon: LucideIcon; cls: string; spin?: boolean }> = {\n\tqueued: { icon: Circle, cls: 'text-muted-foreground/60' },\n\trunning: { icon: Loader2, cls: 'text-primary', spin: true },\n\tcompleted: { icon: Check, cls: 'text-success' },\n\tfailed: { icon: AlertCircle, cls: 'text-destructive' },\n\tcancelled: { icon: XCircle, cls: 'text-muted-foreground' },\n\tskipped: { icon: MinusCircle, cls: 'text-muted-foreground' },\n};\n\nconst STATUS_VARIANT: Record<\n\tAiTaskStatus,\n\t'secondary' | 'primary' | 'success' | 'error' | 'warning'\n> = {\n\tqueued: 'secondary',\n\trunning: 'primary',\n\tcompleted: 'success',\n\tfailed: 'error',\n\tcancelled: 'secondary',\n\tskipped: 'secondary',\n};\n\nexport function AiTask({\n\ttask,\n\tdensity = 'compact',\n\tindent = 18,\n\tclassName,\n\tstrings: stringsProp,\n}: AiTaskProps) {\n\tconst strings = useStrings(defaultAiTaskStrings, stringsProp);\n\treturn (\n\t\t<div className={cn('ai-task--component', 'rounded-lg border border-border/60 bg-card', className)}>\n\t\t\t<TaskRow\n\t\t\t\titem={task}\n\t\t\t\tdepth={0}\n\t\t\t\tdensity={density}\n\t\t\t\tindent={indent}\n\t\t\t\tstrings={strings}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nAiTask.displayName = 'AiTask';\n\nfunction TaskRow({\n\titem,\n\tdepth,\n\tdensity,\n\tindent,\n\tstrings,\n}: {\n\titem: AiTaskItem;\n\tdepth: number;\n\tdensity: 'compact' | 'expanded';\n\tindent: number;\n\tstrings: ReturnType<typeof useStrings<typeof defaultAiTaskStrings>>;\n}) {\n\tconst status: AiTaskStatus = item.status ?? 'queued';\n\tconst visual = STATUS_ICON[status];\n\tconst Icon = item.icon ?? visual.icon;\n\tconst hasChildren = !!item.children?.length;\n\tconst [open, setOpen] = useState(density === 'expanded' || depth === 0 ? true : false);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'flex items-start gap-2 px-3 py-2',\n\t\t\t\t\tdepth > 0 && 'border-t border-border/60',\n\t\t\t\t)}\n\t\t\t\tstyle={{ paddingLeft: 12 + depth * indent }}\n\t\t\t>\n\t\t\t\t{hasChildren ? (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\tonClick={() => setOpen((v) => !v)}\n\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\taria-label={open ? strings.collapseSubtasks : strings.expandSubtasks}\n\t\t\t\t\t\tclassName=\"-ml-1 mt-0.5 size-4 rounded p-0 text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{open ? (\n\t\t\t\t\t\t\t<ChevronDown className=\"size-3.5\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ChevronRight className=\"size-3.5\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<span aria-hidden className=\"mt-0.5 size-4\" />\n\t\t\t\t)}\n\t\t\t\t<Icon\n\t\t\t\t\tclassName={cn('mt-[3px] size-3.5 shrink-0', visual.cls, visual.spin && 'animate-spin')}\n\t\t\t\t/>\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\n\t\t\t\t\t\t\tweight={status === 'running' ? 'semibold' : 'medium'}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'flex-1 truncate',\n\t\t\t\t\t\t\t\tstatus === 'queued' && 'text-muted-foreground',\n\t\t\t\t\t\t\t\tstatus === 'cancelled' && 'line-through text-muted-foreground',\n\t\t\t\t\t\t\t\tstatus === 'skipped' && 'text-muted-foreground/70',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Badge variant={STATUS_VARIANT[status]}>\n\t\t\t\t\t\t\t{strings.statusLabels[status]}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t{!!item.rightSlot && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tclassName=\"tabular-nums\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.rightSlot}\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\t{!!item.body && <div className=\"mt-2\">{item.body}</div>}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{hasChildren && open && (\n\t\t\t\t<div>\n\t\t\t\t\t{item.children!.map((child) => (\n\t\t\t\t\t\t<TaskRow\n\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\tdepth={depth + 1}\n\t\t\t\t\t\t\tdensity={density}\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</div>\n\t\t\t)}\n\t\t</>\n\t);\n}\n","import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nexport interface AiArtifactStrings {\n\topenAria: string;\n\tcopy: string;\n\tcopied: string;\n\tcopyAria: string;\n\tdownloadAria: string;\n\texpandAria: string;\n}\n\nexport const defaultAiArtifactStrings: AiArtifactStrings = {\n\topenAria: 'Open artifact',\n\tcopy: 'Copy',\n\tcopied: 'Copied',\n\tcopyAria: 'Copy artifact',\n\tdownloadAria: 'Download artifact',\n\texpandAria: 'Expand artifact',\n};\n\nexport interface AiArtifactAction {\n\tid: string;\n\tlabel: string;\n\ticon?: LucideIcon;\n\tonSelect?: () => void;\n}\n\nexport interface AiArtifactProps {\n\t/** Title — typically the artifact name (e.g. \"App.tsx\", \"design-spec.md\"). */\n\ttitle: ReactNode;\n\t/** Subtitle — typically the kind / language (\"React component\", \"Markdown\"). */\n\tsubtitle?: ReactNode;\n\t/** Icon override for the leading badge. */\n\ticon?: LucideIcon;\n\t/** Plain text content used by the default copy action. */\n\tcopyText?: string;\n\t/** Body content — preview, code, sandbox iframe, etc. */\n\tchildren?: ReactNode;\n\t/** Hide the body and render the artifact as a clickable preview-only chip. */\n\tcollapsed?: boolean;\n\t/** Click handler for the whole header (e.g. open in side panel). */\n\tonOpen?: () => void;\n\t/** Custom actions in the header. */\n\tactions?: ReadonlyArray<AiArtifactAction>;\n\t/** Provide a download handler — adds a download button. */\n\tonDownload?: () => void;\n\tclassName?: string;\n\tstrings?: Partial<AiArtifactStrings>;\n}\n","/**\n * AiArtifact — generic shell for a model-produced asset (code file, document,\n * design spec, sandbox preview, …). Header carries a leading icon, title /\n * subtitle, and an action toolbar (open, copy, download, custom actions).\n * Body slot accepts the preview itself: `<AiCodeBlock>`, an `<iframe>`, an\n * `<AiPackageInfo>`, etc.\n */\nimport { useState } from 'react';\nimport {\n\tCheck,\n\tCopy,\n\tDownload,\n\tExternalLink,\n\tFileText,\n\ttype LucideIcon,\n} from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport { IconBadge } from '@/components/base/display';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAiArtifactStrings, type AiArtifactProps } from './types';\n\nexport function AiArtifact({\n\ttitle,\n\tsubtitle,\n\ticon,\n\tcopyText,\n\tchildren,\n\tcollapsed = false,\n\tonOpen,\n\tactions,\n\tonDownload,\n\tclassName,\n\tstrings: stringsProp,\n}: AiArtifactProps) {\n\tconst strings = useStrings(defaultAiArtifactStrings, stringsProp);\n\tconst Icon: LucideIcon = icon ?? FileText;\n\tconst [copied, setCopied] = useState(false);\n\n\tconst handleCopy = () => {\n\t\tif (!copyText) return;\n\t\tif (typeof navigator !== 'undefined' && navigator.clipboard) {\n\t\t\tvoid navigator.clipboard.writeText(copyText);\n\t\t}\n\t\tsetCopied(true);\n\t\twindow.setTimeout(() => setCopied(false), 1500);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('ai-artifact--component', \n\t\t\t\t'overflow-hidden rounded-lg border border-border/60 bg-card',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex items-center gap-3 border-b border-border/60 bg-muted/20 px-3 py-2\">\n\t\t\t\t<IconBadge icon={Icon} tone=\"muted\" size=\"sm\" shape=\"square\" />\n\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate\">\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!subtitle && (\n\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t{actions?.map((action) => {\n\t\t\t\t\t\tconst ActionIcon = action.icon;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tkey={action.id}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tonClick={action.onSelect}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!ActionIcon && <ActionIcon className=\"size-3.5\" />}\n\t\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\t{!!copyText && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\taria-label={strings.copyAria}\n\t\t\t\t\t\t\tonClick={handleCopy}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{copied ? (\n\t\t\t\t\t\t\t\t<Check className=\"size-3.5 text-success\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Copy className=\"size-3.5\" />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!onDownload && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\taria-label={strings.downloadAria}\n\t\t\t\t\t\t\tonClick={onDownload}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Download className=\"size-3.5\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!onOpen && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\taria-label={strings.openAria}\n\t\t\t\t\t\t\tonClick={onOpen}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ExternalLink className=\"size-3.5\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{!collapsed && !!children && <div className=\"bg-card\">{children}</div>}\n\t\t</div>\n\t);\n}\n\nAiArtifact.displayName = 'AiArtifact';\n"],"mappings":"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"}