@ai-matrx/chat 0.7.7 → 0.7.8

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 (105) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/agents/components/inputs/smart-input/InputActionButtons.d.ts +2 -2
  3. package/dist/agents/components/inputs/smart-input/InputActionButtons.js +3 -1
  4. package/dist/agents/components/inputs/smart-input/SmartAgentInputStacked.js +8 -3
  5. package/dist/agents/components/messages-display/AgentConversationDisplay.js +1 -1
  6. package/dist/agents/components/messages-display/assistant/AgentEmptyMessageDisplay.js +4 -4
  7. package/dist/agents/components/messages-display/assistant/AssistantMessageFooter.js +4 -2
  8. package/dist/agents/components/messages-display/assistant/AssistantNoAnswer.js +1 -1
  9. package/dist/agents/components/messages-display/assistant/BreathingOrb.js +1 -1
  10. package/dist/agents/components/messages-display/assistant/InPlaceAnswerEditor.js +1 -1
  11. package/dist/agents/components/messages-display/citations/MessageSourcesRow.js +1 -1
  12. package/dist/agents/components/messages-display/conversation-tools/ConversationFindBar.js +4 -4
  13. package/dist/agents/components/messages-display/message-options/EditHistoryDialog.js +7 -7
  14. package/dist/agents/components/messages-display/user/AgentUserMessage.js +4 -4
  15. package/dist/agents/components/messages-display/user/CollabNoteMessage.js +2 -2
  16. package/dist/agents/components/messages-display/user/FirstTurnVariables.js +3 -3
  17. package/dist/agents/components/messages-display/user/PendingSendMessage.js +4 -4
  18. package/dist/agents/components/messages-display/user/RemarksTranscriptView.js +7 -7
  19. package/dist/agents/components/messages-display/user/ResourceAttachmentTile.js +9 -9
  20. package/dist/agents/components/messages-display/user/ResourceEditableToggleSamples.js +4 -4
  21. package/dist/agents/components/messages-display/user/UserActionBar.js +3 -3
  22. package/dist/agents/components/messages-display/user/UserMessageAttachmentStyleComparison.js +12 -12
  23. package/dist/agents/components/messages-display/user/UserMessageChipsDemo.js +19 -19
  24. package/dist/agents/components/messages-display/user/UserMessageHybridTileSamples.js +22 -22
  25. package/dist/agents/components/run/AgentRunnerPage.js +4 -4
  26. package/dist/agents/components/run/AssistantError.js +1 -1
  27. package/dist/agents/components/run/AssistantWarning.js +1 -1
  28. package/dist/agents/components/run/GenerationJobCard.js +5 -5
  29. package/dist/agents/components/run/IncompleteNote.js +1 -1
  30. package/dist/agents/components/run/RunJobWorkingLine.js +1 -1
  31. package/dist/agents/components/shared/AgentConversationColumn.js +1 -1
  32. package/dist/agents/components/shared/AgentHeaderMobile.js +6 -6
  33. package/dist/agents/components/shared/AgentModeController.js +1 -1
  34. package/dist/agents/components/shared/AutoInjectionSwitch.js +6 -6
  35. package/dist/agents/components/shared/DesktopFilterPanel.js +8 -8
  36. package/dist/agents/components/shared/transcript-layout.d.ts +9 -8
  37. package/dist/agents/components/shared/transcript-layout.js +2 -2
  38. package/dist/agents/components/smart/AgentRunner.js +1 -1
  39. package/dist/agents/components/smart/CreateWithAiTabs.js +1 -1
  40. package/dist/host/request-headers.js +3 -1
  41. package/dist/surfaces/manifests/agent-builder.manifest.d.ts +8 -0
  42. package/dist/surfaces/manifests/agent-builder.manifest.js +62 -2
  43. package/dist/tool-call-visualization/components/ArtifactResultBar.js +4 -4
  44. package/dist/tool-call-visualization/components/ChatResultColumn.d.ts +1 -1
  45. package/dist/tool-call-visualization/components/ToolCallBatch.js +2 -2
  46. package/dist/tool-call-visualization/components/ToolCallVisualization.js +5 -5
  47. package/dist/tool-call-visualization/components/ToolTabBodies.js +12 -12
  48. package/dist/tool-call-visualization/components/ToolUpdatesOverlay.js +4 -4
  49. package/dist/tool-call-visualization/configured-rows/ConfiguredToolRow.js +8 -8
  50. package/dist/tool-call-visualization/configured-rows/CopyToolButton.js +1 -1
  51. package/dist/tool-call-visualization/configured-rows/ToolProgressView.js +7 -7
  52. package/dist/tool-call-visualization/configured-rows/field-components.js +6 -6
  53. package/dist/tool-call-visualization/registry/GenericRenderer.js +4 -4
  54. package/dist/tool-call-visualization/renderers/_shared-entity/EmptyResultCard.js +1 -1
  55. package/dist/tool-call-visualization/renderers/_shared-entity/EntityCard.js +5 -5
  56. package/dist/tool-call-visualization/renderers/_shared-entity/PartPeekPopover.js +2 -2
  57. package/dist/tool-call-visualization/renderers/_shared-entity/ToolGlyph.js +1 -1
  58. package/dist/tool-call-visualization/renderers/_shared-entity/ToolResultCard.js +6 -6
  59. package/dist/tool-call-visualization/renderers/agent-call/AgentCallInline.js +5 -5
  60. package/dist/tool-call-visualization/renderers/agent-call/CollabCallCard.js +4 -4
  61. package/dist/tool-call-visualization/renderers/agent-call/ImageGenerationResult.js +1 -1
  62. package/dist/tool-call-visualization/renderers/ask/AskInline.js +3 -3
  63. package/dist/tool-call-visualization/renderers/ask-person/AskPersonInline.js +2 -2
  64. package/dist/tool-call-visualization/renderers/cloud-browser/CloudBrowserRunCard.js +5 -5
  65. package/dist/tool-call-visualization/renderers/ctx/CtxBatchInline.js +3 -3
  66. package/dist/tool-call-visualization/renderers/ctx/CtxGetInline.js +2 -2
  67. package/dist/tool-call-visualization/renderers/ctx/CtxItemCard.js +3 -3
  68. package/dist/tool-call-visualization/renderers/ctx/CtxPatchInline.js +6 -6
  69. package/dist/tool-call-visualization/renderers/dictionary/DictEntryList.js +12 -12
  70. package/dist/tool-call-visualization/renderers/dictionary/DictionaryOverlay.js +5 -5
  71. package/dist/tool-call-visualization/renderers/fs/FsInline.js +7 -7
  72. package/dist/tool-call-visualization/renderers/news-api/NewsInline.js +17 -17
  73. package/dist/tool-call-visualization/renderers/news-api/NewsOverlay.js +12 -12
  74. package/dist/tool-call-visualization/renderers/random-wheel/RandomWheelInline.js +34 -34
  75. package/dist/tool-call-visualization/renderers/records/RecordsInline.js +1 -1
  76. package/dist/tool-call-visualization/renderers/research/ResearchInline.js +10 -10
  77. package/dist/tool-call-visualization/renderers/research/ResearchOverlay.js +19 -19
  78. package/dist/tool-call-visualization/renderers/research/SubagentReportBlock.js +11 -11
  79. package/dist/tool-call-visualization/renderers/scrape/ScrapeInline.js +18 -18
  80. package/dist/tool-call-visualization/renderers/scrape/ScrapeOverlay.js +17 -17
  81. package/dist/tool-call-visualization/renderers/search/SearchInline.js +30 -30
  82. package/dist/tool-call-visualization/renderers/search/SearchOverlay.js +40 -40
  83. package/dist/tool-call-visualization/renderers/shell/ShellInline.js +3 -3
  84. package/dist/tool-call-visualization/renderers/skill/SkillInline.js +5 -5
  85. package/dist/tool-call-visualization/renderers/sql/DbSchemaInline.js +7 -7
  86. package/dist/tool-call-visualization/renderers/sql/SqlInline.js +4 -4
  87. package/dist/tool-call-visualization/renderers/workbook/WorkbookGrid.js +4 -4
  88. package/dist/tool-call-visualization/renderers/workbook/WorkbookInline.js +2 -2
  89. package/dist/tool-call-visualization/renderers/workbook/WorkbookOverlay.js +7 -7
  90. package/dist/tool-call-visualization/renderers/working-document/PatchDiffInline.js +3 -3
  91. package/dist/tool-call-visualization/result-fields/EmptyResult.js +1 -1
  92. package/dist/tool-call-visualization/result-fields/KeyValueGrid.js +9 -9
  93. package/dist/tool-call-visualization/result-fields/ResultFile.js +4 -4
  94. package/dist/tool-call-visualization/result-fields/ResultJson.js +1 -1
  95. package/dist/tool-call-visualization/result-fields/ResultMedia.js +2 -2
  96. package/dist/tool-call-visualization/result-fields/ResultScalar.js +2 -2
  97. package/dist/tool-call-visualization/result-fields/ResultTable.js +10 -10
  98. package/dist/tool-call-visualization/result-fields/ResultValue.js +7 -7
  99. package/dist/tool-call-visualization/result-fields/ShortId.js +3 -3
  100. package/dist/tool-call-visualization/result-fields/ToolErrorCard.js +4 -4
  101. package/dist/tool-call-visualization/result-fields/UrlChips.js +3 -3
  102. package/dist/tool-call-visualization/surface-write/SurfaceWriteDiff.js +2 -2
  103. package/dist/tool-call-visualization/surface-write/SurfaceWriteStress.js +1 -1
  104. package/dist/tool-call-visualization/window-panel/ToolCallWindowPanel.js +9 -9
  105. package/package.json +10 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ai-matrx/chat
2
2
 
3
+ ## 0.7.8
4
+
5
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
6
+ `git diff npm/chat/v0.7.7..npm/chat/v0.7.8 -- apps/shared/chat`).
7
+ No source changes intended and no consumer action required.
8
+
3
9
  ## 0.7.7
4
10
  ### Unreleased
5
11
 
@@ -58,9 +58,9 @@ interface InputActionButtonsProps {
58
58
  * audio) live in the + menu; Output and Effort in the agent pill's menu.
59
59
  */
60
60
  folded?: boolean;
61
- /** Compact's row under the card: after + · mic (· live audio). */
61
+ /** Scope · values: after + · mic (· live audio) in Compact's row, after + in the card's own bar. */
62
62
  leading?: React.ReactNode;
63
- /** Compact's row under the card: the right end (agent · output · effort). */
63
+ /** Agent · output · effort: the right end of Compact's row, or just left of the mic in the card's own bar. */
64
64
  trailing?: React.ReactNode;
65
65
  /**
66
66
  * Which part this instance draws. Compact mounts two: `"send"` (↵, inside
@@ -202,9 +202,11 @@ function InputActionButtons({
202
202
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [
203
203
  plusMenu,
204
204
  database ? /* @__PURE__ */ jsx(DesktopPresenceIndicator, { conversationId }) : null,
205
- variablesToggle
205
+ variablesToggle,
206
+ composer.leading
206
207
  ] }),
207
208
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [
209
+ composer.trailing,
208
210
  extraRightControls,
209
211
  micGroup,
210
212
  liveAudioButton,
@@ -20,7 +20,7 @@ import { Button } from "@ai-matrx/design-system";
20
20
  import { cn } from "@ai-matrx/design-system";
21
21
  import { composerShows } from "./composer/composer-mode-visibility.js";
22
22
  import { ComposerChipsRow } from "./composer/ComposerChipsRow.js";
23
- import { ComposerMetaRow, ComposerPills, ComposerScopeCluster, ComposerValueGroupChip } from "./composer/ComposerMetaRow.js";
23
+ import { ComposerPills, ComposerScopeCluster, ComposerValueGroupChip } from "./composer/ComposerMetaRow.js";
24
24
  import { useComposerFold } from "./composer/useComposerFold.js";
25
25
  import { useTouchOnlyDevice } from "../../../../ui/composer/useTouchOnlyDevice.js";
26
26
  function SmartAgentInputStacked({
@@ -323,7 +323,12 @@ function SmartAgentInputStacked({
323
323
  onVoiceBusyChange: setVoiceBusy,
324
324
  extraRightControls,
325
325
  onRequestInputExpand: () => setExpandRequestKey((key) => key + 1),
326
- composer: composerParts
326
+ composer: {
327
+ ...composerParts,
328
+ // The pills live in the card's own bar: no strip under the card (rule: existing bars).
329
+ leading: composer.meta === "none" ? void 0 : /* @__PURE__ */ jsx(ComposerScopeCluster, { conversationId, composer, folded }),
330
+ trailing: composer.meta === "none" ? void 0 : /* @__PURE__ */ jsx(ComposerPills, { conversationId, composer, menuSide, folded })
331
+ }
327
332
  }
328
333
  )
329
334
  ] })
@@ -344,7 +349,7 @@ function SmartAgentInputStacked({
344
349
  trailing: composer.meta === "none" ? void 0 : /* @__PURE__ */ jsx(ComposerPills, { conversationId, composer, menuSide, folded })
345
350
  }
346
351
  }
347
- ) : composer.meta === "none" ? null : /* @__PURE__ */ jsx(ComposerMetaRow, { conversationId, composer, menuSide, folded })
352
+ ) : null
348
353
  ]
349
354
  }
350
355
  );
@@ -399,7 +399,7 @@ function AgentConversationDisplay({
399
399
  visibleGroups.map(
400
400
  (group, index) => wrapGroup(group, index, renderGroupBody(group))
401
401
  ),
402
- pinnedOnly && visibleGroups.length === 0 && /* @__PURE__ */ jsxs("div", { className: "py-10 text-center text-sm text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: [
402
+ pinnedOnly && visibleGroups.length === 0 && /* @__PURE__ */ jsxs("div", { className: "py-10 text-center text-sm text-muted-foreground", children: [
403
403
  "Nothing pinned in this conversation.",
404
404
  " ",
405
405
  /* @__PURE__ */ jsx(Button, { variant: "quiet", tone: "primary", onClick: () => setPinnedOnly(false), children: "Show all messages" })
@@ -40,7 +40,7 @@ function AgentEmptyMessageDisplay({
40
40
  if (isLongDescription && displayDescription) {
41
41
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col h-full justify-start text-left px-6 py-8 max-w-3xl mx-auto w-full", children: [
42
42
  /* @__PURE__ */ jsx(RichContent, { level: "full", imagePolicy: "other", source: displayDescription, hideCopyButton: true }),
43
- instruction && /* @__PURE__ */ jsx("p", { className: "text-sm text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] mt-3", children: instruction })
43
+ instruction && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-3", children: instruction })
44
44
  ] });
45
45
  }
46
46
  return (
@@ -53,14 +53,14 @@ function AgentEmptyMessageDisplay({
53
53
  IconResolver,
54
54
  {
55
55
  iconName: iconNameOverride,
56
- className: "w-12 h-12 text-[color:var(--mx-chat-accent,hsl(var(--primary)))]",
56
+ className: "w-12 h-12 text-primary",
57
57
  fallbackIcon: "Webhook"
58
58
  }
59
- ) : /* @__PURE__ */ jsx(Webhook, { className: "w-12 h-12 text-[color:var(--mx-chat-accent,hsl(var(--primary)))]" }) }),
59
+ ) : /* @__PURE__ */ jsx(Webhook, { className: "w-12 h-12 text-primary" }) }),
60
60
  /* @__PURE__ */ jsxs("div", { className: "space-y-3 mx-auto", children: [
61
61
  /* @__PURE__ */ jsx("p", { className: "text-lg font-medium", children: displayName ?? "Ready to run" }),
62
62
  displayDescription && /* @__PURE__ */ jsx(RichContent, { level: "full", imagePolicy: "other", source: displayDescription, hideCopyButton: true }),
63
- instruction && /* @__PURE__ */ jsx("p", { className: "text-sm text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] mt-1", children: instruction })
63
+ instruction && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-1", children: instruction })
64
64
  ] })
65
65
  ] })
66
66
  );
@@ -165,7 +165,7 @@ function AssistantMessageFooter(props) {
165
165
  isLatestAssistant
166
166
  } = useAssistantMessageActions(props);
167
167
  const answerActions = useTranscriptLayout().answerActions;
168
- const isHoverOnly = answerActions === "hover" || density === "compact" && !isLatestAssistant;
168
+ const isHoverOnly = answerActions === "hover" || answerActions === "latest" && !isLatestAssistant || density === "compact" && !isLatestAssistant;
169
169
  const rowRef = useRef(null);
170
170
  useEffect(() => {
171
171
  const row = rowRef.current;
@@ -183,7 +183,9 @@ function AssistantMessageFooter(props) {
183
183
  {
184
184
  className: cn(
185
185
  "transition-opacity",
186
- isHoverOnly && "opacity-0 group-hover/assistant-msg:opacity-100 focus-within:opacity-100"
186
+ isHoverOnly && // Hidden by opacity, never display: the row keeps its height, so revealing it shifts
187
+ // nothing. A touch screen has no hover, so it is always visible there.
188
+ "opacity-0 group-hover/assistant-msg:opacity-100 focus-within:opacity-100 [@media(hover:none)]:opacity-100"
187
189
  ),
188
190
  children: [
189
191
  /* @__PURE__ */ jsxs(
@@ -11,7 +11,7 @@ function AssistantNoAnswer({
11
11
  const isAdmin = useAppSelector(selectIsSuperAdmin);
12
12
  return /* @__PURE__ */ jsxs("div", { className: "mt-1 text-xs", "data-assistant-no-answer": true, children: [
13
13
  /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-x-2.5 gap-y-1", children: [
14
- /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: [
14
+ /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-muted-foreground", children: [
15
15
  /* @__PURE__ */ jsx(CircleSlash, { className: "h-3.5 w-3.5 shrink-0" }),
16
16
  "This run finished without writing an answer."
17
17
  ] }),
@@ -5,7 +5,7 @@ function BreathingOrb({ className, size = 28 }) {
5
5
  return /* @__PURE__ */ jsx(
6
6
  "output",
7
7
  {
8
- className: cn("inline-flex items-center text-[color:var(--mx-chat-accent,hsl(var(--primary)))]", className),
8
+ className: cn("inline-flex items-center text-primary", className),
9
9
  "aria-label": "Working",
10
10
  children: /* @__PURE__ */ jsxs(
11
11
  "svg",
@@ -37,7 +37,7 @@ function InPlaceAnswerEditor({ conversationId, messageId, startExpanded = false
37
37
  };
38
38
  }, [conversationId, messageId, dispatch]);
39
39
  if (openedOn === null) {
40
- return /* @__PURE__ */ jsxs("div", { className: "flex min-h-40 items-center justify-center gap-2 rounded-lg border border-[color:var(--mx-chat-border,hsl(var(--border)))] text-sm text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: [
40
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-h-40 items-center justify-center gap-2 rounded-lg border border-border text-sm text-muted-foreground", children: [
41
41
  /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin" }),
42
42
  " Opening the answer\u2026"
43
43
  ] });
@@ -15,7 +15,7 @@ function MessageSourcesRow({
15
15
  const openSource = useOpenCitationSource();
16
16
  if (sources.length === 0) return null;
17
17
  return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-1", className), children: [
18
- /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: "Sources" }),
18
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Sources" }),
19
19
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: sources.map((source) => {
20
20
  const label = citationSourceLabel(source);
21
21
  const openable = citationSourceIsOpenable(source);
@@ -80,13 +80,13 @@ function ConversationFindBar({
80
80
  return /* @__PURE__ */ jsxs(
81
81
  "div",
82
82
  {
83
- className: "flex items-center gap-1 rounded-lg border border-[color:var(--mx-chat-border,hsl(var(--border)))] bg-[var(--mx-chat-card,hsl(var(--card)))] px-2 py-1 shadow-sm",
83
+ className: "flex items-center gap-1 rounded-lg border border-border bg-card px-2 py-1 shadow-sm",
84
84
  role: "search",
85
85
  "aria-label": "Find in this conversation",
86
86
  "data-find-ignore": "",
87
87
  children: [
88
88
  /* @__PURE__ */ jsx("style", { children: HIGHLIGHT_CSS }),
89
- /* @__PURE__ */ jsx(Search, { className: "h-3.5 w-3.5 shrink-0 text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", "aria-hidden": "true" }),
89
+ /* @__PURE__ */ jsx(Search, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground", "aria-hidden": "true" }),
90
90
  /* @__PURE__ */ jsx(
91
91
  "input",
92
92
  {
@@ -107,7 +107,7 @@ function ConversationFindBar({
107
107
  },
108
108
  placeholder: "Find in conversation",
109
109
  "aria-label": "Find in conversation",
110
- className: "min-w-0 flex-1 bg-transparent text-base outline-none placeholder:text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] md:text-sm"
110
+ className: "min-w-0 flex-1 bg-transparent text-base outline-none placeholder:text-muted-foreground md:text-sm"
111
111
  }
112
112
  ),
113
113
  /* @__PURE__ */ jsx(
@@ -115,7 +115,7 @@ function ConversationFindBar({
115
115
  {
116
116
  className: cn(
117
117
  "min-w-0 max-w-[55%] truncate text-xs tabular-nums",
118
- ranges.length === 0 && query.trim() && history.state !== "loading" && settled ? "text-destructive" : "text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]"
118
+ ranges.length === 0 && query.trim() && history.state !== "loading" && settled ? "text-destructive" : "text-muted-foreground"
119
119
  ),
120
120
  "aria-live": "polite",
121
121
  title: status,
@@ -69,7 +69,7 @@ function HistoryEntryCard({
69
69
  const truncated = preview.length > 400 ? `${preview.slice(0, 400)}\u2026` : preview || "(empty)";
70
70
  const savedAt = new Date(entry.saved_at);
71
71
  const versionLabel = total > 1 ? `Version ${total - index}` : "Previous version";
72
- return /* @__PURE__ */ jsxs("div", { className: "border border-[color:var(--mx-chat-border,hsl(var(--border)))] rounded-md overflow-hidden bg-[var(--mx-chat-card,hsl(var(--card)))]", children: [
72
+ return /* @__PURE__ */ jsxs("div", { className: "border border-border rounded-md overflow-hidden bg-card", children: [
73
73
  /* @__PURE__ */ jsxs(
74
74
  "button",
75
75
  {
@@ -78,22 +78,22 @@ function HistoryEntryCard({
78
78
  onClick: () => setExpanded(!expanded),
79
79
  children: [
80
80
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [
81
- /* @__PURE__ */ jsx(Clock, { className: "w-3.5 h-3.5 text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] flex-shrink-0" }),
81
+ /* @__PURE__ */ jsx(Clock, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }),
82
82
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex flex-col", children: [
83
- /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: versionLabel }),
84
- /* @__PURE__ */ jsx("span", { className: "text-[10px] text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: savedAt.toLocaleString() })
83
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-foreground", children: versionLabel }),
84
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] text-muted-foreground", children: savedAt.toLocaleString() })
85
85
  ] })
86
86
  ] }),
87
87
  /* @__PURE__ */ jsx(
88
88
  ChevronRight,
89
89
  {
90
- className: `w-3.5 h-3.5 text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] transition-transform ${expanded ? "rotate-90" : ""}`
90
+ className: `w-3.5 h-3.5 text-muted-foreground transition-transform ${expanded ? "rotate-90" : ""}`
91
91
  }
92
92
  )
93
93
  ]
94
94
  }
95
95
  ),
96
- expanded && /* @__PURE__ */ jsxs("div", { className: "px-3 pb-3 border-t border-[color:var(--mx-chat-border,hsl(var(--border)))]", children: [
96
+ expanded && /* @__PURE__ */ jsxs("div", { className: "px-3 pb-3 border-t border-border", children: [
97
97
  /* @__PURE__ */ jsx("div", { className: "mt-2 text-xs text-foreground/80 whitespace-pre-wrap leading-relaxed max-h-48 overflow-y-auto bg-muted/30 rounded p-2 font-mono", children: truncated }),
98
98
  /* @__PURE__ */ jsxs("div", { className: "mt-2 flex justify-end gap-2", children: [
99
99
  /* @__PURE__ */ jsx(
@@ -177,7 +177,7 @@ function HistoryContent({
177
177
  }
178
178
  };
179
179
  if (ordered.length === 0) {
180
- return /* @__PURE__ */ jsx("div", { className: "py-8 text-center text-sm text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: "No edit history yet. Inline edits and saves will appear here." });
180
+ return /* @__PURE__ */ jsx("div", { className: "py-8 text-center text-sm text-muted-foreground", children: "No edit history yet. Inline edits and saves will appear here." });
181
181
  }
182
182
  return /* @__PURE__ */ jsx(ScrollArea, { className: "max-h-[60dvh]", children: /* @__PURE__ */ jsx("div", { className: "space-y-2 p-1", children: ordered.map((entry, i) => /* @__PURE__ */ jsx(
183
183
  HistoryEntryCard,
@@ -80,7 +80,7 @@ function AgentUserMessageContent({
80
80
  imagePolicy: "other",
81
81
  content: literalUserText(trimmedText),
82
82
  serverProcessedBlocks: hasBodyBlocks ? bodyBlocks : void 0,
83
- className: "text-xs text-[color:var(--mx-chat-text,hsl(var(--foreground)))]",
83
+ className: "text-xs text-foreground",
84
84
  hideCopyButton: true,
85
85
  allowFullScreenEditor: false
86
86
  }
@@ -245,7 +245,7 @@ function AgentUserMessage({
245
245
  {
246
246
  className: cn("group relative", compact ? "" : "ml-12"),
247
247
  "data-testid": "user-message-empty",
248
- children: /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-dashed border-[color:var(--mx-chat-border,hsl(var(--border)))] bg-muted/40 px-3 py-2 text-xs text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: [
248
+ children: /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-dashed border-border bg-muted/40 px-3 py-2 text-xs text-muted-foreground", children: [
249
249
  "This message has no displayable text.",
250
250
  isSuperAdmin && /* @__PURE__ */ jsxs("span", { className: "ml-1 font-mono", children: [
251
251
  "[",
@@ -294,8 +294,8 @@ function AgentUserMessage({
294
294
  {
295
295
  className: compactUserMessage ? (
296
296
  // Tight: no inset from the left, and the markdown paragraph's own margins dropped.
297
- "bg-[var(--mx-chat-fill,hsl(var(--muted)))] rounded-md px-3 py-2 [&_.math-content-wrapper]:my-0 [&_p:last-child]:mb-0"
298
- ) : "bg-[var(--mx-chat-fill,hsl(var(--muted)))] border border-[color:var(--mx-chat-border,hsl(var(--border)))] rounded-lg px-2 py-2",
297
+ "bg-muted rounded-md px-3 py-2 [&_.math-content-wrapper]:my-0 [&_p:last-child]:mb-0"
298
+ ) : "bg-muted border border-border rounded-lg px-2 py-2",
299
299
  "data-user-message-style": compactUserMessage ? "compact" : "card",
300
300
  children: /* @__PURE__ */ jsxs("div", { className: "relative min-w-0", children: [
301
301
  /* @__PURE__ */ jsxs(
@@ -37,11 +37,11 @@ function CollabNoteMessage({
37
37
  children: [
38
38
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 border-b border-violet-500/15 px-2.5 py-1.5", children: [
39
39
  /* @__PURE__ */ jsx(Handshake, { className: "h-3.5 w-3.5 shrink-0 text-violet-600 dark:text-violet-400" }),
40
- /* @__PURE__ */ jsxs("span", { className: "text-xs font-medium text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: [
40
+ /* @__PURE__ */ jsxs("span", { className: "text-xs font-medium text-foreground", children: [
41
41
  "Collaboration note",
42
42
  agentName ? ` \u2014 ${agentName}` : ""
43
43
  ] }),
44
- /* @__PURE__ */ jsx("span", { className: "text-[11px] text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: "left after reviewing this conversation" })
44
+ /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground", children: "left after reviewing this conversation" })
45
45
  ] }),
46
46
  /* @__PURE__ */ jsx("div", { className: "px-2.5 py-2 text-sm", children: /* @__PURE__ */ jsx(BasicMarkdownContent, { imagePolicy: "ai", content: body, showCopyButton: false }) })
47
47
  ]
@@ -35,7 +35,7 @@ function UserMessageVariables({
35
35
  {
36
36
  className: "text-xs leading-snug text-foreground/90",
37
37
  children: [
38
- /* @__PURE__ */ jsxs("span", { className: "font-medium text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: [
38
+ /* @__PURE__ */ jsxs("span", { className: "font-medium text-foreground", children: [
39
39
  l.label,
40
40
  ":"
41
41
  ] }),
@@ -84,14 +84,14 @@ function FirstTurnLaunchInputs({
84
84
  },
85
85
  "aria-expanded": open,
86
86
  title: open ? "Hide the inputs" : "Show the inputs this run started with",
87
- className: "flex flex-wrap items-center gap-1 rounded text-left text-xs text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] hover:text-[color:var(--mx-chat-text,hsl(var(--foreground)))]",
87
+ className: "flex flex-wrap items-center gap-1 rounded text-left text-xs text-muted-foreground hover:text-foreground",
88
88
  children: [
89
89
  /* @__PURE__ */ jsx(Chevron, { className: "h-3 w-3 shrink-0" }),
90
90
  /* @__PURE__ */ jsx("span", { className: "font-medium", children: "Started with:" }),
91
91
  lines.map((l) => /* @__PURE__ */ jsx(
92
92
  "span",
93
93
  {
94
- className: "rounded-full border border-[color:var(--mx-chat-border,hsl(var(--border)))] bg-background px-1.5 py-px text-xs text-[color:var(--mx-chat-text,hsl(var(--foreground)))]",
94
+ className: "rounded-full border border-border bg-background px-1.5 py-px text-xs text-foreground",
95
95
  children: l.label
96
96
  },
97
97
  l.key
@@ -48,7 +48,7 @@ function PendingSendMessage({
48
48
  {
49
49
  className: cn(
50
50
  "w-full rounded-lg border px-3 py-2 text-sm whitespace-pre-wrap break-words",
51
- failed ? "border-destructive/40 bg-destructive/5 text-[color:var(--mx-chat-text,hsl(var(--foreground)))]" : "border-[color:var(--mx-chat-border,hsl(var(--border)))] bg-[var(--mx-chat-fill,hsl(var(--muted)))] text-foreground/80"
51
+ failed ? "border-destructive/40 bg-destructive/5 text-foreground" : "border-border bg-muted text-foreground/80"
52
52
  ),
53
53
  children: preSend.text || "(no text)"
54
54
  }
@@ -59,7 +59,7 @@ function PendingSendMessage({
59
59
  /* @__PURE__ */ jsxs("span", { children: [
60
60
  preSend.error ?? "This message could not be prepared. Nothing was sent.",
61
61
  " ",
62
- /* @__PURE__ */ jsx("span", { className: "text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: "Your text is still in the box below." })
62
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Your text is still in the box below." })
63
63
  ] })
64
64
  ] }),
65
65
  /* @__PURE__ */ jsxs(
@@ -83,13 +83,13 @@ function PendingSendMessage({
83
83
  {
84
84
  size: "sm",
85
85
  variant: "ghost",
86
- className: "h-7 gap-1 px-2 text-xs text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]",
86
+ className: "h-7 gap-1 px-2 text-xs text-muted-foreground",
87
87
  "aria-label": "Dismiss",
88
88
  onClick: () => dispatch(setPreSend({ conversationId, preSend: null })),
89
89
  children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
90
90
  }
91
91
  )
92
- ] }) : /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-xs text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: [
92
+ ] }) : /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
93
93
  /* @__PURE__ */ jsx(Loader2, { className: "h-3 w-3 animate-spin" }),
94
94
  /* @__PURE__ */ jsxs("span", { children: [
95
95
  preSend.label,
@@ -51,7 +51,7 @@ function readRows(payload) {
51
51
  function RemarkDiff({ diff }) {
52
52
  const parts = splitRemarkDiff(diff);
53
53
  if (!parts) {
54
- return /* @__PURE__ */ jsx("pre", { className: "overflow-x-auto whitespace-pre-wrap font-mono text-[11px] text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: diff });
54
+ return /* @__PURE__ */ jsx("pre", { className: "overflow-x-auto whitespace-pre-wrap font-mono text-[11px] text-foreground", children: diff });
55
55
  }
56
56
  return /* @__PURE__ */ jsx("div", { className: "text-[11px] leading-snug", "data-remark-diff": true, children: /* @__PURE__ */ jsx(InlineTextDiff, { view: "inline", original: parts.before, modified: parts.after }) });
57
57
  }
@@ -60,14 +60,14 @@ function RemarksTranscriptView({ payload }) {
60
60
  if (rows.length === 0) return null;
61
61
  return /* @__PURE__ */ jsx("div", { className: "my-1 grid gap-1", children: rows.map((row, i) => {
62
62
  const { icon: Icon, label } = remarkKindDisplay(row.kind);
63
- return /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-start gap-1.5 rounded-md border border-[color:var(--mx-chat-border,hsl(var(--border)))] bg-[var(--mx-chat-card,hsl(var(--card)))] px-2 py-1 text-xs", "data-remark-handle": row.handle ?? void 0, children: [
63
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-start gap-1.5 rounded-md border border-border bg-card px-2 py-1 text-xs", "data-remark-handle": row.handle ?? void 0, children: [
64
64
  /* @__PURE__ */ jsx(Icon, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-amber-600 dark:text-amber-400", "aria-label": label }),
65
65
  /* @__PURE__ */ jsxs("div", { className: "grid min-w-0 gap-0.5", children: [
66
- row.quote || row.title ? /* @__PURE__ */ jsx("div", { className: "truncate border-l-2 border-primary/40 pl-1.5 text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: row.quote ?? row.title }) : null,
67
- row.body ? /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: row.body }) : null,
66
+ row.quote || row.title ? /* @__PURE__ */ jsx("div", { className: "truncate border-l-2 border-primary/40 pl-1.5 text-muted-foreground", children: row.quote ?? row.title }) : null,
67
+ row.body ? /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap text-foreground", children: row.body }) : null,
68
68
  row.diff ? /* @__PURE__ */ jsx(RemarkDiff, { diff: row.diff }) : null,
69
- row.answers.length ? /* @__PURE__ */ jsx("ul", { className: "grid gap-0.5 text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: row.answers.map((a, j) => /* @__PURE__ */ jsxs("li", { className: "truncate", children: [
70
- /* @__PURE__ */ jsxs("span", { className: "text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: [
69
+ row.answers.length ? /* @__PURE__ */ jsx("ul", { className: "grid gap-0.5 text-foreground", children: row.answers.map((a, j) => /* @__PURE__ */ jsxs("li", { className: "truncate", children: [
70
+ /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
71
71
  a.question,
72
72
  ":"
73
73
  ] }),
@@ -75,7 +75,7 @@ function RemarksTranscriptView({ payload }) {
75
75
  a.answer
76
76
  ] }, j)) }) : null
77
77
  ] }),
78
- row.handle ? /* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 font-mono text-[10px] text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", title: `Remark ${row.handle}`, children: row.handle }) : null
78
+ row.handle ? /* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 font-mono text-[10px] text-muted-foreground", title: `Remark ${row.handle}`, children: row.handle }) : null
79
79
  ] }, i);
80
80
  }) });
81
81
  }
@@ -134,7 +134,7 @@ function ResourceAttachmentTile({
134
134
  }
135
135
  ) }),
136
136
  /* @__PURE__ */ jsxs(TooltipContent, { side: "top", className: "max-w-[16rem]", children: [
137
- /* @__PURE__ */ jsx("div", { className: "text-[10px] uppercase tracking-wide text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: typeLabel }),
137
+ /* @__PURE__ */ jsx("div", { className: "text-[10px] uppercase tracking-wide text-muted-foreground", children: typeLabel }),
138
138
  /* @__PURE__ */ jsx("div", { className: "font-medium text-popover-foreground", children: title }),
139
139
  showToggle && /* @__PURE__ */ jsx("div", { className: "mt-0.5 text-[10px] text-muted-foreground/80", children: editable ? "Agent can edit" : "Read-only to agent" })
140
140
  ] })
@@ -143,8 +143,8 @@ function ResourceAttachmentTile({
143
143
  ) }),
144
144
  hasControls ? /* @__PURE__ */ jsxs(PopoverContent, { sizing: "content", side: "top", align: "end", sideOffset: 6, className: "p-1", children: [
145
145
  /* @__PURE__ */ jsxs("div", { className: "px-2 py-1.5", children: [
146
- /* @__PURE__ */ jsx("p", { className: "truncate text-xs font-semibold text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: title }),
147
- /* @__PURE__ */ jsx("p", { className: "text-[10px] uppercase tracking-wide text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: typeLabel })
146
+ /* @__PURE__ */ jsx("p", { className: "truncate text-xs font-semibold text-foreground", children: title }),
147
+ /* @__PURE__ */ jsx("p", { className: "text-[10px] uppercase tracking-wide text-muted-foreground", children: typeLabel })
148
148
  ] }),
149
149
  onClick ? /* @__PURE__ */ jsx(Tile, { variant: "quiet", icon: /* @__PURE__ */ jsx(ExternalLink, {}), title: "Open", onClick: (e) => {
150
150
  stop(e);
@@ -203,9 +203,9 @@ function ResourceAttachmentTile({
203
203
  ) : error ? /* @__PURE__ */ jsx(AlertCircle, { className: "h-3.5 w-3.5 shrink-0 text-destructive" }) : createElement(Icon, {
204
204
  className: cn("h-3.5 w-3.5 shrink-0", theme.icon)
205
205
  }) }),
206
- /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate whitespace-nowrap text-[9px] font-semibold leading-none text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] uppercase tracking-wide", children: typeLabel })
206
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate whitespace-nowrap text-[9px] font-semibold leading-none text-muted-foreground uppercase tracking-wide", children: typeLabel })
207
207
  ] }),
208
- /* @__PURE__ */ jsx("span", { className: "block w-full min-w-0 truncate whitespace-nowrap text-[10px] leading-none text-[color:var(--mx-chat-text,hsl(var(--foreground)))] font-medium", children: title })
208
+ /* @__PURE__ */ jsx("span", { className: "block w-full min-w-0 truncate whitespace-nowrap text-[10px] leading-none text-foreground font-medium", children: title })
209
209
  ]
210
210
  }
211
211
  ),
@@ -228,7 +228,7 @@ function ResourceAttachmentTile({
228
228
  },
229
229
  className: cn(
230
230
  "inline-flex items-center justify-center rounded-full p-0.5",
231
- "text-muted-foreground/80 hover:bg-black/10 hover:text-[color:var(--mx-chat-text,hsl(var(--foreground)))]",
231
+ "text-muted-foreground/80 hover:bg-black/10 hover:text-foreground",
232
232
  "dark:hover:bg-white/10 transition-colors"
233
233
  ),
234
234
  children: /* @__PURE__ */ jsx(X, { className: "h-2.5 w-2.5" })
@@ -252,7 +252,7 @@ function ResourceAttachmentTile({
252
252
  toggleEditable();
253
253
  }
254
254
  },
255
- className: "inline-flex items-center justify-center rounded-full p-0.5 text-[color:var(--mx-chat-text,hsl(var(--foreground)))]",
255
+ className: "inline-flex items-center justify-center rounded-full p-0.5 text-foreground",
256
256
  children: editable ? /* @__PURE__ */ jsx(Pencil, { className: "h-2.5 w-2.5" }) : /* @__PURE__ */ jsx(Lock, { className: "h-2.5 w-2.5" })
257
257
  }
258
258
  ) }),
@@ -272,8 +272,8 @@ function ResourceAttachmentTile({
272
272
  className: "p-1",
273
273
  children: [
274
274
  /* @__PURE__ */ jsxs("div", { className: "px-2 py-1.5", children: [
275
- /* @__PURE__ */ jsx("p", { className: "truncate text-xs font-semibold text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: title }),
276
- /* @__PURE__ */ jsx("p", { className: "text-[10px] uppercase tracking-wide text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: typeLabel })
275
+ /* @__PURE__ */ jsx("p", { className: "truncate text-xs font-semibold text-foreground", children: title }),
276
+ /* @__PURE__ */ jsx("p", { className: "text-[10px] uppercase tracking-wide text-muted-foreground", children: typeLabel })
277
277
  ] }),
278
278
  showToggle ? /* @__PURE__ */ jsx(Tile, { variant: "quiet", icon: editable ? /* @__PURE__ */ jsx(Lock, {}) : /* @__PURE__ */ jsx(Pencil, {}), title: editable ? "Make read-only" : "Allow agent editing", onClick: (e) => {
279
279
  stop(e);
@@ -46,9 +46,9 @@ function ResourceEditableToggleSamples() {
46
46
  }
47
47
  }, [dispatch]);
48
48
  return /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
49
- /* @__PURE__ */ jsxs("div", { className: "space-y-1 border-b border-[color:var(--mx-chat-border,hsl(var(--border)))] pb-2", children: [
50
- /* @__PURE__ */ jsx("h2", { className: "text-base font-semibold text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: "All attachment chips together" }),
51
- /* @__PURE__ */ jsxs("p", { className: "text-xs text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] max-w-3xl", children: [
49
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1 border-b border-border pb-2", children: [
50
+ /* @__PURE__ */ jsx("h2", { className: "text-base font-semibold text-foreground", children: "All attachment chips together" }),
51
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground max-w-3xl", children: [
52
52
  "The real ",
53
53
  /* @__PURE__ */ jsx("code", { className: "text-[10px]", children: "SmartAgentResourceChips" }),
54
54
  " ",
@@ -59,7 +59,7 @@ function ResourceEditableToggleSamples() {
59
59
  " when unlocked."
60
60
  ] })
61
61
  ] }),
62
- /* @__PURE__ */ jsx("div", { className: "bg-[var(--mx-chat-fill,hsl(var(--muted)))] border border-[color:var(--mx-chat-border,hsl(var(--border)))] rounded-lg py-2 max-w-3xl", children: /* @__PURE__ */ jsx(SmartAgentResourceChips, { conversationId: DEMO_CONV_ALL_RESOURCES }) })
62
+ /* @__PURE__ */ jsx("div", { className: "bg-muted border border-border rounded-lg py-2 max-w-3xl", children: /* @__PURE__ */ jsx(SmartAgentResourceChips, { conversationId: DEMO_CONV_ALL_RESOURCES }) })
63
63
  ] });
64
64
  }
65
65
  export {
@@ -192,7 +192,7 @@ function UserActionBar({
192
192
  {
193
193
  onClick: handleEdit,
194
194
  ariaLabel: "Edit message",
195
- icon: /* @__PURE__ */ jsx(Edit, { className: "w-4 h-4 text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]" })
195
+ icon: /* @__PURE__ */ jsx(Edit, { className: "w-4 h-4 text-muted-foreground" })
196
196
  }
197
197
  ),
198
198
  /* @__PURE__ */ jsx(
@@ -209,7 +209,7 @@ function UserActionBar({
209
209
  onClick: () => void togglePinnedMessage(messageId),
210
210
  ariaLabel: pinPending ? isPinned ? "Unpinning\u2026" : "Pinning\u2026" : isPinned ? "Unpin message" : "Pin message",
211
211
  disabled: pinPending,
212
- icon: pinPending ? /* @__PURE__ */ jsx(Loader2, { className: "w-4 h-4 animate-spin text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]" }) : isPinned ? /* @__PURE__ */ jsx(PinOff, { className: "w-4 h-4 text-amber-500 dark:text-amber-400" }) : /* @__PURE__ */ jsx(Pin, { className: "w-4 h-4 text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]" })
212
+ icon: pinPending ? /* @__PURE__ */ jsx(Loader2, { className: "w-4 h-4 animate-spin text-muted-foreground" }) : isPinned ? /* @__PURE__ */ jsx(PinOff, { className: "w-4 h-4 text-amber-500 dark:text-amber-400" }) : /* @__PURE__ */ jsx(Pin, { className: "w-4 h-4 text-muted-foreground" })
213
213
  }
214
214
  ),
215
215
  showOptions && /* @__PURE__ */ jsx(
@@ -218,7 +218,7 @@ function UserActionBar({
218
218
  ref: setMoreOptionsAnchor,
219
219
  onClick: () => setShowOptionsMenu(true),
220
220
  ariaLabel: "More options",
221
- icon: /* @__PURE__ */ jsx(MoreHorizontal, { className: "w-4 h-4 text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]" })
221
+ icon: /* @__PURE__ */ jsx(MoreHorizontal, { className: "w-4 h-4 text-muted-foreground" })
222
222
  }
223
223
  )
224
224
  ] }) : null
@@ -46,16 +46,16 @@ function SentMessageChip({ spec }) {
46
46
  function ThumbnailTile({ spec }) {
47
47
  const Icon = COMPARISON_ICONS[spec.id] ?? FileText;
48
48
  const isImage = spec.id === "image-legacy";
49
- return /* @__PURE__ */ jsx("div", { className: "relative rounded-lg overflow-hidden border border-[color:var(--mx-chat-border,hsl(var(--border)))] shrink-0", children: isImage ? /* @__PURE__ */ jsx(
49
+ return /* @__PURE__ */ jsx("div", { className: "relative rounded-lg overflow-hidden border border-border shrink-0", children: isImage ? /* @__PURE__ */ jsx(
50
50
  "div",
51
51
  {
52
52
  className: "h-10 w-10 bg-gradient-to-br from-blue-100 to-indigo-200 dark:from-blue-950/60 dark:to-indigo-900/40 flex items-center justify-center",
53
53
  title: spec.title,
54
54
  children: /* @__PURE__ */ jsx(ImageIcon, { className: "h-4 w-4 text-blue-600 dark:text-blue-400" })
55
55
  }
56
- ) : /* @__PURE__ */ jsxs("div", { className: "h-10 w-12 flex flex-col items-center justify-center bg-[var(--mx-chat-fill,hsl(var(--muted)))] py-1", children: [
57
- /* @__PURE__ */ jsx(Icon, { className: "h-6 w-6 text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] mb-1" }),
58
- /* @__PURE__ */ jsx("span", { className: "text-[8px] text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] text-center truncate w-full px-1", children: spec.title })
56
+ ) : /* @__PURE__ */ jsxs("div", { className: "h-10 w-12 flex flex-col items-center justify-center bg-muted py-1", children: [
57
+ /* @__PURE__ */ jsx(Icon, { className: "h-6 w-6 text-muted-foreground mb-1" }),
58
+ /* @__PURE__ */ jsx("span", { className: "text-[8px] text-muted-foreground text-center truncate w-full px-1", children: spec.title })
59
59
  ] }) });
60
60
  }
61
61
  function ComparisonColumn({
@@ -67,14 +67,14 @@ function ComparisonColumn({
67
67
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col min-w-0", children: [
68
68
  /* @__PURE__ */ jsxs("div", { className: "mb-2 space-y-0.5", children: [
69
69
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [
70
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-[color:var(--mx-chat-text,hsl(var(--foreground)))]", children: title }),
71
- badge ? /* @__PURE__ */ jsx("span", { className: "text-[10px] font-medium uppercase tracking-wide text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] bg-[var(--mx-chat-fill,hsl(var(--muted)))] px-1.5 py-0.5 rounded border border-[color:var(--mx-chat-border,hsl(var(--border)))]", children: badge }) : null
70
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground", children: title }),
71
+ badge ? /* @__PURE__ */ jsx("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground bg-muted px-1.5 py-0.5 rounded border border-border", children: badge }) : null
72
72
  ] }),
73
- /* @__PURE__ */ jsx("p", { className: "text-[11px] text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] font-mono", children: source })
73
+ /* @__PURE__ */ jsx("p", { className: "text-[11px] text-muted-foreground font-mono", children: source })
74
74
  ] }),
75
- /* @__PURE__ */ jsx("div", { className: "bg-[var(--mx-chat-fill,hsl(var(--muted)))] border border-[color:var(--mx-chat-border,hsl(var(--border)))] rounded-lg px-2 py-2 flex-1", children: /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
75
+ /* @__PURE__ */ jsx("div", { className: "bg-muted border border-border rounded-lg px-2 py-2 flex-1", children: /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
76
76
  children,
77
- /* @__PURE__ */ jsx("p", { className: "text-xs text-[color:var(--mx-chat-text,hsl(var(--foreground)))] whitespace-pre-wrap pt-1", children: "Can you review these attachments and summarize next steps?" })
77
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-foreground whitespace-pre-wrap pt-1", children: "Can you review these attachments and summarize next steps?" })
78
78
  ] }) })
79
79
  ] });
80
80
  }
@@ -84,8 +84,8 @@ function UserMessageAttachmentStyleComparison({
84
84
  }) {
85
85
  return /* @__PURE__ */ jsxs("section", { className: "space-y-4", children: [
86
86
  /* @__PURE__ */ jsxs("div", { children: [
87
- /* @__PURE__ */ jsx("h2", { className: "text-base font-semibold text-[color:var(--mx-chat-text,hsl(var(--foreground)))] border-b border-[color:var(--mx-chat-border,hsl(var(--border)))] pb-2", children: "Side-by-side: attachment styles" }),
88
- /* @__PURE__ */ jsxs("p", { className: "text-xs text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))] mt-2 max-w-3xl", children: [
87
+ /* @__PURE__ */ jsx("h2", { className: "text-base font-semibold text-foreground border-b border-border pb-2", children: "Side-by-side: attachment styles" }),
88
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground mt-2 max-w-3xl", children: [
89
89
  "Same six fake resources in each column. Input bar and sent messages both use ",
90
90
  /* @__PURE__ */ jsx("code", { className: "text-[10px]", children: "ResourceAttachmentTile" }),
91
91
  " ",
@@ -120,7 +120,7 @@ function UserMessageAttachmentStyleComparison({
120
120
  conversationId: inputChipsConversationId
121
121
  }
122
122
  ) }),
123
- /* @__PURE__ */ jsxs("p", { className: "text-[10px] text-[color:var(--mx-chat-text-secondary,hsl(var(--muted-foreground)))]", children: [
123
+ /* @__PURE__ */ jsxs("p", { className: "text-[10px] text-muted-foreground", children: [
124
124
  "Hover for previews. Use the corner Remove control. Image/audio with",
125
125
  " ",
126
126
  /* @__PURE__ */ jsx("code", { className: "text-[10px]", children: "file_id" }),