@sero-ai/ui 0.4.0 → 0.4.2
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.
- package/.turbo/turbo-build.log +628 -628
- package/.turbo/turbo-test.log +18 -0
- package/.turbo/turbo-typecheck.log +1 -1
- package/CHANGELOG.md +22 -2
- package/LICENSE +201 -0
- package/dist/components/ai-elements/agent.cjs +6 -6
- package/dist/components/ai-elements/agent.js +6 -6
- package/dist/components/ai-elements/artifact.cjs +2 -2
- package/dist/components/ai-elements/artifact.js +2 -2
- package/dist/components/ai-elements/attachments.cjs +2 -2
- package/dist/components/ai-elements/attachments.js +2 -2
- package/dist/components/ai-elements/chain-of-thought.cjs +2 -2
- package/dist/components/ai-elements/chain-of-thought.js +2 -2
- package/dist/components/ai-elements/code-block.cjs +7 -5
- package/dist/components/ai-elements/code-block.d.cts +2 -1
- package/dist/components/ai-elements/code-block.d.ts +2 -1
- package/dist/components/ai-elements/code-block.js +7 -5
- package/dist/components/ai-elements/commit.cjs +2 -2
- package/dist/components/ai-elements/commit.js +2 -2
- package/dist/components/ai-elements/confirmation.cjs +1 -1
- package/dist/components/ai-elements/confirmation.js +1 -1
- package/dist/components/ai-elements/conversation.cjs +2 -2
- package/dist/components/ai-elements/conversation.js +2 -2
- package/dist/components/ai-elements/environment-variables.cjs +3 -3
- package/dist/components/ai-elements/environment-variables.js +3 -3
- package/dist/components/ai-elements/file-tree.cjs +1 -1
- package/dist/components/ai-elements/file-tree.js +1 -1
- package/dist/components/ai-elements/inline-citation.cjs +3 -3
- package/dist/components/ai-elements/inline-citation.js +3 -3
- package/dist/components/ai-elements/jsx-preview.cjs +1 -1
- package/dist/components/ai-elements/jsx-preview.js +1 -1
- package/dist/components/ai-elements/message.cjs +1 -1
- package/dist/components/ai-elements/message.js +1 -1
- package/dist/components/ai-elements/package-info.cjs +4 -4
- package/dist/components/ai-elements/package-info.js +4 -4
- package/dist/components/ai-elements/prompt-input-context.cjs +2 -3
- package/dist/components/ai-elements/prompt-input-context.js +2 -3
- package/dist/components/ai-elements/queue.cjs +2 -2
- package/dist/components/ai-elements/queue.js +2 -2
- package/dist/components/ai-elements/reasoning.cjs +2 -2
- package/dist/components/ai-elements/reasoning.js +2 -2
- package/dist/components/ai-elements/sandbox.cjs +3 -3
- package/dist/components/ai-elements/sandbox.js +3 -3
- package/dist/components/ai-elements/schema-display.cjs +12 -12
- package/dist/components/ai-elements/schema-display.js +12 -12
- package/dist/components/ai-elements/speech-input.cjs +18 -2
- package/dist/components/ai-elements/speech-input.js +16 -0
- package/dist/components/ai-elements/stack-trace.cjs +1 -1
- package/dist/components/ai-elements/stack-trace.js +1 -1
- package/dist/components/ai-elements/task.cjs +3 -3
- package/dist/components/ai-elements/task.js +3 -3
- package/dist/components/ai-elements/terminal.cjs +2 -2
- package/dist/components/ai-elements/terminal.js +2 -2
- package/dist/components/ai-elements/test-results.cjs +4 -4
- package/dist/components/ai-elements/test-results.js +4 -4
- package/dist/components/ai-elements/tool.cjs +4 -4
- package/dist/components/ai-elements/tool.js +4 -4
- package/dist/components/ai-elements/transcription.cjs +1 -1
- package/dist/components/ai-elements/transcription.js +1 -1
- package/dist/components/ai-elements/web-preview.cjs +2 -2
- package/dist/components/ai-elements/web-preview.js +2 -2
- package/dist/components/context-editor/CapabilitySection.cjs +2 -2
- package/dist/components/context-editor/CapabilitySection.js +2 -2
- package/dist/components/context-editor/ContextEditor.cjs +2 -2
- package/dist/components/context-editor/ContextEditor.js +2 -2
- package/dist/components/context-editor/PresetBar.cjs +3 -3
- package/dist/components/context-editor/PresetBar.js +3 -3
- package/dist/components/context-editor/SystemPromptSection.cjs +4 -4
- package/dist/components/context-editor/SystemPromptSection.js +4 -4
- package/dist/components/context-editor/parts.cjs +6 -6
- package/dist/components/context-editor/parts.js +6 -6
- package/dist/components/dashboard/activity-list.cjs +2 -2
- package/dist/components/dashboard/activity-list.js +2 -2
- package/dist/components/dashboard/catalog.cjs +1 -322
- package/dist/components/dashboard/catalog.d.cts +1 -2
- package/dist/components/dashboard/catalog.d.ts +1 -2
- package/dist/components/dashboard/catalog.js +0 -322
- package/dist/components/dashboard/catalog.json +312 -0
- package/dist/components/dashboard/empty-state.cjs +1 -1
- package/dist/components/dashboard/empty-state.js +1 -1
- package/dist/components/dashboard/index.d.cts +1 -1
- package/dist/components/dashboard/index.d.ts +1 -1
- package/dist/components/dashboard/item-list.cjs +2 -2
- package/dist/components/dashboard/item-list.js +2 -2
- package/dist/components/dashboard/layout.cjs +1 -1
- package/dist/components/dashboard/layout.js +1 -1
- package/dist/components/dashboard/metric.cjs +1 -1
- package/dist/components/dashboard/metric.js +1 -1
- package/dist/components/dashboard/stale-indicator.cjs +1 -1
- package/dist/components/dashboard/stale-indicator.js +1 -1
- package/dist/components/dashboard/status.cjs +6 -2
- package/dist/components/dashboard/status.js +7 -3
- package/dist/components/dashboard/tone.cjs +9 -1
- package/dist/components/dashboard/tone.d.cts +7 -1
- package/dist/components/dashboard/tone.d.ts +7 -1
- package/dist/components/dashboard/tone.js +8 -0
- package/dist/components/dashboard/typography.cjs +4 -4
- package/dist/components/dashboard/typography.d.cts +1 -1
- package/dist/components/dashboard/typography.d.ts +1 -1
- package/dist/components/dashboard/typography.js +4 -4
- package/dist/components/model-selection/available-model-picker.cjs +6 -6
- package/dist/components/model-selection/available-model-picker.js +6 -6
- package/dist/components/model-selection/thinking-level-picker.cjs +1 -1
- package/dist/components/model-selection/thinking-level-picker.js +1 -1
- package/dist/components/model-selection/thinking-picker.cjs +70 -0
- package/dist/components/model-selection/thinking-picker.d.cts +12 -0
- package/dist/components/model-selection/thinking-picker.d.ts +12 -0
- package/dist/components/model-selection/thinking-picker.js +70 -0
- package/dist/components/ui/accordion.cjs +2 -2
- package/dist/components/ui/accordion.js +2 -2
- package/dist/components/ui/alert-dialog.cjs +4 -2
- package/dist/components/ui/alert-dialog.js +4 -2
- package/dist/components/ui/alert.cjs +2 -2
- package/dist/components/ui/alert.js +2 -2
- package/dist/components/ui/avatar.cjs +2 -2
- package/dist/components/ui/avatar.js +2 -2
- package/dist/components/ui/breadcrumb.cjs +1 -1
- package/dist/components/ui/breadcrumb.js +1 -1
- package/dist/components/ui/button-group.cjs +1 -1
- package/dist/components/ui/button-group.js +1 -1
- package/dist/components/ui/button.cjs +1 -1
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/calendar.cjs +2 -2
- package/dist/components/ui/calendar.js +2 -2
- package/dist/components/ui/card.cjs +1 -1
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/carousel.cjs +3 -2
- package/dist/components/ui/carousel.js +2 -1
- package/dist/components/ui/chart.cjs +36 -27
- package/dist/components/ui/chart.d.cts +21 -17
- package/dist/components/ui/chart.d.ts +21 -17
- package/dist/components/ui/chart.js +30 -21
- package/dist/components/ui/combobox.cjs +7 -5
- package/dist/components/ui/combobox.js +7 -5
- package/dist/components/ui/command.cjs +3 -3
- package/dist/components/ui/command.js +3 -3
- package/dist/components/ui/context-menu.cjs +10 -7
- package/dist/components/ui/context-menu.js +10 -7
- package/dist/components/ui/dialog.cjs +4 -2
- package/dist/components/ui/dialog.js +4 -2
- package/dist/components/ui/drawer.cjs +4 -2
- package/dist/components/ui/drawer.js +4 -2
- package/dist/components/ui/dropdown-menu.cjs +10 -7
- package/dist/components/ui/dropdown-menu.js +10 -7
- package/dist/components/ui/empty.cjs +2 -2
- package/dist/components/ui/empty.js +2 -2
- package/dist/components/ui/field.cjs +5 -5
- package/dist/components/ui/field.js +5 -5
- package/dist/components/ui/form.cjs +2 -2
- package/dist/components/ui/form.js +2 -2
- package/dist/components/ui/hover-card.cjs +3 -1
- package/dist/components/ui/hover-card.js +3 -1
- package/dist/components/ui/input-group.cjs +3 -3
- package/dist/components/ui/input-group.js +3 -3
- package/dist/components/ui/input-otp.cjs +1 -1
- package/dist/components/ui/input-otp.js +1 -1
- package/dist/components/ui/input.cjs +1 -1
- package/dist/components/ui/input.js +1 -1
- package/dist/components/ui/item.cjs +3 -3
- package/dist/components/ui/item.js +3 -3
- package/dist/components/ui/label.cjs +1 -1
- package/dist/components/ui/label.js +1 -1
- package/dist/components/ui/menubar.cjs +9 -7
- package/dist/components/ui/menubar.js +9 -7
- package/dist/components/ui/native-select.cjs +1 -1
- package/dist/components/ui/native-select.js +1 -1
- package/dist/components/ui/navigation-menu.cjs +2 -2
- package/dist/components/ui/navigation-menu.js +2 -2
- package/dist/components/ui/plugin-safety-disclaimer.cjs +1 -1
- package/dist/components/ui/plugin-safety-disclaimer.js +1 -1
- package/dist/components/ui/popover.cjs +4 -2
- package/dist/components/ui/popover.js +4 -2
- package/dist/components/ui/select.cjs +5 -3
- package/dist/components/ui/select.js +5 -3
- package/dist/components/ui/sheet.cjs +4 -2
- package/dist/components/ui/sheet.js +4 -2
- package/dist/components/ui/sidebar.cjs +5 -5
- package/dist/components/ui/sidebar.js +5 -5
- package/dist/components/ui/table.cjs +2 -2
- package/dist/components/ui/table.js +2 -2
- package/dist/components/ui/tabs.cjs +1 -1
- package/dist/components/ui/tabs.js +1 -1
- package/dist/components/ui/textarea.cjs +1 -1
- package/dist/components/ui/textarea.js +1 -1
- package/dist/components/ui/toggle.cjs +1 -1
- package/dist/components/ui/toggle.js +1 -1
- package/dist/components/ui/tooltip.cjs +3 -1
- package/dist/components/ui/tooltip.js +3 -1
- package/dist/index.cjs +5 -1
- package/dist/index.d.cts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +5 -1
- package/dist/plugin-style-scope-context.cjs +10 -0
- package/dist/plugin-style-scope-context.d.cts +13 -0
- package/dist/plugin-style-scope-context.d.ts +13 -0
- package/dist/plugin-style-scope-context.js +10 -0
- package/dist/plugin-style-scope.cjs +25 -0
- package/dist/plugin-style-scope.d.cts +11 -0
- package/dist/plugin-style-scope.d.ts +11 -0
- package/dist/plugin-style-scope.js +25 -0
- package/dist/reference.cjs +1251 -3
- package/dist/reference.d.cts +11 -5
- package/dist/reference.d.ts +11 -5
- package/dist/reference.js +1224 -6
- package/dist/styles/globals.css +22 -3
- package/dist/styles/plugin-theme.css +80 -0
- package/dist/styles/plugin.css +14 -2
- package/package.json +53 -70
- package/scripts/ensure-pnpm-publish.mjs +23 -0
- package/scripts/smoke-dist.mjs +68 -0
- package/src/components/ai-elements/agent.tsx +6 -6
- package/src/components/ai-elements/artifact.tsx +2 -2
- package/src/components/ai-elements/attachments.tsx +2 -2
- package/src/components/ai-elements/chain-of-thought.tsx +2 -2
- package/src/components/ai-elements/code-block.tsx +6 -3
- package/src/components/ai-elements/commit.tsx +2 -2
- package/src/components/ai-elements/confirmation.tsx +1 -1
- package/src/components/ai-elements/conversation.tsx +2 -2
- package/src/components/ai-elements/environment-variables.tsx +3 -3
- package/src/components/ai-elements/file-tree.tsx +1 -1
- package/src/components/ai-elements/inline-citation.tsx +3 -3
- package/src/components/ai-elements/jsx-preview.tsx +1 -1
- package/src/components/ai-elements/message.tsx +1 -1
- package/src/components/ai-elements/package-info.tsx +4 -4
- package/src/components/ai-elements/prompt-input-context.tsx +3 -2
- package/src/components/ai-elements/queue.tsx +2 -2
- package/src/components/ai-elements/reasoning.tsx +2 -2
- package/src/components/ai-elements/sandbox.tsx +3 -3
- package/src/components/ai-elements/schema-display.tsx +12 -12
- package/src/components/ai-elements/speech-input.tsx +17 -0
- package/src/components/ai-elements/stack-trace.tsx +1 -1
- package/src/components/ai-elements/task.tsx +3 -3
- package/src/components/ai-elements/terminal.tsx +2 -2
- package/src/components/ai-elements/test-results.tsx +4 -4
- package/src/components/ai-elements/tool.tsx +4 -4
- package/src/components/ai-elements/transcription.tsx +1 -1
- package/src/components/ai-elements/web-preview.tsx +2 -2
- package/src/components/context-editor/CapabilitySection.tsx +2 -2
- package/src/components/context-editor/ContextEditor.tsx +2 -2
- package/src/components/context-editor/PresetBar.tsx +3 -3
- package/src/components/context-editor/SystemPromptSection.tsx +4 -4
- package/src/components/context-editor/parts.tsx +6 -6
- package/src/components/dashboard/__tests__/catalog.test.ts +7 -2
- package/src/components/dashboard/__tests__/state.test.tsx +19 -2
- package/src/components/dashboard/activity-list.tsx +2 -2
- package/src/components/dashboard/catalog.json +312 -0
- package/src/components/dashboard/catalog.ts +6 -328
- package/src/components/dashboard/empty-state.tsx +1 -1
- package/src/components/dashboard/index.ts +2 -2
- package/src/components/dashboard/item-list.tsx +2 -2
- package/src/components/dashboard/layout.tsx +1 -1
- package/src/components/dashboard/metric.tsx +1 -1
- package/src/components/dashboard/stale-indicator.tsx +1 -1
- package/src/components/dashboard/status.tsx +15 -2
- package/src/components/dashboard/tone.ts +13 -0
- package/src/components/dashboard/typography.tsx +5 -5
- package/src/components/model-selection/available-model-picker.tsx +7 -7
- package/src/components/model-selection/thinking-level-picker.tsx +1 -1
- package/src/components/model-selection/thinking-picker.tsx +90 -0
- package/src/components/ui/accordion.tsx +2 -2
- package/src/components/ui/alert-dialog.tsx +4 -2
- package/src/components/ui/alert.tsx +2 -2
- package/src/components/ui/avatar.tsx +2 -2
- package/src/components/ui/breadcrumb.tsx +1 -1
- package/src/components/ui/button-group.tsx +1 -1
- package/src/components/ui/button.tsx +1 -1
- package/src/components/ui/calendar.tsx +3 -3
- package/src/components/ui/card.tsx +1 -1
- package/src/components/ui/carousel.tsx +2 -1
- package/src/components/ui/chart.tsx +54 -36
- package/src/components/ui/combobox.tsx +7 -5
- package/src/components/ui/command.tsx +3 -3
- package/src/components/ui/context-menu.tsx +10 -7
- package/src/components/ui/dialog.tsx +4 -2
- package/src/components/ui/drawer.tsx +4 -2
- package/src/components/ui/dropdown-menu.tsx +10 -7
- package/src/components/ui/empty.tsx +2 -2
- package/src/components/ui/field.tsx +5 -5
- package/src/components/ui/form.tsx +2 -2
- package/src/components/ui/hover-card.tsx +3 -1
- package/src/components/ui/input-group.tsx +3 -3
- package/src/components/ui/input-otp.tsx +1 -1
- package/src/components/ui/input.tsx +1 -1
- package/src/components/ui/item.tsx +3 -3
- package/src/components/ui/label.tsx +1 -1
- package/src/components/ui/menubar.tsx +9 -7
- package/src/components/ui/native-select.tsx +1 -1
- package/src/components/ui/navigation-menu.tsx +2 -2
- package/src/components/ui/plugin-safety-disclaimer.tsx +1 -1
- package/src/components/ui/popover.tsx +4 -2
- package/src/components/ui/select.tsx +5 -3
- package/src/components/ui/sheet.tsx +4 -2
- package/src/components/ui/sidebar.tsx +5 -5
- package/src/components/ui/table.tsx +2 -2
- package/src/components/ui/tabs.tsx +1 -1
- package/src/components/ui/textarea.tsx +1 -1
- package/src/components/ui/toggle.tsx +1 -1
- package/src/components/ui/tooltip.tsx +3 -1
- package/src/index.ts +5 -1
- package/src/plugin-style-scope-context.ts +21 -0
- package/src/plugin-style-scope.test.tsx +38 -0
- package/src/plugin-style-scope.tsx +35 -0
- package/src/styles/globals.css +22 -3
- package/src/styles/plugin-theme.css +80 -0
- package/src/styles/plugin.css +14 -2
- package/tsup.config.ts +13 -3
- package/tsup.reference.config.ts +15 -0
- package/dist/components/reference/ActivityExample.cjs +0 -47
- package/dist/components/reference/ActivityExample.d.cts +0 -5
- package/dist/components/reference/ActivityExample.d.ts +0 -5
- package/dist/components/reference/ActivityExample.js +0 -47
- package/dist/components/reference/ResourceExample.cjs +0 -54
- package/dist/components/reference/ResourceExample.d.cts +0 -5
- package/dist/components/reference/ResourceExample.d.ts +0 -5
- package/dist/components/reference/ResourceExample.js +0 -54
- package/dist/components/reference/SchedulerExample.cjs +0 -68
- package/dist/components/reference/SchedulerExample.d.cts +0 -5
- package/dist/components/reference/SchedulerExample.d.ts +0 -5
- package/dist/components/reference/SchedulerExample.js +0 -68
- package/dist/components/reference/StarterExample.cjs +0 -34
- package/dist/components/reference/StarterExample.d.cts +0 -5
- package/dist/components/reference/StarterExample.d.ts +0 -5
- package/dist/components/reference/StarterExample.js +0 -34
- package/dist/components/reference/index.cjs +0 -10
- package/dist/components/reference/index.d.cts +0 -5
- package/dist/components/reference/index.d.ts +0 -5
- package/dist/components/reference/index.js +0 -10
- package/dist/dashboard-catalog.cjs +0 -8
- package/dist/dashboard-catalog.d.cts +0 -1
- package/dist/dashboard-catalog.d.ts +0 -1
- package/dist/dashboard-catalog.js +0 -8
- package/src/dashboard-catalog.ts +0 -13
|
@@ -261,13 +261,13 @@ export const InlineCitationSource = ({
|
|
|
261
261
|
}: InlineCitationSourceProps) => (
|
|
262
262
|
<div className={cn("space-y-1", className)} {...props}>
|
|
263
263
|
{title && (
|
|
264
|
-
<h4 className="truncate font-medium text-
|
|
264
|
+
<h4 className="truncate font-medium text-base leading-tight">{title}</h4>
|
|
265
265
|
)}
|
|
266
266
|
{url && (
|
|
267
267
|
<p className="truncate break-all text-muted-foreground text-xs">{url}</p>
|
|
268
268
|
)}
|
|
269
269
|
{description && (
|
|
270
|
-
<p className="line-clamp-3 text-muted-foreground text-
|
|
270
|
+
<p className="line-clamp-3 text-muted-foreground text-base leading-relaxed">
|
|
271
271
|
{description}
|
|
272
272
|
</p>
|
|
273
273
|
)}
|
|
@@ -284,7 +284,7 @@ export const InlineCitationQuote = ({
|
|
|
284
284
|
}: InlineCitationQuoteProps) => (
|
|
285
285
|
<blockquote
|
|
286
286
|
className={cn(
|
|
287
|
-
"border-muted border-l-2 pl-3 text-muted-foreground text-
|
|
287
|
+
"border-muted border-l-2 pl-3 text-muted-foreground text-base italic",
|
|
288
288
|
className
|
|
289
289
|
)}
|
|
290
290
|
{...props}
|
|
@@ -229,7 +229,7 @@ export const JSXPreviewError = memo(
|
|
|
229
229
|
return (
|
|
230
230
|
<div
|
|
231
231
|
className={cn(
|
|
232
|
-
"flex items-center gap-2 rounded-md border border-destructive/50 bg-destructive/10 p-3 text-destructive text-
|
|
232
|
+
"flex items-center gap-2 rounded-md border border-destructive/50 bg-destructive/10 p-3 text-destructive text-base",
|
|
233
233
|
className
|
|
234
234
|
)}
|
|
235
235
|
{...props}
|
|
@@ -55,7 +55,7 @@ export const MessageContent = ({
|
|
|
55
55
|
}: MessageContentProps) => (
|
|
56
56
|
<div
|
|
57
57
|
className={cn(
|
|
58
|
-
"is-user:dark flex w-fit min-w-0 max-w-full flex-col gap-2 overflow-hidden text-
|
|
58
|
+
"is-user:dark flex w-fit min-w-0 max-w-full flex-col gap-2 overflow-hidden text-base",
|
|
59
59
|
"group-[.is-user]:ml-auto group-[.is-user]:rounded-lg group-[.is-user]:bg-secondary group-[.is-user]:px-4 group-[.is-user]:py-3 group-[.is-user]:text-foreground",
|
|
60
60
|
"group-[.is-assistant]:text-foreground",
|
|
61
61
|
className
|
|
@@ -83,7 +83,7 @@ export const PackageInfoName = ({
|
|
|
83
83
|
return (
|
|
84
84
|
<div className={cn("flex items-center gap-2", className)} {...props}>
|
|
85
85
|
<PackageIcon className="size-4 text-muted-foreground" />
|
|
86
|
-
<span className="font-medium font-mono text-
|
|
86
|
+
<span className="font-medium font-mono text-base">{children ?? name}</span>
|
|
87
87
|
</div>
|
|
88
88
|
);
|
|
89
89
|
};
|
|
@@ -150,7 +150,7 @@ export const PackageInfoVersion = ({
|
|
|
150
150
|
return (
|
|
151
151
|
<div
|
|
152
152
|
className={cn(
|
|
153
|
-
"mt-2 flex items-center gap-2 font-mono text-muted-foreground text-
|
|
153
|
+
"mt-2 flex items-center gap-2 font-mono text-muted-foreground text-base",
|
|
154
154
|
className
|
|
155
155
|
)}
|
|
156
156
|
{...props}
|
|
@@ -177,7 +177,7 @@ export const PackageInfoDescription = ({
|
|
|
177
177
|
children,
|
|
178
178
|
...props
|
|
179
179
|
}: PackageInfoDescriptionProps) => (
|
|
180
|
-
<p className={cn("mt-2 text-muted-foreground text-
|
|
180
|
+
<p className={cn("mt-2 text-muted-foreground text-base", className)} {...props}>
|
|
181
181
|
{children}
|
|
182
182
|
</p>
|
|
183
183
|
);
|
|
@@ -222,7 +222,7 @@ export const PackageInfoDependency = ({
|
|
|
222
222
|
...props
|
|
223
223
|
}: PackageInfoDependencyProps) => (
|
|
224
224
|
<div
|
|
225
|
-
className={cn("flex items-center justify-between text-
|
|
225
|
+
className={cn("flex items-center justify-between text-base", className)}
|
|
226
226
|
{...props}
|
|
227
227
|
>
|
|
228
228
|
{children ?? (
|
|
@@ -245,8 +245,9 @@ export const PromptInputActionAddAttachments = ({
|
|
|
245
245
|
);
|
|
246
246
|
|
|
247
247
|
return (
|
|
248
|
-
<DropdownMenuItem {...props} onSelect={handleSelect}>
|
|
249
|
-
<ImageIcon className="
|
|
248
|
+
<DropdownMenuItem {...props} onSelect={handleSelect} className="text-sm">
|
|
249
|
+
<ImageIcon className="size-4" />
|
|
250
|
+
{label}
|
|
250
251
|
</DropdownMenuItem>
|
|
251
252
|
);
|
|
252
253
|
};
|
|
@@ -37,7 +37,7 @@ export type QueueItemProps = ComponentProps<"li">;
|
|
|
37
37
|
export const QueueItem = ({ className, ...props }: QueueItemProps) => (
|
|
38
38
|
<li
|
|
39
39
|
className={cn(
|
|
40
|
-
"group flex flex-col gap-1 rounded-md px-3 py-1 text-
|
|
40
|
+
"group flex flex-col gap-1 rounded-md px-3 py-1 text-base transition-colors hover:bg-muted",
|
|
41
41
|
className
|
|
42
42
|
)}
|
|
43
43
|
{...props}
|
|
@@ -216,7 +216,7 @@ export const QueueSectionTrigger = ({
|
|
|
216
216
|
<CollapsibleTrigger asChild>
|
|
217
217
|
<button
|
|
218
218
|
className={cn(
|
|
219
|
-
"group flex w-full items-center justify-between rounded-md bg-muted/40 px-3 py-2 text-left font-medium text-muted-foreground text-
|
|
219
|
+
"group flex w-full items-center justify-between rounded-md bg-muted/40 px-3 py-2 text-left font-medium text-muted-foreground text-base transition-colors hover:bg-muted",
|
|
220
220
|
className
|
|
221
221
|
)}
|
|
222
222
|
type="button"
|
|
@@ -177,7 +177,7 @@ export const ReasoningTrigger = memo(
|
|
|
177
177
|
return (
|
|
178
178
|
<CollapsibleTrigger
|
|
179
179
|
className={cn(
|
|
180
|
-
"flex w-full items-center gap-2 text-muted-foreground text-
|
|
180
|
+
"flex w-full items-center gap-2 text-muted-foreground text-base transition-colors hover:text-foreground",
|
|
181
181
|
className
|
|
182
182
|
)}
|
|
183
183
|
{...props}
|
|
@@ -211,7 +211,7 @@ export const ReasoningContent = memo(
|
|
|
211
211
|
({ className, children, ...props }: ReasoningContentProps) => (
|
|
212
212
|
<CollapsibleContent
|
|
213
213
|
className={cn(
|
|
214
|
-
"mt-4 text-
|
|
214
|
+
"mt-4 text-base",
|
|
215
215
|
"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-muted-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",
|
|
216
216
|
className
|
|
217
217
|
)}
|
|
@@ -53,7 +53,7 @@ export const SandboxHeader = ({
|
|
|
53
53
|
>
|
|
54
54
|
<div className="flex items-center gap-2">
|
|
55
55
|
<Code className="size-4 text-muted-foreground" />
|
|
56
|
-
<span className="font-medium text-
|
|
56
|
+
<span className="font-medium text-base">{title}</span>
|
|
57
57
|
{getStatusBadge(state)}
|
|
58
58
|
</div>
|
|
59
59
|
<ChevronDownIcon className="size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180" />
|
|
@@ -116,7 +116,7 @@ export const SandboxTabsTrigger = ({
|
|
|
116
116
|
}: SandboxTabsTriggerProps) => (
|
|
117
117
|
<TabsTrigger
|
|
118
118
|
className={cn(
|
|
119
|
-
"rounded-none border-0 border-transparent border-b-2 px-4 py-2 font-medium text-muted-foreground text-
|
|
119
|
+
"rounded-none border-0 border-transparent border-b-2 px-4 py-2 font-medium text-muted-foreground text-base transition-colors data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:shadow-none",
|
|
120
120
|
className
|
|
121
121
|
)}
|
|
122
122
|
{...props}
|
|
@@ -129,5 +129,5 @@ export const SandboxTabContent = ({
|
|
|
129
129
|
className,
|
|
130
130
|
...props
|
|
131
131
|
}: SandboxTabContentProps) => (
|
|
132
|
-
<TabsContent className={cn("mt-0 text-
|
|
132
|
+
<TabsContent className={cn("mt-0 text-base", className)} {...props} />
|
|
133
133
|
);
|
|
@@ -174,7 +174,7 @@ export const SchemaDisplayPath = ({
|
|
|
174
174
|
|
|
175
175
|
return (
|
|
176
176
|
<span
|
|
177
|
-
className={cn("font-mono text-
|
|
177
|
+
className={cn("font-mono text-base", className)}
|
|
178
178
|
// biome-ignore lint/security/noDangerouslySetInnerHtml: "needed for parameter highlighting"
|
|
179
179
|
// oxlint-disable-next-line eslint-plugin-react(no-danger)
|
|
180
180
|
dangerouslySetInnerHTML={{ __html: children ?? highlightedPath }}
|
|
@@ -196,7 +196,7 @@ export const SchemaDisplayDescription = ({
|
|
|
196
196
|
return (
|
|
197
197
|
<p
|
|
198
198
|
className={cn(
|
|
199
|
-
"border-b px-4 py-3 text-muted-foreground text-
|
|
199
|
+
"border-b px-4 py-3 text-muted-foreground text-base",
|
|
200
200
|
className
|
|
201
201
|
)}
|
|
202
202
|
{...props}
|
|
@@ -231,7 +231,7 @@ export const SchemaDisplayParameters = ({
|
|
|
231
231
|
<Collapsible className={cn(className)} defaultOpen {...props}>
|
|
232
232
|
<CollapsibleTrigger className="group flex w-full items-center gap-2 px-4 py-3 text-left transition-colors hover:bg-muted/50">
|
|
233
233
|
<ChevronRightIcon className="size-4 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90" />
|
|
234
|
-
<span className="font-medium text-
|
|
234
|
+
<span className="font-medium text-base">Parameters</span>
|
|
235
235
|
<Badge className="ml-auto text-xs" variant="secondary">
|
|
236
236
|
{parameters?.length}
|
|
237
237
|
</Badge>
|
|
@@ -262,7 +262,7 @@ export const SchemaDisplayParameter = ({
|
|
|
262
262
|
}: SchemaDisplayParameterProps) => (
|
|
263
263
|
<div className={cn("px-4 py-3 pl-10", className)} {...props}>
|
|
264
264
|
<div className="flex items-center gap-2">
|
|
265
|
-
<span className="font-mono text-
|
|
265
|
+
<span className="font-mono text-base">{name}</span>
|
|
266
266
|
<Badge className="text-xs" variant="outline">
|
|
267
267
|
{type}
|
|
268
268
|
</Badge>
|
|
@@ -281,7 +281,7 @@ export const SchemaDisplayParameter = ({
|
|
|
281
281
|
)}
|
|
282
282
|
</div>
|
|
283
283
|
{description && (
|
|
284
|
-
<p className="mt-1 text-muted-foreground text-
|
|
284
|
+
<p className="mt-1 text-muted-foreground text-base">{description}</p>
|
|
285
285
|
)}
|
|
286
286
|
</div>
|
|
287
287
|
);
|
|
@@ -299,7 +299,7 @@ export const SchemaDisplayRequest = ({
|
|
|
299
299
|
<Collapsible className={cn(className)} defaultOpen {...props}>
|
|
300
300
|
<CollapsibleTrigger className="group flex w-full items-center gap-2 px-4 py-3 text-left transition-colors hover:bg-muted/50">
|
|
301
301
|
<ChevronRightIcon className="size-4 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90" />
|
|
302
|
-
<span className="font-medium text-
|
|
302
|
+
<span className="font-medium text-base">Request Body</span>
|
|
303
303
|
</CollapsibleTrigger>
|
|
304
304
|
<CollapsibleContent>
|
|
305
305
|
<div className="border-t">
|
|
@@ -326,7 +326,7 @@ export const SchemaDisplayResponse = ({
|
|
|
326
326
|
<Collapsible className={cn(className)} defaultOpen {...props}>
|
|
327
327
|
<CollapsibleTrigger className="group flex w-full items-center gap-2 px-4 py-3 text-left transition-colors hover:bg-muted/50">
|
|
328
328
|
<ChevronRightIcon className="size-4 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90" />
|
|
329
|
-
<span className="font-medium text-
|
|
329
|
+
<span className="font-medium text-base">Response</span>
|
|
330
330
|
</CollapsibleTrigger>
|
|
331
331
|
<CollapsibleContent>
|
|
332
332
|
<div className="border-t">
|
|
@@ -382,7 +382,7 @@ export const SchemaDisplayProperty = ({
|
|
|
382
382
|
style={{ paddingLeft }}
|
|
383
383
|
>
|
|
384
384
|
<ChevronRightIcon className="size-4 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90" />
|
|
385
|
-
<span className="font-mono text-
|
|
385
|
+
<span className="font-mono text-base">{name}</span>
|
|
386
386
|
<Badge className="text-xs" variant="outline">
|
|
387
387
|
{type}
|
|
388
388
|
</Badge>
|
|
@@ -397,7 +397,7 @@ export const SchemaDisplayProperty = ({
|
|
|
397
397
|
</CollapsibleTrigger>
|
|
398
398
|
{description && (
|
|
399
399
|
<p
|
|
400
|
-
className="pb-2 text-muted-foreground text-
|
|
400
|
+
className="pb-2 text-muted-foreground text-base"
|
|
401
401
|
style={{ paddingLeft: paddingLeft + 24 }}
|
|
402
402
|
>
|
|
403
403
|
{description}
|
|
@@ -434,7 +434,7 @@ export const SchemaDisplayProperty = ({
|
|
|
434
434
|
<div className="flex items-center gap-2">
|
|
435
435
|
{/* Spacer for alignment */}
|
|
436
436
|
<span className="size-4" />
|
|
437
|
-
<span className="font-mono text-
|
|
437
|
+
<span className="font-mono text-base">{name}</span>
|
|
438
438
|
<Badge className="text-xs" variant="outline">
|
|
439
439
|
{type}
|
|
440
440
|
</Badge>
|
|
@@ -448,7 +448,7 @@ export const SchemaDisplayProperty = ({
|
|
|
448
448
|
)}
|
|
449
449
|
</div>
|
|
450
450
|
{description && (
|
|
451
|
-
<p className="mt-1 pl-6 text-muted-foreground text-
|
|
451
|
+
<p className="mt-1 pl-6 text-muted-foreground text-base">{description}</p>
|
|
452
452
|
)}
|
|
453
453
|
</div>
|
|
454
454
|
);
|
|
@@ -463,7 +463,7 @@ export const SchemaDisplayExample = ({
|
|
|
463
463
|
}: SchemaDisplayExampleProps) => (
|
|
464
464
|
<pre
|
|
465
465
|
className={cn(
|
|
466
|
-
"mx-4 mb-4 overflow-auto rounded-md bg-muted p-4 font-mono text-
|
|
466
|
+
"mx-4 mb-4 overflow-auto rounded-md bg-muted p-4 font-mono text-base",
|
|
467
467
|
className
|
|
468
468
|
)}
|
|
469
469
|
{...props}
|
|
@@ -101,6 +101,7 @@ export const SpeechInput = ({
|
|
|
101
101
|
const [isRecognitionReady, setIsRecognitionReady] = useState(false);
|
|
102
102
|
const recognitionRef = useRef<SpeechRecognition | null>(null);
|
|
103
103
|
const mediaRecorderRef = useRef<MediaRecorder | null>(null);
|
|
104
|
+
const mediaRecorderCleanupRef = useRef<(() => void) | null>(null);
|
|
104
105
|
const streamRef = useRef<MediaStream | null>(null);
|
|
105
106
|
const audioChunksRef = useRef<Blob[]>([]);
|
|
106
107
|
const onTranscriptionChangeRef = useRef<
|
|
@@ -184,6 +185,7 @@ export const SpeechInput = ({
|
|
|
184
185
|
if (mediaRecorderRef.current?.state === "recording") {
|
|
185
186
|
mediaRecorderRef.current.stop();
|
|
186
187
|
}
|
|
188
|
+
mediaRecorderCleanupRef.current?.();
|
|
187
189
|
if (streamRef.current) {
|
|
188
190
|
for (const track of streamRef.current.getTracks()) {
|
|
189
191
|
track.stop();
|
|
@@ -216,6 +218,7 @@ export const SpeechInput = ({
|
|
|
216
218
|
track.stop();
|
|
217
219
|
}
|
|
218
220
|
streamRef.current = null;
|
|
221
|
+
cleanupMediaRecorder();
|
|
219
222
|
|
|
220
223
|
const audioBlob = new Blob(audioChunksRef.current, {
|
|
221
224
|
type: "audio/webm",
|
|
@@ -242,6 +245,19 @@ export const SpeechInput = ({
|
|
|
242
245
|
track.stop();
|
|
243
246
|
}
|
|
244
247
|
streamRef.current = null;
|
|
248
|
+
cleanupMediaRecorder();
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
const cleanupMediaRecorder = () => {
|
|
252
|
+
mediaRecorder.removeEventListener("dataavailable", handleDataAvailable);
|
|
253
|
+
mediaRecorder.removeEventListener("stop", handleStop);
|
|
254
|
+
mediaRecorder.removeEventListener("error", handleError);
|
|
255
|
+
if (mediaRecorderRef.current === mediaRecorder) {
|
|
256
|
+
mediaRecorderRef.current = null;
|
|
257
|
+
}
|
|
258
|
+
if (mediaRecorderCleanupRef.current === cleanupMediaRecorder) {
|
|
259
|
+
mediaRecorderCleanupRef.current = null;
|
|
260
|
+
}
|
|
245
261
|
};
|
|
246
262
|
|
|
247
263
|
mediaRecorder.addEventListener("dataavailable", handleDataAvailable);
|
|
@@ -249,6 +265,7 @@ export const SpeechInput = ({
|
|
|
249
265
|
mediaRecorder.addEventListener("error", handleError);
|
|
250
266
|
|
|
251
267
|
mediaRecorderRef.current = mediaRecorder;
|
|
268
|
+
mediaRecorderCleanupRef.current = cleanupMediaRecorder;
|
|
252
269
|
mediaRecorder.start();
|
|
253
270
|
setIsListening(true);
|
|
254
271
|
} catch {
|
|
@@ -197,7 +197,7 @@ export const StackTrace = memo(
|
|
|
197
197
|
<StackTraceContext.Provider value={contextValue}>
|
|
198
198
|
<div
|
|
199
199
|
className={cn(
|
|
200
|
-
"not-prose w-full overflow-hidden rounded-lg border bg-background font-mono text-
|
|
200
|
+
"not-prose w-full overflow-hidden rounded-lg border bg-background font-mono text-base",
|
|
201
201
|
className
|
|
202
202
|
)}
|
|
203
203
|
{...props}
|
|
@@ -31,7 +31,7 @@ export const TaskItemFile = ({
|
|
|
31
31
|
export type TaskItemProps = ComponentProps<"div">;
|
|
32
32
|
|
|
33
33
|
export const TaskItem = ({ children, className, ...props }: TaskItemProps) => (
|
|
34
|
-
<div className={cn("text-muted-foreground text-
|
|
34
|
+
<div className={cn("text-muted-foreground text-base", className)} {...props}>
|
|
35
35
|
{children}
|
|
36
36
|
</div>
|
|
37
37
|
);
|
|
@@ -58,9 +58,9 @@ export const TaskTrigger = ({
|
|
|
58
58
|
}: TaskTriggerProps) => (
|
|
59
59
|
<CollapsibleTrigger asChild className={cn("group", className)} {...props}>
|
|
60
60
|
{children ?? (
|
|
61
|
-
<div className="flex w-full cursor-pointer items-center gap-2 text-muted-foreground text-
|
|
61
|
+
<div className="flex w-full cursor-pointer items-center gap-2 text-muted-foreground text-base transition-colors hover:text-foreground">
|
|
62
62
|
<SearchIcon className="size-4" />
|
|
63
|
-
<p className="text-
|
|
63
|
+
<p className="text-base">{title}</p>
|
|
64
64
|
<ChevronDownIcon className="size-4 transition-transform group-data-[state=open]:rotate-180" />
|
|
65
65
|
</div>
|
|
66
66
|
)}
|
|
@@ -107,7 +107,7 @@ export const TerminalTitle = ({
|
|
|
107
107
|
...props
|
|
108
108
|
}: TerminalTitleProps) => (
|
|
109
109
|
<div
|
|
110
|
-
className={cn("flex items-center gap-2 text-
|
|
110
|
+
className={cn("flex items-center gap-2 text-base text-zinc-400", className)}
|
|
111
111
|
{...props}
|
|
112
112
|
>
|
|
113
113
|
<TerminalIcon className="size-4" />
|
|
@@ -258,7 +258,7 @@ export const TerminalContent = ({
|
|
|
258
258
|
return (
|
|
259
259
|
<div
|
|
260
260
|
className={cn(
|
|
261
|
-
"max-h-96 overflow-auto p-4 font-mono text-
|
|
261
|
+
"max-h-96 overflow-auto p-4 font-mono text-base leading-relaxed",
|
|
262
262
|
className
|
|
263
263
|
)}
|
|
264
264
|
ref={containerRef}
|
|
@@ -151,7 +151,7 @@ export const TestResultsDuration = ({
|
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
return (
|
|
154
|
-
<span className={cn("text-muted-foreground text-
|
|
154
|
+
<span className={cn("text-muted-foreground text-base", className)} {...props}>
|
|
155
155
|
{children ?? formatDuration(summary.duration)}
|
|
156
156
|
</span>
|
|
157
157
|
);
|
|
@@ -263,7 +263,7 @@ export const TestSuiteName = ({
|
|
|
263
263
|
>
|
|
264
264
|
<ChevronRightIcon className="size-4 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90" />
|
|
265
265
|
<TestStatusIcon status={status} />
|
|
266
|
-
<span className="font-medium text-
|
|
266
|
+
<span className="font-medium text-base">{children ?? name}</span>
|
|
267
267
|
</CollapsibleTrigger>
|
|
268
268
|
);
|
|
269
269
|
};
|
|
@@ -353,7 +353,7 @@ export const Test = ({
|
|
|
353
353
|
return (
|
|
354
354
|
<TestContext.Provider value={contextValue}>
|
|
355
355
|
<div
|
|
356
|
-
className={cn("flex items-center gap-2 px-4 py-2 text-
|
|
356
|
+
className={cn("flex items-center gap-2 px-4 py-2 text-base", className)}
|
|
357
357
|
{...props}
|
|
358
358
|
>
|
|
359
359
|
{children ?? (
|
|
@@ -469,7 +469,7 @@ export const TestErrorMessage = ({
|
|
|
469
469
|
}: TestErrorMessageProps) => (
|
|
470
470
|
<p
|
|
471
471
|
className={cn(
|
|
472
|
-
"font-medium text-red-700 text-
|
|
472
|
+
"font-medium text-red-700 text-base dark:text-red-400",
|
|
473
473
|
className
|
|
474
474
|
)}
|
|
475
475
|
{...props}
|
|
@@ -92,7 +92,7 @@ export const ToolHeader = ({
|
|
|
92
92
|
{...props}
|
|
93
93
|
>
|
|
94
94
|
<div className="flex items-center gap-2">
|
|
95
|
-
<WrenchIcon className="size-
|
|
95
|
+
<WrenchIcon className="size-3.5 text-muted-foreground" />
|
|
96
96
|
<span className="font-medium text-sm">{title ?? derivedName}</span>
|
|
97
97
|
{getStatusBadge(state)}
|
|
98
98
|
</div>
|
|
@@ -123,7 +123,7 @@ export const ToolInput = ({ className, input, ...props }: ToolInputProps) => (
|
|
|
123
123
|
Parameters
|
|
124
124
|
</h4>
|
|
125
125
|
<div className="rounded-md bg-muted/50">
|
|
126
|
-
<CodeBlock code={JSON.stringify(input, null, 2)} language="json" />
|
|
126
|
+
<CodeBlock className="text-sm" code={JSON.stringify(input, null, 2)} language="json" />
|
|
127
127
|
</div>
|
|
128
128
|
</div>
|
|
129
129
|
);
|
|
@@ -147,10 +147,10 @@ export const ToolOutput = ({
|
|
|
147
147
|
|
|
148
148
|
if (typeof output === "object" && !isValidElement(output)) {
|
|
149
149
|
Output = (
|
|
150
|
-
<CodeBlock code={JSON.stringify(output, null, 2)} language="json" />
|
|
150
|
+
<CodeBlock className="text-sm" code={JSON.stringify(output, null, 2)} language="json" />
|
|
151
151
|
);
|
|
152
152
|
} else if (typeof output === "string") {
|
|
153
|
-
Output = <CodeBlock code={output} language="json" />;
|
|
153
|
+
Output = <CodeBlock className="text-sm" code={output} language="json" />;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
return (
|
|
@@ -60,7 +60,7 @@ export const Transcription = ({
|
|
|
60
60
|
<TranscriptionContext.Provider value={contextValue}>
|
|
61
61
|
<div
|
|
62
62
|
className={cn(
|
|
63
|
-
"flex flex-wrap gap-1 text-
|
|
63
|
+
"flex flex-wrap gap-1 text-base leading-relaxed",
|
|
64
64
|
className
|
|
65
65
|
)}
|
|
66
66
|
data-slot="transcription"
|
|
@@ -173,7 +173,7 @@ export const WebPreviewUrl = ({
|
|
|
173
173
|
|
|
174
174
|
return (
|
|
175
175
|
<Input
|
|
176
|
-
className="h-8 flex-1 text-
|
|
176
|
+
className="h-8 flex-1 text-base"
|
|
177
177
|
onChange={onChange ?? handleChange}
|
|
178
178
|
onKeyDown={handleKeyDown}
|
|
179
179
|
placeholder="Enter URL..."
|
|
@@ -227,7 +227,7 @@ export const WebPreviewConsole = ({
|
|
|
227
227
|
|
|
228
228
|
return (
|
|
229
229
|
<Collapsible
|
|
230
|
-
className={cn("border-t bg-muted/50 font-mono text-
|
|
230
|
+
className={cn("border-t bg-muted/50 font-mono text-base", className)}
|
|
231
231
|
onOpenChange={setConsoleOpen}
|
|
232
232
|
open={consoleOpen}
|
|
233
233
|
{...props}
|
|
@@ -53,7 +53,7 @@ export function CapabilitySection<TItem extends ContextToolInfo | ContextSkillIn
|
|
|
53
53
|
<div className="space-y-1">
|
|
54
54
|
{items.length > 0 && (
|
|
55
55
|
<div className="mb-1 flex items-center justify-between rounded-md border-b border-border/20 px-2 pb-2">
|
|
56
|
-
<span className="text-
|
|
56
|
+
<span className="text-sm font-medium text-[var(--text-secondary)]">
|
|
57
57
|
{includeAllLabel}
|
|
58
58
|
</span>
|
|
59
59
|
<Switch
|
|
@@ -75,7 +75,7 @@ export function CapabilitySection<TItem extends ContextToolInfo | ContextSkillIn
|
|
|
75
75
|
))}
|
|
76
76
|
|
|
77
77
|
{items.length === 0 && (
|
|
78
|
-
<span className="text-
|
|
78
|
+
<span className="text-sm italic text-[var(--text-muted)]">
|
|
79
79
|
{emptyLabel}
|
|
80
80
|
</span>
|
|
81
81
|
)}
|
|
@@ -81,7 +81,7 @@ export function ContextEditor({
|
|
|
81
81
|
showCloseButton
|
|
82
82
|
>
|
|
83
83
|
<DialogHeader>
|
|
84
|
-
<DialogTitle className="flex items-center gap-2 text-
|
|
84
|
+
<DialogTitle className="flex items-center gap-2 text-base">
|
|
85
85
|
<Settings2 className="size-4 text-[var(--text-muted)]" />
|
|
86
86
|
{title}
|
|
87
87
|
</DialogTitle>
|
|
@@ -113,7 +113,7 @@ export function ContextEditor({
|
|
|
113
113
|
{applyError && (
|
|
114
114
|
<div className="flex items-start gap-2 rounded-md border border-status-error-border bg-status-error-muted px-3 py-2">
|
|
115
115
|
<AlertCircle className="mt-0.5 size-3.5 shrink-0 text-status-error" />
|
|
116
|
-
<span className="text-
|
|
116
|
+
<span className="text-sm text-status-error">{applyError}</span>
|
|
117
117
|
</div>
|
|
118
118
|
)}
|
|
119
119
|
|
|
@@ -39,7 +39,7 @@ export function PresetBar({
|
|
|
39
39
|
return (
|
|
40
40
|
<>
|
|
41
41
|
<div className="flex items-center gap-2">
|
|
42
|
-
<span className="text-
|
|
42
|
+
<span className="text-sm font-medium text-[var(--text-muted)]">
|
|
43
43
|
Preset:
|
|
44
44
|
</span>
|
|
45
45
|
<Select value={activePresetId ?? ''} onValueChange={onPresetChange}>
|
|
@@ -68,7 +68,7 @@ export function PresetBar({
|
|
|
68
68
|
{!showSaveInput && (
|
|
69
69
|
<button type="button"
|
|
70
70
|
onClick={onShowSave}
|
|
71
|
-
className="flex items-center gap-1 rounded-md px-2 py-1 text-
|
|
71
|
+
className="flex items-center gap-1 rounded-md px-2 py-1 text-sm text-[var(--text-muted)] transition-colors hover:bg-[var(--bg-elevated)] hover:text-[var(--text-secondary)]"
|
|
72
72
|
>
|
|
73
73
|
<Save className="size-3" />
|
|
74
74
|
Save as
|
|
@@ -78,7 +78,7 @@ export function PresetBar({
|
|
|
78
78
|
{hasOverrides && (
|
|
79
79
|
<button type="button"
|
|
80
80
|
onClick={onReset}
|
|
81
|
-
className="ml-auto flex items-center gap-1 rounded-md px-2 py-1 text-
|
|
81
|
+
className="ml-auto flex items-center gap-1 rounded-md px-2 py-1 text-sm text-[var(--text-muted)] transition-colors hover:bg-[var(--bg-elevated)] hover:text-[var(--text-secondary)]"
|
|
82
82
|
>
|
|
83
83
|
<RotateCcw className="size-3" />
|
|
84
84
|
Reset
|
|
@@ -59,7 +59,7 @@ export function SystemPromptSection({
|
|
|
59
59
|
>
|
|
60
60
|
<div className="space-y-2">
|
|
61
61
|
<div className="flex items-center justify-between">
|
|
62
|
-
<span className="text-
|
|
62
|
+
<span className="text-sm text-[var(--text-muted)]">
|
|
63
63
|
{systemPrompt === null
|
|
64
64
|
? c.defaultHint
|
|
65
65
|
: systemPrompt === ''
|
|
@@ -69,7 +69,7 @@ export function SystemPromptSection({
|
|
|
69
69
|
{systemPrompt !== null && (
|
|
70
70
|
<button type="button"
|
|
71
71
|
onClick={() => onSystemPromptChange(null)}
|
|
72
|
-
className="text-
|
|
72
|
+
className="text-sm text-[var(--text-muted)] transition-colors hover:text-[var(--text-secondary)]"
|
|
73
73
|
>
|
|
74
74
|
Reset to default
|
|
75
75
|
</button>
|
|
@@ -78,10 +78,10 @@ export function SystemPromptSection({
|
|
|
78
78
|
<textarea aria-label="System prompt"
|
|
79
79
|
value={displayedPrompt}
|
|
80
80
|
onChange={(event) => onSystemPromptChange(event.target.value)}
|
|
81
|
-
className="h-80 w-full resize-y rounded-md border border-border/30 bg-[var(--bg-base)] p-2 font-mono text-
|
|
81
|
+
className="h-80 w-full resize-y rounded-md border border-border/30 bg-[var(--bg-base)] p-2 font-mono text-sm text-[var(--text-secondary)] placeholder:text-[var(--text-muted)] outline-none focus:border-[var(--accent-primary)]"
|
|
82
82
|
placeholder={c.placeholder}
|
|
83
83
|
/>
|
|
84
|
-
<p className="text-
|
|
84
|
+
<p className="text-sm text-[var(--text-muted)]">{c.footnote}</p>
|
|
85
85
|
</div>
|
|
86
86
|
</ContextSection>
|
|
87
87
|
);
|
|
@@ -94,7 +94,7 @@ export function ContextSection({
|
|
|
94
94
|
</span>
|
|
95
95
|
|
|
96
96
|
{count !== undefined && (
|
|
97
|
-
<span className="text-
|
|
97
|
+
<span className="text-sm text-[var(--text-muted)]">
|
|
98
98
|
({count})
|
|
99
99
|
</span>
|
|
100
100
|
)}
|
|
@@ -102,7 +102,7 @@ export function ContextSection({
|
|
|
102
102
|
{badge && (
|
|
103
103
|
<span
|
|
104
104
|
className={cn(
|
|
105
|
-
'ml-auto rounded-full px-2 py-0.5 text-
|
|
105
|
+
'ml-auto rounded-full px-2 py-0.5 text-sm font-medium',
|
|
106
106
|
badgeClass[badgeVariant],
|
|
107
107
|
)}
|
|
108
108
|
>
|
|
@@ -154,13 +154,13 @@ export function ToggleRow({
|
|
|
154
154
|
>
|
|
155
155
|
<div className="min-w-0 flex-1">
|
|
156
156
|
<div className={cn(
|
|
157
|
-
'text-
|
|
157
|
+
'text-sm font-medium',
|
|
158
158
|
enabled ? 'text-[var(--text-secondary)]' : 'text-[var(--text-muted)]',
|
|
159
159
|
)}>
|
|
160
160
|
{name}
|
|
161
161
|
</div>
|
|
162
162
|
{description && (
|
|
163
|
-
<div className="mt-0.5 text-
|
|
163
|
+
<div className="mt-0.5 text-sm leading-snug text-[var(--text-muted)]/60">
|
|
164
164
|
{description}
|
|
165
165
|
</div>
|
|
166
166
|
)}
|
|
@@ -202,13 +202,13 @@ export function SavePresetInput({
|
|
|
202
202
|
<button type="button"
|
|
203
203
|
onClick={() => name.trim() && onSave(name.trim())}
|
|
204
204
|
disabled={!name.trim()}
|
|
205
|
-
className="rounded-md bg-[var(--accent-primary)] px-2 py-1 text-
|
|
205
|
+
className="rounded-md bg-[var(--accent-primary)] px-2 py-1 text-sm font-medium text-white disabled:opacity-50"
|
|
206
206
|
>
|
|
207
207
|
Save
|
|
208
208
|
</button>
|
|
209
209
|
<button type="button"
|
|
210
210
|
onClick={onCancel}
|
|
211
|
-
className="text-
|
|
211
|
+
className="text-sm text-[var(--text-muted)] hover:text-[var(--text-secondary)]"
|
|
212
212
|
>
|
|
213
213
|
Cancel
|
|
214
214
|
</button>
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
// Catalogue integrity — keeps the
|
|
1
|
+
// Catalogue integrity — keeps the JSON catalogue honest against the exports.
|
|
2
2
|
|
|
3
3
|
import { describe, expect, it } from "vitest";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import type { DashboardComponentCatalogEntry } from "../catalog";
|
|
6
|
+
import catalogJson from "../catalog.json";
|
|
6
7
|
import * as dashboard from "../index";
|
|
7
8
|
|
|
9
|
+
// The JSON is the source of truth. JSON imports widen literal unions to
|
|
10
|
+
// `string`, so assert the authored entry shape for the checks below.
|
|
11
|
+
const dashboardComponentCatalog = catalogJson as DashboardComponentCatalogEntry[];
|
|
12
|
+
|
|
8
13
|
// Reused primitives live in other component folders, not the dashboard barrel.
|
|
9
14
|
const REUSED_PRIMITIVES = new Set(["Badge", "Alert", "Button", "Skeleton"]);
|
|
10
15
|
|