@@ -58,28 +58,19 @@ const (
60type Styles struct {
60type Styles struct {
61− WindowTooSmall lipgloss.Style
63− // Reusable text styles
66− HalfMuted lipgloss.Style
67− Subtle lipgloss.Style
70− TagBase lipgloss.Style
71− TagError lipgloss.Style
72− TagInfo lipgloss.Style
75 Header struct {
62 Header struct {
76− Charm lipgloss.Style // Style for "Charm™" label
63+ Charm lipgloss.Style // Style for "Charm™" label
77− Diagonals lipgloss.Style // Style for diagonal separators (╱)
64+ Diagonals lipgloss.Style // Style for diagonal separators (╱)
78− Percentage lipgloss.Style // Style for context percentage
65+ Percentage lipgloss.Style // Style for context percentage
79− Keystroke lipgloss.Style // Style for keystroke hints (e.g., "ctrl+d")
66+ Keystroke lipgloss.Style // Style for keystroke hints (e.g., "ctrl+d")
80− KeystrokeTip lipgloss.Style // Style for keystroke action text (e.g., "open", "close")
67+ KeystrokeTip lipgloss.Style // Style for keystroke action text (e.g., "open", "close")
81− WorkingDir lipgloss.Style // Style for current working directory
68+ WorkingDir lipgloss.Style // Style for current working directory
82− Separator lipgloss.Style // Style for separator dots (•)
69+ Separator lipgloss.Style // Style for separator dots (•)
70+ Wrapper lipgloss.Style // Outer container for the entire header row
71+ LogoGradCanvas lipgloss.Style // Canvas for the compact "CRUSH" gradient
72+ LogoGradFromColor color.Color // "CRUSH" wordmark gradient start
73+ LogoGradToColor color.Color // "CRUSH" wordmark gradient end
85 CompactDetails struct {
76 CompactDetails struct {
@@ -88,43 +79,18 @@ type Styles struct {
88 Title lipgloss.Style
79 Title lipgloss.Style
92− PanelMuted lipgloss.Style
93− PanelBase lipgloss.Style
95− // Line numbers for code blocks
96− LineNumber lipgloss.Style
99− FocusedMessageBorder lipgloss.Border
101 // Tool calls
82 // Tool calls
102− ToolCallPending lipgloss.Style
103− ToolCallError lipgloss.Style
104− ToolCallSuccess lipgloss.Style
83+ ToolCallSuccess lipgloss.Style
105− ToolCallCancelled lipgloss.Style
106− EarlyStateMessage lipgloss.Style
108 // Text selection
85 // Text selection
109 TextSelection lipgloss.Style
86 TextSelection lipgloss.Style
111− // LSP and MCP status indicators
112− ResourceGroupTitle lipgloss.Style
113− ResourceOfflineIcon lipgloss.Style
114− ResourceBusyIcon lipgloss.Style
115− ResourceErrorIcon lipgloss.Style
116− ResourceOnlineIcon lipgloss.Style
117− ResourceName lipgloss.Style
118− ResourceStatus lipgloss.Style
119− ResourceAdditionalText lipgloss.Style
121 // Markdown & Chroma
88 // Markdown & Chroma
122 Markdown ansi.StyleConfig
89 Markdown ansi.StyleConfig
123− PlainMarkdown ansi.StyleConfig
90+ QuietMarkdown ansi.StyleConfig
125 // Inputs
92 // Inputs
126 TextInput textinput.Styles
93 TextInput textinput.Styles
127− TextArea textarea.Styles
130 Help help.Styles
96 Help help.Styles
@@ -136,62 +102,55 @@ type Styles struct {
136 FilePicker filepicker.Styles
102 FilePicker filepicker.Styles
138 // Buttons
104 // Buttons
139− ButtonFocus lipgloss.Style
105+ Button struct {
140− ButtonBlur lipgloss.Style
106+ Focused lipgloss.Style
143− BorderFocus lipgloss.Style
107+ Blurred lipgloss.Style
144− BorderBlur lipgloss.Style
108+ }
146 // Editor
110 // Editor
147− EditorPromptNormalFocused lipgloss.Style
111+ Editor struct {
148− EditorPromptNormalBlurred lipgloss.Style
112+ Textarea textarea.Styles
149− EditorPromptYoloIconFocused lipgloss.Style
113+
150− EditorPromptYoloIconBlurred lipgloss.Style
114+ // Normal mode prompt (default "::: ").
151− EditorPromptYoloDotsFocused lipgloss.Style
115+ PromptNormalFocused lipgloss.Style
152− EditorPromptYoloDotsBlurred lipgloss.Style
116+ PromptNormalBlurred lipgloss.Style
118+ // YOLO mode prompt (" ! " icon + ":::" dots).
119+ PromptYoloIconFocused lipgloss.Style
120+ PromptYoloIconBlurred lipgloss.Style
121+ PromptYoloDotsFocused lipgloss.Style
122+ PromptYoloDotsBlurred lipgloss.Style
155− RadioOn lipgloss.Style
128+ Off lipgloss.Style
156− RadioOff lipgloss.Style
129+ Label lipgloss.Style // Text next to a radio button
158 // Background
132 // Background
159 Background color.Color
133 Background color.Color
162− LogoFieldColor color.Color
137+ FieldColor color.Color
163− LogoTitleColorA color.Color
138+ TitleColorA color.Color
164− LogoTitleColorB color.Color
139+ TitleColorB color.Color
165− LogoCharmColor color.Color
140+ CharmColor color.Color
166− LogoVersionColor color.Color
141+ VersionColor color.Color
167−
142+ SmallCharm lipgloss.Style // "Charm™" label in SmallRender
168− // Colors - semantic colors for tool rendering.
143+ SmallDiagonals lipgloss.Style // Diagonal line fill in SmallRender
169− Primary color.Color
144+ GradCanvas lipgloss.Style // Blank canvas for gradient painting
170− Secondary color.Color
145+ SmallGradFromColor color.Color // Small "Crush" wordmark gradient start
171− Tertiary color.Color
146+ SmallGradToColor color.Color // Small "Crush" wordmark gradient end
172− BgBase color.Color
147+ }
173− BgBaseLighter color.Color
148+
174− BgSubtle color.Color
149+ // Working indicator gradient (spinners/shimmers on assistant "thinking",
175− BgOverlay color.Color
150+ // tool-call pending, CLI generating, startup).
176− FgBase color.Color
151+ WorkingGradFromColor color.Color
178− FgHalfMuted color.Color
152+ WorkingGradToColor color.Color
179− FgSubtle color.Color
153+ WorkingLabelColor color.Color // Label text color next to the indicator
181− BorderColor color.Color // Border focus color
186− BlueLight color.Color
188− BlueDark color.Color
189− GreenLight color.Color
191− GreenDark color.Color
196 // Section Title
155 // Section Title
197 Section struct {
156 Section struct {
@@ -214,41 +173,80 @@ type Styles struct {
214 InfoDiagnostic lipgloss.Style
173 InfoDiagnostic lipgloss.Style
178+ SessionTitle lipgloss.Style // Current session title at top of sidebar
179+ WorkingDir lipgloss.Style // Working directory path (PrettyPath)
182+ // ModelInfo (model name, provider, reasoning, token/cost summary)
184+ Icon lipgloss.Style // Model icon (◇)
185+ Name lipgloss.Style // Model name text
186+ Provider lipgloss.Style // "via <provider>" text
187+ ProviderFallback lipgloss.Style // Provider on its own second line
188+ Reasoning lipgloss.Style // Reasoning effort text
189+ TokenCount lipgloss.Style // "(42K)" token count
190+ TokenPercentage lipgloss.Style // "42%" percent of context window
191+ Cost lipgloss.Style // "$0.42" cost readout
194+ // Resource styles the LSP/MCP/skills sidebar lists: their heading,
195+ // each row's status icon, name, status text, and truncation hints.
197+ Heading lipgloss.Style // Section header ("LSPs", "MCPs", "Skills")
198+ Name lipgloss.Style // Resource name (e.g. "gopls")
199+ StatusText lipgloss.Style // Row status description (e.g. "starting...")
200+ OfflineIcon lipgloss.Style // Offline/unstarted/stopped status icon
201+ DisabledIcon lipgloss.Style // Disabled status icon
202+ BusyIcon lipgloss.Style // Busy/starting status icon
203+ ErrorIcon lipgloss.Style // Error status icon
204+ OnlineIcon lipgloss.Style // Online/ready status icon
205+ AdditionalText lipgloss.Style // "None" and "…and N more" text
206+ CapabilityCount lipgloss.Style // "N tools" / "N prompts" / "N resources"
207+ RowTitleBase lipgloss.Style // Base style applied over row titles in common.Status
208+ RowDescBase lipgloss.Style // Base style applied over row descriptions in common.Status
209+ DefaultTitleFg color.Color // Default title color when opt is zero
210+ DefaultDescFg color.Color // Default description color when opt is zero
218 Files struct {
214 Files struct {
219− Path lipgloss.Style
215+ Path lipgloss.Style
220− Additions lipgloss.Style
216+ Additions lipgloss.Style
221− Deletions lipgloss.Style
217+ Deletions lipgloss.Style
218+ SectionTitle lipgloss.Style // "Modified Files" heading
219+ EmptyMessage lipgloss.Style // "None" placeholder when no files
220+ TruncationHint lipgloss.Style // "…and N more" message
226− // Message item styles
224+ // Messages - chat message item styles
227− Message struct {
225+ Messages struct {
228− UserBlurred lipgloss.Style
226+ UserBlurred lipgloss.Style
229− UserFocused lipgloss.Style
227+ UserFocused lipgloss.Style
230− AssistantBlurred lipgloss.Style
228+ AssistantBlurred lipgloss.Style
231− AssistantFocused lipgloss.Style
229+ AssistantFocused lipgloss.Style
232− NoContent lipgloss.Style
230+ NoContent lipgloss.Style
233− Thinking lipgloss.Style
231+ Thinking lipgloss.Style
234− ErrorTag lipgloss.Style
232+ ErrorTag lipgloss.Style
235− ErrorTitle lipgloss.Style
233+ ErrorTitle lipgloss.Style
236− ErrorDetails lipgloss.Style
234+ ErrorDetails lipgloss.Style
237− ToolCallFocused lipgloss.Style
235+ ToolCallFocused lipgloss.Style
238− ToolCallCompact lipgloss.Style
236+ ToolCallCompact lipgloss.Style
239− ToolCallBlurred lipgloss.Style
237+ ToolCallBlurred lipgloss.Style
240− SectionHeader lipgloss.Style
238+ SectionHeader lipgloss.Style
242− // Thinking section styles
240+ // Thinking section styles
243− ThinkingBox lipgloss.Style // Background for thinking content
241+ ThinkingBox lipgloss.Style // Background for thinking content
244− ThinkingTruncationHint lipgloss.Style // "… (N lines hidden)" hint
242+ ThinkingTruncationHint lipgloss.Style // "… (N lines hidden)" hint
245− ThinkingFooterTitle lipgloss.Style // "Thought for" text
243+ ThinkingFooterTitle lipgloss.Style // "Thought for" text
246− ThinkingFooterDuration lipgloss.Style // Duration value
244+ ThinkingFooterDuration lipgloss.Style // Duration value
247− AssistantInfoIcon lipgloss.Style
245+ AssistantInfoIcon lipgloss.Style
248− AssistantInfoModel lipgloss.Style
246+ AssistantInfoModel lipgloss.Style
249− AssistantInfoProvider lipgloss.Style
247+ AssistantInfoProvider lipgloss.Style
250− AssistantInfoDuration lipgloss.Style
248+ AssistantInfoDuration lipgloss.Style
251− }
249+ AssistantCanceled lipgloss.Style // Italic "Canceled" footer
254 // Tool - styles for tool call rendering
252 // Tool - styles for tool call rendering
@@ -316,6 +314,9 @@ type Styles struct {
316 TodoCompletedIcon lipgloss.Style // Completed todo icon
314 TodoCompletedIcon lipgloss.Style // Completed todo icon
317 TodoInProgressIcon lipgloss.Style // In-progress todo icon
315 TodoInProgressIcon lipgloss.Style // In-progress todo icon
318 TodoPendingIcon lipgloss.Style // Pending todo icon
316 TodoPendingIcon lipgloss.Style // Pending todo icon
317+ TodoStatusNote lipgloss.Style // " · completed N" / " · starting task" trailing note
318+ TodoItem lipgloss.Style // Default body text for todo list items
319+ TodoJustStarted lipgloss.Style // Text of the just-started todo in tool-call bodies
320 // MCP tools
321 // MCP tools
321 MCPName lipgloss.Style // The mcp name
322 MCPName lipgloss.Style // The mcp name
@@ -329,17 +330,26 @@ type Styles struct {
329 ResourceSize lipgloss.Style
330 ResourceSize lipgloss.Style
330 MediaType lipgloss.Style
331 MediaType lipgloss.Style
332− // Docker MCP tools
333+ // Action verb colors for tool-call headers.
333− DockerMCPActionAdd lipgloss.Style // Docker MCP add action (green)
334+ ActionCreate lipgloss.Style // Constructive actions (e.g. "Add", "Create")
334− DockerMCPActionDel lipgloss.Style // Docker MCP remove action (red)
335+ ActionDestroy lipgloss.Style // Destructive actions (e.g. "Remove", "Delete")
337+ // Tool result helpers.
338+ ResultEmpty lipgloss.Style // "No results" placeholder
339+ ResultTruncation lipgloss.Style // "… and N more" truncation line
340+ ResultItemName lipgloss.Style // Item name (left column in result lists)
341+ ResultItemDesc lipgloss.Style // Item description (right column)
337 // Dialog styles
344 // Dialog styles
338 Dialog struct {
345 Dialog struct {
339− Title lipgloss.Style
346+ Title lipgloss.Style
340− TitleText lipgloss.Style
347+ TitleText lipgloss.Style
341− TitleError lipgloss.Style
348+ TitleError lipgloss.Style
342− TitleAccent lipgloss.Style
349+ TitleAccent lipgloss.Style
350+ TitleLineBase lipgloss.Style // Base for the gradient ╱╱╱ next to dialog titles
351+ TitleGradFromColor color.Color // Default dialog title ╱╱╱ gradient start
352+ TitleGradToColor color.Color // Default dialog title ╱╱╱ gradient end
343 // View is the main content area style.
353 // View is the main content area style.
344 View lipgloss.Style
354 View lipgloss.Style
345 PrimaryText lipgloss.Style
355 PrimaryText lipgloss.Style
@@ -381,7 +391,43 @@ type Styles struct {
381 InputRequiredMarkFocused lipgloss.Style
391 InputRequiredMarkFocused lipgloss.Style
394+ // ListItem styles the info-text rendered alongside list items (commands,
395+ // models, reasoning options). Sessions have their own overrides below.
397+ InfoBlurred lipgloss.Style
398+ InfoFocused lipgloss.Style
402+ ConfiguredText lipgloss.Style // "Configured" badge shown on the ModelGroup header
405+ Permissions struct {
406+ KeyText lipgloss.Style // Left key cell of a key/value row
407+ ValueText lipgloss.Style // Right value cell of a key/value row
408+ ParamsBg color.Color // Background color behind highlighted JSON parameters
384− Commands struct{}
411+ Quit struct {
412+ Content lipgloss.Style // Wrapper for the quit dialog's inner content
413+ Frame lipgloss.Style // Outer rounded border framing the quit dialog
417+ Spinner lipgloss.Style // Loading spinner while validating the key
421+ Spinner lipgloss.Style // Loading spinner
422+ Instructions lipgloss.Style // Emphasized instruction text
423+ UserCode lipgloss.Style // Prominent user code display
424+ Success lipgloss.Style // Positive status text (e.g. "Authentication successful!")
425+ Link lipgloss.Style // Underlined verification URL
426+ Enter lipgloss.Style // "enter" keyword highlight in instructions
427+ ErrorText lipgloss.Style // Error message when authentication fails
428+ StatusText lipgloss.Style // Narrative status text ("Initializing...", "Verifying...", etc.)
429+ UserCodeBg color.Color // Background color of the centered user-code box
386 ImagePreview lipgloss.Style
432 ImagePreview lipgloss.Style
@@ -404,6 +450,9 @@ type Styles struct {
404 RenamingTitleGradientFromColor color.Color
450 RenamingTitleGradientFromColor color.Color
405 RenamingTitleGradientToColor color.Color
451 RenamingTitleGradientToColor color.Color
406 RenamingPlaceholder lipgloss.Style
452 RenamingPlaceholder lipgloss.Style
454+ InfoBlurred lipgloss.Style // Timestamp text on unfocused session items
455+ InfoFocused lipgloss.Style // Timestamp text on the focused session item
@@ -441,14 +490,22 @@ type Styles struct {
442 // Pills styles for todo/queue pills
491 // Pills styles for todo/queue pills
443 Pills struct {
492 Pills struct {
444− Base lipgloss.Style // Base pill style with padding
493+ Base lipgloss.Style // Base pill style with padding
445− Focused lipgloss.Style // Focused pill with visible border
494+ Focused lipgloss.Style // Focused pill with visible border
446− Blurred lipgloss.Style // Blurred pill with hidden border
495+ Blurred lipgloss.Style // Blurred pill with hidden border
447− QueueItemPrefix lipgloss.Style // Prefix for queue list items
496+ QueueItemPrefix lipgloss.Style // Prefix for queue list items
497+ QueueItemText lipgloss.Style // Queue list item body text
498+ QueueLabel lipgloss.Style // "N Queued" label text
499+ QueueIconBase lipgloss.Style // Base style for queue gradient triangles
500+ QueueGradFromColor color.Color // Start color for queue indicator gradient
501+ QueueGradToColor color.Color // End color for queue indicator gradient
502+ TodoLabel lipgloss.Style // "To-Do" label
503+ TodoProgress lipgloss.Style // Todo ratio (e.g. "2/5")
504+ TodoCurrentTask lipgloss.Style // Current in-progress task name
505+ TodoSpinner lipgloss.Style // Todo spinner style
448− HelpKey lipgloss.Style // Keystroke hint style
506+ HelpKey lipgloss.Style // Keystroke hint style
449− HelpText lipgloss.Style // Help action text style
507+ HelpText lipgloss.Style // Help action text style
450− Area lipgloss.Style // Pills area container
508+ Area lipgloss.Style // Pills area container
451− TodoSpinner lipgloss.Style // Todo spinner style
@@ -552,38 +609,17 @@ func DefaultStyles() Styles {
552 normalBorder := lipgloss.NormalBorder()
609 normalBorder := lipgloss.NormalBorder()
554 base := lipgloss.NewStyle().Foreground(fgBase)
611 base := lipgloss.NewStyle().Foreground(fgBase)
612+ muted := lipgloss.NewStyle().Foreground(fgMuted)
613+ subtle := lipgloss.NewStyle().Foreground(fgSubtle)
556 s := Styles{}
615 s := Styles{}
558 s.Background = bgBase
617 s.Background = bgBase
560 // Populate color fields
619 // Populate color fields
561− s.Primary = primary
620+ s.WorkingGradFromColor = primary
562− s.Secondary = secondary
621+ s.WorkingGradToColor = secondary
563− s.Tertiary = tertiary
622+ s.WorkingLabelColor = fgBase
565− s.BgBaseLighter = bgBaseLighter
566− s.BgSubtle = bgSubtle
567− s.BgOverlay = bgOverlay
570− s.FgHalfMuted = fgHalfMuted
571− s.FgSubtle = fgSubtle
573− s.BorderColor = borderFocus
578− s.BlueLight = blueLight
580− s.BlueDark = blueDark
581− s.GreenLight = greenLight
583− s.GreenDark = greenDark
588 s.TextInput = textinput.Styles{
624 s.TextInput = textinput.Styles{
589 Focused: textinput.StyleState{
625 Focused: textinput.StyleState{
@@ -605,7 +641,7 @@ func DefaultStyles() Styles {
608− s.TextArea = textarea.Styles{
644+ s.Editor.Textarea = textarea.Styles{
609 Focused: textarea.StyleState{
645 Focused: textarea.StyleState{
610 Base: base,
646 Base: base,
611 Text: base,
647 Text: base,
@@ -840,10 +876,10 @@ func DefaultStyles() Styles {
843− // PlainMarkdown style - muted colors on subtle background for thinking content.
879+ // QuietMarkdown style - muted colors on subtle background for thinking content.
844 plainBg := new(bgBaseLighter.Hex())
880 plainBg := new(bgBaseLighter.Hex())
845 plainFg := new(fgMuted.Hex())
881 plainFg := new(fgMuted.Hex())
846− s.PlainMarkdown = ansi.StyleConfig{
882+ s.QuietMarkdown = ansi.StyleConfig{
847 Document: ansi.StyleBlock{
883 Document: ansi.StyleBlock{
848 StylePrimitive: ansi.StylePrimitive{
884 StylePrimitive: ansi.StylePrimitive{
849 Color: plainFg,
885 Color: plainFg,
@@ -1081,72 +1117,47 @@ func DefaultStyles() Styles {
1083 // borders
1119 // borders
1084− s.FocusedMessageBorder = lipgloss.Border{Left: BorderThick}
1087− s.Base = lipgloss.NewStyle().Foreground(fgBase)
1120+ s.ToolCallSuccess = lipgloss.NewStyle().Foreground(green).SetString(ToolSuccess)
1088− s.Muted = lipgloss.NewStyle().Foreground(fgMuted)
1089− s.HalfMuted = lipgloss.NewStyle().Foreground(fgHalfMuted)
1090− s.Subtle = lipgloss.NewStyle().Foreground(fgSubtle)
1092− s.WindowTooSmall = s.Muted
1095− s.TagBase = lipgloss.NewStyle().Padding(0, 1).Foreground(white)
1096− s.TagError = s.TagBase.Background(redDark)
1097− s.TagInfo = s.TagBase.Background(blueLight)
1099− // Compact header styles
1100 s.Header.Charm = base.Foreground(secondary)
1122 s.Header.Charm = base.Foreground(secondary)
1101 s.Header.Diagonals = base.Foreground(primary)
1123 s.Header.Diagonals = base.Foreground(primary)
1102− s.Header.Percentage = s.Muted
1124+ s.Header.Percentage = muted
1103− s.Header.Keystroke = s.Muted
1125+ s.Header.Keystroke = muted
1104− s.Header.KeystrokeTip = s.Subtle
1126+ s.Header.KeystrokeTip = subtle
1105− s.Header.WorkingDir = s.Muted
1127+ s.Header.WorkingDir = muted
1106− s.Header.Separator = s.Subtle
1128+ s.Header.Separator = subtle
1107−
1129+ s.Header.Wrapper = lipgloss.NewStyle().Foreground(fgBase)
1130+ s.Header.LogoGradCanvas = lipgloss.NewStyle()
1131+ s.Header.LogoGradFromColor = secondary
1132+ s.Header.LogoGradToColor = primary
1108− s.CompactDetails.Title = s.Base
1134+ s.CompactDetails.Title = base
1109− s.CompactDetails.View = s.Base.Padding(0, 1, 1, 1).Border(lipgloss.RoundedBorder()).BorderForeground(borderFocus)
1135+ s.CompactDetails.View = base.Padding(0, 1, 1, 1).Border(lipgloss.RoundedBorder()).BorderForeground(borderFocus)
1110− s.CompactDetails.Version = s.Muted
1136+ s.CompactDetails.Version = lipgloss.NewStyle().Foreground(border)
1113− s.PanelMuted = s.Muted.Background(bgBaseLighter)
1114− s.PanelBase = lipgloss.NewStyle().Background(bgBase)
1116− // code line number
1117− s.LineNumber = lipgloss.NewStyle().Foreground(fgMuted).Background(bgBase).PaddingRight(1).PaddingLeft(1)
1120− s.ToolCallPending = lipgloss.NewStyle().Foreground(greenDark).SetString(ToolPending)
1121− s.ToolCallError = lipgloss.NewStyle().Foreground(redDark).SetString(ToolError)
1122− s.ToolCallSuccess = lipgloss.NewStyle().Foreground(green).SetString(ToolSuccess)
1123− // Cancelled uses muted tone but same glyph as pending
1124− s.ToolCallCancelled = s.Muted.SetString(ToolPending)
1125− s.EarlyStateMessage = s.Subtle.PaddingLeft(2)
1127 // Tool rendering styles
1138 // Tool rendering styles
1128 s.Tool.IconPending = base.Foreground(greenDark).SetString(ToolPending)
1139 s.Tool.IconPending = base.Foreground(greenDark).SetString(ToolPending)
1129 s.Tool.IconSuccess = base.Foreground(green).SetString(ToolSuccess)
1140 s.Tool.IconSuccess = base.Foreground(green).SetString(ToolSuccess)
1130 s.Tool.IconError = base.Foreground(redDark).SetString(ToolError)
1141 s.Tool.IconError = base.Foreground(redDark).SetString(ToolError)
1131− s.Tool.IconCancelled = s.Muted.SetString(ToolPending)
1142+ s.Tool.IconCancelled = muted.SetString(ToolPending)
1133 s.Tool.NameNormal = base.Foreground(blue)
1144 s.Tool.NameNormal = base.Foreground(blue)
1134 s.Tool.NameNested = base.Foreground(blue)
1145 s.Tool.NameNested = base.Foreground(blue)
1136− s.Tool.ParamMain = s.Subtle
1147+ s.Tool.ParamMain = subtle
1137− s.Tool.ParamKey = s.Subtle
1148+ s.Tool.ParamKey = subtle
1139 // Content rendering - prepared styles that accept width parameter
1150 // Content rendering - prepared styles that accept width parameter
1140− s.Tool.ContentLine = s.Muted.Background(bgBaseLighter)
1151+ s.Tool.ContentLine = muted.Background(bgBaseLighter)
1141− s.Tool.ContentTruncation = s.Muted.Background(bgBaseLighter)
1152+ s.Tool.ContentTruncation = muted.Background(bgBaseLighter)
1142− s.Tool.ContentCodeLine = s.Base.Background(bgBase).PaddingLeft(2)
1153+ s.Tool.ContentCodeLine = base.Background(bgBase).PaddingLeft(2)
1143− s.Tool.ContentCodeTruncation = s.Muted.Background(bgBase).PaddingLeft(2)
1154+ s.Tool.ContentCodeTruncation = muted.Background(bgBase).PaddingLeft(2)
1144 s.Tool.ContentCodeBg = bgBase
1155 s.Tool.ContentCodeBg = bgBase
1145 s.Tool.Body = base.PaddingLeft(2)
1156 s.Tool.Body = base.PaddingLeft(2)
1147 // Deprecated - kept for backward compatibility
1158 // Deprecated - kept for backward compatibility
1148− s.Tool.ContentBg = s.Muted.Background(bgBaseLighter)
1159+ s.Tool.ContentBg = muted.Background(bgBaseLighter)
1149− s.Tool.ContentText = s.Muted
1160+ s.Tool.ContentText = muted
1150 s.Tool.ContentLineNumber = base.Foreground(fgMuted).Background(bgBase).PaddingRight(1).PaddingLeft(1)
1161 s.Tool.ContentLineNumber = base.Foreground(fgMuted).Background(bgBase).PaddingRight(1).PaddingLeft(1)
1152 s.Tool.StateWaiting = base.Foreground(fgSubtle)
1163 s.Tool.StateWaiting = base.Foreground(fgSubtle)
@@ -1156,7 +1167,7 @@ func DefaultStyles() Styles {
1156 s.Tool.ErrorMessage = base.Foreground(fgHalfMuted)
1167 s.Tool.ErrorMessage = base.Foreground(fgHalfMuted)
1158 // Diff and multi-edit styles
1169 // Diff and multi-edit styles
1159− s.Tool.DiffTruncation = s.Muted.Background(bgBaseLighter).PaddingLeft(2)
1170+ s.Tool.DiffTruncation = muted.Background(bgBaseLighter).PaddingLeft(2)
1160 s.Tool.NoteTag = base.Padding(0, 1).Background(info).Foreground(white)
1171 s.Tool.NoteTag = base.Padding(0, 1).Background(info).Foreground(white)
1161 s.Tool.NoteMessage = base.Foreground(fgHalfMuted)
1172 s.Tool.NoteMessage = base.Foreground(fgHalfMuted)
@@ -1166,12 +1177,12 @@ func DefaultStyles() Styles {
1166 s.Tool.JobIconSuccess = base.Foreground(green)
1177 s.Tool.JobIconSuccess = base.Foreground(green)
1167 s.Tool.JobToolName = base.Foreground(blue)
1178 s.Tool.JobToolName = base.Foreground(blue)
1168 s.Tool.JobAction = base.Foreground(blueDark)
1179 s.Tool.JobAction = base.Foreground(blueDark)
1169− s.Tool.JobPID = s.Muted
1180+ s.Tool.JobPID = muted
1170− s.Tool.JobDescription = s.Subtle
1181+ s.Tool.JobDescription = subtle
1172 // Agent task styles
1183 // Agent task styles
1173 s.Tool.AgentTaskTag = base.Bold(true).Padding(0, 1).MarginLeft(2).Background(blueLight).Foreground(white)
1184 s.Tool.AgentTaskTag = base.Bold(true).Padding(0, 1).MarginLeft(2).Background(blueLight).Foreground(white)
1174− s.Tool.AgentPrompt = s.Muted
1185+ s.Tool.AgentPrompt = muted
1176 // Agentic fetch styles
1187 // Agentic fetch styles
1177 s.Tool.AgenticFetchPromptTag = base.Bold(true).Padding(0, 1).MarginLeft(2).Background(green).Foreground(border)
1188 s.Tool.AgenticFetchPromptTag = base.Bold(true).Padding(0, 1).MarginLeft(2).Background(green).Foreground(border)
@@ -1181,6 +1192,9 @@ func DefaultStyles() Styles {
1181 s.Tool.TodoCompletedIcon = base.Foreground(green)
1192 s.Tool.TodoCompletedIcon = base.Foreground(green)
1182 s.Tool.TodoInProgressIcon = base.Foreground(greenDark)
1193 s.Tool.TodoInProgressIcon = base.Foreground(greenDark)
1183 s.Tool.TodoPendingIcon = base.Foreground(fgMuted)
1194 s.Tool.TodoPendingIcon = base.Foreground(fgMuted)
1195+ s.Tool.TodoStatusNote = lipgloss.NewStyle().Foreground(fgSubtle)
1196+ s.Tool.TodoItem = lipgloss.NewStyle().Foreground(fgBase)
1197+ s.Tool.TodoJustStarted = lipgloss.NewStyle().Foreground(fgBase)
1185 // MCP styles
1199 // MCP styles
1186 s.Tool.MCPName = base.Foreground(blue)
1200 s.Tool.MCPName = base.Foreground(blue)
@@ -1194,103 +1208,138 @@ func DefaultStyles() Styles {
1194 s.Tool.MediaType = base
1208 s.Tool.MediaType = base
1195 s.Tool.ResourceSize = base.Foreground(fgMuted)
1209 s.Tool.ResourceSize = base.Foreground(fgMuted)
1197− // Docker MCP styles
1211+ // Tool-call action verbs and result-list styling.
1198− s.Tool.DockerMCPActionAdd = base.Foreground(greenLight)
1212+ s.Tool.ActionCreate = lipgloss.NewStyle().Foreground(greenLight)
1199− s.Tool.DockerMCPActionDel = base.Foreground(red)
1213+ s.Tool.ActionDestroy = lipgloss.NewStyle().Foreground(red)
1214+ s.Tool.ResultEmpty = lipgloss.NewStyle().Foreground(fgSubtle)
1215+ s.Tool.ResultTruncation = lipgloss.NewStyle().Foreground(fgSubtle)
1216+ s.Tool.ResultItemName = lipgloss.NewStyle().Foreground(fgBase)
1217+ s.Tool.ResultItemDesc = lipgloss.NewStyle().Foreground(fgSubtle)
1201 // Buttons
1219 // Buttons
1202− s.ButtonFocus = lipgloss.NewStyle().Foreground(white).Background(secondary)
1220+ s.Button.Focused = lipgloss.NewStyle().Foreground(white).Background(secondary)
1203− s.ButtonBlur = s.Base.Background(bgSubtle)
1221+ s.Button.Blurred = lipgloss.NewStyle().Foreground(fgBase).Background(bgSubtle)
1206− s.BorderFocus = lipgloss.NewStyle().BorderForeground(borderFocus).Border(lipgloss.RoundedBorder()).Padding(1, 2)
1208 // Editor
1223 // Editor
1209− s.EditorPromptNormalFocused = lipgloss.NewStyle().Foreground(greenDark).SetString("::: ")
1224+ s.Editor.PromptNormalFocused = lipgloss.NewStyle().Foreground(greenDark).SetString("::: ")
1210− s.EditorPromptNormalBlurred = s.EditorPromptNormalFocused.Foreground(fgMuted)
1225+ s.Editor.PromptNormalBlurred = s.Editor.PromptNormalFocused.Foreground(fgMuted)
1211− s.EditorPromptYoloIconFocused = lipgloss.NewStyle().MarginRight(1).Foreground(charmtone.Oyster).Background(charmtone.Citron).Bold(true).SetString(" ! ")
1226+ s.Editor.PromptYoloIconFocused = lipgloss.NewStyle().MarginRight(1).Foreground(charmtone.Oyster).Background(charmtone.Citron).Bold(true).SetString(" ! ")
1212− s.EditorPromptYoloIconBlurred = s.EditorPromptYoloIconFocused.Foreground(charmtone.Pepper).Background(charmtone.Squid)
1227+ s.Editor.PromptYoloIconBlurred = s.Editor.PromptYoloIconFocused.Foreground(charmtone.Pepper).Background(charmtone.Squid)
1213− s.EditorPromptYoloDotsFocused = lipgloss.NewStyle().MarginRight(1).Foreground(charmtone.Zest).SetString(":::")
1228+ s.Editor.PromptYoloDotsFocused = lipgloss.NewStyle().MarginRight(1).Foreground(charmtone.Zest).SetString(":::")
1214− s.EditorPromptYoloDotsBlurred = s.EditorPromptYoloDotsFocused.Foreground(charmtone.Squid)
1229+ s.Editor.PromptYoloDotsBlurred = s.Editor.PromptYoloDotsFocused.Foreground(charmtone.Squid)
1216− s.RadioOn = s.HalfMuted.SetString(RadioOn)
1231+ s.Radio.On = lipgloss.NewStyle().Foreground(fgHalfMuted).SetString(RadioOn)
1217− s.RadioOff = s.HalfMuted.SetString(RadioOff)
1232+ s.Radio.Off = lipgloss.NewStyle().Foreground(fgHalfMuted).SetString(RadioOff)
1218−
1233+ s.Radio.Label = lipgloss.NewStyle().Foreground(fgHalfMuted)
1219− // Logo colors
1235+ // Logo
1220− s.LogoFieldColor = primary
1236+ s.Logo.FieldColor = primary
1237+ s.Logo.TitleColorA = secondary
1238+ s.Logo.TitleColorB = primary
1221− s.LogoTitleColorA = secondary
1239+ s.Logo.CharmColor = secondary
1222− s.LogoTitleColorB = primary
1240+ s.Logo.VersionColor = primary
1223− s.LogoCharmColor = secondary
1241+ s.Logo.SmallCharm = lipgloss.NewStyle().Foreground(secondary)
1224− s.LogoVersionColor = primary
1242+ s.Logo.SmallDiagonals = lipgloss.NewStyle().Foreground(primary)
1243+ s.Logo.GradCanvas = lipgloss.NewStyle()
1244+ s.Logo.SmallGradFromColor = secondary
1245+ s.Logo.SmallGradToColor = primary
1226 // Section
1247 // Section
1227− s.Section.Title = s.Subtle
1248+ s.Section.Title = subtle
1228− s.Section.Line = s.Base.Foreground(charmtone.Charcoal)
1249+ s.Section.Line = base.Foreground(charmtone.Charcoal)
1230 // Initialize
1251 // Initialize
1231− s.Initialize.Header = s.Base
1252+ s.Initialize.Header = base
1232− s.Initialize.Content = s.Muted
1253+ s.Initialize.Content = muted
1233− s.Initialize.Accent = s.Base.Foreground(greenDark)
1254+ s.Initialize.Accent = base.Foreground(greenDark)
1235− // LSP and MCP status.
1256+ // ResourceGroup (LSP/MCP/skills sidebar lists).
1236− s.ResourceGroupTitle = lipgloss.NewStyle().Foreground(charmtone.Oyster)
1257+ s.Resource.Heading = lipgloss.NewStyle().Foreground(charmtone.Oyster)
1258+ s.Resource.Name = lipgloss.NewStyle().Foreground(charmtone.Squid)
1259+ s.Resource.StatusText = lipgloss.NewStyle().Foreground(charmtone.Oyster)
1237− s.ResourceOfflineIcon = lipgloss.NewStyle().Foreground(charmtone.Iron).SetString("●")
1260+ s.Resource.OfflineIcon = lipgloss.NewStyle().Foreground(charmtone.Iron).SetString("●")
1238− s.ResourceBusyIcon = s.ResourceOfflineIcon.Foreground(charmtone.Citron)
1261+ s.Resource.BusyIcon = s.Resource.OfflineIcon.Foreground(charmtone.Citron)
1239− s.ResourceErrorIcon = s.ResourceOfflineIcon.Foreground(charmtone.Coral)
1262+ s.Resource.ErrorIcon = s.Resource.OfflineIcon.Foreground(charmtone.Coral)
1240− s.ResourceOnlineIcon = s.ResourceOfflineIcon.Foreground(charmtone.Guac)
1263+ s.Resource.OnlineIcon = s.Resource.OfflineIcon.Foreground(charmtone.Guac)
1241− s.ResourceName = lipgloss.NewStyle().Foreground(charmtone.Squid)
1264+ s.Resource.DisabledIcon = lipgloss.NewStyle().Foreground(fgMuted).SetString("●")
1242− s.ResourceStatus = lipgloss.NewStyle().Foreground(charmtone.Oyster)
1265+ s.Resource.AdditionalText = lipgloss.NewStyle().Foreground(charmtone.Oyster)
1243− s.ResourceAdditionalText = lipgloss.NewStyle().Foreground(charmtone.Oyster)
1266+ s.Resource.CapabilityCount = lipgloss.NewStyle().Foreground(fgSubtle)
1267+ s.Resource.RowTitleBase = lipgloss.NewStyle().Foreground(fgBase)
1268+ s.Resource.RowDescBase = lipgloss.NewStyle().Foreground(fgBase)
1269+ s.Resource.DefaultTitleFg = fgMuted
1270+ s.Resource.DefaultDescFg = fgSubtle
1246− s.LSP.ErrorDiagnostic = s.Base.Foreground(redDark)
1273+ s.LSP.ErrorDiagnostic = base.Foreground(redDark)
1247− s.LSP.WarningDiagnostic = s.Base.Foreground(warning)
1274+ s.LSP.WarningDiagnostic = base.Foreground(warning)
1248− s.LSP.HintDiagnostic = s.Base.Foreground(fgHalfMuted)
1275+ s.LSP.HintDiagnostic = base.Foreground(fgHalfMuted)
1249− s.LSP.InfoDiagnostic = s.Base.Foreground(info)
1276+ s.LSP.InfoDiagnostic = base.Foreground(info)
1251 // Files
1278 // Files
1252− s.Files.Path = s.Muted
1279+ s.Files.Path = lipgloss.NewStyle().Foreground(fgMuted)
1253− s.Files.Additions = s.Base.Foreground(greenDark)
1280+ s.Files.Additions = lipgloss.NewStyle().Foreground(greenDark)
1254− s.Files.Deletions = s.Base.Foreground(redDark)
1281+ s.Files.Deletions = lipgloss.NewStyle().Foreground(redDark)
1282+ s.Files.SectionTitle = lipgloss.NewStyle().Foreground(fgSubtle)
1283+ s.Files.EmptyMessage = lipgloss.NewStyle().Foreground(fgSubtle)
1284+ s.Files.TruncationHint = lipgloss.NewStyle().Foreground(fgSubtle)
1287+ s.Sidebar.SessionTitle = lipgloss.NewStyle().Foreground(fgMuted)
1288+ s.Sidebar.WorkingDir = lipgloss.NewStyle().Foreground(fgMuted)
1291+ s.ModelInfo.Icon = lipgloss.NewStyle().Foreground(fgSubtle)
1292+ s.ModelInfo.Name = lipgloss.NewStyle().Foreground(fgBase)
1293+ s.ModelInfo.Provider = lipgloss.NewStyle().Foreground(fgMuted)
1294+ s.ModelInfo.ProviderFallback = lipgloss.NewStyle().Foreground(fgMuted).PaddingLeft(2)
1295+ s.ModelInfo.Reasoning = lipgloss.NewStyle().Foreground(fgSubtle).PaddingLeft(2)
1296+ s.ModelInfo.TokenCount = lipgloss.NewStyle().Foreground(fgSubtle)
1297+ s.ModelInfo.TokenPercentage = lipgloss.NewStyle().Foreground(fgMuted)
1298+ s.ModelInfo.Cost = lipgloss.NewStyle().Foreground(fgMuted)
1301+ s.Resource.DefaultTitleFg = fgMuted
1302+ s.Resource.DefaultDescFg = fgSubtle
1257 messageFocussedBorder := lipgloss.Border{
1305 messageFocussedBorder := lipgloss.Border{
1258 Left: "▌",
1306 Left: "▌",
1261− s.Chat.Message.NoContent = lipgloss.NewStyle().Foreground(fgBase)
1309+ s.Messages.NoContent = lipgloss.NewStyle().Foreground(fgBase)
1262− s.Chat.Message.UserBlurred = s.Chat.Message.NoContent.PaddingLeft(1).BorderLeft(true).
1310+ s.Messages.UserBlurred = s.Messages.NoContent.PaddingLeft(1).BorderLeft(true).
1263 BorderForeground(primary).BorderStyle(normalBorder)
1311 BorderForeground(primary).BorderStyle(normalBorder)
1264− s.Chat.Message.UserFocused = s.Chat.Message.NoContent.PaddingLeft(1).BorderLeft(true).
1312+ s.Messages.UserFocused = s.Messages.NoContent.PaddingLeft(1).BorderLeft(true).
1265 BorderForeground(primary).BorderStyle(messageFocussedBorder)
1313 BorderForeground(primary).BorderStyle(messageFocussedBorder)
1266− s.Chat.Message.AssistantBlurred = s.Chat.Message.NoContent.PaddingLeft(2)
1314+ s.Messages.AssistantBlurred = s.Messages.NoContent.PaddingLeft(2)
1267− s.Chat.Message.AssistantFocused = s.Chat.Message.NoContent.PaddingLeft(1).BorderLeft(true).
1315+ s.Messages.AssistantFocused = s.Messages.NoContent.PaddingLeft(1).BorderLeft(true).
1268 BorderForeground(greenDark).BorderStyle(messageFocussedBorder)
1316 BorderForeground(greenDark).BorderStyle(messageFocussedBorder)
1269− s.Chat.Message.Thinking = lipgloss.NewStyle().MaxHeight(10)
1317+ s.Messages.Thinking = lipgloss.NewStyle().MaxHeight(10)
1270− s.Chat.Message.ErrorTag = lipgloss.NewStyle().Padding(0, 1).
1318+ s.Messages.ErrorTag = lipgloss.NewStyle().Padding(0, 1).
1271 Background(red).Foreground(white)
1319 Background(red).Foreground(white)
1272− s.Chat.Message.ErrorTitle = lipgloss.NewStyle().Foreground(fgHalfMuted)
1320+ s.Messages.ErrorTitle = lipgloss.NewStyle().Foreground(fgHalfMuted)
1273− s.Chat.Message.ErrorDetails = lipgloss.NewStyle().Foreground(fgSubtle)
1321+ s.Messages.ErrorDetails = lipgloss.NewStyle().Foreground(fgSubtle)
1275 // Message item styles
1323 // Message item styles
1276− s.Chat.Message.ToolCallFocused = s.Muted.PaddingLeft(1).
1324+ s.Messages.ToolCallFocused = muted.PaddingLeft(1).
1277 BorderStyle(messageFocussedBorder).
1325 BorderStyle(messageFocussedBorder).
1278 BorderLeft(true).
1326 BorderLeft(true).
1279 BorderForeground(greenDark)
1327 BorderForeground(greenDark)
1280− s.Chat.Message.ToolCallBlurred = s.Muted.PaddingLeft(2)
1328+ s.Messages.ToolCallBlurred = muted.PaddingLeft(2)
1281 // No padding or border for compact tool calls within messages
1329 // No padding or border for compact tool calls within messages
1282− s.Chat.Message.ToolCallCompact = s.Muted
1330+ s.Messages.ToolCallCompact = muted
1283− s.Chat.Message.SectionHeader = s.Base.PaddingLeft(2)
1331+ s.Messages.SectionHeader = base.PaddingLeft(2)
1284− s.Chat.Message.AssistantInfoIcon = s.Subtle
1332+ s.Messages.AssistantInfoIcon = subtle
1285− s.Chat.Message.AssistantInfoModel = s.Muted
1333+ s.Messages.AssistantInfoModel = muted
1286− s.Chat.Message.AssistantInfoProvider = s.Subtle
1334+ s.Messages.AssistantInfoProvider = subtle
1287− s.Chat.Message.AssistantInfoDuration = s.Subtle
1335+ s.Messages.AssistantInfoDuration = subtle
1336+ s.Messages.AssistantCanceled = lipgloss.NewStyle().Foreground(fgBase).Italic(true)
1289 // Thinking section styles
1338 // Thinking section styles
1290− s.Chat.Message.ThinkingBox = s.Subtle.Background(bgBaseLighter)
1339+ s.Messages.ThinkingBox = subtle.Background(bgBaseLighter)
1291− s.Chat.Message.ThinkingTruncationHint = s.Muted
1340+ s.Messages.ThinkingTruncationHint = muted
1292− s.Chat.Message.ThinkingFooterTitle = s.Muted
1341+ s.Messages.ThinkingFooterTitle = muted
1293− s.Chat.Message.ThinkingFooterDuration = s.Subtle
1342+ s.Messages.ThinkingFooterDuration = subtle
1295 // Text selection.
1344 // Text selection.
1296 s.TextSelection = lipgloss.NewStyle().Foreground(charmtone.Salt).Background(charmtone.Charple)
1345 s.TextSelection = lipgloss.NewStyle().Foreground(charmtone.Salt).Background(charmtone.Charple)
@@ -1300,6 +1349,25 @@ func DefaultStyles() Styles {
1300 s.Dialog.TitleText = base.Foreground(primary)
1349 s.Dialog.TitleText = base.Foreground(primary)
1301 s.Dialog.TitleError = base.Foreground(red)
1350 s.Dialog.TitleError = base.Foreground(red)
1302 s.Dialog.TitleAccent = base.Foreground(green).Bold(true)
1351 s.Dialog.TitleAccent = base.Foreground(green).Bold(true)
1352+ s.Dialog.TitleLineBase = lipgloss.NewStyle()
1353+ s.Dialog.TitleGradFromColor = primary
1354+ s.Dialog.TitleGradToColor = secondary
1356+ // Dialog.ListItem (commands, reasoning, models)
1357+ s.Dialog.ListItem.InfoBlurred = lipgloss.NewStyle().Foreground(fgBase)
1358+ s.Dialog.ListItem.InfoFocused = lipgloss.NewStyle().Foreground(fgBase)
1361+ s.Dialog.Models.ConfiguredText = lipgloss.NewStyle().Foreground(fgSubtle)
1363+ // Dialog.Permissions
1364+ s.Dialog.Permissions.KeyText = lipgloss.NewStyle().Foreground(fgMuted)
1365+ s.Dialog.Permissions.ValueText = lipgloss.NewStyle().Foreground(fgBase)
1366+ s.Dialog.Permissions.ParamsBg = bgSubtle
1369+ s.Dialog.Quit.Content = lipgloss.NewStyle().Foreground(fgBase)
1370+ s.Dialog.Quit.Frame = lipgloss.NewStyle().BorderForeground(borderFocus).Border(lipgloss.RoundedBorder()).Padding(1, 2)
1303 s.Dialog.View = base.Border(lipgloss.RoundedBorder()).BorderForeground(borderFocus)
1371 s.Dialog.View = base.Border(lipgloss.RoundedBorder()).BorderForeground(borderFocus)
1304 s.Dialog.PrimaryText = base.Padding(0, 1).Foreground(primary)
1372 s.Dialog.PrimaryText = base.Padding(0, 1).Foreground(primary)
1305 s.Dialog.SecondaryText = base.Padding(0, 1).Foreground(fgSubtle)
1373 s.Dialog.SecondaryText = base.Padding(0, 1).Foreground(fgSubtle)
@@ -1323,6 +1391,20 @@ func DefaultStyles() Styles {
1324 s.Dialog.ImagePreview = lipgloss.NewStyle().Padding(0, 1).Foreground(fgSubtle)
1392 s.Dialog.ImagePreview = lipgloss.NewStyle().Padding(0, 1).Foreground(fgSubtle)
1394+ // API key input dialog
1395+ s.Dialog.APIKey.Spinner = base.Foreground(green)
1398+ s.Dialog.OAuth.Spinner = base.Foreground(greenLight)
1399+ s.Dialog.OAuth.Instructions = lipgloss.NewStyle().Foreground(white)
1400+ s.Dialog.OAuth.UserCode = lipgloss.NewStyle().Bold(true).Foreground(white)
1401+ s.Dialog.OAuth.Success = lipgloss.NewStyle().Foreground(greenLight)
1402+ s.Dialog.OAuth.Link = lipgloss.NewStyle().Foreground(greenDark).Underline(true)
1403+ s.Dialog.OAuth.Enter = lipgloss.NewStyle().Foreground(primary)
1404+ s.Dialog.OAuth.ErrorText = lipgloss.NewStyle().Foreground(error)
1405+ s.Dialog.OAuth.StatusText = lipgloss.NewStyle().Foreground(fgMuted)
1406+ s.Dialog.OAuth.UserCodeBg = bgBaseLighter
1326 s.Dialog.Arguments.Content = base.Padding(1)
1408 s.Dialog.Arguments.Content = base.Padding(1)
1327 s.Dialog.Arguments.Description = base.MarginBottom(1).MaxHeight(3)
1409 s.Dialog.Arguments.Description = base.MarginBottom(1).MaxHeight(3)
1328 s.Dialog.Arguments.InputLabelBlurred = base.Foreground(fgMuted)
1410 s.Dialog.Arguments.InputLabelBlurred = base.Foreground(fgMuted)
@@ -1332,20 +1414,22 @@ func DefaultStyles() Styles {
1333 s.Dialog.Sessions.DeletingTitle = s.Dialog.Title.Foreground(red)
1415 s.Dialog.Sessions.DeletingTitle = s.Dialog.Title.Foreground(red)
1334 s.Dialog.Sessions.DeletingView = s.Dialog.View.BorderForeground(red)
1416 s.Dialog.Sessions.DeletingView = s.Dialog.View.BorderForeground(red)
1335− s.Dialog.Sessions.DeletingMessage = s.Base.Padding(1)
1417+ s.Dialog.Sessions.DeletingMessage = base.Padding(1)
1336 s.Dialog.Sessions.DeletingTitleGradientFromColor = red
1418 s.Dialog.Sessions.DeletingTitleGradientFromColor = red
1337− s.Dialog.Sessions.DeletingTitleGradientToColor = s.Primary
1419+ s.Dialog.Sessions.DeletingTitleGradientToColor = primary
1338 s.Dialog.Sessions.DeletingItemBlurred = s.Dialog.NormalItem.Foreground(fgSubtle)
1420 s.Dialog.Sessions.DeletingItemBlurred = s.Dialog.NormalItem.Foreground(fgSubtle)
1339 s.Dialog.Sessions.DeletingItemFocused = s.Dialog.SelectedItem.Background(red).Foreground(charmtone.Butter)
1421 s.Dialog.Sessions.DeletingItemFocused = s.Dialog.SelectedItem.Background(red).Foreground(charmtone.Butter)
1341 s.Dialog.Sessions.RenamingingTitle = s.Dialog.Title.Foreground(charmtone.Zest)
1423 s.Dialog.Sessions.RenamingingTitle = s.Dialog.Title.Foreground(charmtone.Zest)
1342 s.Dialog.Sessions.RenamingView = s.Dialog.View.BorderForeground(charmtone.Zest)
1424 s.Dialog.Sessions.RenamingView = s.Dialog.View.BorderForeground(charmtone.Zest)
1343− s.Dialog.Sessions.RenamingingMessage = s.Base.Padding(1)
1425+ s.Dialog.Sessions.RenamingingMessage = base.Padding(1)
1344 s.Dialog.Sessions.RenamingTitleGradientFromColor = charmtone.Zest
1426 s.Dialog.Sessions.RenamingTitleGradientFromColor = charmtone.Zest
1345 s.Dialog.Sessions.RenamingTitleGradientToColor = charmtone.Bok
1427 s.Dialog.Sessions.RenamingTitleGradientToColor = charmtone.Bok
1346 s.Dialog.Sessions.RenamingItemBlurred = s.Dialog.NormalItem.Foreground(fgSubtle)
1428 s.Dialog.Sessions.RenamingItemBlurred = s.Dialog.NormalItem.Foreground(fgSubtle)
1347 s.Dialog.Sessions.RenamingingItemFocused = s.Dialog.SelectedItem.UnsetBackground().UnsetForeground()
1429 s.Dialog.Sessions.RenamingingItemFocused = s.Dialog.SelectedItem.UnsetBackground().UnsetForeground()
1348 s.Dialog.Sessions.RenamingPlaceholder = base.Foreground(charmtone.Squid)
1430 s.Dialog.Sessions.RenamingPlaceholder = base.Foreground(charmtone.Squid)
1431+ s.Dialog.Sessions.InfoBlurred = lipgloss.NewStyle().Foreground(fgSubtle)
1432+ s.Dialog.Sessions.InfoFocused = lipgloss.NewStyle().Foreground(fgBase)
1350 s.Status.Help = lipgloss.NewStyle().Padding(0, 1)
1434 s.Status.Help = lipgloss.NewStyle().Padding(0, 1)
1351 s.Status.SuccessIndicator = base.Foreground(bgSubtle).Background(green).Padding(0, 1).Bold(true).SetString("OKAY!")
1435 s.Status.SuccessIndicator = base.Foreground(bgSubtle).Background(green).Padding(0, 1).Bold(true).SetString("OKAY!")
@@ -1375,11 +1459,19 @@ func DefaultStyles() Styles {
1375 s.Pills.Base = base.Padding(0, 1)
1459 s.Pills.Base = base.Padding(0, 1)
1376 s.Pills.Focused = base.Padding(0, 1).BorderStyle(lipgloss.RoundedBorder()).BorderForeground(bgOverlay)
1460 s.Pills.Focused = base.Padding(0, 1).BorderStyle(lipgloss.RoundedBorder()).BorderForeground(bgOverlay)
1377 s.Pills.Blurred = base.Padding(0, 1).BorderStyle(lipgloss.HiddenBorder())
1461 s.Pills.Blurred = base.Padding(0, 1).BorderStyle(lipgloss.HiddenBorder())
1378− s.Pills.QueueItemPrefix = s.Muted.SetString(" •")
1462+ s.Pills.QueueItemPrefix = lipgloss.NewStyle().Foreground(fgMuted).SetString(" •")
1379− s.Pills.HelpKey = s.Muted
1463+ s.Pills.QueueItemText = lipgloss.NewStyle().Foreground(fgMuted)
1464+ s.Pills.QueueLabel = lipgloss.NewStyle().Foreground(fgBase)
1465+ s.Pills.QueueIconBase = lipgloss.NewStyle().Foreground(fgBase)
1466+ s.Pills.QueueGradFromColor = redDark
1467+ s.Pills.QueueGradToColor = secondary
1468+ s.Pills.TodoLabel = lipgloss.NewStyle().Foreground(fgBase)
1469+ s.Pills.TodoProgress = lipgloss.NewStyle().Foreground(fgMuted)
1470+ s.Pills.TodoCurrentTask = lipgloss.NewStyle().Foreground(fgSubtle)
1471+ s.Pills.TodoSpinner = lipgloss.NewStyle().Foreground(greenDark)
1472+ s.Pills.HelpKey = lipgloss.NewStyle().Foreground(fgMuted)
1380− s.Pills.HelpText = s.Subtle
1473+ s.Pills.HelpText = lipgloss.NewStyle().Foreground(fgSubtle)
1381 s.Pills.Area = base
1474 s.Pills.Area = base
1382− s.Pills.TodoSpinner = base.Foreground(greenDark)
1384 return s
1476 return s