export interface ThemeTokenDescriptor { slot: "foreground" | "background"; description: string; /** Token in the same slot that supplies this token's color when a theme omits it. */ fallback?: string; /** A status color: in 256-color mode it keeps its hue instead of collapsing to the nearest gray. */ status?: true; } export type ThemeTokenDescriptors = Readonly>; /** * Theme token metadata in the same order used by theme files and the published JSON Schema. * A token with a `fallback` is optional: a theme written before the token existed keeps validating and * keeps rendering with the fallback token's color. */ export declare const THEME_TOKENS: { readonly accent: { readonly slot: "foreground"; readonly description: "Primary accent color (logo, selected items, cursor)"; }; readonly border: { readonly slot: "foreground"; readonly description: "Normal borders"; }; readonly borderAccent: { readonly slot: "foreground"; readonly description: "Highlighted borders"; }; readonly borderMuted: { readonly slot: "foreground"; readonly description: "Subtle borders"; }; readonly success: { readonly slot: "foreground"; readonly description: "Success states"; }; readonly error: { readonly slot: "foreground"; readonly description: "Error states"; }; readonly warning: { readonly slot: "foreground"; readonly description: "Warning states"; }; readonly muted: { readonly slot: "foreground"; readonly description: "Secondary/dimmed text"; }; readonly dim: { readonly slot: "foreground"; readonly description: "Very dimmed text (more subtle than muted)"; }; readonly text: { readonly slot: "foreground"; readonly description: "Default text color (usually empty string)"; }; readonly thinkingText: { readonly slot: "foreground"; readonly description: "Thinking block text color"; }; readonly selectedBg: { readonly slot: "background"; readonly description: "Selected item background"; }; readonly scrollbarThumb: { readonly slot: "background"; readonly description: "Fullscreen scrollbar thumb background (falls back to selectedBg when omitted)"; readonly fallback: "selectedBg"; }; readonly searchMatchBg: { readonly slot: "background"; readonly description: "Transcript search match background and current-match text (falls back to selectedBg when omitted)"; readonly fallback: "selectedBg"; }; readonly searchMatchText: { readonly slot: "foreground"; readonly description: "Transcript search match text and current-match background (falls back to text when omitted)"; readonly fallback: "text"; }; readonly userMessageBg: { readonly slot: "background"; readonly description: "User message background"; }; readonly userMessageText: { readonly slot: "foreground"; readonly description: "User message text color"; }; readonly customMessageBg: { readonly slot: "background"; readonly description: "Custom message background (hook-injected messages)"; }; readonly customMessageText: { readonly slot: "foreground"; readonly description: "Custom message text color"; }; readonly customMessageLabel: { readonly slot: "foreground"; readonly description: "Custom message type label color"; }; readonly toolPendingBg: { readonly slot: "background"; readonly description: "Tool execution box (pending state)"; readonly status: true; }; readonly toolSuccessBg: { readonly slot: "background"; readonly description: "Tool execution box (success state)"; readonly status: true; }; readonly toolErrorBg: { readonly slot: "background"; readonly description: "Tool execution box (error state)"; readonly status: true; }; readonly toolTitle: { readonly slot: "foreground"; readonly description: "Tool execution box title color"; }; readonly toolOutput: { readonly slot: "foreground"; readonly description: "Tool execution box output text color"; }; readonly mdHeading: { readonly slot: "foreground"; readonly description: "Markdown heading text"; }; readonly mdLink: { readonly slot: "foreground"; readonly description: "Markdown link text"; }; readonly mdLinkUrl: { readonly slot: "foreground"; readonly description: "Markdown link URL"; }; readonly mdCode: { readonly slot: "foreground"; readonly description: "Markdown inline code"; }; readonly mdCodeBlock: { readonly slot: "foreground"; readonly description: "Markdown code block content"; }; readonly mdCodeBlockBorder: { readonly slot: "foreground"; readonly description: "Markdown code block fences"; }; readonly mdQuote: { readonly slot: "foreground"; readonly description: "Markdown blockquote text"; }; readonly mdQuoteBorder: { readonly slot: "foreground"; readonly description: "Markdown blockquote border"; }; readonly mdHr: { readonly slot: "foreground"; readonly description: "Markdown horizontal rule"; }; readonly mdListBullet: { readonly slot: "foreground"; readonly description: "Markdown list bullets/numbers"; }; readonly toolDiffAdded: { readonly slot: "foreground"; readonly description: "Added lines in tool diffs"; }; readonly toolDiffRemoved: { readonly slot: "foreground"; readonly description: "Removed lines in tool diffs"; }; readonly toolDiffContext: { readonly slot: "foreground"; readonly description: "Context lines in tool diffs"; }; readonly syntaxComment: { readonly slot: "foreground"; readonly description: "Syntax highlighting: comments"; }; readonly syntaxKeyword: { readonly slot: "foreground"; readonly description: "Syntax highlighting: keywords"; }; readonly syntaxFunction: { readonly slot: "foreground"; readonly description: "Syntax highlighting: function names"; }; readonly syntaxVariable: { readonly slot: "foreground"; readonly description: "Syntax highlighting: variable names"; }; readonly syntaxString: { readonly slot: "foreground"; readonly description: "Syntax highlighting: string literals"; }; readonly syntaxNumber: { readonly slot: "foreground"; readonly description: "Syntax highlighting: number literals"; }; readonly syntaxType: { readonly slot: "foreground"; readonly description: "Syntax highlighting: type names"; }; readonly syntaxOperator: { readonly slot: "foreground"; readonly description: "Syntax highlighting: operators"; }; readonly syntaxPunctuation: { readonly slot: "foreground"; readonly description: "Syntax highlighting: punctuation"; }; readonly thinkingOff: { readonly slot: "foreground"; readonly description: "Thinking level border: off"; }; readonly thinkingMinimal: { readonly slot: "foreground"; readonly description: "Thinking level border: minimal"; }; readonly thinkingLow: { readonly slot: "foreground"; readonly description: "Thinking level border: low"; }; readonly thinkingMedium: { readonly slot: "foreground"; readonly description: "Thinking level border: medium"; }; readonly thinkingHigh: { readonly slot: "foreground"; readonly description: "Thinking level border: high"; }; readonly thinkingXhigh: { readonly slot: "foreground"; readonly description: "Thinking level border: xhigh (OpenAI codex-max only)"; }; readonly bashMode: { readonly slot: "foreground"; readonly description: "Editor border color in bash mode"; }; }; export type ThemeToken = keyof typeof THEME_TOKENS; export type ThemeColor = { [K in ThemeToken]: (typeof THEME_TOKENS)[K]["slot"] extends "foreground" ? K : never; }[ThemeToken]; export type ThemeBg = Exclude; type OptionalToken = { [K in ThemeToken]: (typeof THEME_TOKENS)[K] extends { fallback: string; } ? K : never; }[ThemeToken]; type RequiredToken = Exclude; export type ThemeColorValues = { [K in RequiredToken]: Value; } & { [K in OptionalToken]?: Value; }; export type ResolvedThemeColorValues = Record; /** Fill omitted optional tokens from their fallback tokens. */ export declare function withThemeTokenFallbacks(values: ThemeColorValues): ResolvedThemeColorValues; /** * Split resolved token values into the foreground and background slots. Generated system themes also carry * palette entries that theme files cannot set; those are not tokens and are left out. */ export declare function splitThemeColors(colors: ResolvedThemeColorValues): { fgColors: Record; bgColors: Record; }; export declare function isStatusToken(token: ThemeToken): boolean; export {}; //# sourceMappingURL=theme-tokens.d.ts.map