diff --git a/packages/ui/src/components/segmented.tsx b/packages/ui/src/components/segmented.tsx
index 1e390355..6f19ea18 100644
--- a/packages/ui/src/components/segmented.tsx
+++ b/packages/ui/src/components/segmented.tsx
@@ -6,7 +6,7 @@ import { cn } from '@/lib/utils';
/** The sliding selected card (react-aria's SelectionIndicator), shared by Segmented, Tabs and ToggleGroup. It sits
behind the labels (the group is `isolate`), and width/height transition too, so it resizes between unequal items. */
export const segmentIndicator =
- 'absolute top-0 left-0 -z-1 size-full rounded-[inherit] bg-card shadow-[0_1px_4px_black] shadow-black/14 transition-[translate,width,height] duration-spring-smooth ease-spring-smooth motion-reduce:transition-none';
+ 'absolute top-0 left-0 -z-1 size-full rounded-[inherit] bg-segment shadow-[0_1px_4px_black] shadow-black/14 transition-[translate,width,height] duration-spring-smooth ease-spring-smooth motion-reduce:transition-none';
export interface SegmentedOption {
id: string;
diff --git a/packages/ui/src/components/tabs.tsx b/packages/ui/src/components/tabs.tsx
index f248fdac..0fd34284 100644
--- a/packages/ui/src/components/tabs.tsx
+++ b/packages/ui/src/components/tabs.tsx
@@ -103,7 +103,7 @@ export function Tab({ className, children, ...props }: AriaTabProps) {
>
{composeRenderProps(children, (kids) => (
<>
-
+
{kids}
>
))}
diff --git a/packages/ui/src/components/toggle-group.tsx b/packages/ui/src/components/toggle-group.tsx
index 4bebbc26..65646e73 100644
--- a/packages/ui/src/components/toggle-group.tsx
+++ b/packages/ui/src/components/toggle-group.tsx
@@ -62,7 +62,7 @@ export function ToggleGroupItem({ className, variant, size, children, ...props }
{...props}
>
{slide
- ? composeRenderProps(children, (kids) => <>{kids}>)
+ ? composeRenderProps(children, (kids) => <>{kids}>)
: children}
);
diff --git a/packages/ui/src/lib/tokens.generated.ts b/packages/ui/src/lib/tokens.generated.ts
index 99e8b5da..880464bd 100644
--- a/packages/ui/src/lib/tokens.generated.ts
+++ b/packages/ui/src/lib/tokens.generated.ts
@@ -38,6 +38,7 @@ export const COLOR_TOKENS = [
'warning',
'tertiary-foreground',
'secondary-strong',
+ 'segment',
'overlay',
'bar',
'sticky',
@@ -123,6 +124,7 @@ export const THEME_VARS = [
'warning',
'tertiary-foreground',
'secondary-strong',
+ 'segment',
'overlay',
'bar',
'sticky',
diff --git a/packages/ui/src/theme.css b/packages/ui/src/theme.css
index 48cdd603..0efaa917 100644
--- a/packages/ui/src/theme.css
+++ b/packages/ui/src/theme.css
@@ -97,6 +97,7 @@
--handle: rgba(120, 120, 128, .34);
--code: #101014;
--code-foreground: #D8D8E2;
+ --segment: #636366;
}
/* ── Workbench scope (WorkbenchShell, WorkbenchTheme, Composer surfaces): dark-first IDE palette ── */
@@ -159,6 +160,7 @@
--code: #0C0C10;
--code-foreground: #D8D8E2;
--scope-terminal-background: #0C0C10;
+ --segment: #636366;
}
/* ── Terminal scope: the Workbench's integrated terminal stays dark in both appearances ── */
@@ -195,6 +197,7 @@
--input: rgba(120, 120, 128, .24);
--tertiary-foreground: rgba(235, 235, 245, .32);
--secondary-strong: rgba(120, 120, 128, .36);
+ --segment: #636366;
}
[data-theme-scope="sheet"].light {
color-scheme: light;
diff --git a/packages/ui/src/tokens.css b/packages/ui/src/tokens.css
index ccbb056e..30315d2e 100644
--- a/packages/ui/src/tokens.css
+++ b/packages/ui/src/tokens.css
@@ -49,6 +49,8 @@
--color-warning: var(--warning, oklch(0.769 0.165 70.1));
--color-tertiary-foreground: var(--tertiary-foreground, color-mix(in oklab, var(--muted-foreground) 60%, transparent));
--color-secondary-strong: var(--secondary-strong, var(--accent));
+ /* The selected thumb of a segmented control, tabs or toggle group: the card in light, a raised gray in dark. */
+ --color-segment: var(--segment, var(--card));
--color-overlay: var(--overlay, color-mix(in oklab, black 40%, transparent));
--color-bar: var(--bar, color-mix(in oklab, var(--background) 85%, transparent));
--color-sticky: var(--sticky, color-mix(in oklab, var(--muted) 92%, transparent));
diff --git a/registry.json b/registry.json
index 4aa28948..ee0ecd0b 100644
--- a/registry.json
+++ b/registry.json
@@ -14,6 +14,7 @@
"color-warning": "var(--warning, oklch(0.769 0.165 70.1))",
"color-tertiary-foreground": "var(--tertiary-foreground, color-mix(in oklab, var(--muted-foreground) 60%, transparent))",
"color-secondary-strong": "var(--secondary-strong, var(--accent))",
+ "color-segment": "var(--segment, var(--card))",
"color-overlay": "var(--overlay, color-mix(in oklab, black 40%, transparent))",
"color-bar": "var(--bar, color-mix(in oklab, var(--background) 85%, transparent))",
"color-sticky": "var(--sticky, color-mix(in oklab, var(--muted) 92%, transparent))",
@@ -1322,7 +1323,8 @@
"sticky": "rgba(18, 18, 20, .9)",
"handle": "rgba(120, 120, 128, .34)",
"code": "#101014",
- "code-foreground": "#D8D8E2"
+ "code-foreground": "#D8D8E2",
+ "segment": "#636366"
}
},
"css": {
@@ -1429,7 +1431,8 @@
"--handle": "rgba(255, 255, 255, .22)",
"--code": "#0C0C10",
"--code-foreground": "#D8D8E2",
- "--scope-terminal-background": "#0C0C10"
+ "--scope-terminal-background": "#0C0C10",
+ "--segment": "#636366"
},
"[data-theme-scope=\"terminal\"]": {
"color-scheme": "dark",
@@ -1460,7 +1463,8 @@
"--border": "rgba(84, 84, 88, .6)",
"--input": "rgba(120, 120, 128, .24)",
"--tertiary-foreground": "rgba(235, 235, 245, .32)",
- "--secondary-strong": "rgba(120, 120, 128, .36)"
+ "--secondary-strong": "rgba(120, 120, 128, .36)",
+ "--segment": "#636366"
},
"[data-theme-scope=\"sheet\"].light": {
"color-scheme": "light",