@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
|
@@ -35,7 +35,7 @@ function ItemListItem({
|
|
|
35
35
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _item.ItemTitle, { className: "truncate text-xs font-medium text-[var(--text-primary)]", children: primary }),
|
|
36
36
|
secondary && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _item.ItemDescription, { className: "line-clamp-1 text-xs text-[var(--text-muted)]", children: secondary })
|
|
37
37
|
] }),
|
|
38
|
-
trailing && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0 text-
|
|
38
|
+
trailing && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0 text-sm tabular-nums text-[var(--text-muted)]", children: trailing }),
|
|
39
39
|
actions && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _item.ItemActions, { children: actions })
|
|
40
40
|
]
|
|
41
41
|
}
|
|
@@ -56,7 +56,7 @@ function ItemList({
|
|
|
56
56
|
...props,
|
|
57
57
|
children: [
|
|
58
58
|
children,
|
|
59
|
-
overflowCount > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "px-2 text-
|
|
59
|
+
overflowCount > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "px-2 text-sm text-[var(--text-muted)]", children: [
|
|
60
60
|
"+",
|
|
61
61
|
overflowCount,
|
|
62
62
|
" more"
|
|
@@ -35,7 +35,7 @@ function ItemListItem({
|
|
|
35
35
|
/* @__PURE__ */ jsx(ItemTitle, { className: "truncate text-xs font-medium text-[var(--text-primary)]", children: primary }),
|
|
36
36
|
secondary && /* @__PURE__ */ jsx(ItemDescription, { className: "line-clamp-1 text-xs text-[var(--text-muted)]", children: secondary })
|
|
37
37
|
] }),
|
|
38
|
-
trailing && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
38
|
+
trailing && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm tabular-nums text-[var(--text-muted)]", children: trailing }),
|
|
39
39
|
actions && /* @__PURE__ */ jsx(ItemActions, { children: actions })
|
|
40
40
|
]
|
|
41
41
|
}
|
|
@@ -56,7 +56,7 @@ function ItemList({
|
|
|
56
56
|
...props,
|
|
57
57
|
children: [
|
|
58
58
|
children,
|
|
59
|
-
overflowCount > 0 && /* @__PURE__ */ jsxs("span", { className: "px-2 text-
|
|
59
|
+
overflowCount > 0 && /* @__PURE__ */ jsxs("span", { className: "px-2 text-sm text-[var(--text-muted)]", children: [
|
|
60
60
|
"+",
|
|
61
61
|
overflowCount,
|
|
62
62
|
" more"
|
|
@@ -153,7 +153,7 @@ function Section({
|
|
|
153
153
|
children: [
|
|
154
154
|
(heading || action) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-2", children: [
|
|
155
155
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col gap-0.5", children: [
|
|
156
|
-
heading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "truncate text-
|
|
156
|
+
heading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "truncate text-sm font-semibold uppercase tracking-wider text-[var(--text-muted)]", children: heading }),
|
|
157
157
|
description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-xs text-[var(--text-muted)]", children: description })
|
|
158
158
|
] }),
|
|
159
159
|
action && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: action })
|
|
@@ -153,7 +153,7 @@ function Section({
|
|
|
153
153
|
children: [
|
|
154
154
|
(heading || action) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
155
155
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [
|
|
156
|
-
heading && /* @__PURE__ */ jsx("h3", { className: "truncate text-
|
|
156
|
+
heading && /* @__PURE__ */ jsx("h3", { className: "truncate text-sm font-semibold uppercase tracking-wider text-[var(--text-muted)]", children: heading }),
|
|
157
157
|
description && /* @__PURE__ */ jsx("p", { className: "truncate text-xs text-[var(--text-muted)]", children: description })
|
|
158
158
|
] }),
|
|
159
159
|
action && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: action })
|
|
@@ -34,7 +34,7 @@ function Metric({
|
|
|
34
34
|
children: [
|
|
35
35
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-1.5", children: [
|
|
36
36
|
icon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _typography.Icon, { icon, size: "sm" }),
|
|
37
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-
|
|
37
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-sm font-medium uppercase tracking-wide text-[var(--text-muted)]", children: label })
|
|
38
38
|
] }),
|
|
39
39
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-baseline gap-1.5", children: [
|
|
40
40
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -34,7 +34,7 @@ function Metric({
|
|
|
34
34
|
children: [
|
|
35
35
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
36
36
|
icon && /* @__PURE__ */ jsx(Icon, { icon, size: "sm" }),
|
|
37
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
37
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm font-medium uppercase tracking-wide text-[var(--text-muted)]", children: label })
|
|
38
38
|
] }),
|
|
39
39
|
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-1.5", children: [
|
|
40
40
|
/* @__PURE__ */ jsx(
|
|
@@ -15,7 +15,7 @@ function StaleIndicator({
|
|
|
15
15
|
{
|
|
16
16
|
"data-slot": "stale-indicator",
|
|
17
17
|
className: _utils.cn.call(void 0,
|
|
18
|
-
"flex items-center gap-1.5 text-
|
|
18
|
+
"flex items-center gap-1.5 text-sm text-[var(--text-muted)]",
|
|
19
19
|
className
|
|
20
20
|
),
|
|
21
21
|
...props,
|
|
@@ -10,6 +10,8 @@ function Status({
|
|
|
10
10
|
...props
|
|
11
11
|
}) {
|
|
12
12
|
const hasLabel = children != null && children !== "";
|
|
13
|
+
const hasAccessibleName = props["aria-label"] != null || props["aria-labelledby"] != null;
|
|
14
|
+
const hiddenLabel = !hasLabel && !hasAccessibleName ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", children: _tone.toneLabel[tone] }) : null;
|
|
13
15
|
if (variant === "pill") {
|
|
14
16
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
15
17
|
"span",
|
|
@@ -24,7 +26,8 @@ function Status({
|
|
|
24
26
|
...props,
|
|
25
27
|
children: [
|
|
26
28
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _utils.cn.call(void 0, "size-1.5 shrink-0 rounded-full", _tone.toneDot[tone]) }),
|
|
27
|
-
children
|
|
29
|
+
children,
|
|
30
|
+
hiddenLabel
|
|
28
31
|
]
|
|
29
32
|
}
|
|
30
33
|
);
|
|
@@ -52,7 +55,8 @@ function Status({
|
|
|
52
55
|
)
|
|
53
56
|
}
|
|
54
57
|
),
|
|
55
|
-
children
|
|
58
|
+
children,
|
|
59
|
+
hiddenLabel
|
|
56
60
|
]
|
|
57
61
|
}
|
|
58
62
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../../lib/utils";
|
|
3
|
-
import { toneColor, toneDot, tonePill } from "./tone";
|
|
3
|
+
import { toneColor, toneDot, toneLabel, tonePill } from "./tone";
|
|
4
4
|
function Status({
|
|
5
5
|
className,
|
|
6
6
|
tone = "neutral",
|
|
@@ -10,6 +10,8 @@ function Status({
|
|
|
10
10
|
...props
|
|
11
11
|
}) {
|
|
12
12
|
const hasLabel = children != null && children !== "";
|
|
13
|
+
const hasAccessibleName = props["aria-label"] != null || props["aria-labelledby"] != null;
|
|
14
|
+
const hiddenLabel = !hasLabel && !hasAccessibleName ? /* @__PURE__ */ jsx("span", { className: "sr-only", children: toneLabel[tone] }) : null;
|
|
13
15
|
if (variant === "pill") {
|
|
14
16
|
return /* @__PURE__ */ jsxs(
|
|
15
17
|
"span",
|
|
@@ -24,7 +26,8 @@ function Status({
|
|
|
24
26
|
...props,
|
|
25
27
|
children: [
|
|
26
28
|
/* @__PURE__ */ jsx("span", { className: cn("size-1.5 shrink-0 rounded-full", toneDot[tone]) }),
|
|
27
|
-
children
|
|
29
|
+
children,
|
|
30
|
+
hiddenLabel
|
|
28
31
|
]
|
|
29
32
|
}
|
|
30
33
|
);
|
|
@@ -52,7 +55,8 @@ function Status({
|
|
|
52
55
|
)
|
|
53
56
|
}
|
|
54
57
|
),
|
|
55
|
-
children
|
|
58
|
+
children,
|
|
59
|
+
hiddenLabel
|
|
56
60
|
]
|
|
57
61
|
}
|
|
58
62
|
);
|
|
@@ -12,6 +12,13 @@ const toneDot = {
|
|
|
12
12
|
error: "bg-[var(--status-error)]",
|
|
13
13
|
info: "bg-[var(--status-info)]"
|
|
14
14
|
};
|
|
15
|
+
const toneLabel = {
|
|
16
|
+
neutral: "Neutral",
|
|
17
|
+
success: "Success",
|
|
18
|
+
warning: "Warning",
|
|
19
|
+
error: "Error",
|
|
20
|
+
info: "Info"
|
|
21
|
+
};
|
|
15
22
|
const tonePill = {
|
|
16
23
|
neutral: "bg-[var(--surface-flat)] text-[var(--text-secondary)]",
|
|
17
24
|
success: "bg-[var(--status-success-muted)] text-[var(--status-success)]",
|
|
@@ -23,4 +30,5 @@ const tonePill = {
|
|
|
23
30
|
|
|
24
31
|
|
|
25
32
|
|
|
26
|
-
|
|
33
|
+
|
|
34
|
+
exports.toneColor = toneColor; exports.toneDot = toneDot; exports.toneLabel = toneLabel; exports.tonePill = tonePill;
|
|
@@ -3,7 +3,13 @@ type Tone = "neutral" | "success" | "warning" | "error" | "info";
|
|
|
3
3
|
declare const toneColor: Record<Tone, string>;
|
|
4
4
|
/** Solid background colour for a tone (status dots). */
|
|
5
5
|
declare const toneDot: Record<Tone, string>;
|
|
6
|
+
/**
|
|
7
|
+
* Default accessible name for a tone, used as the text alternative when a
|
|
8
|
+
* status indicator carries no visible label. Generic by design — callers with
|
|
9
|
+
* a domain-specific meaning should pass their own `aria-label`.
|
|
10
|
+
*/
|
|
11
|
+
declare const toneLabel: Record<Tone, string>;
|
|
6
12
|
/** Muted tinted background + matching text for a tone (pills, chips). */
|
|
7
13
|
declare const tonePill: Record<Tone, string>;
|
|
8
14
|
|
|
9
|
-
export { type Tone, toneColor, toneDot, tonePill };
|
|
15
|
+
export { type Tone, toneColor, toneDot, toneLabel, tonePill };
|
|
@@ -3,7 +3,13 @@ type Tone = "neutral" | "success" | "warning" | "error" | "info";
|
|
|
3
3
|
declare const toneColor: Record<Tone, string>;
|
|
4
4
|
/** Solid background colour for a tone (status dots). */
|
|
5
5
|
declare const toneDot: Record<Tone, string>;
|
|
6
|
+
/**
|
|
7
|
+
* Default accessible name for a tone, used as the text alternative when a
|
|
8
|
+
* status indicator carries no visible label. Generic by design — callers with
|
|
9
|
+
* a domain-specific meaning should pass their own `aria-label`.
|
|
10
|
+
*/
|
|
11
|
+
declare const toneLabel: Record<Tone, string>;
|
|
6
12
|
/** Muted tinted background + matching text for a tone (pills, chips). */
|
|
7
13
|
declare const tonePill: Record<Tone, string>;
|
|
8
14
|
|
|
9
|
-
export { type Tone, toneColor, toneDot, tonePill };
|
|
15
|
+
export { type Tone, toneColor, toneDot, toneLabel, tonePill };
|
|
@@ -12,6 +12,13 @@ const toneDot = {
|
|
|
12
12
|
error: "bg-[var(--status-error)]",
|
|
13
13
|
info: "bg-[var(--status-info)]"
|
|
14
14
|
};
|
|
15
|
+
const toneLabel = {
|
|
16
|
+
neutral: "Neutral",
|
|
17
|
+
success: "Success",
|
|
18
|
+
warning: "Warning",
|
|
19
|
+
error: "Error",
|
|
20
|
+
info: "Info"
|
|
21
|
+
};
|
|
15
22
|
const tonePill = {
|
|
16
23
|
neutral: "bg-[var(--surface-flat)] text-[var(--text-secondary)]",
|
|
17
24
|
success: "bg-[var(--status-success-muted)] text-[var(--status-success)]",
|
|
@@ -22,5 +29,6 @@ const tonePill = {
|
|
|
22
29
|
export {
|
|
23
30
|
toneColor,
|
|
24
31
|
toneDot,
|
|
32
|
+
toneLabel,
|
|
25
33
|
tonePill
|
|
26
34
|
};
|
|
@@ -5,11 +5,11 @@ var _tone = require('./tone');
|
|
|
5
5
|
const textVariants = _classvarianceauthority.cva.call(void 0, "min-w-0", {
|
|
6
6
|
variants: {
|
|
7
7
|
variant: {
|
|
8
|
-
body: "text-
|
|
9
|
-
label: "text-
|
|
8
|
+
body: "text-base text-[var(--text-primary)]",
|
|
9
|
+
label: "text-sm font-semibold uppercase tracking-wider text-[var(--text-muted)]",
|
|
10
10
|
supporting: "text-xs text-[var(--text-secondary)]",
|
|
11
11
|
muted: "text-xs text-[var(--text-muted)]",
|
|
12
|
-
numeric: "text-
|
|
12
|
+
numeric: "text-base font-semibold tabular-nums text-[var(--text-primary)]"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
defaultVariants: { variant: "body" }
|
|
@@ -43,7 +43,7 @@ function Text({
|
|
|
43
43
|
}
|
|
44
44
|
const headingSize = {
|
|
45
45
|
sm: "text-xs font-semibold",
|
|
46
|
-
md: "text-
|
|
46
|
+
md: "text-base font-semibold",
|
|
47
47
|
lg: "text-base font-semibold"
|
|
48
48
|
};
|
|
49
49
|
function Heading({
|
|
@@ -20,7 +20,7 @@ interface TextProps extends Omit<React.ComponentProps<"span">, "color">, Variant
|
|
|
20
20
|
declare function Text({ className, variant, truncate, clamp, tone, ...props }: TextProps): react_jsx_runtime.JSX.Element;
|
|
21
21
|
declare const headingSize: {
|
|
22
22
|
readonly sm: "text-xs font-semibold";
|
|
23
|
-
readonly md: "text-
|
|
23
|
+
readonly md: "text-base font-semibold";
|
|
24
24
|
readonly lg: "text-base font-semibold";
|
|
25
25
|
};
|
|
26
26
|
interface HeadingProps extends React.ComponentProps<"h2"> {
|
|
@@ -20,7 +20,7 @@ interface TextProps extends Omit<React.ComponentProps<"span">, "color">, Variant
|
|
|
20
20
|
declare function Text({ className, variant, truncate, clamp, tone, ...props }: TextProps): react_jsx_runtime.JSX.Element;
|
|
21
21
|
declare const headingSize: {
|
|
22
22
|
readonly sm: "text-xs font-semibold";
|
|
23
|
-
readonly md: "text-
|
|
23
|
+
readonly md: "text-base font-semibold";
|
|
24
24
|
readonly lg: "text-base font-semibold";
|
|
25
25
|
};
|
|
26
26
|
interface HeadingProps extends React.ComponentProps<"h2"> {
|
|
@@ -5,11 +5,11 @@ import { toneColor } from "./tone";
|
|
|
5
5
|
const textVariants = cva("min-w-0", {
|
|
6
6
|
variants: {
|
|
7
7
|
variant: {
|
|
8
|
-
body: "text-
|
|
9
|
-
label: "text-
|
|
8
|
+
body: "text-base text-[var(--text-primary)]",
|
|
9
|
+
label: "text-sm font-semibold uppercase tracking-wider text-[var(--text-muted)]",
|
|
10
10
|
supporting: "text-xs text-[var(--text-secondary)]",
|
|
11
11
|
muted: "text-xs text-[var(--text-muted)]",
|
|
12
|
-
numeric: "text-
|
|
12
|
+
numeric: "text-base font-semibold tabular-nums text-[var(--text-primary)]"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
defaultVariants: { variant: "body" }
|
|
@@ -43,7 +43,7 @@ function Text({
|
|
|
43
43
|
}
|
|
44
44
|
const headingSize = {
|
|
45
45
|
sm: "text-xs font-semibold",
|
|
46
|
-
md: "text-
|
|
46
|
+
md: "text-base font-semibold",
|
|
47
47
|
lg: "text-base font-semibold"
|
|
48
48
|
};
|
|
49
49
|
function Heading({
|
|
@@ -71,7 +71,7 @@ function AvailableModelPicker({
|
|
|
71
71
|
role: "button",
|
|
72
72
|
tabIndex: disabled ? -1 : 0,
|
|
73
73
|
className: _utils.cn.call(void 0,
|
|
74
|
-
"flex w-full items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-left text-
|
|
74
|
+
"flex w-full items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-left text-base transition-colors",
|
|
75
75
|
"hover:bg-secondary/50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
76
76
|
disabled && "cursor-not-allowed opacity-50",
|
|
77
77
|
className
|
|
@@ -91,9 +91,9 @@ function AvailableModelPicker({
|
|
|
91
91
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate font-medium text-foreground", children: selected.model.name }),
|
|
92
92
|
selected.model.reasoning ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Sparkles, { className: "size-3 shrink-0 text-amber-500/70" }) : null
|
|
93
93
|
] }),
|
|
94
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "truncate text-
|
|
94
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "truncate text-sm text-muted-foreground", children: selected.group.displayName })
|
|
95
95
|
] })
|
|
96
|
-
] }) : selected.fallbackLabel ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 flex-1 truncate font-mono text-
|
|
96
|
+
] }) : selected.fallbackLabel ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 flex-1 truncate font-mono text-sm text-muted-foreground", children: selected.fallbackLabel }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 flex-1 truncate text-muted-foreground", children: placeholder }),
|
|
97
97
|
allowClear && value ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
98
98
|
"button",
|
|
99
99
|
{
|
|
@@ -127,7 +127,7 @@ function AvailableModelPicker({
|
|
|
127
127
|
containerClassName: "border-b border-border/40"
|
|
128
128
|
}
|
|
129
129
|
),
|
|
130
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-h-[280px] overflow-y-auto py-1", children: groups.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-3 py-4 text-center text-
|
|
130
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-h-[280px] overflow-y-auto py-1", children: groups.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-3 py-4 text-center text-sm text-muted-foreground", children: noModelsLabel }) : totalResults === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-3 py-4 text-center text-sm text-muted-foreground", children: emptyLabel }) : filteredGroups.map((group, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
|
|
131
131
|
index > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mx-3 border-t border-border/30" }) : null,
|
|
132
132
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 px-3 pb-1 pt-2", children: [
|
|
133
133
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -138,7 +138,7 @@ function AvailableModelPicker({
|
|
|
138
138
|
className: "size-3.5 shrink-0 rounded-sm dark:invert"
|
|
139
139
|
}
|
|
140
140
|
),
|
|
141
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-
|
|
141
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-semibold uppercase tracking-wider text-muted-foreground", children: group.displayName })
|
|
142
142
|
] }),
|
|
143
143
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-1", children: group.models.map((model) => {
|
|
144
144
|
const nextValue = _common.modelKey.call(void 0, model.provider, model.modelId);
|
|
@@ -149,7 +149,7 @@ function AvailableModelPicker({
|
|
|
149
149
|
type: "button",
|
|
150
150
|
onClick: () => handleSelect(model.provider, model.modelId),
|
|
151
151
|
className: _utils.cn.call(void 0,
|
|
152
|
-
"flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-left text-
|
|
152
|
+
"flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-left text-sm transition-colors",
|
|
153
153
|
isSelected ? "bg-secondary text-foreground" : "text-muted-foreground hover:bg-secondary/60 hover:text-foreground"
|
|
154
154
|
),
|
|
155
155
|
children: [
|
|
@@ -71,7 +71,7 @@ function AvailableModelPicker({
|
|
|
71
71
|
role: "button",
|
|
72
72
|
tabIndex: disabled ? -1 : 0,
|
|
73
73
|
className: cn(
|
|
74
|
-
"flex w-full items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-left text-
|
|
74
|
+
"flex w-full items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-left text-base transition-colors",
|
|
75
75
|
"hover:bg-secondary/50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
76
76
|
disabled && "cursor-not-allowed opacity-50",
|
|
77
77
|
className
|
|
@@ -91,9 +91,9 @@ function AvailableModelPicker({
|
|
|
91
91
|
/* @__PURE__ */ jsx("span", { className: "truncate font-medium text-foreground", children: selected.model.name }),
|
|
92
92
|
selected.model.reasoning ? /* @__PURE__ */ jsx(Sparkles, { className: "size-3 shrink-0 text-amber-500/70" }) : null
|
|
93
93
|
] }),
|
|
94
|
-
/* @__PURE__ */ jsx("div", { className: "truncate text-
|
|
94
|
+
/* @__PURE__ */ jsx("div", { className: "truncate text-sm text-muted-foreground", children: selected.group.displayName })
|
|
95
95
|
] })
|
|
96
|
-
] }) : selected.fallbackLabel ? /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-
|
|
96
|
+
] }) : selected.fallbackLabel ? /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-sm text-muted-foreground", children: selected.fallbackLabel }) : /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-muted-foreground", children: placeholder }),
|
|
97
97
|
allowClear && value ? /* @__PURE__ */ jsx(
|
|
98
98
|
"button",
|
|
99
99
|
{
|
|
@@ -127,7 +127,7 @@ function AvailableModelPicker({
|
|
|
127
127
|
containerClassName: "border-b border-border/40"
|
|
128
128
|
}
|
|
129
129
|
),
|
|
130
|
-
/* @__PURE__ */ jsx("div", { className: "max-h-[280px] overflow-y-auto py-1", children: groups.length === 0 ? /* @__PURE__ */ jsx("div", { className: "px-3 py-4 text-center text-
|
|
130
|
+
/* @__PURE__ */ jsx("div", { className: "max-h-[280px] overflow-y-auto py-1", children: groups.length === 0 ? /* @__PURE__ */ jsx("div", { className: "px-3 py-4 text-center text-sm text-muted-foreground", children: noModelsLabel }) : totalResults === 0 ? /* @__PURE__ */ jsx("div", { className: "px-3 py-4 text-center text-sm text-muted-foreground", children: emptyLabel }) : filteredGroups.map((group, index) => /* @__PURE__ */ jsxs("div", { children: [
|
|
131
131
|
index > 0 ? /* @__PURE__ */ jsx("div", { className: "mx-3 border-t border-border/30" }) : null,
|
|
132
132
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 pb-1 pt-2", children: [
|
|
133
133
|
/* @__PURE__ */ jsx(
|
|
@@ -138,7 +138,7 @@ function AvailableModelPicker({
|
|
|
138
138
|
className: "size-3.5 shrink-0 rounded-sm dark:invert"
|
|
139
139
|
}
|
|
140
140
|
),
|
|
141
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
141
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold uppercase tracking-wider text-muted-foreground", children: group.displayName })
|
|
142
142
|
] }),
|
|
143
143
|
/* @__PURE__ */ jsx("div", { className: "px-1", children: group.models.map((model) => {
|
|
144
144
|
const nextValue = modelKey(model.provider, model.modelId);
|
|
@@ -149,7 +149,7 @@ function AvailableModelPicker({
|
|
|
149
149
|
type: "button",
|
|
150
150
|
onClick: () => handleSelect(model.provider, model.modelId),
|
|
151
151
|
className: cn(
|
|
152
|
-
"flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-left text-
|
|
152
|
+
"flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-left text-sm transition-colors",
|
|
153
153
|
isSelected ? "bg-secondary text-foreground" : "text-muted-foreground hover:bg-secondary/60 hover:text-foreground"
|
|
154
154
|
),
|
|
155
155
|
children: [
|
|
@@ -24,7 +24,7 @@ function ThinkingLevelPicker({
|
|
|
24
24
|
disabled: disabled || !isAvailable,
|
|
25
25
|
onClick: () => onChange(level),
|
|
26
26
|
className: _utils.cn.call(void 0,
|
|
27
|
-
"rounded-md px-2 py-1.5 text-
|
|
27
|
+
"rounded-md px-2 py-1.5 text-sm font-medium transition-colors",
|
|
28
28
|
isActive ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:bg-background/70 hover:text-foreground",
|
|
29
29
|
(!isAvailable || disabled) && "cursor-not-allowed opacity-40 hover:bg-transparent hover:text-muted-foreground"
|
|
30
30
|
),
|
|
@@ -24,7 +24,7 @@ function ThinkingLevelPicker({
|
|
|
24
24
|
disabled: disabled || !isAvailable,
|
|
25
25
|
onClick: () => onChange(level),
|
|
26
26
|
className: cn(
|
|
27
|
-
"rounded-md px-2 py-1.5 text-
|
|
27
|
+
"rounded-md px-2 py-1.5 text-sm font-medium transition-colors",
|
|
28
28
|
isActive ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:bg-background/70 hover:text-foreground",
|
|
29
29
|
(!isAvailable || disabled) && "cursor-not-allowed opacity-40 hover:bg-transparent hover:text-muted-foreground"
|
|
30
30
|
),
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _jsxruntime = require('react/jsx-runtime');
|
|
2
|
+
var _lucidereact = require('lucide-react');
|
|
3
|
+
var _react = require('motion/react');
|
|
4
|
+
var _common = require('@sero-ai/common');
|
|
5
|
+
var _utils = require('../../lib/utils');
|
|
6
|
+
const COMPACT_LABELS = {
|
|
7
|
+
..._common.THINKING_LABELS,
|
|
8
|
+
xhigh: "X-High"
|
|
9
|
+
};
|
|
10
|
+
function ThinkingPicker({
|
|
11
|
+
available,
|
|
12
|
+
current,
|
|
13
|
+
disabled,
|
|
14
|
+
onSelect,
|
|
15
|
+
className
|
|
16
|
+
}) {
|
|
17
|
+
const levels = disabled ? _common.THINKING_LEVELS : _common.THINKING_LEVELS.filter((level) => level === "off" || available.includes(level));
|
|
18
|
+
const activeIndex = Math.max(
|
|
19
|
+
0,
|
|
20
|
+
levels.indexOf(disabled ? "off" : current)
|
|
21
|
+
);
|
|
22
|
+
const isOff = disabled || current === "off";
|
|
23
|
+
const isMax = !disabled && current === "max";
|
|
24
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
className: _utils.cn.call(void 0, `flex flex-col gap-2 border-[var(--border-subtle)] px-3 py-3 transition-opacity duration-150 ${disabled ? "pointer-events-none opacity-40" : ""}`, className),
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-1.5", children: [
|
|
30
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Brain, { className: "size-3 text-[var(--text-muted)]" }),
|
|
31
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-semibold uppercase tracking-wider text-[var(--text-muted)]", children: "Thinking" })
|
|
32
|
+
] }),
|
|
33
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex rounded-lg border border-[var(--border-subtle)] bg-[var(--bg-base)] p-0.5", children: [
|
|
34
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
35
|
+
_react.motion.div,
|
|
36
|
+
{
|
|
37
|
+
className: "absolute inset-y-0.5 rounded-md shadow-sm ring-1 ring-inset ring-white/5",
|
|
38
|
+
initial: false,
|
|
39
|
+
animate: {
|
|
40
|
+
x: `${activeIndex * 100}%`,
|
|
41
|
+
width: `${100 / levels.length}%`
|
|
42
|
+
},
|
|
43
|
+
transition: { type: "spring", stiffness: 500, damping: 38 },
|
|
44
|
+
style: {
|
|
45
|
+
background: isOff ? "var(--bg-elevated)" : isMax ? "linear-gradient(135deg, #f59e0b40, #ef444440)" : "linear-gradient(135deg, #6366f140, #8b5cf640)"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
levels.map((level) => {
|
|
50
|
+
const isActive = current === level && !disabled;
|
|
51
|
+
const textClass = isActive ? level === "max" ? "text-status-warning" : level === "off" ? "text-[var(--text-primary)]" : "text-[var(--banner-primary)]" : "text-[var(--text-muted)] hover:text-[var(--text-secondary)]";
|
|
52
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
53
|
+
"button",
|
|
54
|
+
{
|
|
55
|
+
type: "button",
|
|
56
|
+
onClick: () => onSelect(level),
|
|
57
|
+
className: `relative z-10 flex flex-1 items-center justify-center whitespace-nowrap rounded-md py-1.5 text-sm font-medium leading-none transition-colors duration-150 ${textClass}`,
|
|
58
|
+
children: COMPACT_LABELS[level]
|
|
59
|
+
},
|
|
60
|
+
level
|
|
61
|
+
);
|
|
62
|
+
})
|
|
63
|
+
] })
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
exports.ThinkingPicker = ThinkingPicker;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface ThinkingPickerProps {
|
|
4
|
+
available: readonly string[];
|
|
5
|
+
current: string;
|
|
6
|
+
disabled: boolean;
|
|
7
|
+
onSelect: (level: string) => void;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
declare function ThinkingPicker({ available, current, disabled, onSelect, className }: ThinkingPickerProps): react_jsx_runtime.JSX.Element;
|
|
11
|
+
|
|
12
|
+
export { ThinkingPicker };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface ThinkingPickerProps {
|
|
4
|
+
available: readonly string[];
|
|
5
|
+
current: string;
|
|
6
|
+
disabled: boolean;
|
|
7
|
+
onSelect: (level: string) => void;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
declare function ThinkingPicker({ available, current, disabled, onSelect, className }: ThinkingPickerProps): react_jsx_runtime.JSX.Element;
|
|
11
|
+
|
|
12
|
+
export { ThinkingPicker };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Brain } from "lucide-react";
|
|
3
|
+
import { motion } from "motion/react";
|
|
4
|
+
import { THINKING_LABELS, THINKING_LEVELS } from "@sero-ai/common";
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
|
+
const COMPACT_LABELS = {
|
|
7
|
+
...THINKING_LABELS,
|
|
8
|
+
xhigh: "X-High"
|
|
9
|
+
};
|
|
10
|
+
function ThinkingPicker({
|
|
11
|
+
available,
|
|
12
|
+
current,
|
|
13
|
+
disabled,
|
|
14
|
+
onSelect,
|
|
15
|
+
className
|
|
16
|
+
}) {
|
|
17
|
+
const levels = disabled ? THINKING_LEVELS : THINKING_LEVELS.filter((level) => level === "off" || available.includes(level));
|
|
18
|
+
const activeIndex = Math.max(
|
|
19
|
+
0,
|
|
20
|
+
levels.indexOf(disabled ? "off" : current)
|
|
21
|
+
);
|
|
22
|
+
const isOff = disabled || current === "off";
|
|
23
|
+
const isMax = !disabled && current === "max";
|
|
24
|
+
return /* @__PURE__ */ jsxs(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
className: cn(`flex flex-col gap-2 border-[var(--border-subtle)] px-3 py-3 transition-opacity duration-150 ${disabled ? "pointer-events-none opacity-40" : ""}`, className),
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
30
|
+
/* @__PURE__ */ jsx(Brain, { className: "size-3 text-[var(--text-muted)]" }),
|
|
31
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold uppercase tracking-wider text-[var(--text-muted)]", children: "Thinking" })
|
|
32
|
+
] }),
|
|
33
|
+
/* @__PURE__ */ jsxs("div", { className: "relative flex rounded-lg border border-[var(--border-subtle)] bg-[var(--bg-base)] p-0.5", children: [
|
|
34
|
+
/* @__PURE__ */ jsx(
|
|
35
|
+
motion.div,
|
|
36
|
+
{
|
|
37
|
+
className: "absolute inset-y-0.5 rounded-md shadow-sm ring-1 ring-inset ring-white/5",
|
|
38
|
+
initial: false,
|
|
39
|
+
animate: {
|
|
40
|
+
x: `${activeIndex * 100}%`,
|
|
41
|
+
width: `${100 / levels.length}%`
|
|
42
|
+
},
|
|
43
|
+
transition: { type: "spring", stiffness: 500, damping: 38 },
|
|
44
|
+
style: {
|
|
45
|
+
background: isOff ? "var(--bg-elevated)" : isMax ? "linear-gradient(135deg, #f59e0b40, #ef444440)" : "linear-gradient(135deg, #6366f140, #8b5cf640)"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
levels.map((level) => {
|
|
50
|
+
const isActive = current === level && !disabled;
|
|
51
|
+
const textClass = isActive ? level === "max" ? "text-status-warning" : level === "off" ? "text-[var(--text-primary)]" : "text-[var(--banner-primary)]" : "text-[var(--text-muted)] hover:text-[var(--text-secondary)]";
|
|
52
|
+
return /* @__PURE__ */ jsx(
|
|
53
|
+
"button",
|
|
54
|
+
{
|
|
55
|
+
type: "button",
|
|
56
|
+
onClick: () => onSelect(level),
|
|
57
|
+
className: `relative z-10 flex flex-1 items-center justify-center whitespace-nowrap rounded-md py-1.5 text-sm font-medium leading-none transition-colors duration-150 ${textClass}`,
|
|
58
|
+
children: COMPACT_LABELS[level]
|
|
59
|
+
},
|
|
60
|
+
level
|
|
61
|
+
);
|
|
62
|
+
})
|
|
63
|
+
] })
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
ThinkingPicker
|
|
70
|
+
};
|
|
@@ -30,7 +30,7 @@ function AccordionTrigger({
|
|
|
30
30
|
{
|
|
31
31
|
"data-slot": "accordion-trigger",
|
|
32
32
|
className: _utils.cn.call(void 0,
|
|
33
|
-
"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-
|
|
33
|
+
"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-base font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
|
|
34
34
|
className
|
|
35
35
|
),
|
|
36
36
|
...props,
|
|
@@ -50,7 +50,7 @@ function AccordionContent({
|
|
|
50
50
|
_radixui.Accordion.Content,
|
|
51
51
|
{
|
|
52
52
|
"data-slot": "accordion-content",
|
|
53
|
-
className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-
|
|
53
|
+
className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-base",
|
|
54
54
|
...props,
|
|
55
55
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _utils.cn.call(void 0, "pt-0 pb-4", className), children })
|
|
56
56
|
}
|