@keboola/design 11.3.0 → 11.4.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 (229) hide show
  1. package/AGENTS.md +17 -0
  2. package/CHANGELOG.md +170 -0
  3. package/COMPONENT-API.md +32 -31
  4. package/dist/{AIKit-DaFT7p92.js → AIKit-DDg5DBCG.js} +142 -63
  5. package/dist/AIKit-DDg5DBCG.js.map +1 -0
  6. package/dist/{Alert-CseY3yAj.js → Alert-DHJFrWnS.js} +3 -3
  7. package/dist/{Alert-CseY3yAj.js.map → Alert-DHJFrWnS.js.map} +1 -1
  8. package/dist/{AlertModal-DQAGpsEy.js → AlertModal-BGJdaRRj.js} +3 -3
  9. package/dist/{AlertModal-DQAGpsEy.js.map → AlertModal-BGJdaRRj.js.map} +1 -1
  10. package/dist/{AppShell-BUoxM3fv.js → AppShell-DRgJxpXW.js} +2 -2
  11. package/dist/{AppShell-BUoxM3fv.js.map → AppShell-DRgJxpXW.js.map} +1 -1
  12. package/dist/{BrandEditor-BnTLMRMp.js → BrandEditor-Go7w8Zj2.js} +7 -7
  13. package/dist/{BrandEditor-BnTLMRMp.js.map → BrandEditor-Go7w8Zj2.js.map} +1 -1
  14. package/dist/{BrandLogo-V2pRUAeO.js → BrandLogo-Dmi7jo21.js} +2 -2
  15. package/dist/{BrandLogo-V2pRUAeO.js.map → BrandLogo-Dmi7jo21.js.map} +1 -1
  16. package/dist/{Breadcrumb-CQTPn_KB.js → Breadcrumb-uEkM6adI.js} +3 -3
  17. package/dist/{Breadcrumb-CQTPn_KB.js.map → Breadcrumb-uEkM6adI.js.map} +1 -1
  18. package/dist/{Button-CPsEQuTN.js → Button-DsRrU5F1.js} +6 -5
  19. package/dist/Button-DsRrU5F1.js.map +1 -0
  20. package/dist/{Card-Cd5HSBmv.js → Card-Dyo7055Q.js} +2 -2
  21. package/dist/{Card-Cd5HSBmv.js.map → Card-Dyo7055Q.js.map} +1 -1
  22. package/dist/{Checkbox-5VNCcV7E.js → Checkbox-fC0BuO2B.js} +3 -3
  23. package/dist/{Checkbox-5VNCcV7E.js.map → Checkbox-fC0BuO2B.js.map} +1 -1
  24. package/dist/{Clipboard-B7rckqV_.js → Clipboard-ChPdiUy3.js} +2 -2
  25. package/dist/{Clipboard-B7rckqV_.js.map → Clipboard-ChPdiUy3.js.map} +1 -1
  26. package/dist/{ClipboardButton-CQ6Aewpg.js → ClipboardButton-D9pDjgkB.js} +3 -3
  27. package/dist/{ClipboardButton-CQ6Aewpg.js.map → ClipboardButton-D9pDjgkB.js.map} +1 -1
  28. package/dist/{CodeEditor-CUse8znx.js → CodeEditor-Cxy3HnKH.js} +15 -26
  29. package/dist/CodeEditor-Cxy3HnKH.js.map +1 -0
  30. package/dist/{ColorInput-Q1D9Vcc_.js → ColorInput-Bxj-1eLT.js} +3 -3
  31. package/dist/{ColorInput-Q1D9Vcc_.js.map → ColorInput-Bxj-1eLT.js.map} +1 -1
  32. package/dist/{ColorModeSwitch-B5PXCVqB.js → ColorModeSwitch-CsWLiTBX.js} +3 -3
  33. package/dist/{ColorModeSwitch-B5PXCVqB.js.map → ColorModeSwitch-CsWLiTBX.js.map} +1 -1
  34. package/dist/{Combobox-CyoRA7oY.js → Combobox-Cs_1pj2q.js} +29 -22
  35. package/dist/Combobox-Cs_1pj2q.js.map +1 -0
  36. package/dist/{Command-Ds68v2rX.js → Command-B7ML9YMv.js} +6 -6
  37. package/dist/{Command-Ds68v2rX.js.map → Command-B7ML9YMv.js.map} +1 -1
  38. package/dist/{CopyField-DI66uY_g.js → CopyField-BO_sh-HO.js} +2 -2
  39. package/dist/{CopyField-DI66uY_g.js.map → CopyField-BO_sh-HO.js.map} +1 -1
  40. package/dist/{DateInput-BPj2pzsn.js → DateInput-ZdaMQo5i.js} +4 -4
  41. package/dist/{DateInput-BPj2pzsn.js.map → DateInput-ZdaMQo5i.js.map} +1 -1
  42. package/dist/{DatePicker-DyEGuW9m.js → DatePicker-nA8YdE84.js} +2 -2
  43. package/dist/{DatePicker-DyEGuW9m.js.map → DatePicker-nA8YdE84.js.map} +1 -1
  44. package/dist/{DateRangeInput-u9DxNbHW.js → DateRangeInput-DkvNh_sT.js} +4 -4
  45. package/dist/{DateRangeInput-u9DxNbHW.js.map → DateRangeInput-DkvNh_sT.js.map} +1 -1
  46. package/dist/{DateRangePicker-CYYhX6S7.js → DateRangePicker-DjSUFjh4.js} +5 -5
  47. package/dist/{DateRangePicker-CYYhX6S7.js.map → DateRangePicker-DjSUFjh4.js.map} +1 -1
  48. package/dist/{DropdownMenu-DpMEcyCq.js → DropdownMenu-CASr-jgl.js} +2 -2
  49. package/dist/{DropdownMenu-DpMEcyCq.js.map → DropdownMenu-CASr-jgl.js.map} +1 -1
  50. package/dist/{FieldItem-qQKGU9lF.js → FieldItem-CCd9-xnp.js} +3 -3
  51. package/dist/{FieldItem-qQKGU9lF.js.map → FieldItem-CCd9-xnp.js.map} +1 -1
  52. package/dist/{FileUpload-C336MVnU.js → FileUpload-ABThVZyg.js} +2 -2
  53. package/dist/{FileUpload-C336MVnU.js.map → FileUpload-ABThVZyg.js.map} +1 -1
  54. package/dist/{Form-CTygENDc.js → Form-k6PH-em3.js} +8 -8
  55. package/dist/{Form-CTygENDc.js.map → Form-k6PH-em3.js.map} +1 -1
  56. package/dist/{FormGroup-BnwP0jNu.js → FormGroup-DbcDtrgU.js} +3 -3
  57. package/dist/{FormGroup-BnwP0jNu.js.map → FormGroup-DbcDtrgU.js.map} +1 -1
  58. package/dist/{FullScreenModal-j-M4aPFd.js → FullScreenModal-BvPuYibe.js} +3 -3
  59. package/dist/{FullScreenModal-j-M4aPFd.js.map → FullScreenModal-BvPuYibe.js.map} +1 -1
  60. package/dist/{HoverCard-yQq-O49c.js → HoverCard-B9ZMJxjn.js} +2 -2
  61. package/dist/{HoverCard-yQq-O49c.js.map → HoverCard-B9ZMJxjn.js.map} +1 -1
  62. package/dist/{InputGroup-D7zlmqPB.js → InputGroup-BnLHY0eq.js} +3 -3
  63. package/dist/{InputGroup-D7zlmqPB.js.map → InputGroup-BnLHY0eq.js.map} +1 -1
  64. package/dist/{Kbd-D6LpR7G2.js → Kbd-CvSM3D3-.js} +2 -2
  65. package/dist/{Kbd-D6LpR7G2.js.map → Kbd-CvSM3D3-.js.map} +1 -1
  66. package/dist/MarkedText-DNGEUVWc.js +67 -0
  67. package/dist/MarkedText-DNGEUVWc.js.map +1 -0
  68. package/dist/{MermaidDiagram-JlvuGcY-.js → MermaidDiagram-WkonYErO.js} +3 -3
  69. package/dist/{MermaidDiagram-JlvuGcY-.js.map → MermaidDiagram-WkonYErO.js.map} +1 -1
  70. package/dist/{Modal-o4ATIexE.js → Modal-Coj-H02o.js} +16 -4
  71. package/dist/Modal-Coj-H02o.js.map +1 -0
  72. package/dist/{MultiActionButtonGroup-GTeFk-L8.js → MultiActionButtonGroup-CxWH7yWK.js} +3 -3
  73. package/dist/{MultiActionButtonGroup-GTeFk-L8.js.map → MultiActionButtonGroup-CxWH7yWK.js.map} +1 -1
  74. package/dist/{Navbar-CAQs4BZz.js → Navbar-B2UsolVU.js} +3 -3
  75. package/dist/{Navbar-CAQs4BZz.js.map → Navbar-B2UsolVU.js.map} +1 -1
  76. package/dist/{PageToolbar-bG2YtSa3.js → PageToolbar-DnbFt14Q.js} +3 -3
  77. package/dist/{PageToolbar-bG2YtSa3.js.map → PageToolbar-DnbFt14Q.js.map} +1 -1
  78. package/dist/{Pagination-BB3X7ooY.js → Pagination-C_b7Xhey.js} +2 -2
  79. package/dist/{Pagination-BB3X7ooY.js.map → Pagination-C_b7Xhey.js.map} +1 -1
  80. package/dist/{Popconfirm-C2Ky5hJO.js → Popconfirm-CILjmzKI.js} +3 -3
  81. package/dist/{Popconfirm-C2Ky5hJO.js.map → Popconfirm-CILjmzKI.js.map} +1 -1
  82. package/dist/{Popover-DsbI2HKu.js → Popover-BEbQrC_P.js} +22 -19
  83. package/dist/Popover-BEbQrC_P.js.map +1 -0
  84. package/dist/{RadioGroup-BMxuZEbT.js → RadioGroup-XFzFd1ti.js} +3 -3
  85. package/dist/{RadioGroup-BMxuZEbT.js.map → RadioGroup-XFzFd1ti.js.map} +1 -1
  86. package/dist/{Search-DFeECt5D.js → Search-4Bxtt8hS.js} +2 -2
  87. package/dist/{Search-DFeECt5D.js.map → Search-4Bxtt8hS.js.map} +1 -1
  88. package/dist/{SearchInput-CCpdUego.js → SearchInput-f_oY9T4Z.js} +3 -3
  89. package/dist/{SearchInput-CCpdUego.js.map → SearchInput-f_oY9T4Z.js.map} +1 -1
  90. package/dist/{SectionNav-Bw_MVL0_.js → SectionNav-BpJlisbT.js} +4 -4
  91. package/dist/{SectionNav-Bw_MVL0_.js.map → SectionNav-BpJlisbT.js.map} +1 -1
  92. package/dist/{Select-D6IZVvwL.js → Select-DpcgKqKB.js} +31 -20
  93. package/dist/Select-DpcgKqKB.js.map +1 -0
  94. package/dist/{Sheet-BIzs2K2H.js → Sheet-Chf0kX1E.js} +3 -3
  95. package/dist/{Sheet-BIzs2K2H.js.map → Sheet-Chf0kX1E.js.map} +1 -1
  96. package/dist/{Sidebar-r1TW4g_b.js → Sidebar-Cm6I4dE1.js} +9 -7
  97. package/dist/{Sidebar-r1TW4g_b.js.map → Sidebar-Cm6I4dE1.js.map} +1 -1
  98. package/dist/{Slider-CjxyfEty.js → Slider-pPC_3gz9.js} +3 -3
  99. package/dist/{Slider-CjxyfEty.js.map → Slider-pPC_3gz9.js.map} +1 -1
  100. package/dist/{Switch-BueTV03C.js → Switch-ChfPKcTE.js} +2 -2
  101. package/dist/{Switch-BueTV03C.js.map → Switch-ChfPKcTE.js.map} +1 -1
  102. package/dist/{Tabs-l72-WuhK.js → Tabs-eB974xJf.js} +2 -2
  103. package/dist/{Tabs-l72-WuhK.js.map → Tabs-eB974xJf.js.map} +1 -1
  104. package/dist/{TextInput-DhdRk8qm.js → TextInput-DHM6dHmn.js} +3 -3
  105. package/dist/{TextInput-DhdRk8qm.js.map → TextInput-DHM6dHmn.js.map} +1 -1
  106. package/dist/{ThemeProvider-DZfGdf1v.js → ThemeProvider-DrQJtzpd.js} +90 -15
  107. package/dist/ThemeProvider-DrQJtzpd.js.map +1 -0
  108. package/dist/{TimePicker-B6d2rAbX.js → TimePicker-BGeqc-Ed.js} +2 -2
  109. package/dist/{TimePicker-B6d2rAbX.js.map → TimePicker-BGeqc-Ed.js.map} +1 -1
  110. package/dist/{Toast-CxXUulYN.js → Toast-Dr6Uw7ao.js} +2 -2
  111. package/dist/{Toast-CxXUulYN.js.map → Toast-Dr6Uw7ao.js.map} +1 -1
  112. package/dist/{ZoomableSvg-CNIzRHKH.js → ZoomableSvg-BWnDkR61.js} +4 -4
  113. package/dist/{ZoomableSvg-CNIzRHKH.js.map → ZoomableSvg-BWnDkR61.js.map} +1 -1
  114. package/dist/{context-BrNtMc1H.js → context-D7X470dy.js} +4 -3
  115. package/dist/context-D7X470dy.js.map +1 -0
  116. package/dist/{defaults-CTfvj2KB.js → defaults-i_xG2F_1.js} +2 -4
  117. package/dist/defaults-i_xG2F_1.js.map +1 -0
  118. package/dist/editors.js +4 -4
  119. package/dist/findLiteralMatches-BGBw8Vbl.js +62 -0
  120. package/dist/findLiteralMatches-BGBw8Vbl.js.map +1 -0
  121. package/dist/flint.js +3 -3
  122. package/dist/index.d.ts +677 -527
  123. package/dist/index.js +59 -58
  124. package/dist/internal/blocks/AIKit.js +2 -2
  125. package/dist/internal/blocks/AppShell.js +1 -1
  126. package/dist/internal/blocks/BrandEditor.js +1 -1
  127. package/dist/internal/blocks/ChartPanel.js +1 -1
  128. package/dist/internal/blocks/ClipboardButton.js +1 -1
  129. package/dist/internal/blocks/ColorInput.js +1 -1
  130. package/dist/internal/blocks/ColorModeSwitch.js +1 -1
  131. package/dist/internal/blocks/Command.js +1 -1
  132. package/dist/internal/blocks/CopyField.js +1 -1
  133. package/dist/internal/blocks/DateInput.js +1 -1
  134. package/dist/internal/blocks/DateRangeInput.js +1 -1
  135. package/dist/internal/blocks/EmptyConfigurationActionCard.js +1 -1
  136. package/dist/internal/blocks/ErrorState.js +1 -1
  137. package/dist/internal/blocks/ExportMenu.js +5 -5
  138. package/dist/internal/blocks/ExportMenu.js.map +1 -1
  139. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +1 -1
  140. package/dist/internal/blocks/Form.js +1 -1
  141. package/dist/internal/blocks/FormGroup.js +1 -1
  142. package/dist/internal/blocks/MultiActionButtonGroup.js +1 -1
  143. package/dist/internal/blocks/MultiCombobox.js +14 -11
  144. package/dist/internal/blocks/MultiCombobox.js.map +1 -1
  145. package/dist/internal/blocks/NumberInput.js +1 -1
  146. package/dist/internal/blocks/PageToolbar.js +1 -1
  147. package/dist/internal/blocks/PasswordInput.js +2 -2
  148. package/dist/internal/blocks/SearchInput.js +1 -1
  149. package/dist/internal/blocks/SearchInputWithNavigation.js +3 -3
  150. package/dist/internal/blocks/SectionNav.js +1 -1
  151. package/dist/internal/blocks/SplitButton.js +2 -2
  152. package/dist/internal/blocks/StatCard.js +1 -1
  153. package/dist/internal/blocks/TextInput.js +1 -1
  154. package/dist/internal/blocks/Textarea.js +1 -1
  155. package/dist/internal/blocks/TimeInput.js +3 -3
  156. package/dist/internal/components/Alert.js +1 -1
  157. package/dist/internal/components/AlertModal.js +1 -1
  158. package/dist/internal/components/Avatar.js +1 -1
  159. package/dist/internal/components/BrandLogo.js +1 -1
  160. package/dist/internal/components/Breadcrumb.js +1 -1
  161. package/dist/internal/components/Button.js +1 -1
  162. package/dist/internal/components/Card.js +1 -1
  163. package/dist/internal/components/Checkbox.js +1 -1
  164. package/dist/internal/components/Clipboard.js +1 -1
  165. package/dist/internal/components/CollapsiblePanel.js +1 -1
  166. package/dist/internal/components/Combobox.js +1 -1
  167. package/dist/internal/components/DatePicker.js +1 -1
  168. package/dist/internal/components/DateRangePicker.js +1 -1
  169. package/dist/internal/components/DropdownMenu.js +1 -1
  170. package/dist/internal/components/FileUpload.js +1 -1
  171. package/dist/internal/components/FullScreenModal.js +1 -1
  172. package/dist/internal/components/HoverCard.js +1 -1
  173. package/dist/internal/components/InputGroup.js +1 -1
  174. package/dist/internal/components/Kbd.js +1 -1
  175. package/dist/internal/components/MarkedText.js +1 -1
  176. package/dist/internal/components/Modal.js +1 -1
  177. package/dist/internal/components/Navbar.js +1 -1
  178. package/dist/internal/components/Pagination.js +1 -1
  179. package/dist/internal/components/Popconfirm.js +1 -1
  180. package/dist/internal/components/Popover.js +1 -1
  181. package/dist/internal/components/RadioGroup.js +1 -1
  182. package/dist/internal/components/Search.js +1 -1
  183. package/dist/internal/components/Select.js +1 -1
  184. package/dist/internal/components/Sheet.js +1 -1
  185. package/dist/internal/components/Sidebar.js +1 -1
  186. package/dist/internal/components/Slider.js +1 -1
  187. package/dist/internal/components/Switch.js +1 -1
  188. package/dist/internal/components/Tabs.js +1 -1
  189. package/dist/internal/components/ThemeProvider.js +4 -4
  190. package/dist/internal/components/TimePicker.js +1 -1
  191. package/dist/internal/components/Toast.js +2 -2
  192. package/dist/internal/components/Toggle.js +3 -3
  193. package/dist/internal/components/Toggle.js.map +1 -1
  194. package/dist/internal/components/Tooltip.js +1 -1
  195. package/dist/internal/components/Truncated.js +1 -1
  196. package/dist/internal/components/ZoomableSvg.js +1 -1
  197. package/dist/internal/utils.js +3 -3
  198. package/dist/markdown-editor.js +7 -7
  199. package/dist/mermaid.js +1 -1
  200. package/dist/rjsf.js +11 -11
  201. package/dist/styles.css +1 -1
  202. package/dist/testing.js +4 -4
  203. package/dist/testing.js.map +1 -1
  204. package/dist/{themeTokens-7T1AFLhq.js → themeTokens-D70HeNVF.js} +3 -3
  205. package/dist/{themeTokens-7T1AFLhq.js.map → themeTokens-D70HeNVF.js.map} +1 -1
  206. package/dist/{toast-BweSoKn3.js → toast-DIC0iNRf.js} +2 -2
  207. package/dist/{toast-BweSoKn3.js.map → toast-DIC0iNRf.js.map} +1 -1
  208. package/dist/{useColorSchemeState-BJEk6esG.js → useColorSchemeState-klihG9-i.js} +2 -2
  209. package/dist/{useColorSchemeState-BJEk6esG.js.map → useColorSchemeState-klihG9-i.js.map} +1 -1
  210. package/dist/{utils-B-g7d_Jb.js → utils-B5Z52hYs.js} +2 -2
  211. package/dist/{utils-B-g7d_Jb.js.map → utils-B5Z52hYs.js.map} +1 -1
  212. package/dist/vega.js +2 -2
  213. package/dist/{vegaTheme-FBXgAdHK.js → vegaTheme-DfoEQhOy.js} +2 -2
  214. package/dist/{vegaTheme-FBXgAdHK.js.map → vegaTheme-DfoEQhOy.js.map} +1 -1
  215. package/package.json +5 -5
  216. package/dist/AIKit-DaFT7p92.js.map +0 -1
  217. package/dist/Button-CPsEQuTN.js.map +0 -1
  218. package/dist/CodeEditor-CUse8znx.js.map +0 -1
  219. package/dist/Combobox-CyoRA7oY.js.map +0 -1
  220. package/dist/MarkedText-Ckbft5mw.js +0 -44
  221. package/dist/MarkedText-Ckbft5mw.js.map +0 -1
  222. package/dist/Modal-o4ATIexE.js.map +0 -1
  223. package/dist/Popover-DsbI2HKu.js.map +0 -1
  224. package/dist/Select-D6IZVvwL.js.map +0 -1
  225. package/dist/ThemeProvider-DZfGdf1v.js.map +0 -1
  226. package/dist/context-BrNtMc1H.js.map +0 -1
  227. package/dist/defaults-CTfvj2KB.js.map +0 -1
  228. package/dist/escapeStringRegexp-8MxP2knR.js +0 -6
  229. package/dist/escapeStringRegexp-8MxP2knR.js.map +0 -1
@@ -1,19 +1,18 @@
1
1
  import { cn } from "./classNames-BzrkDnOD.js";
2
- import { Tooltip, TooltipProvider } from "./utils-B-g7d_Jb.js";
3
- import { AlertCircle, ChevronDown, ChevronLeft, ChevronRight, CircleCheck, CirclePause, CircleX, FileText, Loader2, Maximize2, Minimize2, Play, Send, X, XCircle } from "./icons-Cek151jC.js";
4
- import { Button } from "./Button-CPsEQuTN.js";
5
- import { ClipboardButton } from "./ClipboardButton-CQ6Aewpg.js";
6
- import { FullScreenModal, FullScreenModalBody, FullScreenModalHeader } from "./FullScreenModal-j-M4aPFd.js";
2
+ import { Tooltip, TooltipProvider } from "./utils-B5Z52hYs.js";
3
+ import { AlertCircle, ChevronDown, ChevronLeft, ChevronRight, ChevronUp, CircleCheck, CirclePause, CircleX, Loader2, Maximize2, Minimize2, Play, Send, Sparkles, TriangleAlert, X, XCircle } from "./icons-Cek151jC.js";
4
+ import { Button } from "./Button-DsRrU5F1.js";
5
+ import { ClipboardButton } from "./ClipboardButton-D9pDjgkB.js";
6
+ import { FullScreenModal, FullScreenModalBody, FullScreenModalHeader } from "./FullScreenModal-BvPuYibe.js";
7
7
  import { Truncated } from "./internal/components/Truncated.js";
8
- import { HoverCard } from "./HoverCard-yQq-O49c.js";
9
- import { Command } from "./Command-Ds68v2rX.js";
10
- import { TextInput } from "./TextInput-DhdRk8qm.js";
11
- import { Checkbox } from "./Checkbox-5VNCcV7E.js";
8
+ import { HoverCard } from "./HoverCard-B9ZMJxjn.js";
9
+ import { Command } from "./Command-B7ML9YMv.js";
10
+ import { TextInput } from "./TextInput-DHM6dHmn.js";
11
+ import { Checkbox } from "./Checkbox-fC0BuO2B.js";
12
12
  import { Badge } from "./Badge-Ch26CXoP.js";
13
13
  import { Textarea } from "./internal/blocks/Textarea.js";
14
14
  import { Table } from "./Table-CvYuTuNU.js";
15
15
  import { DiagramSkeleton } from "./internal/blocks/DiagramShared/DiagramSkeleton.js";
16
- import { Avatar } from "./internal/components/Avatar.js";
17
16
  import { Progress } from "./internal/components/Progress.js";
18
17
  import { Slot } from "@radix-ui/react-slot";
19
18
  import { Suspense, isValidElement, lazy, useEffect, useId, useRef, useState } from "react";
@@ -24,12 +23,12 @@ import ReactMarkdown from "react-markdown";
24
23
  import remarkGfm from "remark-gfm";
25
24
  //#region src/blocks/AIKit/CollapsibleStepHeader.tsx
26
25
  const variantClasses = {
27
- success: "tw:text-secondary-500 tw:focus-visible:outline-ring tw:not-disabled:hover:text-secondary-600",
28
- error: "tw:text-error-500 tw:focus-visible:outline-error-500 tw:not-disabled:hover:text-error-600",
29
- processing: "tw:text-secondary-500 tw:focus-visible:outline-ring tw:not-disabled:hover:text-secondary-600",
30
- dismissed: "tw:text-neutral-700 tw:focus-visible:outline-neutral-500 tw:not-disabled:hover:text-neutral-800"
26
+ success: "tw:text-muted-foreground tw:focus-visible:outline-ring tw:not-disabled:hover:text-foreground",
27
+ error: "tw:text-destructive tw:focus-visible:outline-destructive tw:not-disabled:hover:text-destructive",
28
+ processing: "tw:text-muted-foreground tw:focus-visible:outline-ring tw:not-disabled:hover:text-foreground",
29
+ dismissed: "tw:text-muted-foreground tw:focus-visible:outline-ring tw:not-disabled:hover:text-foreground"
31
30
  };
32
- const iconClasses = "tw:size-4 tw:shrink-0 tw:basis-4";
31
+ const iconClasses = "tw:size-3.5 tw:shrink-0 tw:basis-3.5 tw:opacity-70";
33
32
  const renderVariantIcon$1 = (variant) => {
34
33
  if (variant === "processing") return /* @__PURE__ */ jsx(Loader2, { className: cn(iconClasses, "tw:animate-spin") });
35
34
  if (variant === "error") return /* @__PURE__ */ jsx(XCircle, { className: iconClasses });
@@ -41,12 +40,12 @@ const CollapsibleStepHeader = ({ isExpanded, onToggle, label, variant = "success
41
40
  type: "button",
42
41
  "aria-expanded": isExpanded,
43
42
  onClick: onToggle,
44
- className: cn("tw:flex tw:w-fit tw:items-start tw:gap-2 tw:text-left tw:text-sm tw:font-medium tw:italic tw:transition-colors tw:focus-visible:outline tw:focus-visible:outline-2 tw:focus-visible:outline-offset-2 tw:disabled:opacity-40", variantClasses[variant]),
43
+ className: cn("tw:flex tw:w-fit tw:items-center tw:gap-1.5 tw:text-left tw:text-xs tw:font-medium tw:transition-colors tw:focus-visible:outline tw:focus-visible:outline-2 tw:focus-visible:outline-offset-2 tw:disabled:opacity-40", variantClasses[variant]),
45
44
  children: [renderVariantIcon$1(variant), /* @__PURE__ */ jsxs("span", {
46
45
  className: "tw:min-w-0",
47
46
  children: [label, /* @__PURE__ */ jsxs("span", {
48
47
  className: "tw:whitespace-nowrap",
49
- children: ["⁠", /* @__PURE__ */ jsx(ChevronDown, { className: cn("tw:ml-2 tw:inline-block tw:size-4 tw:align-middle tw:transition-transform", isExpanded && "tw:rotate-180") })]
48
+ children: ["⁠", /* @__PURE__ */ jsx(ChevronDown, { className: cn("tw:ml-1.5 tw:inline-block tw:size-3.5 tw:align-middle tw:transition-transform", isExpanded && "tw:rotate-180") })]
50
49
  })]
51
50
  })]
52
51
  });
@@ -54,24 +53,24 @@ const CollapsibleStepHeader = ({ isExpanded, onToggle, label, variant = "success
54
53
  //#endregion
55
54
  //#region src/blocks/AIKit/InlineStepDetail.tsx
56
55
  const InlineStepDetail = ({ children }) => /* @__PURE__ */ jsx("div", {
57
- className: "tw:ml-2.5 tw:whitespace-pre-wrap tw:border-l tw:border-neutral-200 tw:pl-3 tw:text-xs tw:text-neutral-400",
56
+ className: "tw:ml-2.5 tw:whitespace-pre-wrap tw:border-l tw:border-border tw:pl-3 tw:text-xs tw:text-muted-foreground",
58
57
  children
59
58
  });
60
59
  //#endregion
61
60
  //#region src/blocks/AIKit/InlineStepLabel.tsx
62
61
  const renderVariantIcon = (variant) => {
63
- if (variant === "processing") return /* @__PURE__ */ jsx(Loader2, { className: "tw:size-4 tw:animate-spin tw:text-neutral-200" });
64
- if (variant === "error") return /* @__PURE__ */ jsx(XCircle, { className: "tw:size-4 tw:text-error-500" });
65
- if (variant === "dismissed") return /* @__PURE__ */ jsx(XCircle, { className: "tw:size-4 tw:text-neutral-200" });
66
- return /* @__PURE__ */ jsx(CircleCheck, { className: "tw:size-4 tw:text-neutral-200" });
62
+ if (variant === "processing") return /* @__PURE__ */ jsx(Loader2, { className: "tw:size-3.5 tw:animate-spin tw:text-muted-foreground" });
63
+ if (variant === "error") return /* @__PURE__ */ jsx(XCircle, { className: "tw:size-3.5 tw:text-destructive" });
64
+ if (variant === "dismissed") return /* @__PURE__ */ jsx(XCircle, { className: "tw:size-3.5 tw:text-muted-foreground/50" });
65
+ return /* @__PURE__ */ jsx(CircleCheck, { className: "tw:size-3.5 tw:text-muted-foreground/50" });
67
66
  };
68
67
  const InlineStepLabel = ({ variant, children }) => /* @__PURE__ */ jsxs("div", {
69
68
  className: "tw:flex tw:min-w-0 tw:items-center tw:gap-1",
70
69
  children: [/* @__PURE__ */ jsx("div", {
71
- className: "tw:flex tw:size-5 tw:shrink-0 tw:items-center tw:justify-center",
70
+ className: "tw:relative tw:flex tw:size-5 tw:shrink-0 tw:items-center tw:justify-center tw:[background:var(--inline-step-surface,transparent)]",
72
71
  children: renderVariantIcon(variant)
73
72
  }), /* @__PURE__ */ jsx("div", {
74
- className: "tw:flex tw:min-w-0 tw:flex-wrap tw:items-center tw:gap-x-1.5 tw:gap-y-1 tw:text-sm tw:font-medium tw:italic tw:text-neutral-800",
73
+ className: "tw:flex tw:min-w-0 tw:flex-wrap tw:items-center tw:gap-x-1.5 tw:gap-y-1 tw:text-xs tw:font-medium tw:text-muted-foreground",
75
74
  children
76
75
  })]
77
76
  });
@@ -128,7 +127,15 @@ const getLanguage = (element) => {
128
127
  if (typeof props.className !== "string") return void 0;
129
128
  return props.className.match(/language-(\S+)/)?.[1];
130
129
  };
131
- const components = {
130
+ /**
131
+ * The plugins this renderer always runs.
132
+ *
133
+ * - GFM is part of its contract: tables route through the design `Table`, and autolinks and
134
+ * task lists are what an assistant answer is written in.
135
+ * - A caller's own plugins are appended to these, never substituted for them.
136
+ */
137
+ const baseRemarkPlugins = [remarkGfm];
138
+ const baseComponents = {
132
139
  pre({ children, ...props }) {
133
140
  const child = Array.isArray(children) ? children[0] : children;
134
141
  if (getLanguage(child) === "mermaid") {
@@ -207,13 +214,16 @@ const components = {
207
214
  * `MessageBubble` to render an assistant message body. Code blocks expose a
208
215
  * copy button, so mount a `TooltipProvider` once at the app root.
209
216
  */
210
- const Markdown = ({ children, className }) => {
217
+ const Markdown = ({ children, className, remarkPlugins, components: componentOverrides }) => {
211
218
  return /* @__PURE__ */ jsx("div", {
212
219
  "data-prose": true,
213
220
  className: cn(proseClass, className),
214
221
  children: /* @__PURE__ */ jsx(ReactMarkdown, {
215
- remarkPlugins: [remarkGfm],
216
- components,
222
+ remarkPlugins: remarkPlugins === void 0 ? baseRemarkPlugins : [...baseRemarkPlugins, ...remarkPlugins],
223
+ components: componentOverrides === void 0 ? baseComponents : {
224
+ ...baseComponents,
225
+ ...componentOverrides
226
+ },
217
227
  children
218
228
  })
219
229
  });
@@ -223,22 +233,31 @@ const Markdown = ({ children, className }) => {
223
233
  const containerClasses = cva([
224
234
  "tw:flex",
225
235
  "tw:max-w-full",
226
- "tw:gap-4"
236
+ "tw:gap-3"
227
237
  ], {
228
238
  variants: { variant: {
229
- user: ["tw:justify-self-end", "tw:flex-row-reverse"],
230
- assistant: [
231
- "tw:justify-self-start",
232
- "tw:w-full",
233
- "tw:gap-3"
234
- ]
239
+ user: ["tw:justify-end"],
240
+ assistant: ["tw:justify-start", "tw:w-full"]
241
+ } },
242
+ defaultVariants: { variant: "assistant" }
243
+ });
244
+ const stackClasses = cva([
245
+ "tw:flex",
246
+ "tw:min-w-0",
247
+ "tw:flex-1",
248
+ "tw:flex-col",
249
+ "tw:gap-2"
250
+ ], {
251
+ variants: { variant: {
252
+ user: ["tw:items-end"],
253
+ assistant: []
235
254
  } },
236
255
  defaultVariants: { variant: "assistant" }
237
256
  });
238
257
  const contentClasses = cva([
239
258
  "tw:flex",
240
259
  "tw:flex-col",
241
- "tw:gap-4",
260
+ "tw:gap-3",
242
261
  "tw:break-words",
243
262
  "tw:leading-relaxed",
244
263
  "tw:text-foreground",
@@ -252,33 +271,30 @@ const contentClasses = cva([
252
271
  "tw:[&>*]:min-w-0"
253
272
  ],
254
273
  user: [
255
- "tw:max-w-screen-sm",
274
+ "tw:max-w-[min(85%,40rem)]",
256
275
  "tw:w-fit",
257
276
  "tw:bg-muted",
258
- "tw:p-3",
259
- "tw:rounded-2xl",
260
- "tw:ml-6",
277
+ "tw:px-3",
278
+ "tw:py-2",
279
+ "tw:rounded-xl",
261
280
  "tw:overflow-hidden",
262
281
  "tw:break-anywhere"
263
282
  ]
264
283
  } },
265
284
  defaultVariants: { variant: "assistant" }
266
285
  });
267
- const MessageBubble = ({ variant, children, user, actions, createdAt }) => {
268
- return /* @__PURE__ */ jsxs("div", {
286
+ const MessageBubble = ({ variant, children, actions, createdAt }) => {
287
+ return /* @__PURE__ */ jsx("div", {
269
288
  className: containerClasses({ variant }),
270
289
  "data-testid": `chat-message-${variant}`,
271
- children: [variant === "user" && /* @__PURE__ */ jsx(Avatar, {
272
- user,
273
- size: 30,
274
- title: createdAt
275
- }), /* @__PURE__ */ jsxs("div", {
276
- className: "tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:gap-2",
290
+ children: /* @__PURE__ */ jsxs("div", {
291
+ className: stackClasses({ variant }),
277
292
  children: [/* @__PURE__ */ jsx("div", {
278
293
  className: contentClasses({ variant }),
294
+ title: variant === "user" ? createdAt : void 0,
279
295
  children
280
296
  }), actions]
281
- })]
297
+ })
282
298
  });
283
299
  };
284
300
  //#endregion
@@ -665,7 +681,7 @@ const PromptInputSubmit = ({ ref, disabled, status = "ready" }) => {
665
681
  const icon = (() => {
666
682
  if (status === "streaming") return /* @__PURE__ */ jsx(CirclePause, { className: "tw:size-4" });
667
683
  if (status === "interrupted") return /* @__PURE__ */ jsx(Play, { className: "tw:size-4" });
668
- return /* @__PURE__ */ jsx(Send, { className: "tw:size-4" });
684
+ return /* @__PURE__ */ jsx(Send, { className: "tw:size-4 tw:translate-x-[-1px] tw:translate-y-[1px]" });
669
685
  })();
670
686
  const getTooltipText = () => {
671
687
  if (status === "streaming") return "Stop";
@@ -679,9 +695,9 @@ const PromptInputSubmit = ({ ref, disabled, status = "ready" }) => {
679
695
  disabled,
680
696
  "aria-label": ARIA_LABEL_BY_STATUS[status],
681
697
  size: "icon-sm",
682
- variant: "invisible",
698
+ variant: "primary",
683
699
  isLoading: status === "submitted",
684
- className: "tw:ml-auto tw:flex tw:items-center tw:rounded-lg tw:[&_svg]:text-secondary-500 tw:not-disabled:hover:[&_svg]:text-secondary-600",
700
+ className: cn("tw:ml-auto tw:flex tw:items-center tw:rounded-full", "tw:bg-gradient-to-br tw:from-[#61E4FF] tw:via-[#1F8FFF] tw:to-[#7C5CFF]", "tw:hover:not-disabled:brightness-110"),
685
701
  children: status !== "submitted" && icon
686
702
  }) })
687
703
  }), getTooltipText() && /* @__PURE__ */ jsx(Tooltip.Content, {
@@ -742,12 +758,16 @@ const wrapperVariants = cva(null, {
742
758
  inline: ""
743
759
  } }
744
760
  });
745
- const PromptInput = ({ onSend, onAbort, onContinue, prefix, variant, suffix, disabled, disableSubmit, value = "", onValueChange, status = "ready", maxRows = 6, minRows, commands, ...textareaProps }) => {
761
+ const PromptInput = ({ onSend, onAbort, onContinue, prefix, variant, suffix, disabled, disableSubmit, value = "", onValueChange, status = "ready", maxRows = 6, minRows, commands, autoFocus, ...textareaProps }) => {
746
762
  const defaultMinRows = variant === "inline" ? 1 : 2;
747
763
  const isDisabled = (disabled || disableSubmit || !value.trim()) && status !== "streaming" && status !== "interrupted";
748
764
  const textareaId = useId();
749
765
  const textareaRef = useRef(null);
750
766
  const [dismissedValue, setDismissedValue] = useState(null);
767
+ const autoFocusRef = useRef(autoFocus);
768
+ useEffect(() => {
769
+ if (autoFocusRef.current) textareaRef.current?.focus({ preventScroll: true });
770
+ }, []);
751
771
  if (dismissedValue !== null && value !== dismissedValue) setDismissedValue(null);
752
772
  const hasCommands = !!commands && commands.length > 0;
753
773
  const valueLooksLikeSlashCommand = value.startsWith("/") && !/\s/.test(value);
@@ -1093,9 +1113,9 @@ const SuggestedPrompt = ({ label, disabled, onClick, icon, className }) => {
1093
1113
  return /* @__PURE__ */ jsxs("button", {
1094
1114
  type: "button",
1095
1115
  disabled,
1096
- className: cn("tailwindcss-preflight tw:flex tw:items-center tw:justify-start tw:gap-2 tw:whitespace-nowrap tw:rounded-lg tw:p-2 tw:text-left tw:text-sm tw:font-medium tw:text-foreground tw:transition-colors tw:not-disabled:hover:bg-muted tw:disabled:cursor-not-allowed tw:disabled:opacity-50", className),
1116
+ className: cn("tailwindcss-preflight tw:flex tw:items-center tw:justify-start tw:gap-2.5 tw:whitespace-nowrap", "tw:rounded-lg tw:px-3 tw:py-2", "tw:text-left tw:text-sm tw:font-medium tw:text-foreground", "tw:transition-colors tw:not-disabled:hover:bg-accent", "tw:focus-visible:outline-none tw:focus-visible:ring-2 tw:focus-visible:ring-ring tw:focus-visible:ring-offset-1", "tw:disabled:cursor-not-allowed tw:disabled:opacity-50", className),
1097
1117
  onClick,
1098
- children: [icon ?? /* @__PURE__ */ jsx(FileText, { className: "tw:size-4 tw:shrink-0 tw:basis-4 tw:[&_*]:stroke-aigradient-600" }), /* @__PURE__ */ jsx("div", {
1118
+ children: [icon ?? /* @__PURE__ */ jsx(Sparkles, { className: "tw:size-4 tw:shrink-0 tw:basis-4 tw:[&_*]:stroke-aigradient-600" }), /* @__PURE__ */ jsx("div", {
1099
1119
  className: "tw:whitespace-normal tw:text-left",
1100
1120
  children: label
1101
1121
  })]
@@ -1105,10 +1125,10 @@ const SuggestedPrompt = ({ label, disabled, onClick, icon, className }) => {
1105
1125
  //#region src/blocks/AIKit/ThinkingIndicator.tsx
1106
1126
  const ThinkingIndicator = ({ label = "Thinking..." }) => {
1107
1127
  return /* @__PURE__ */ jsxs("div", {
1108
- className: "tw:flex tw:items-center tw:gap-2",
1128
+ className: "tw:flex tw:items-center tw:gap-1.5",
1109
1129
  "data-testid": "chat-thinking-indicator",
1110
- children: [/* @__PURE__ */ jsx(Loader2, { className: "tw:size-4 tw:animate-spin tw:text-secondary-500" }), /* @__PURE__ */ jsx("span", {
1111
- className: "tw:text-sm tw:italic tw:text-secondary-500",
1130
+ children: [/* @__PURE__ */ jsx(Loader2, { className: "tw:size-3.5 tw:animate-spin tw:text-muted-foreground" }), /* @__PURE__ */ jsx("span", {
1131
+ className: "tw:text-xs tw:font-medium tw:text-muted-foreground",
1112
1132
  children: label
1113
1133
  })]
1114
1134
  });
@@ -1259,6 +1279,63 @@ const ToolCallChip = ({ label, state, icon, trailing, onClick, className }) => {
1259
1279
  });
1260
1280
  };
1261
1281
  //#endregion
1282
+ //#region src/blocks/AIKit/ToolCallStatusHeader.tsx
1283
+ const headerVariants = cva("tw:flex tw:items-center tw:justify-between tw:gap-2 tw:px-2.5 tw:py-1.5", {
1284
+ variants: { status: {
1285
+ processing: "tw:border-b tw:border-border/60",
1286
+ warning: "tw:bg-warning/10",
1287
+ success: "tw:border-b tw:border-border/60",
1288
+ error: "tw:bg-destructive/10"
1289
+ } },
1290
+ defaultVariants: { status: "success" }
1291
+ });
1292
+ const statusInk = {
1293
+ processing: "tw:text-muted-foreground",
1294
+ warning: "tw:text-warning",
1295
+ success: "tw:text-muted-foreground",
1296
+ error: "tw:text-destructive"
1297
+ };
1298
+ const statusIconInk = {
1299
+ processing: "tw:text-muted-foreground",
1300
+ warning: "tw:text-warning",
1301
+ success: "tw:text-success/70",
1302
+ error: "tw:text-destructive"
1303
+ };
1304
+ const ToolCallStatusHeader = ({ icon: IconComponent, iconSpin, status, text, needsConfirmation, isCollapsible, isCollapsed, onToggleCollapse }) => {
1305
+ return /* @__PURE__ */ jsxs("div", {
1306
+ role: isCollapsible ? "button" : void 0,
1307
+ tabIndex: isCollapsible ? 0 : void 0,
1308
+ "aria-expanded": isCollapsible ? !isCollapsed : void 0,
1309
+ "data-status": status,
1310
+ className: cn(headerVariants({ status }), isCollapsible && "tw:cursor-pointer"),
1311
+ onClick: isCollapsible ? onToggleCollapse : void 0,
1312
+ onKeyDown: isCollapsible ? (e) => {
1313
+ if (e.key === "Enter" || e.key === " ") {
1314
+ e.preventDefault();
1315
+ onToggleCollapse?.();
1316
+ }
1317
+ } : void 0,
1318
+ children: [/* @__PURE__ */ jsxs("div", {
1319
+ className: "tw:flex tw:min-w-0 tw:flex-1 tw:items-center tw:gap-1.5",
1320
+ children: [/* @__PURE__ */ jsx(IconComponent, { className: cn("tw:size-3.5 tw:shrink-0", statusIconInk[status], iconSpin && "tw:animate-spin") }), /* @__PURE__ */ jsx("span", {
1321
+ "data-testid": "tool-status-text",
1322
+ className: cn("tw:truncate tw:pr-0.5 tw:text-xs tw:font-medium", statusInk[status]),
1323
+ children: text
1324
+ })]
1325
+ }), (needsConfirmation || isCollapsible) && /* @__PURE__ */ jsxs("div", {
1326
+ className: "tw:flex tw:shrink-0 tw:items-center tw:gap-2",
1327
+ children: [needsConfirmation && /* @__PURE__ */ jsxs("div", {
1328
+ className: "tw:flex tw:items-center tw:gap-1",
1329
+ children: [/* @__PURE__ */ jsx("span", {
1330
+ "data-testid": "tool-confirmation-required",
1331
+ className: "tw:text-xs tw:font-medium tw:text-warning",
1332
+ children: "Confirmation required"
1333
+ }), /* @__PURE__ */ jsx(TriangleAlert, { className: "tw:size-3.5 tw:text-warning" })]
1334
+ }), isCollapsible && (isCollapsed ? /* @__PURE__ */ jsx(ChevronDown, { className: "tw:size-3.5 tw:shrink-0 tw:text-muted-foreground" }) : /* @__PURE__ */ jsx(ChevronUp, { className: "tw:size-3.5 tw:shrink-0 tw:text-muted-foreground" }))]
1335
+ })]
1336
+ });
1337
+ };
1338
+ //#endregion
1262
1339
  //#region src/blocks/AIKit/usageStatsHelpers.ts
1263
1340
  /** Clamp a percentage to 0–100 and normalize non-finite input to 0. */
1264
1341
  const clampPercentage = (value) => Number.isFinite(value) ? Math.min(100, Math.max(0, value)) : 0;
@@ -1297,15 +1374,17 @@ const UsageStatsRing = ({ value, size = 16, strokeWidth = 2.5, className }) => {
1297
1374
  //#endregion
1298
1375
  //#region src/blocks/AIKit/UsageStats.tsx
1299
1376
  const UsageStats = ({ value, alert = false, children, className, ariaLabel, align = "end", side = "top", sideOffset = 8 }) => {
1300
- const defaultLabel = `Usage: ${Math.round(clampPercentage(value))}%${alert ? " (usage alert)" : ""}`;
1377
+ const hasAlert = Boolean(alert);
1378
+ const isWarning = alert === "warning";
1379
+ const defaultLabel = `Usage: ${Math.round(clampPercentage(value))}%${hasAlert ? " (usage alert)" : ""}`;
1301
1380
  return /* @__PURE__ */ jsxs(HoverCard, { children: [/* @__PURE__ */ jsx(HoverCard.Trigger, {
1302
1381
  asChild: true,
1303
1382
  children: /* @__PURE__ */ jsxs("span", {
1304
1383
  "aria-label": ariaLabel ?? defaultLabel,
1305
1384
  className: cn("tw:relative tw:inline-flex tw:size-8 tw:items-center tw:justify-center", className),
1306
- children: [/* @__PURE__ */ jsx(UsageStatsRing, { value }), alert && /* @__PURE__ */ jsx(AlertCircle, {
1385
+ children: [/* @__PURE__ */ jsx(UsageStatsRing, { value }), hasAlert && /* @__PURE__ */ jsx(AlertCircle, {
1307
1386
  "data-testid": "usage-stats-alert",
1308
- className: "tw:absolute tw:-right-0.5 tw:-top-0.5 tw:size-3 tw:text-error-500"
1387
+ className: cn("tw:absolute tw:-right-0.5 tw:-top-0.5 tw:size-3", isWarning ? "tw:text-warning-500" : "tw:text-error-500")
1309
1388
  })]
1310
1389
  })
1311
1390
  }), /* @__PURE__ */ jsx(HoverCard.Content, {
@@ -1316,6 +1395,6 @@ const UsageStats = ({ value, alert = false, children, className, ariaLabel, alig
1316
1395
  })] });
1317
1396
  };
1318
1397
  //#endregion
1319
- export { AnswerSummary, CollapsibleStepHeader, InlineStepDetail, InlineStepLabel, Markdown, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, UsageStats, UsageStatsRing };
1398
+ export { AnswerSummary, CollapsibleStepHeader, InlineStepDetail, InlineStepLabel, Markdown, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing };
1320
1399
 
1321
- //# sourceMappingURL=AIKit-DaFT7p92.js.map
1400
+ //# sourceMappingURL=AIKit-DDg5DBCG.js.map