@marimo-team/islands 0.23.12-dev4 → 0.23.12-dev7

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 (76) hide show
  1. package/dist/{ConnectedDataExplorerComponent-WqG-xX4l.js → ConnectedDataExplorerComponent-Du3_nUzI.js} +13 -13
  2. package/dist/{ErrorBoundary-BNx_OSVo.js → ErrorBoundary-DE6tzZf-.js} +2 -2
  3. package/dist/{any-language-editor-rPSlOll9.js → any-language-editor-DN1R-1KZ.js} +5 -5
  4. package/dist/{button-vQhauTmO.js → button-BacYv-bE.js} +7 -1
  5. package/dist/{capabilities-BEHzIS99.js → capabilities-D_4LYhSU.js} +1 -1
  6. package/dist/{chat-ui-k2kqhCv5.js → chat-ui-BEOvjkmJ.js} +16 -16
  7. package/dist/{check-nrzHDi45.js → check-C9OoNtR4.js} +1 -1
  8. package/dist/{code-visibility-C5i5yDQ-.js → code-visibility-43gCeXKe.js} +30 -30
  9. package/dist/{copy-UhDed7D4.js → copy-COam1EG7.js} +2 -2
  10. package/dist/{dist-DYGLrbYQ.js → dist--2Bqjvs0.js} +2 -2
  11. package/dist/{error-banner-BHAkVFc2.js → error-banner-DFPfz_Qf.js} +2 -2
  12. package/dist/{esm-Bqu9AE2K.js → esm-M837UxV5.js} +1 -1
  13. package/dist/{extends-9Yl5BEcg.js → extends-9MVIxxRo.js} +4 -4
  14. package/dist/{formats-BV4bOfMI.js → formats-d6MhLuQ9.js} +4 -4
  15. package/dist/{glide-data-editor-BDTq6YUb.js → glide-data-editor-DkzAInWG.js} +9 -9
  16. package/dist/{html-to-image-C86pQALH.js → html-to-image-Di0mtt6O.js} +73 -73
  17. package/dist/{input-AKkGXdyV.js → input-CbEz_aj_.js} +6 -6
  18. package/dist/{label-E3ZJXHu8.js → label-WfTSU8L4.js} +2 -2
  19. package/dist/{loader-YPuQvn1Y.js → loader-Boph2xIS.js} +1 -1
  20. package/dist/main.js +1238 -1225
  21. package/dist/{mermaid-QFAR9YgY.js → mermaid-CJW9vIyO.js} +5 -5
  22. package/dist/{process-output-nNw4OpSj.js → process-output-BLd4KuwX.js} +3 -3
  23. package/dist/{reveal-component-g70KQOGv.js → reveal-component-BQHpjptH.js} +11 -11
  24. package/dist/{spec-B45_YCNI.js → spec-Bv-XlYiv.js} +4 -4
  25. package/dist/{strings-Cq2s9_EQ.js → strings-Dq_j3Rxw.js} +4 -4
  26. package/dist/style.css +2 -2
  27. package/dist/{swiper-component-BNa_4kh2.js → swiper-component-5HoSsPi1.js} +2 -2
  28. package/dist/{toDate-Do1xRzAo.js → toDate-D-l5s8nn.js} +3 -3
  29. package/dist/{tooltip-Bz3OAwrU.js → tooltip-Czds6Qr8.js} +3 -3
  30. package/dist/{types-D8gEGs4R.js → types-C2Ir191_.js} +1 -1
  31. package/dist/{useAsyncData-CL3o2p4i.js → useAsyncData-1Dhzjfwf.js} +1 -1
  32. package/dist/{useDateFormatter-BC6iSz9g.js → useDateFormatter-CMnRuVmN.js} +2 -2
  33. package/dist/{useDeepCompareMemoize-BPx2MuOK.js → useDeepCompareMemoize-CDWT3BDz.js} +1 -1
  34. package/dist/{useIframeCapabilities-C6Ta3EyP.js → useIframeCapabilities-DWIYvDh7.js} +1 -1
  35. package/dist/{useLifecycle-C3Ec71q0.js → useLifecycle-AHlswLw-.js} +3 -3
  36. package/dist/{useTheme-ZhT6uIu3.js → useTheme-BrYvK-_A.js} +2 -2
  37. package/dist/{vega-component-C3AWYGAL.js → vega-component-Pk6lyc_a.js} +10 -10
  38. package/dist/{zod-DXqkaI_w.js → zod-CijjQh4u.js} +1 -1
  39. package/package.json +3 -3
  40. package/src/components/ai/display-helpers.tsx +5 -5
  41. package/src/components/app-config/ai-config.tsx +5 -5
  42. package/src/components/app-config/mcp-config.tsx +3 -3
  43. package/src/components/chat/acp/agent-panel.tsx +3 -3
  44. package/src/components/chat/acp/blocks.tsx +36 -38
  45. package/src/components/chat/acp/common.tsx +12 -16
  46. package/src/components/chat/acp/scroll-to-bottom-button.tsx +1 -1
  47. package/src/components/chat/acp/session-tabs.tsx +2 -2
  48. package/src/components/chat/chat-history-popover.tsx +1 -1
  49. package/src/components/data-table/columns.tsx +2 -2
  50. package/src/components/data-table/filter-pill-editor.tsx +1 -1
  51. package/src/components/dependency-graph/minimap-content.tsx +1 -1
  52. package/src/components/editor/RecoveryButton.tsx +1 -1
  53. package/src/components/editor/actions/pair-with-agent-modal.tsx +2 -2
  54. package/src/components/editor/ai/ai-completion-editor.tsx +1 -1
  55. package/src/components/editor/cell/CreateCellButton.tsx +1 -1
  56. package/src/components/editor/chrome/panels/empty-state.tsx +1 -1
  57. package/src/components/editor/chrome/panels/outline/floating-outline.tsx +1 -1
  58. package/src/components/editor/chrome/wrapper/pending-ai-cells.tsx +1 -1
  59. package/src/components/editor/columns/cell-column.tsx +1 -1
  60. package/src/components/editor/columns/sortable-column.tsx +2 -2
  61. package/src/components/editor/output/MarimoErrorOutput.tsx +1 -1
  62. package/src/components/editor/output/TextOutput.tsx +2 -2
  63. package/src/components/slides/minimap.tsx +2 -2
  64. package/src/components/slides/reveal-component.tsx +1 -1
  65. package/src/components/ui/alert.tsx +1 -1
  66. package/src/components/ui/command.tsx +2 -2
  67. package/src/components/ui/reorderable-list.tsx +1 -1
  68. package/src/components/ui/table.tsx +2 -5
  69. package/src/core/codemirror/language/languages/sql/renderers.tsx +60 -68
  70. package/src/core/hotkeys/hotkeys.ts +1 -0
  71. package/src/plugins/impl/MatrixPlugin.tsx +2 -2
  72. package/src/plugins/impl/TabsPlugin.tsx +1 -1
  73. package/src/plugins/impl/matplotlib/matplotlib-renderer.ts +1 -1
  74. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +155 -98
  75. package/src/plugins/impl/mpl-interactive/__tests__/MplInteractivePlugin.test.tsx +154 -1
  76. package/src/plugins/impl/mpl-interactive/mpl-websocket-shim.ts +10 -0
@@ -1,9 +1,9 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
- import { g as cn, l as useEventListener, t as Button } from "./button-vQhauTmO.js";
2
+ import { g as cn, l as useEventListener, t as Button } from "./button-BacYv-bE.js";
3
3
  import { t as require_react } from "./react-DA-nE2FX.js";
4
4
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
5
  import { t as require_jsx_runtime } from "./jsx-runtime-DebpN0FN.js";
6
- import { t as useIframeCapabilities } from "./useIframeCapabilities-C6Ta3EyP.js";
6
+ import { t as useIframeCapabilities } from "./useIframeCapabilities-DWIYvDh7.js";
7
7
  var import_compiler_runtime = require_compiler_runtime(), import_react = /* @__PURE__ */ __toESM(require_react(), 1);
8
8
  function isObject$2(t2) {
9
9
  return typeof t2 == "object" && !!t2 && "constructor" in t2 && t2.constructor === Object;
@@ -2,11 +2,11 @@ var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  import { t as __commonJSMin } from "./chunk-BNovOVIE.js";
5
- import { _ as Logger } from "./button-vQhauTmO.js";
5
+ import { _ as Logger } from "./button-BacYv-bE.js";
6
6
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
7
- import { u as createLucideIcon } from "./dist-DYGLrbYQ.js";
7
+ import { u as createLucideIcon } from "./dist--2Bqjvs0.js";
8
8
  import { r as KnownQueryParams } from "./constants-T20xxyNf.js";
9
- import { b as atom, d as store, m as isIslands, p as waitFor } from "./useTheme-ZhT6uIu3.js";
9
+ import { b as atom, d as store, m as isIslands, p as waitFor } from "./useTheme-BrYvK-_A.js";
10
10
  import { t as invariant } from "./invariant-wRzNXIsJ.js";
11
11
  var CircleQuestionMark = createLucideIcon("circle-question-mark", [
12
12
  ["circle", {
@@ -1,10 +1,10 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
- import { f as createSlottable, g as cn, m as useComposedRefs } from "./button-vQhauTmO.js";
2
+ import { f as createSlottable, g as cn, m as useComposedRefs } from "./button-BacYv-bE.js";
3
3
  import { t as require_react } from "./react-DA-nE2FX.js";
4
4
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
- import { a as createPopperScope, i as Root2, n as Arrow, r as Content, s as Root, t as Anchor } from "./dist-DYGLrbYQ.js";
5
+ import { a as createPopperScope, i as Root2, n as Arrow, r as Content, s as Root, t as Anchor } from "./dist--2Bqjvs0.js";
6
6
  import { t as require_jsx_runtime } from "./jsx-runtime-DebpN0FN.js";
7
- import { Q as withSmartCollisionBoundary, Z as withFullScreenAsRoot, _t as createContextScope, at as Portal, ct as DismissableLayer, dt as useId, et as StyleNamespace, ft as Presence, ht as composeEventHandlers, pt as useControllableState, vt as Primitive } from "./zod-DXqkaI_w.js";
7
+ import { Q as withSmartCollisionBoundary, Z as withFullScreenAsRoot, _t as createContextScope, at as Portal, ct as DismissableLayer, dt as useId, et as StyleNamespace, ft as Presence, ht as composeEventHandlers, pt as useControllableState, vt as Primitive } from "./zod-CijjQh4u.js";
8
8
  var import_react = /* @__PURE__ */ __toESM(require_react(), 1), import_jsx_runtime = /* @__PURE__ */ __toESM(require_jsx_runtime(), 1), [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [createPopperScope]), usePopperScope = createPopperScope(), PROVIDER_NAME = "TooltipProvider", DEFAULT_DELAY_DURATION = 700, TOOLTIP_OPEN = "tooltip.open", [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME), TooltipProvider$1 = (n) => {
9
9
  let { __scopeTooltip: j, delayDuration: M = DEFAULT_DELAY_DURATION, skipDelayDuration: N = 300, disableHoverableContent: P = false, children: F } = n, I = import_react.useRef(true), L = import_react.useRef(false), R = import_react.useRef(0);
10
10
  return import_react.useEffect(() => {
@@ -1,4 +1,4 @@
1
- import { u as createLucideIcon } from "./dist-DYGLrbYQ.js";
1
+ import { u as createLucideIcon } from "./dist--2Bqjvs0.js";
2
2
  var Pencil = createLucideIcon("pencil", [["path", {
3
3
  d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
4
4
  key: "1a8usu"
@@ -1,7 +1,7 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DA-nE2FX.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
4
- import { T as useEvent_default } from "./useTheme-ZhT6uIu3.js";
4
+ import { T as useEvent_default } from "./useTheme-BrYvK-_A.js";
5
5
  import { t as invariant } from "./invariant-wRzNXIsJ.js";
6
6
  var import_compiler_runtime = require_compiler_runtime(), import_react = /* @__PURE__ */ __toESM(require_react(), 1), Result = {
7
7
  error(e, s) {
@@ -1,7 +1,7 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DA-nE2FX.js";
3
- import { u as createLucideIcon } from "./dist-DYGLrbYQ.js";
4
- import { E as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7 } from "./strings-Cq2s9_EQ.js";
3
+ import { u as createLucideIcon } from "./dist--2Bqjvs0.js";
4
+ import { E as $18f2051aff69b9bf$export$43bb16f9c6d9e3f7 } from "./strings-Dq_j3Rxw.js";
5
5
  var ChartPie = createLucideIcon("chart-pie", [["path", {
6
6
  d: "M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",
7
7
  key: "pzmjnu"
@@ -1,6 +1,6 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DA-nE2FX.js";
3
- import { w as dequal } from "./useTheme-ZhT6uIu3.js";
3
+ import { w as dequal } from "./useTheme-BrYvK-_A.js";
4
4
  var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
5
5
  function useDeepCompareMemoize(e) {
6
6
  let i = import_react.useRef(e);
@@ -1,7 +1,7 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
2
  import { t as require_react } from "./react-DA-nE2FX.js";
3
3
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
4
- import { t as getIframeCapabilities } from "./capabilities-BEHzIS99.js";
4
+ import { t as getIframeCapabilities } from "./capabilities-D_4LYhSU.js";
5
5
  var import_compiler_runtime = require_compiler_runtime();
6
6
  require_react();
7
7
  function useIframeCapabilities() {
@@ -1,10 +1,10 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
- import { _ as Logger, g as cn, r as cva } from "./button-vQhauTmO.js";
2
+ import { _ as Logger, g as cn, r as cva } from "./button-BacYv-bE.js";
3
3
  import { t as require_react } from "./react-DA-nE2FX.js";
4
4
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
- import { u as createLucideIcon } from "./dist-DYGLrbYQ.js";
5
+ import { u as createLucideIcon } from "./dist--2Bqjvs0.js";
6
6
  import { t as require_jsx_runtime } from "./jsx-runtime-DebpN0FN.js";
7
- import { b as atom, v as useSetAtom } from "./useTheme-ZhT6uIu3.js";
7
+ import { b as atom, v as useSetAtom } from "./useTheme-BrYvK-_A.js";
8
8
  var Calendar = createLucideIcon("calendar", [
9
9
  ["path", {
10
10
  d: "M8 2v4",
@@ -1,8 +1,8 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
- import { _ as Logger, a as OverridingHotkeyProvider, s as resolvePlatform } from "./button-vQhauTmO.js";
2
+ import { _ as Logger, a as OverridingHotkeyProvider, s as resolvePlatform } from "./button-BacYv-bE.js";
3
3
  import { t as require_react } from "./react-DA-nE2FX.js";
4
4
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
- import { A as looseObject, B as union, I as record, N as number, P as object, R as string, T as boolean, b as _enum, w as array } from "./zod-DXqkaI_w.js";
5
+ import { A as looseObject, B as union, I as record, N as number, P as object, R as string, T as boolean, b as _enum, w as array } from "./zod-CijjQh4u.js";
6
6
  import { t as merge_default } from "./merge-Be1CqGnU.js";
7
7
  var import_react = /* @__PURE__ */ __toESM(require_react()), useInsertionEffect = typeof window < "u" ? import_react.useInsertionEffect || import_react.useLayoutEffect : () => {
8
8
  };
@@ -1,24 +1,24 @@
1
1
  import { s as __toESM } from "./chunk-BNovOVIE.js";
2
- import { _ as Logger, c as Objects, g as cn, h as Events } from "./button-vQhauTmO.js";
2
+ import { _ as Logger, c as Objects, g as cn, h as Events } from "./button-BacYv-bE.js";
3
3
  import { t as require_react } from "./react-DA-nE2FX.js";
4
4
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
- import { c as asRemoteURL, v as CircleQuestionMark } from "./toDate-Do1xRzAo.js";
5
+ import { c as asRemoteURL, v as CircleQuestionMark } from "./toDate-D-l5s8nn.js";
6
6
  import "./react-dom-BTJzcVJ9.js";
7
7
  import { t as require_jsx_runtime } from "./jsx-runtime-DebpN0FN.js";
8
- import "./zod-DXqkaI_w.js";
9
- import { n as ErrorBanner } from "./error-banner-BHAkVFc2.js";
10
- import { t as Tooltip } from "./tooltip-Bz3OAwrU.js";
8
+ import "./zod-CijjQh4u.js";
9
+ import { n as ErrorBanner } from "./error-banner-DFPfz_Qf.js";
10
+ import { t as Tooltip } from "./tooltip-Czds6Qr8.js";
11
11
  import { i as debounce_default } from "./constants-T20xxyNf.js";
12
- import { T as useEvent_default, n as useTheme } from "./useTheme-ZhT6uIu3.js";
12
+ import { T as useEvent_default, n as useTheme } from "./useTheme-BrYvK-_A.js";
13
13
  import { s as uniq } from "./arrays-sEtDRoG4.js";
14
- import { a as isValid, i as AlertTitle, n as Alert, t as arrow } from "./formats-BV4bOfMI.js";
14
+ import { a as isValid, i as AlertTitle, n as Alert, t as arrow } from "./formats-d6MhLuQ9.js";
15
15
  import { n as formats } from "./vega-loader.browser-CZ-J8Py3.js";
16
- import { a as getContainerWidth, n as vegaLoadData, s as tooltipHandler } from "./loader-YPuQvn1Y.js";
16
+ import { a as getContainerWidth, n as vegaLoadData, s as tooltipHandler } from "./loader-Boph2xIS.js";
17
17
  import { t as j } from "./react-vega-B0sAlDTL.js";
18
18
  import "./defaultLocale-u-3osm0P.js";
19
19
  import "./defaultLocale-BoHTsDG6.js";
20
- import { t as useAsyncData } from "./useAsyncData-CL3o2p4i.js";
21
- import { t as useDeepCompareMemoize } from "./useDeepCompareMemoize-BPx2MuOK.js";
20
+ import { t as useAsyncData } from "./useAsyncData-1Dhzjfwf.js";
21
+ import { t as useDeepCompareMemoize } from "./useDeepCompareMemoize-CDWT3BDz.js";
22
22
  import { t as Semaphore } from "./semaphore-CNDGTzkX.js";
23
23
  var import_compiler_runtime = require_compiler_runtime(), import_react = /* @__PURE__ */ __toESM(require_react(), 1);
24
24
  function fixRelativeUrl(e) {
@@ -1,5 +1,5 @@
1
1
  import { r as __export, s as __toESM } from "./chunk-BNovOVIE.js";
2
- import { d as createSlot, l as useEventListener, m as useComposedRefs } from "./button-vQhauTmO.js";
2
+ import { d as createSlot, l as useEventListener, m as useComposedRefs } from "./button-BacYv-bE.js";
3
3
  import { t as require_react } from "./react-DA-nE2FX.js";
4
4
  import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
5
  import { t as require_react_dom } from "./react-dom-BTJzcVJ9.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.23.12-dev4",
3
+ "version": "0.23.12-dev7",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -71,7 +71,7 @@
71
71
  "@replit/codemirror-vim": "^6.3.0",
72
72
  "@revealjs/react": "^0.2.1",
73
73
  "@streamdown/math": "^1.0.1",
74
- "@tailwindcss/postcss": "^4.1.18",
74
+ "@tailwindcss/postcss": "^4.3.0",
75
75
  "@tailwindcss/typography": "^0.5.19",
76
76
  "@tanstack/react-table": "^8.21.3",
77
77
  "@tanstack/react-virtual": "^3.13.23",
@@ -227,7 +227,7 @@
227
227
  "storybook": "^10.3.5",
228
228
  "stylelint": "^16.26.1",
229
229
  "stylelint-config-standard": "^36.0.1",
230
- "tailwindcss": "^4.2.2",
230
+ "tailwindcss": "^4.3.0",
231
231
  "vega-typings": "^2.1.0",
232
232
  "vite": "npm:rolldown-vite@7.3.1",
233
233
  "vite-plugin-top-level-await": "^1.6.0",
@@ -5,15 +5,15 @@ import type { Role } from "@marimo-team/llm-info";
5
5
  export function getTagColour(role: Role | "thinking"): string {
6
6
  switch (role) {
7
7
  case "chat":
8
- return "bg-[var(--purple-3)] text-[var(--purple-11)]";
8
+ return "bg-(--purple-3) text-(--purple-11)";
9
9
  case "autocomplete":
10
- return "bg-[var(--green-3)] text-[var(--green-11)]";
10
+ return "bg-(--green-3) text-(--green-11)";
11
11
  case "edit":
12
- return "bg-[var(--blue-3)] text-[var(--blue-11)]";
12
+ return "bg-(--blue-3) text-(--blue-11)";
13
13
  case "thinking":
14
- return "bg-[var(--purple-4)] text-[var(--purple-12)]";
14
+ return "bg-(--purple-4) text-(--purple-12)";
15
15
  }
16
- return "bg-[var(--mauve-3)] text-[var(--mauve-11)]";
16
+ return "bg-(--mauve-3) text-(--mauve-11)";
17
17
  }
18
18
 
19
19
  export function getCurrentRoleTooltip(role: Role): string {
@@ -488,11 +488,11 @@ const ModelListItem: React.FC<ModelListItemProps> = ({
488
488
  <TreeItem
489
489
  id={qualifiedId}
490
490
  textValue={model.name}
491
- className="pl-6 outline-none data-focused:bg-muted/50 hover:bg-muted/50"
491
+ className="pl-6 outline-hidden data-focused:bg-muted/50 hover:bg-muted/50"
492
492
  onAction={handleToggle}
493
493
  >
494
494
  <TreeItemContent>
495
- <div className="flex items-center justify-between px-3 py-2.5 border-b last:border-b-0 cursor-pointer outline-none">
495
+ <div className="flex items-center justify-between px-3 py-2.5 border-b last:border-b-0 cursor-pointer outline-hidden">
496
496
  <ModelInfoCard model={model} />
497
497
  {model.custom && (
498
498
  <Button
@@ -1465,10 +1465,10 @@ const ProviderTreeItem: React.FC<ProviderTreeItemProps> = ({
1465
1465
  id={providerId}
1466
1466
  hasChildItems={true}
1467
1467
  textValue={providerId}
1468
- className="outline-none data-focused:bg-muted/50 group"
1468
+ className="outline-hidden data-focused:bg-muted/50 group"
1469
1469
  >
1470
1470
  <TreeItemContent>
1471
- <div className="flex items-center gap-3 px-2 py-3 hover:bg-muted/50 cursor-pointer outline-none focus-visible:outline-none border-b group-data-expanded:border-b-0 rounded-sm">
1471
+ <div className="flex items-center gap-3 px-2 py-3 hover:bg-muted/50 cursor-pointer outline-hidden focus-visible:outline-hidden border-b group-data-expanded:border-b-0 rounded-sm">
1472
1472
  <Checkbox
1473
1473
  checked={checkboxState}
1474
1474
  onCheckedChange={handleProviderToggle}
@@ -1600,7 +1600,7 @@ export const AiModelDisplayConfig: React.FC<AiConfigProps> = ({
1600
1600
  <div className="bg-background">
1601
1601
  <Tree
1602
1602
  aria-label="AI Models by Provider"
1603
- className="flex-1 overflow-auto outline-none focus-visible:outline-none"
1603
+ className="flex-1 overflow-auto outline-hidden focus-visible:outline-hidden"
1604
1604
  selectionMode="none"
1605
1605
  >
1606
1606
  {listModelsByProvider.map(([providerId, models]) => (
@@ -131,8 +131,8 @@ export const MCPConfig: React.FC<MCPConfigProps> = ({ form, onSubmit }) => {
131
131
  key={config.id}
132
132
  className={`cursor-pointer transition-all ${
133
133
  isChecked
134
- ? "border-[var(--blue-9)] bg-[var(--blue-2)]"
135
- : "hover:border-[var(--blue-7)]"
134
+ ? "border-(--blue-9) bg-(--blue-2)"
135
+ : "hover:border-(--blue-7)"
136
136
  }`}
137
137
  onClick={() => togglePreset(config.id)}
138
138
  >
@@ -144,7 +144,7 @@ export const MCPConfig: React.FC<MCPConfigProps> = ({ form, onSubmit }) => {
144
144
  <span
145
145
  className={`h-5 w-5 flex items-center justify-center rounded border ${
146
146
  isChecked
147
- ? "border-[var(--blue-7)] bg-[var(--blue-7)] text-foreground"
147
+ ? "border-(--blue-7) bg-(--blue-7) text-foreground"
148
148
  : "border-muted bg-background text-muted-foreground"
149
149
  }`}
150
150
  >
@@ -263,7 +263,7 @@ const LoadingIndicator = memo<LoadingIndicatorProps>(
263
263
  }
264
264
 
265
265
  return (
266
- <div className="px-3 py-2 border-t bg-muted/30 flex-shrink-0">
266
+ <div className="px-3 py-2 border-t bg-muted/30 shrink-0">
267
267
  <div className="flex items-center justify-between text-xs text-muted-foreground">
268
268
  <div className="flex items-center gap-2">
269
269
  <Spinner size="small" className="text-primary" />
@@ -352,7 +352,7 @@ const PromptArea = memo<PromptAreaProps>(
352
352
  });
353
353
 
354
354
  return (
355
- <div className="border-t bg-background flex-shrink-0">
355
+ <div className="border-t bg-background shrink-0">
356
356
  <div
357
357
  className={cn(
358
358
  "px-3 py-2 min-h-[80px]",
@@ -583,7 +583,7 @@ const ChatContent = memo<ChatContentProps>(
583
583
  };
584
584
 
585
585
  return (
586
- <div className="flex-1 flex flex-col overflow-hidden flex-shrink-0 relative">
586
+ <div className="flex-1 flex flex-col overflow-hidden shrink-0 relative">
587
587
  {pendingPermission && (
588
588
  <div className="p-3 border-b">
589
589
  <PermissionRequest
@@ -119,20 +119,18 @@ export const ErrorBlock = (props: {
119
119
 
120
120
  return (
121
121
  <div
122
- className="border border-[var(--red-6)] bg-[var(--red-2)] rounded-lg p-4 my-2"
122
+ className="border border-(--red-6) bg-(--red-2) rounded-lg p-4 my-2"
123
123
  data-block-type="error"
124
124
  >
125
125
  <div className="flex items-start gap-3">
126
- <div className="flex-shrink-0">
127
- <XCircleIcon className="h-5 w-5 text-[var(--red-11)]" />
126
+ <div className="shrink-0">
127
+ <XCircleIcon className="h-5 w-5 text-(--red-11)" />
128
128
  </div>
129
129
  <div className="flex-1 min-w-0">
130
130
  <div className="flex items-center gap-2 mb-2">
131
- <h4 className="text-sm font-medium text-[var(--red-11)]">
132
- Agent Error
133
- </h4>
131
+ <h4 className="text-sm font-medium text-(--red-11)">Agent Error</h4>
134
132
  </div>
135
- <div className="text-sm text-[var(--red-11)] leading-relaxed mb-3">
133
+ <div className="text-sm text-(--red-11) leading-relaxed mb-3">
136
134
  {message}
137
135
  </div>
138
136
  <div className="flex items-center gap-2">
@@ -141,7 +139,7 @@ export const ErrorBlock = (props: {
141
139
  size="xs"
142
140
  variant="outline"
143
141
  onClick={props.onRetry}
144
- className="text-[var(--red-11)] border-[var(--red-6)] hover:bg-[var(--red-3)]"
142
+ className="text-(--red-11) border-(--red-6) hover:bg-(--red-3)"
145
143
  >
146
144
  <RotateCcwIcon className="h-3 w-3 mr-1" />
147
145
  Retry
@@ -152,7 +150,7 @@ export const ErrorBlock = (props: {
152
150
  size="xs"
153
151
  variant="ghost"
154
152
  onClick={props.onDismiss}
155
- className="text-[var(--red-10)] hover:bg-[var(--red-3)]"
153
+ className="text-(--red-10) hover:bg-(--red-3)"
156
154
  >
157
155
  <XIcon className="h-3 w-3 mr-1" />
158
156
  Dismiss
@@ -169,8 +167,8 @@ export const ReadyToChatBlock = () => {
169
167
  return (
170
168
  <div className="flex-1 flex items-center justify-center h-full min-h-[200px] flex-col">
171
169
  <div className="text-center space-y-3">
172
- <div className="w-12 h-12 mx-auto rounded-full bg-[var(--blue-3)] flex items-center justify-center">
173
- <BotMessageSquareIcon className="h-6 w-6 text-[var(--blue-10)]" />
170
+ <div className="w-12 h-12 mx-auto rounded-full bg-(--blue-3) flex items-center justify-center">
171
+ <BotMessageSquareIcon className="h-6 w-6 text-(--blue-10)" />
174
172
  </div>
175
173
  <div>
176
174
  <h3 className="text-lg font-medium text-foreground mb-1">
@@ -205,50 +203,50 @@ export const ConnectionChangeBlock = (props: {
205
203
  icon: <WifiIcon className="h-4 w-4" />,
206
204
  title: "Connected to Agent",
207
205
  message: "Successfully established connection with the AI agent",
208
- bgColor: "bg-[var(--blue-2)]",
209
- borderColor: "border-[var(--blue-6)]",
210
- textColor: "text-[var(--blue-11)]",
211
- iconColor: "text-[var(--blue-10)]",
206
+ bgColor: "bg-(--blue-2)",
207
+ borderColor: "border-(--blue-6)",
208
+ textColor: "text-(--blue-11)",
209
+ iconColor: "text-(--blue-10)",
212
210
  };
213
211
  case "disconnected":
214
212
  return {
215
213
  icon: <WifiOffIcon className="h-4 w-4" />,
216
214
  title: "Disconnected from Agent",
217
215
  message: "Connection to the AI agent has been lost",
218
- bgColor: "bg-[var(--amber-2)]",
219
- borderColor: "border-[var(--amber-6)]",
220
- textColor: "text-[var(--amber-11)]",
221
- iconColor: "text-[var(--amber-10)]",
216
+ bgColor: "bg-(--amber-2)",
217
+ borderColor: "border-(--amber-6)",
218
+ textColor: "text-(--amber-11)",
219
+ iconColor: "text-(--amber-10)",
222
220
  };
223
221
  case "connecting":
224
222
  return {
225
223
  icon: <WifiIcon className="h-4 w-4 animate-pulse" />,
226
224
  title: "Connecting to Agent",
227
225
  message: "Establishing connection with the AI agent...",
228
- bgColor: "bg-[var(--gray-2)]",
229
- borderColor: "border-[var(--gray-6)]",
230
- textColor: "text-[var(--gray-11)]",
231
- iconColor: "text-[var(--gray-10)]",
226
+ bgColor: "bg-(--gray-2)",
227
+ borderColor: "border-(--gray-6)",
228
+ textColor: "text-(--gray-11)",
229
+ iconColor: "text-(--gray-10)",
232
230
  };
233
231
  case "error":
234
232
  return {
235
233
  icon: <WifiOffIcon className="h-4 w-4" />,
236
234
  title: "Connection Error",
237
235
  message: "Failed to connect to the AI agent",
238
- bgColor: "bg-[var(--red-2)]",
239
- borderColor: "border-[var(--red-6)]",
240
- textColor: "text-[var(--red-11)]",
241
- iconColor: "text-[var(--red-10)]",
236
+ bgColor: "bg-(--red-2)",
237
+ borderColor: "border-(--red-6)",
238
+ textColor: "text-(--red-11)",
239
+ iconColor: "text-(--red-10)",
242
240
  };
243
241
  default:
244
242
  return {
245
243
  icon: <WifiOffIcon className="h-4 w-4" />,
246
244
  title: "Connection Status Changed",
247
245
  message: `Agent connection status: ${status}`,
248
- bgColor: "bg-[var(--gray-2)]",
249
- borderColor: "border-[var(--gray-6)]",
250
- textColor: "text-[var(--gray-11)]",
251
- iconColor: "text-[var(--gray-10)]",
246
+ bgColor: "bg-(--gray-2)",
247
+ borderColor: "border-(--gray-6)",
248
+ textColor: "text-(--gray-11)",
249
+ iconColor: "text-(--gray-10)",
252
250
  };
253
251
  }
254
252
  };
@@ -263,7 +261,7 @@ export const ConnectionChangeBlock = (props: {
263
261
  data-status={status}
264
262
  >
265
263
  <div className="flex items-start gap-3">
266
- <div className={`flex-shrink-0 ${config.iconColor}`}>{config.icon}</div>
264
+ <div className={`shrink-0 ${config.iconColor}`}>{config.icon}</div>
267
265
  <div className="flex-1 min-w-0">
268
266
  <div className="flex items-center gap-2 mb-1">
269
267
  <h4 className={`text-sm font-medium ${config.textColor}`}>
@@ -362,7 +360,7 @@ export const PlansBlock = (props: { data: PlanNotificationEvent[] }) => {
362
360
 
363
361
  export const UserMessagesBlock = (props: { data: UserNotificationEvent[] }) => {
364
362
  return (
365
- <div className="flex flex-col gap-2 text-muted-foreground border p-2 bg-background rounded break-words overflow-x-hidden">
363
+ <div className="flex flex-col gap-2 text-muted-foreground border p-2 bg-background rounded wrap-break-word overflow-x-hidden">
366
364
  <ContentBlocks data={props.data.map((item) => item.content)} />
367
365
  </div>
368
366
  );
@@ -454,7 +452,7 @@ export const ResourceBlock = (props: { data: ContentBlockOf<"resource"> }) => {
454
452
  Formatted for agents, not humans.
455
453
  </span>
456
454
  {props.data.resource.mimeType === "text/plain" ? (
457
- <pre className="text-xs whitespace-pre-wrap p-2 bg-muted rounded-md break-words">
455
+ <pre className="text-xs whitespace-pre-wrap p-2 bg-muted rounded-md wrap-break-word">
458
456
  {props.data.resource.text}
459
457
  </pre>
460
458
  ) : (
@@ -514,7 +512,7 @@ export const ResourceLinkBlock = (props: {
514
512
  };
515
513
 
516
514
  export const MimeIcon = (props: { mimeType: string }) => {
517
- const classNames = "h-2 w-2 flex-shrink-0";
515
+ const classNames = "h-2 w-2 shrink-0";
518
516
  if (props.mimeType.startsWith("image/")) {
519
517
  return <FileImageIcon className={classNames} />;
520
518
  }
@@ -647,10 +645,10 @@ export const DiffBlocks = (props: {
647
645
  return (
648
646
  <div
649
647
  key={item.path}
650
- className="border rounded-md overflow-hidden bg-[var(--gray-2)] overflow-y-auto scrollbar-thin max-h-64"
648
+ className="border rounded-md overflow-hidden bg-(--gray-2) overflow-y-auto scrollbar-thin max-h-64"
651
649
  >
652
650
  {/* File path header */}
653
- <div className="px-2 py-1 bg-[var(--gray-2)] border-b text-xs font-medium text-[var(--gray-11)]">
651
+ <div className="px-2 py-1 bg-(--gray-2) border-b text-xs font-medium text-(--gray-11)">
654
652
  {item.path}
655
653
  </div>
656
654
  <ReadonlyDiff
@@ -737,7 +735,7 @@ export const ToolBodyBlock = (props: {
737
735
  }
738
736
  // Show rawInput
739
737
  return (
740
- <pre className="bg-[var(--slate-2)] p-1 text-muted-foreground border border-[var(--slate-4)] rounded text-xs overflow-auto scrollbar-thin max-h-64">
738
+ <pre className="bg-(--slate-2) p-1 text-muted-foreground border border-(--slate-4) rounded text-xs overflow-auto scrollbar-thin max-h-64">
741
739
  <JsonOutput data={rawInput} format="tree" />
742
740
  </pre>
743
741
  );
@@ -45,7 +45,7 @@ export const SimpleAccordion: React.FC<SimpleAccordionProps> = ({
45
45
  case "error":
46
46
  return <XCircleIcon className="h-3 w-3 text-destructive" />;
47
47
  case "success":
48
- return <CheckCircleIcon className="h-3 w-3 text-[var(--blue-9)]" />;
48
+ return <CheckCircleIcon className="h-3 w-3 text-(--blue-9)" />;
49
49
  default:
50
50
  return defaultIcon;
51
51
  }
@@ -63,7 +63,7 @@ export const SimpleAccordion: React.FC<SimpleAccordionProps> = ({
63
63
  className={cn(
64
64
  "py-1 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 px-2 gap-1 rounded-sm [&[data-state=open]>svg]:rotate-180",
65
65
  status === "error" && "text-destructive/80",
66
- status === "success" && "text-[var(--blue-8)]",
66
+ status === "success" && "text-(--blue-8)",
67
67
  )}
68
68
  >
69
69
  <span className="flex items-center gap-1">
@@ -105,32 +105,28 @@ export const ConnectionStatus: React.FC<ConnectionStatusProps> = memo(
105
105
  icon: <WifiIcon className="h-3 w-3" />,
106
106
  label: "Connected",
107
107
  variant: "default" as const,
108
- className:
109
- "bg-[var(--blue-3)] text-[var(--blue-11)] border-[var(--blue-5)]",
108
+ className: "bg-(--blue-3) text-(--blue-11) border-(--blue-5)",
110
109
  };
111
110
  case "connecting":
112
111
  return {
113
112
  icon: <PlugIcon className="h-3 w-3 animate-pulse" />,
114
113
  label: "Connecting",
115
114
  variant: "secondary" as const,
116
- className:
117
- "bg-[var(--yellow-3)] text-[var(--yellow-11)] border-[var(--yellow-5)]",
115
+ className: "bg-(--yellow-3) text-(--yellow-11) border-(--yellow-5)",
118
116
  };
119
117
  case "disconnected":
120
118
  return {
121
119
  icon: <WifiOffIcon className="h-3 w-3" />,
122
120
  label: "Disconnected",
123
121
  variant: "outline" as const,
124
- className:
125
- "bg-[var(--red-3)] text-[var(--red-11)] border-[var(--red-5)]",
122
+ className: "bg-(--red-3) text-(--red-11) border-(--red-5)",
126
123
  };
127
124
  default:
128
125
  return {
129
126
  icon: <WifiOffIcon className="h-3 w-3" />,
130
127
  label: status || "Unknown",
131
128
  variant: "outline" as const,
132
- className:
133
- "bg-[var(--gray-3)] text-[var(--gray-11)] border-[var(--gray-5)]",
129
+ className: "bg-(--gray-3) text-(--gray-11) border-(--gray-5)",
134
130
  };
135
131
  }
136
132
  };
@@ -158,14 +154,14 @@ interface PermissionRequestProps {
158
154
  export const PermissionRequest: React.FC<PermissionRequestProps> = memo(
159
155
  ({ permission, onResolve }) => {
160
156
  return (
161
- <div className="border border-[var(--amber-8)] bg-[var(--amber-2)] rounded-lg p-2">
157
+ <div className="border border-(--amber-8) bg-(--amber-2) rounded-lg p-2">
162
158
  <div className="flex items-center gap-2 mb-3">
163
- <ShieldCheckIcon className="h-4 w-4 text-[var(--amber-11)]" />
164
- <h3 className="text-sm font-medium text-[var(--amber-11)]">
159
+ <ShieldCheckIcon className="h-4 w-4 text-(--amber-11)" />
160
+ <h3 className="text-sm font-medium text-(--amber-11)">
165
161
  Permission Request
166
162
  </h3>
167
163
  </div>
168
- <p className="text-sm text-[var(--amber-11)] mb-3">
164
+ <p className="text-sm text-(--amber-11) mb-3">
169
165
  The AI agent is requesting permission to proceed:
170
166
  </p>
171
167
  <ToolBodyBlock data={permission.toolCall} />
@@ -177,8 +173,8 @@ export const PermissionRequest: React.FC<PermissionRequestProps> = memo(
177
173
  variant="text"
178
174
  className={
179
175
  option.kind.startsWith("allow")
180
- ? "text-[var(--blue-10)]"
181
- : "text-[var(--red-10)]"
176
+ ? "text-(--blue-10)"
177
+ : "text-(--red-10)"
182
178
  }
183
179
  onClick={() =>
184
180
  onResolve({
@@ -35,7 +35,7 @@ const ScrollToBottomButton = memo<ScrollToBottomButtonProps>(
35
35
  "shadow-md shadow-black/10",
36
36
  "hover:bg-background hover:shadow-black/15",
37
37
  "transition-all duration-200",
38
- "focus:outline-none focus:ring-2 focus:ring-primary/50",
38
+ "focus:outline-hidden focus:ring-2 focus:ring-primary/50",
39
39
  )}
40
40
  >
41
41
  <ArrowDownIcon className="h-4 w-4" />
@@ -45,7 +45,7 @@ const SessionTab: React.FC<SessionTabProps> = memo(
45
45
  <Button
46
46
  variant="ghost"
47
47
  size="sm"
48
- className="h-4 w-4 p-0 hover:bg-destructive/20 hover:text-destructive flex-shrink-0"
48
+ className="h-4 w-4 p-0 hover:bg-destructive/20 hover:text-destructive shrink-0"
49
49
  onClick={(e) => {
50
50
  e.stopPropagation();
51
51
  onClose(session.tabId);
@@ -131,7 +131,7 @@ export const SessionTabs: React.FC<SessionTabsProps> = memo(({ className }) => {
131
131
  onSelectSession={handleSelectSession}
132
132
  onCloseSession={handleCloseSession}
133
133
  />
134
- <AgentSelector className="h-6 flex-shrink-0" />
134
+ <AgentSelector className="h-6 shrink-0" />
135
135
  </div>
136
136
  );
137
137
  });
@@ -107,7 +107,7 @@ export const ChatHistoryPopover: React.FC<ChatHistoryPopoverProps> = ({
107
107
  <div className="flex-1 min-w-0">
108
108
  <div className="text-sm truncate">{chat.title}</div>
109
109
  </div>
110
- <div className="text-xs text-muted-foreground/60 ml-2 flex-shrink-0">
110
+ <div className="text-xs text-muted-foreground/60 ml-2 shrink-0">
111
111
  {timeAgo(chat.updatedAt, locale)}
112
112
  </div>
113
113
  </button>
@@ -503,7 +503,7 @@ function getCellStyleClass({
503
503
  isNumeric && "tabular-nums",
504
504
  justify === "center" && "text-center",
505
505
  justify === "right" && "text-right",
506
- wrapped && `${COLUMN_WRAPPING_STYLES} break-words`,
506
+ wrapped && `${COLUMN_WRAPPING_STYLES} wrap-break-word`,
507
507
  );
508
508
  }
509
509
 
@@ -651,7 +651,7 @@ export function renderCellValue<TData, TValue>({
651
651
  selectCell={selectCell}
652
652
  rawStringValue={stringValue}
653
653
  edges={{ leading, trailing }}
654
- contentClassName="max-h-64 overflow-auto whitespace-pre-wrap break-words text-sm w-96"
654
+ contentClassName="max-h-64 overflow-auto whitespace-pre-wrap wrap-break-word text-sm w-96"
655
655
  buttonText="X"
656
656
  wrapped={isWrapped}
657
657
  >