on main help sign in
chore(styles): clean up theme definitions
8ebab21Christian Rocha
internal/ui/styles/quickstyle.go+325−361
@@ -20,41 +20,39 @@ type quickStyleOpts struct {
20 // Brand.
20 // Brand.
21 primary color.Color
21 primary color.Color
22 secondary color.Color
22 secondary color.Color
23− tertiary color.Color
23+ accent color.Color
24
24
25− // Foregrounds.
25+ // Default foreground and background colors.
26− fgBase color.Color
26+ fgBase color.Color
27− fgMuted color.Color
27+ bgBase color.Color
28+
29+ // Low-contrast dividers, separators, and rule lines.
28− fgHalfMuted color.Color
30+ separator color.Color
31+
32+ fgSubtle color.Color
33+ fgMoreSubtle color.Color
29− fgSubtle color.Color
34+ fgMostSubtle color.Color
30
35
31 // Contrast pairings: foregrounds designed to sit on top of a
36 // Contrast pairings: foregrounds designed to sit on top of a
32 // matching background role.
37 // matching background role.
33 onPrimary color.Color // foreground on primary backgrounds.
38 onPrimary color.Color // foreground on primary backgrounds.
34− onAccent color.Color // foreground on saturated status/accent backgrounds.
39+
35−
40+ bgMostVisible color.Color
36− // Backgrounds.
37− bgBase color.Color
41+ bgLessVisible color.Color
38− bgBaseLighter color.Color
39− bgSubtle color.Color
40− bgOverlay color.Color
41−
42− // Borders.
43− border color.Color
44− borderFocus color.Color
42+ bgLeastVisible color.Color
45−
43+
46− // Status.
44+ // Statuses.
47− danger color.Color
45+ destructive color.Color
48− error color.Color
46+ error color.Color
49− warning color.Color
47+ warning color.Color
50− warningStrong color.Color
48+ warningSubtle color.Color
51− busy color.Color
49+ busy color.Color
52− info color.Color
50+ info color.Color
53− infoSubtle color.Color
51+ infoMoreSubtle color.Color
54− infoMuted color.Color
52+ infoMostSubtle color.Color
55− success color.Color
53+ success color.Color
56− successSubtle color.Color
54+ successMoreSubtle color.Color
57− successMuted color.Color
55+ successMostSubtle color.Color
58}
56}
59
57
60// quickStyle builds a complete Styles value from a palette of semantic
58// quickStyle builds a complete Styles value from a palette of semantic
@@ -65,68 +63,34 @@ type quickStyleOpts struct {
65// add overrides as needed.
63// add overrides as needed.
66func quickStyle(o quickStyleOpts) Styles {
64func quickStyle(o quickStyleOpts) Styles {
67 var (
65 var (
68− primary = o.primary
69− secondary = o.secondary
70− tertiary = o.tertiary
71−
72− fgBase = o.fgBase
73− fgMuted = o.fgMuted
74− fgHalfMuted = o.fgHalfMuted
75− fgSubtle = o.fgSubtle
76−
77− onPrimary = o.onPrimary
78− onAccent = o.onAccent
79−
80− bgBase = o.bgBase
81− bgBaseLighter = o.bgBaseLighter
82− bgSubtle = o.bgSubtle
83− bgOverlay = o.bgOverlay
84−
85− border = o.border
86− borderFocus = o.borderFocus
87−
88− danger = o.danger
89− error = o.error
90− warning = o.warning
91− warningStrong = o.warningStrong
92− busy = o.busy
93− info = o.info
94− infoSubtle = o.infoSubtle
95− infoMuted = o.infoMuted
96− success = o.success
97− successSubtle = o.successSubtle
98− successMuted = o.successMuted
99− )
100−
101− var (
102− base = lipgloss.NewStyle().Foreground(fgBase)
66+ base = lipgloss.NewStyle().Foreground(o.fgBase)
103− muted = lipgloss.NewStyle().Foreground(fgMuted)
67+ muted = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
104− subtle = lipgloss.NewStyle().Foreground(fgSubtle)
68+ subtle = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
105 s Styles
69 s Styles
106 )
70 )
107
71
108− s.Background = bgBase
72+ s.Background = o.bgBase
109
73
110 // Populate color fields
74 // Populate color fields
111− s.WorkingGradFromColor = primary
75+ s.WorkingGradFromColor = o.primary
112− s.WorkingGradToColor = secondary
76+ s.WorkingGradToColor = o.secondary
113− s.WorkingLabelColor = fgBase
77+ s.WorkingLabelColor = o.fgBase
114
78
115 s.TextInput = textinput.Styles{
79 s.TextInput = textinput.Styles{
116 Focused: textinput.StyleState{
80 Focused: textinput.StyleState{
117 Text: base,
81 Text: base,
118− Placeholder: base.Foreground(fgSubtle),
82+ Placeholder: base.Foreground(o.fgMostSubtle),
119− Prompt: base.Foreground(tertiary),
83+ Prompt: base.Foreground(o.accent),
120− Suggestion: base.Foreground(fgSubtle),
84+ Suggestion: base.Foreground(o.fgMostSubtle),
121 },
85 },
122 Blurred: textinput.StyleState{
86 Blurred: textinput.StyleState{
123− Text: base.Foreground(fgMuted),
87+ Text: base.Foreground(o.fgMoreSubtle),
124− Placeholder: base.Foreground(fgSubtle),
88+ Placeholder: base.Foreground(o.fgMostSubtle),
125− Prompt: base.Foreground(fgMuted),
89+ Prompt: base.Foreground(o.fgMoreSubtle),
126− Suggestion: base.Foreground(fgSubtle),
90+ Suggestion: base.Foreground(o.fgMostSubtle),
127 },
91 },
128 Cursor: textinput.CursorStyle{
92 Cursor: textinput.CursorStyle{
129− Color: secondary,
93+ Color: o.secondary,
130 Shape: tea.CursorBlock,
94 Shape: tea.CursorBlock,
131 Blink: true,
95 Blink: true,
132 },
96 },
@@ -136,23 +100,23 @@ func quickStyle(o quickStyleOpts) Styles {
136 Focused: textarea.StyleState{
100 Focused: textarea.StyleState{
137 Base: base,
101 Base: base,
138 Text: base,
102 Text: base,
139− LineNumber: base.Foreground(fgSubtle),
103+ LineNumber: base.Foreground(o.fgMostSubtle),
140 CursorLine: base,
104 CursorLine: base,
141− CursorLineNumber: base.Foreground(fgSubtle),
105+ CursorLineNumber: base.Foreground(o.fgMostSubtle),
142− Placeholder: base.Foreground(fgSubtle),
106+ Placeholder: base.Foreground(o.fgMostSubtle),
143− Prompt: base.Foreground(tertiary),
107+ Prompt: base.Foreground(o.accent),
144 },
108 },
145 Blurred: textarea.StyleState{
109 Blurred: textarea.StyleState{
146 Base: base,
110 Base: base,
147− Text: base.Foreground(fgMuted),
111+ Text: base.Foreground(o.fgMoreSubtle),
148− LineNumber: base.Foreground(fgMuted),
112+ LineNumber: base.Foreground(o.fgMoreSubtle),
149 CursorLine: base,
113 CursorLine: base,
150− CursorLineNumber: base.Foreground(fgMuted),
114+ CursorLineNumber: base.Foreground(o.fgMoreSubtle),
151− Placeholder: base.Foreground(fgSubtle),
115+ Placeholder: base.Foreground(o.fgMostSubtle),
152− Prompt: base.Foreground(fgMuted),
116+ Prompt: base.Foreground(o.fgMoreSubtle),
153 },
117 },
154 Cursor: textarea.CursorStyle{
118 Cursor: textarea.CursorStyle{
155− Color: secondary,
119+ Color: o.secondary,
156 Shape: tea.CursorBlock,
120 Shape: tea.CursorBlock,
157 Blink: true,
121 Blink: true,
158 },
122 },
@@ -163,7 +127,7 @@ func quickStyle(o quickStyleOpts) Styles {
163 StylePrimitive: ansi.StylePrimitive{
127 StylePrimitive: ansi.StylePrimitive{
164 // BlockPrefix: "\n",
128 // BlockPrefix: "\n",
165 // BlockSuffix: "\n",
129 // BlockSuffix: "\n",
166− Color: hex(fgHalfMuted),
130+ Color: hex(o.fgSubtle),
167 },
131 },
168 // Margin: new(uint(defaultMargin)),
132 // Margin: new(uint(defaultMargin)),
169 },
133 },
@@ -178,7 +142,7 @@ func quickStyle(o quickStyleOpts) Styles {
178 Heading: ansi.StyleBlock{
142 Heading: ansi.StyleBlock{
179 StylePrimitive: ansi.StylePrimitive{
143 StylePrimitive: ansi.StylePrimitive{
180 BlockSuffix: "\n",
144 BlockSuffix: "\n",
181− Color: hex(info),
145+ Color: hex(o.info),
182 Bold: new(true),
146 Bold: new(true),
183 },
147 },
184 },
148 },
@@ -186,8 +150,8 @@ func quickStyle(o quickStyleOpts) Styles {
186 StylePrimitive: ansi.StylePrimitive{
150 StylePrimitive: ansi.StylePrimitive{
187 Prefix: " ",
151 Prefix: " ",
188 Suffix: " ",
152 Suffix: " ",
189− Color: hex(warning),
153+ Color: hex(o.warningSubtle),
190− BackgroundColor: hex(primary),
154+ BackgroundColor: hex(o.primary),
191 Bold: new(true),
155 Bold: new(true),
192 },
156 },
193 },
157 },
@@ -214,7 +178,7 @@ func quickStyle(o quickStyleOpts) Styles {
214 H6: ansi.StyleBlock{
178 H6: ansi.StyleBlock{
215 StylePrimitive: ansi.StylePrimitive{
179 StylePrimitive: ansi.StylePrimitive{
216 Prefix: "###### ",
180 Prefix: "###### ",
217− Color: hex(successMuted),
181+ Color: hex(o.successMostSubtle),
218 Bold: new(false),
182 Bold: new(false),
219 },
183 },
220 },
184 },
@@ -228,7 +192,7 @@ func quickStyle(o quickStyleOpts) Styles {
228 Bold: new(true),
192 Bold: new(true),
229 },
193 },
230 HorizontalRule: ansi.StylePrimitive{
194 HorizontalRule: ansi.StylePrimitive{
231− Color: hex(border),
195+ Color: hex(o.separator),
232 Format: "\n--------\n",
196 Format: "\n--------\n",
233 },
197 },
234 Item: ansi.StylePrimitive{
198 Item: ansi.StylePrimitive{
@@ -247,7 +211,7 @@ func quickStyle(o quickStyleOpts) Styles {
247 Underline: new(true),
211 Underline: new(true),
248 },
212 },
249 LinkText: ansi.StylePrimitive{
213 LinkText: ansi.StylePrimitive{
250− Color: hex(successMuted),
214+ Color: hex(o.successMostSubtle),
251 Bold: new(true),
215 Bold: new(true),
252 },
216 },
253 Image: ansi.StylePrimitive{
217 Image: ansi.StylePrimitive{
@@ -255,40 +219,40 @@ func quickStyle(o quickStyleOpts) Styles {
255 Underline: new(true),
219 Underline: new(true),
256 },
220 },
257 ImageText: ansi.StylePrimitive{
221 ImageText: ansi.StylePrimitive{
258− Color: hex(fgMuted),
222+ Color: hex(o.fgMoreSubtle),
259 Format: "Image: {{.text}} →",
223 Format: "Image: {{.text}} →",
260 },
224 },
261 Code: ansi.StyleBlock{
225 Code: ansi.StyleBlock{
262 StylePrimitive: ansi.StylePrimitive{
226 StylePrimitive: ansi.StylePrimitive{
263 Prefix: " ",
227 Prefix: " ",
264 Suffix: " ",
228 Suffix: " ",
265− Color: hex(danger),
229+ Color: hex(o.destructive),
266− BackgroundColor: hex(bgSubtle),
230+ BackgroundColor: hex(o.bgLessVisible),
267 },
231 },
268 },
232 },
269 CodeBlock: ansi.StyleCodeBlock{
233 CodeBlock: ansi.StyleCodeBlock{
270 StyleBlock: ansi.StyleBlock{
234 StyleBlock: ansi.StyleBlock{
271 StylePrimitive: ansi.StylePrimitive{
235 StylePrimitive: ansi.StylePrimitive{
272− Color: hex(bgSubtle),
236+ Color: hex(o.bgLessVisible),
273 },
237 },
274 Margin: new(uint(defaultMargin)),
238 Margin: new(uint(defaultMargin)),
275 },
239 },
276 Chroma: &ansi.Chroma{
240 Chroma: &ansi.Chroma{
277 Text: ansi.StylePrimitive{
241 Text: ansi.StylePrimitive{
278− Color: hex(fgHalfMuted),
242+ Color: hex(o.fgSubtle),
279 },
243 },
280 Error: ansi.StylePrimitive{
244 Error: ansi.StylePrimitive{
281− Color: hex(onAccent),
245+ Color: hex(o.primary),
282− BackgroundColor: hex(error),
246+ BackgroundColor: hex(o.error),
283 },
247 },
284 Comment: ansi.StylePrimitive{
248 Comment: ansi.StylePrimitive{
285− Color: hex(fgSubtle),
249+ Color: hex(o.fgMostSubtle),
286 },
250 },
287 CommentPreproc: ansi.StylePrimitive{
251 CommentPreproc: ansi.StylePrimitive{
288 Color: hex(charmtone.Bengal),
252 Color: hex(charmtone.Bengal),
289 },
253 },
290 Keyword: ansi.StylePrimitive{
254 Keyword: ansi.StylePrimitive{
291− Color: hex(info),
255+ Color: hex(o.info),
292 },
256 },
293 KeywordReserved: ansi.StylePrimitive{
257 KeywordReserved: ansi.StylePrimitive{
294 Color: hex(charmtone.Pony),
258 Color: hex(charmtone.Pony),
@@ -303,10 +267,10 @@ func quickStyle(o quickStyleOpts) Styles {
303 Color: hex(charmtone.Salmon),
267 Color: hex(charmtone.Salmon),
304 },
268 },
305 Punctuation: ansi.StylePrimitive{
269 Punctuation: ansi.StylePrimitive{
306− Color: hex(warning),
270+ Color: hex(o.warningSubtle),
307 },
271 },
308 Name: ansi.StylePrimitive{
272 Name: ansi.StylePrimitive{
309− Color: hex(fgHalfMuted),
273+ Color: hex(o.fgSubtle),
310 },
274 },
311 NameBuiltin: ansi.StylePrimitive{
275 NameBuiltin: ansi.StylePrimitive{
312 Color: hex(charmtone.Cheeky),
276 Color: hex(charmtone.Cheeky),
@@ -326,34 +290,34 @@ func quickStyle(o quickStyleOpts) Styles {
326 Color: hex(charmtone.Citron),
290 Color: hex(charmtone.Citron),
327 },
291 },
328 NameFunction: ansi.StylePrimitive{
292 NameFunction: ansi.StylePrimitive{
329− Color: hex(successMuted),
293+ Color: hex(o.successMostSubtle),
330 },
294 },
331 LiteralNumber: ansi.StylePrimitive{
295 LiteralNumber: ansi.StylePrimitive{
332− Color: hex(success),
296+ Color: hex(o.success),
333 },
297 },
334 LiteralString: ansi.StylePrimitive{
298 LiteralString: ansi.StylePrimitive{
335 Color: hex(charmtone.Cumin),
299 Color: hex(charmtone.Cumin),
336 },
300 },
337 LiteralStringEscape: ansi.StylePrimitive{
301 LiteralStringEscape: ansi.StylePrimitive{
338− Color: hex(successSubtle),
302+ Color: hex(o.successMoreSubtle),
339 },
303 },
340 GenericDeleted: ansi.StylePrimitive{
304 GenericDeleted: ansi.StylePrimitive{
341− Color: hex(danger),
305+ Color: hex(o.destructive),
342 },
306 },
343 GenericEmph: ansi.StylePrimitive{
307 GenericEmph: ansi.StylePrimitive{
344 Italic: new(true),
308 Italic: new(true),
345 },
309 },
346 GenericInserted: ansi.StylePrimitive{
310 GenericInserted: ansi.StylePrimitive{
347− Color: hex(successMuted),
311+ Color: hex(o.successMostSubtle),
348 },
312 },
349 GenericStrong: ansi.StylePrimitive{
313 GenericStrong: ansi.StylePrimitive{
350 Bold: new(true),
314 Bold: new(true),
351 },
315 },
352 GenericSubheading: ansi.StylePrimitive{
316 GenericSubheading: ansi.StylePrimitive{
353− Color: hex(fgMuted),
317+ Color: hex(o.fgMoreSubtle),
354 },
318 },
355 Background: ansi.StylePrimitive{
319 Background: ansi.StylePrimitive{
356− BackgroundColor: hex(bgSubtle),
320+ BackgroundColor: hex(o.bgLessVisible),
357 },
321 },
358 },
322 },
359 },
323 },
@@ -368,8 +332,8 @@ func quickStyle(o quickStyleOpts) Styles {
368 }
332 }
369
333
370 // QuietMarkdown style - muted colors on subtle background for thinking content.
334 // QuietMarkdown style - muted colors on subtle background for thinking content.
371− plainBg := hex(bgBaseLighter)
335+ plainBg := hex(o.bgLeastVisible)
372− plainFg := hex(fgMuted)
336+ plainFg := hex(o.fgMoreSubtle)
373 s.QuietMarkdown = ansi.StyleConfig{
337 s.QuietMarkdown = ansi.StyleConfig{
374 Document: ansi.StyleBlock{
338 Document: ansi.StyleBlock{
375 StylePrimitive: ansi.StylePrimitive{
339 StylePrimitive: ansi.StylePrimitive{
@@ -531,37 +495,37 @@ func quickStyle(o quickStyleOpts) Styles {
531 }
495 }
532
496
533 s.Help = help.Styles{
497 s.Help = help.Styles{
534− ShortKey: base.Foreground(fgMuted),
498+ ShortKey: base.Foreground(o.fgMoreSubtle),
535− ShortDesc: base.Foreground(fgSubtle),
499+ ShortDesc: base.Foreground(o.fgMostSubtle),
536− ShortSeparator: base.Foreground(border),
500+ ShortSeparator: base.Foreground(o.separator),
537− Ellipsis: base.Foreground(border),
501+ Ellipsis: base.Foreground(o.separator),
538− FullKey: base.Foreground(fgMuted),
502+ FullKey: base.Foreground(o.fgMoreSubtle),
539− FullDesc: base.Foreground(fgSubtle),
503+ FullDesc: base.Foreground(o.fgMostSubtle),
540− FullSeparator: base.Foreground(border),
504+ FullSeparator: base.Foreground(o.separator),
541 }
505 }
542
506
543 s.Diff = diffview.Style{
507 s.Diff = diffview.Style{
544 DividerLine: diffview.LineStyle{
508 DividerLine: diffview.LineStyle{
545 LineNumber: lipgloss.NewStyle().
509 LineNumber: lipgloss.NewStyle().
546− Foreground(fgHalfMuted).
510+ Foreground(o.fgSubtle).
547− Background(bgBaseLighter),
511+ Background(o.bgLeastVisible),
548 Code: lipgloss.NewStyle().
512 Code: lipgloss.NewStyle().
549− Foreground(fgHalfMuted).
513+ Foreground(o.fgSubtle).
550− Background(bgBaseLighter),
514+ Background(o.bgLeastVisible),
551 },
515 },
552 MissingLine: diffview.LineStyle{
516 MissingLine: diffview.LineStyle{
553 LineNumber: lipgloss.NewStyle().
517 LineNumber: lipgloss.NewStyle().
554− Background(bgBaseLighter),
518+ Background(o.bgLeastVisible),
555 Code: lipgloss.NewStyle().
519 Code: lipgloss.NewStyle().
556− Background(bgBaseLighter),
520+ Background(o.bgLeastVisible),
557 },
521 },
558 EqualLine: diffview.LineStyle{
522 EqualLine: diffview.LineStyle{
559 LineNumber: lipgloss.NewStyle().
523 LineNumber: lipgloss.NewStyle().
560− Foreground(fgMuted).
524+ Foreground(o.fgMoreSubtle).
561− Background(bgBase),
525+ Background(o.bgBase),
562 Code: lipgloss.NewStyle().
526 Code: lipgloss.NewStyle().
563− Foreground(fgMuted).
527+ Foreground(o.fgMoreSubtle).
564− Background(bgBase),
528+ Background(o.bgBase),
565 },
529 },
566 InsertLine: diffview.LineStyle{
530 InsertLine: diffview.LineStyle{
567 LineNumber: lipgloss.NewStyle().
531 LineNumber: lipgloss.NewStyle().
@@ -585,249 +549,249 @@ func quickStyle(o quickStyleOpts) Styles {
585 },
549 },
586 Filename: diffview.LineStyle{
550 Filename: diffview.LineStyle{
587 LineNumber: lipgloss.NewStyle().
551 LineNumber: lipgloss.NewStyle().
588− Foreground(fgHalfMuted).
552+ Foreground(o.fgSubtle).
589− Background(bgBaseLighter),
553+ Background(o.bgLeastVisible),
590 Code: lipgloss.NewStyle().
554 Code: lipgloss.NewStyle().
591− Foreground(fgHalfMuted).
555+ Foreground(o.fgSubtle).
592− Background(bgBaseLighter),
556+ Background(o.bgLeastVisible),
593 },
557 },
594 }
558 }
595
559
596 s.FilePicker = filepicker.Styles{
560 s.FilePicker = filepicker.Styles{
597− DisabledCursor: base.Foreground(fgMuted),
561+ DisabledCursor: base.Foreground(o.fgMoreSubtle),
598− Cursor: base.Foreground(fgBase),
562+ Cursor: base.Foreground(o.fgBase),
599− Symlink: base.Foreground(fgSubtle),
563+ Symlink: base.Foreground(o.fgMostSubtle),
600− Directory: base.Foreground(primary),
564+ Directory: base.Foreground(o.primary),
601− File: base.Foreground(fgBase),
565+ File: base.Foreground(o.fgBase),
602− DisabledFile: base.Foreground(fgMuted),
566+ DisabledFile: base.Foreground(o.fgMoreSubtle),
603− DisabledSelected: base.Background(bgOverlay).Foreground(fgMuted),
567+ DisabledSelected: base.Background(o.bgMostVisible).Foreground(o.fgMoreSubtle),
604− Permission: base.Foreground(fgMuted),
568+ Permission: base.Foreground(o.fgMoreSubtle),
605− Selected: base.Background(primary).Foreground(fgBase),
569+ Selected: base.Background(o.primary).Foreground(o.fgBase),
606− FileSize: base.Foreground(fgMuted),
570+ FileSize: base.Foreground(o.fgMoreSubtle),
607− EmptyDirectory: base.Foreground(fgMuted).PaddingLeft(2).SetString("Empty directory"),
571+ EmptyDirectory: base.Foreground(o.fgMoreSubtle).PaddingLeft(2).SetString("Empty directory"),
608 }
572 }
609
573
610 // borders
574 // borders
611− s.ToolCallSuccess = lipgloss.NewStyle().Foreground(success).SetString(ToolSuccess)
575+ s.ToolCallSuccess = lipgloss.NewStyle().Foreground(o.success).SetString(ToolSuccess)
612
576
613− s.Header.Charm = base.Foreground(secondary)
577+ s.Header.Charm = base.Foreground(o.secondary)
614− s.Header.Diagonals = base.Foreground(primary)
578+ s.Header.Diagonals = base.Foreground(o.primary)
615 s.Header.Percentage = muted
579 s.Header.Percentage = muted
616 s.Header.Keystroke = muted
580 s.Header.Keystroke = muted
617 s.Header.KeystrokeTip = subtle
581 s.Header.KeystrokeTip = subtle
618 s.Header.WorkingDir = muted
582 s.Header.WorkingDir = muted
619 s.Header.Separator = subtle
583 s.Header.Separator = subtle
620− s.Header.Wrapper = lipgloss.NewStyle().Foreground(fgBase)
584+ s.Header.Wrapper = lipgloss.NewStyle().Foreground(o.fgBase)
621 s.Header.LogoGradCanvas = lipgloss.NewStyle()
585 s.Header.LogoGradCanvas = lipgloss.NewStyle()
622− s.Header.LogoGradFromColor = secondary
586+ s.Header.LogoGradFromColor = o.secondary
623− s.Header.LogoGradToColor = primary
587+ s.Header.LogoGradToColor = o.primary
624
588
625 s.CompactDetails.Title = base
589 s.CompactDetails.Title = base
626− s.CompactDetails.View = base.Padding(0, 1, 1, 1).Border(lipgloss.RoundedBorder()).BorderForeground(borderFocus)
590+ s.CompactDetails.View = base.Padding(0, 1, 1, 1).Border(lipgloss.RoundedBorder()).BorderForeground(o.primary)
627− s.CompactDetails.Version = lipgloss.NewStyle().Foreground(border)
591+ s.CompactDetails.Version = lipgloss.NewStyle().Foreground(o.separator)
628
592
629 // Tool rendering styles
593 // Tool rendering styles
630− s.Tool.IconPending = base.Foreground(successMuted).SetString(ToolPending)
594+ s.Tool.IconPending = base.Foreground(o.successMostSubtle).SetString(ToolPending)
631− s.Tool.IconSuccess = base.Foreground(success).SetString(ToolSuccess)
595+ s.Tool.IconSuccess = base.Foreground(o.success).SetString(ToolSuccess)
632− s.Tool.IconError = base.Foreground(error).SetString(ToolError)
596+ s.Tool.IconError = base.Foreground(o.error).SetString(ToolError)
633 s.Tool.IconCancelled = muted.SetString(ToolPending)
597 s.Tool.IconCancelled = muted.SetString(ToolPending)
634
598
635− s.Tool.NameNormal = base.Foreground(info)
599+ s.Tool.NameNormal = base.Foreground(o.info)
636− s.Tool.NameNested = base.Foreground(info)
600+ s.Tool.NameNested = base.Foreground(o.info)
637
601
638 s.Tool.ParamMain = subtle
602 s.Tool.ParamMain = subtle
639 s.Tool.ParamKey = subtle
603 s.Tool.ParamKey = subtle
640
604
641 // Content rendering - prepared styles that accept width parameter
605 // Content rendering - prepared styles that accept width parameter
642− s.Tool.ContentLine = muted.Background(bgBaseLighter)
606+ s.Tool.ContentLine = muted.Background(o.bgLeastVisible)
643− s.Tool.ContentTruncation = muted.Background(bgBaseLighter)
607+ s.Tool.ContentTruncation = muted.Background(o.bgLeastVisible)
644− s.Tool.ContentCodeLine = base.Background(bgBase).PaddingLeft(2)
608+ s.Tool.ContentCodeLine = base.Background(o.bgBase).PaddingLeft(2)
645− s.Tool.ContentCodeTruncation = muted.Background(bgBase).PaddingLeft(2)
609+ s.Tool.ContentCodeTruncation = muted.Background(o.bgBase).PaddingLeft(2)
646− s.Tool.ContentCodeBg = bgBase
610+ s.Tool.ContentCodeBg = o.bgBase
647 s.Tool.Body = base.PaddingLeft(2)
611 s.Tool.Body = base.PaddingLeft(2)
648
612
649 // Deprecated - kept for backward compatibility
613 // Deprecated - kept for backward compatibility
650− s.Tool.ContentBg = muted.Background(bgBaseLighter)
614+ s.Tool.ContentBg = muted.Background(o.bgLeastVisible)
651 s.Tool.ContentText = muted
615 s.Tool.ContentText = muted
652− s.Tool.ContentLineNumber = base.Foreground(fgMuted).Background(bgBase).PaddingRight(1).PaddingLeft(1)
616+ s.Tool.ContentLineNumber = base.Foreground(o.fgMoreSubtle).Background(o.bgBase).PaddingRight(1).PaddingLeft(1)
653
617
654− s.Tool.StateWaiting = base.Foreground(fgSubtle)
618+ s.Tool.StateWaiting = base.Foreground(o.fgMostSubtle)
655− s.Tool.StateCancelled = base.Foreground(fgSubtle)
619+ s.Tool.StateCancelled = base.Foreground(o.fgMostSubtle)
656
620
657− s.Tool.ErrorTag = base.Padding(0, 1).Background(danger).Foreground(onAccent)
621+ s.Tool.ErrorTag = base.Padding(0, 1).Background(o.destructive).Foreground(o.primary)
658− s.Tool.ErrorMessage = base.Foreground(fgHalfMuted)
622+ s.Tool.ErrorMessage = base.Foreground(o.fgSubtle)
659
623
660 // Diff and multi-edit styles
624 // Diff and multi-edit styles
661− s.Tool.DiffTruncation = muted.Background(bgBaseLighter).PaddingLeft(2)
625+ s.Tool.DiffTruncation = muted.Background(o.bgLeastVisible).PaddingLeft(2)
662− s.Tool.NoteTag = base.Padding(0, 1).Background(info).Foreground(onAccent)
626+ s.Tool.NoteTag = base.Padding(0, 1).Background(o.info).Foreground(o.primary)
663− s.Tool.NoteMessage = base.Foreground(fgHalfMuted)
627+ s.Tool.NoteMessage = base.Foreground(o.fgSubtle)
664
628
665 // Job header styles
629 // Job header styles
666− s.Tool.JobIconPending = base.Foreground(successMuted)
630+ s.Tool.JobIconPending = base.Foreground(o.successMostSubtle)
667− s.Tool.JobIconError = base.Foreground(error)
631+ s.Tool.JobIconError = base.Foreground(o.error)
668− s.Tool.JobIconSuccess = base.Foreground(success)
632+ s.Tool.JobIconSuccess = base.Foreground(o.success)
669− s.Tool.JobToolName = base.Foreground(info)
633+ s.Tool.JobToolName = base.Foreground(o.info)
670− s.Tool.JobAction = base.Foreground(infoMuted)
634+ s.Tool.JobAction = base.Foreground(o.infoMostSubtle)
671 s.Tool.JobPID = muted
635 s.Tool.JobPID = muted
672 s.Tool.JobDescription = subtle
636 s.Tool.JobDescription = subtle
673
637
674 // Agent task styles
638 // Agent task styles
675− s.Tool.AgentTaskTag = base.Bold(true).Padding(0, 1).MarginLeft(2).Background(infoSubtle).Foreground(onAccent)
639+ s.Tool.AgentTaskTag = base.Bold(true).Padding(0, 1).MarginLeft(2).Background(o.infoMoreSubtle).Foreground(o.primary)
676 s.Tool.AgentPrompt = muted
640 s.Tool.AgentPrompt = muted
677
641
678 // Agentic fetch styles
642 // Agentic fetch styles
679− s.Tool.AgenticFetchPromptTag = base.Bold(true).Padding(0, 1).MarginLeft(2).Background(success).Foreground(border)
643+ s.Tool.AgenticFetchPromptTag = base.Bold(true).Padding(0, 1).MarginLeft(2).Background(o.success).Foreground(o.separator)
680
644
681 // Todo styles
645 // Todo styles
682− s.Tool.TodoRatio = base.Foreground(infoMuted)
646+ s.Tool.TodoRatio = base.Foreground(o.infoMostSubtle)
683− s.Tool.TodoCompletedIcon = base.Foreground(success)
647+ s.Tool.TodoCompletedIcon = base.Foreground(o.success)
684− s.Tool.TodoInProgressIcon = base.Foreground(successMuted)
648+ s.Tool.TodoInProgressIcon = base.Foreground(o.successMostSubtle)
685− s.Tool.TodoPendingIcon = base.Foreground(fgMuted)
649+ s.Tool.TodoPendingIcon = base.Foreground(o.fgMoreSubtle)
686− s.Tool.TodoStatusNote = lipgloss.NewStyle().Foreground(fgSubtle)
650+ s.Tool.TodoStatusNote = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
687− s.Tool.TodoItem = lipgloss.NewStyle().Foreground(fgBase)
651+ s.Tool.TodoItem = lipgloss.NewStyle().Foreground(o.fgBase)
688− s.Tool.TodoJustStarted = lipgloss.NewStyle().Foreground(fgBase)
652+ s.Tool.TodoJustStarted = lipgloss.NewStyle().Foreground(o.fgBase)
689
653
690 // MCP styles
654 // MCP styles
691− s.Tool.MCPName = base.Foreground(info)
655+ s.Tool.MCPName = base.Foreground(o.info)
692− s.Tool.MCPToolName = base.Foreground(infoMuted)
656+ s.Tool.MCPToolName = base.Foreground(o.infoMostSubtle)
693− s.Tool.MCPArrow = base.Foreground(info).SetString(ArrowRightIcon)
657+ s.Tool.MCPArrow = base.Foreground(o.info).SetString(ArrowRightIcon)
694
658
695 // Loading indicators for images, skills
659 // Loading indicators for images, skills
696− s.Tool.ResourceLoadedText = base.Foreground(success)
660+ s.Tool.ResourceLoadedText = base.Foreground(o.success)
697− s.Tool.ResourceLoadedIndicator = base.Foreground(successMuted)
661+ s.Tool.ResourceLoadedIndicator = base.Foreground(o.successMostSubtle)
698 s.Tool.ResourceName = base
662 s.Tool.ResourceName = base
699 s.Tool.MediaType = base
663 s.Tool.MediaType = base
700− s.Tool.ResourceSize = base.Foreground(fgMuted)
664+ s.Tool.ResourceSize = base.Foreground(o.fgMoreSubtle)
701
665
702 // Hook styles
666 // Hook styles
703− s.Tool.HookLabel = base.Foreground(successSubtle)
667+ s.Tool.HookLabel = base.Foreground(o.successMoreSubtle)
704 s.Tool.HookName = base
668 s.Tool.HookName = base
705− s.Tool.HookMatcher = base.Foreground(fgMuted)
669+ s.Tool.HookMatcher = base.Foreground(o.fgMoreSubtle)
706− s.Tool.HookArrow = base.Foreground(successSubtle)
670+ s.Tool.HookArrow = base.Foreground(o.successMoreSubtle)
707− s.Tool.HookDetail = base.Foreground(fgMuted)
671+ s.Tool.HookDetail = base.Foreground(o.fgMoreSubtle)
708− s.Tool.HookOK = base.Foreground(successMuted)
672+ s.Tool.HookOK = base.Foreground(o.successMostSubtle)
709− s.Tool.HookDenied = base.Foreground(error)
673+ s.Tool.HookDenied = base.Foreground(o.error)
710− s.Tool.HookDeniedLabel = base.Foreground(danger)
674+ s.Tool.HookDeniedLabel = base.Foreground(o.destructive)
711− s.Tool.HookDeniedReason = base.Foreground(bgOverlay)
675+ s.Tool.HookDeniedReason = base.Foreground(o.bgMostVisible)
712− s.Tool.HookRewrote = base.Foreground(bgOverlay)
676+ s.Tool.HookRewrote = base.Foreground(o.bgMostVisible)
713
677
714 // Tool-call action verbs and result-list styling.
678 // Tool-call action verbs and result-list styling.
715− s.Tool.ActionCreate = lipgloss.NewStyle().Foreground(successSubtle)
679+ s.Tool.ActionCreate = lipgloss.NewStyle().Foreground(o.successMoreSubtle)
716− s.Tool.ActionDestroy = lipgloss.NewStyle().Foreground(danger)
680+ s.Tool.ActionDestroy = lipgloss.NewStyle().Foreground(o.destructive)
717− s.Tool.ResultEmpty = lipgloss.NewStyle().Foreground(fgSubtle)
681+ s.Tool.ResultEmpty = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
718− s.Tool.ResultTruncation = lipgloss.NewStyle().Foreground(fgSubtle)
682+ s.Tool.ResultTruncation = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
719− s.Tool.ResultItemName = lipgloss.NewStyle().Foreground(fgBase)
683+ s.Tool.ResultItemName = lipgloss.NewStyle().Foreground(o.fgBase)
720− s.Tool.ResultItemDesc = lipgloss.NewStyle().Foreground(fgSubtle)
684+ s.Tool.ResultItemDesc = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
721
685
722 // Buttons
686 // Buttons
723− s.Button.Focused = lipgloss.NewStyle().Foreground(onAccent).Background(secondary)
687+ s.Button.Focused = lipgloss.NewStyle().Foreground(o.primary).Background(o.secondary)
724− s.Button.Blurred = lipgloss.NewStyle().Foreground(fgBase).Background(bgSubtle)
688+ s.Button.Blurred = lipgloss.NewStyle().Foreground(o.fgBase).Background(o.bgLessVisible)
725
689
726 // Editor
690 // Editor
727− s.Editor.PromptNormalFocused = lipgloss.NewStyle().Foreground(successMuted).SetString("::: ")
691+ s.Editor.PromptNormalFocused = lipgloss.NewStyle().Foreground(o.successMostSubtle).SetString("::: ")
728− s.Editor.PromptNormalBlurred = s.Editor.PromptNormalFocused.Foreground(fgMuted)
692+ s.Editor.PromptNormalBlurred = s.Editor.PromptNormalFocused.Foreground(o.fgMoreSubtle)
729− s.Editor.PromptYoloIconFocused = lipgloss.NewStyle().MarginRight(1).Foreground(fgSubtle).Background(busy).Bold(true).SetString(" ! ")
693+ s.Editor.PromptYoloIconFocused = lipgloss.NewStyle().MarginRight(1).Foreground(o.fgMostSubtle).Background(o.busy).Bold(true).SetString(" ! ")
730− s.Editor.PromptYoloIconBlurred = s.Editor.PromptYoloIconFocused.Foreground(bgBase).Background(fgMuted)
694+ s.Editor.PromptYoloIconBlurred = s.Editor.PromptYoloIconFocused.Foreground(o.bgBase).Background(o.fgMoreSubtle)
731− s.Editor.PromptYoloDotsFocused = lipgloss.NewStyle().MarginRight(1).Foreground(warning).SetString(":::")
695+ s.Editor.PromptYoloDotsFocused = lipgloss.NewStyle().MarginRight(1).Foreground(o.warningSubtle).SetString(":::")
732− s.Editor.PromptYoloDotsBlurred = s.Editor.PromptYoloDotsFocused.Foreground(fgMuted)
696+ s.Editor.PromptYoloDotsBlurred = s.Editor.PromptYoloDotsFocused.Foreground(o.fgMoreSubtle)
733
697
734− s.Radio.On = lipgloss.NewStyle().Foreground(fgHalfMuted).SetString(RadioOn)
698+ s.Radio.On = lipgloss.NewStyle().Foreground(o.fgSubtle).SetString(RadioOn)
735− s.Radio.Off = lipgloss.NewStyle().Foreground(fgHalfMuted).SetString(RadioOff)
699+ s.Radio.Off = lipgloss.NewStyle().Foreground(o.fgSubtle).SetString(RadioOff)
736− s.Radio.Label = lipgloss.NewStyle().Foreground(fgHalfMuted)
700+ s.Radio.Label = lipgloss.NewStyle().Foreground(o.fgSubtle)
737
701
738 // Logo
702 // Logo
739− s.Logo.FieldColor = primary
703+ s.Logo.FieldColor = o.primary
740− s.Logo.TitleColorA = secondary
704+ s.Logo.TitleColorA = o.secondary
741− s.Logo.TitleColorB = primary
705+ s.Logo.TitleColorB = o.primary
742− s.Logo.CharmColor = secondary
706+ s.Logo.CharmColor = o.secondary
743− s.Logo.VersionColor = primary
707+ s.Logo.VersionColor = o.primary
744− s.Logo.SmallCharm = lipgloss.NewStyle().Foreground(secondary)
708+ s.Logo.SmallCharm = lipgloss.NewStyle().Foreground(o.secondary)
745− s.Logo.SmallDiagonals = lipgloss.NewStyle().Foreground(primary)
709+ s.Logo.SmallDiagonals = lipgloss.NewStyle().Foreground(o.primary)
746 s.Logo.GradCanvas = lipgloss.NewStyle()
710 s.Logo.GradCanvas = lipgloss.NewStyle()
747− s.Logo.SmallGradFromColor = secondary
711+ s.Logo.SmallGradFromColor = o.secondary
748− s.Logo.SmallGradToColor = primary
712+ s.Logo.SmallGradToColor = o.primary
749
713
750 // Section
714 // Section
751 s.Section.Title = subtle
715 s.Section.Title = subtle
752− s.Section.Line = base.Foreground(border)
716+ s.Section.Line = base.Foreground(o.separator)
753
717
754 // Initialize
718 // Initialize
755 s.Initialize.Header = base
719 s.Initialize.Header = base
756 s.Initialize.Content = muted
720 s.Initialize.Content = muted
757− s.Initialize.Accent = base.Foreground(successMuted)
721+ s.Initialize.Accent = base.Foreground(o.successMostSubtle)
758
722
759 // ResourceGroup (LSP/MCP/skills sidebar lists).
723 // ResourceGroup (LSP/MCP/skills sidebar lists).
760− s.Resource.Heading = lipgloss.NewStyle().Foreground(fgSubtle)
724+ s.Resource.Heading = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
761− s.Resource.Name = lipgloss.NewStyle().Foreground(fgMuted)
725+ s.Resource.Name = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
762− s.Resource.StatusText = lipgloss.NewStyle().Foreground(fgSubtle)
726+ s.Resource.StatusText = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
763− s.Resource.OfflineIcon = lipgloss.NewStyle().Foreground(bgOverlay).SetString("●")
727+ s.Resource.OfflineIcon = lipgloss.NewStyle().Foreground(o.bgMostVisible).SetString("●")
764− s.Resource.BusyIcon = s.Resource.OfflineIcon.Foreground(busy)
728+ s.Resource.BusyIcon = s.Resource.OfflineIcon.Foreground(o.busy)
765− s.Resource.ErrorIcon = s.Resource.OfflineIcon.Foreground(danger)
729+ s.Resource.ErrorIcon = s.Resource.OfflineIcon.Foreground(o.destructive)
766− s.Resource.OnlineIcon = s.Resource.OfflineIcon.Foreground(successMuted)
730+ s.Resource.OnlineIcon = s.Resource.OfflineIcon.Foreground(o.successMostSubtle)
767− s.Resource.DisabledIcon = lipgloss.NewStyle().Foreground(fgMuted).SetString("●")
731+ s.Resource.DisabledIcon = lipgloss.NewStyle().Foreground(o.fgMoreSubtle).SetString("●")
768− s.Resource.AdditionalText = lipgloss.NewStyle().Foreground(fgSubtle)
732+ s.Resource.AdditionalText = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
769− s.Resource.CapabilityCount = lipgloss.NewStyle().Foreground(fgSubtle)
733+ s.Resource.CapabilityCount = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
770− s.Resource.RowTitleBase = lipgloss.NewStyle().Foreground(fgBase)
734+ s.Resource.RowTitleBase = lipgloss.NewStyle().Foreground(o.fgBase)
771− s.Resource.RowDescBase = lipgloss.NewStyle().Foreground(fgBase)
735+ s.Resource.RowDescBase = lipgloss.NewStyle().Foreground(o.fgBase)
772− s.Resource.DefaultTitleFg = fgMuted
736+ s.Resource.DefaultTitleFg = o.fgMoreSubtle
773− s.Resource.DefaultDescFg = fgSubtle
737+ s.Resource.DefaultDescFg = o.fgMostSubtle
774
738
775 // LSP
739 // LSP
776− s.LSP.ErrorDiagnostic = base.Foreground(error)
740+ s.LSP.ErrorDiagnostic = base.Foreground(o.error)
777− s.LSP.WarningDiagnostic = base.Foreground(warning)
741+ s.LSP.WarningDiagnostic = base.Foreground(o.warningSubtle)
778− s.LSP.HintDiagnostic = base.Foreground(fgHalfMuted)
742+ s.LSP.HintDiagnostic = base.Foreground(o.fgSubtle)
779− s.LSP.InfoDiagnostic = base.Foreground(info)
743+ s.LSP.InfoDiagnostic = base.Foreground(o.info)
780
744
781 // Files
745 // Files
782− s.Files.Path = lipgloss.NewStyle().Foreground(fgMuted)
746+ s.Files.Path = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
783− s.Files.Additions = lipgloss.NewStyle().Foreground(successMuted)
747+ s.Files.Additions = lipgloss.NewStyle().Foreground(o.successMostSubtle)
784− s.Files.Deletions = lipgloss.NewStyle().Foreground(error)
748+ s.Files.Deletions = lipgloss.NewStyle().Foreground(o.error)
785− s.Files.SectionTitle = lipgloss.NewStyle().Foreground(fgSubtle)
749+ s.Files.SectionTitle = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
786− s.Files.EmptyMessage = lipgloss.NewStyle().Foreground(fgSubtle)
750+ s.Files.EmptyMessage = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
787− s.Files.TruncationHint = lipgloss.NewStyle().Foreground(fgSubtle)
751+ s.Files.TruncationHint = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
788
752
789 // Sidebar
753 // Sidebar
790− s.Sidebar.SessionTitle = lipgloss.NewStyle().Foreground(fgMuted)
754+ s.Sidebar.SessionTitle = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
791− s.Sidebar.WorkingDir = lipgloss.NewStyle().Foreground(fgMuted)
755+ s.Sidebar.WorkingDir = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
792
756
793 // ModelInfo
757 // ModelInfo
794− s.ModelInfo.Icon = lipgloss.NewStyle().Foreground(fgSubtle)
758+ s.ModelInfo.Icon = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
795− s.ModelInfo.Name = lipgloss.NewStyle().Foreground(fgBase)
759+ s.ModelInfo.Name = lipgloss.NewStyle().Foreground(o.fgBase)
796− s.ModelInfo.Provider = lipgloss.NewStyle().Foreground(fgMuted)
760+ s.ModelInfo.Provider = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
797− s.ModelInfo.ProviderFallback = lipgloss.NewStyle().Foreground(fgMuted).PaddingLeft(2)
761+ s.ModelInfo.ProviderFallback = lipgloss.NewStyle().Foreground(o.fgMoreSubtle).PaddingLeft(2)
798− s.ModelInfo.Reasoning = lipgloss.NewStyle().Foreground(fgSubtle).PaddingLeft(2)
762+ s.ModelInfo.Reasoning = lipgloss.NewStyle().Foreground(o.fgMostSubtle).PaddingLeft(2)
799− s.ModelInfo.TokenCount = lipgloss.NewStyle().Foreground(fgSubtle)
763+ s.ModelInfo.TokenCount = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
800− s.ModelInfo.TokenPercentage = lipgloss.NewStyle().Foreground(fgMuted)
764+ s.ModelInfo.TokenPercentage = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
801− s.ModelInfo.Cost = lipgloss.NewStyle().Foreground(fgMuted)
765+ s.ModelInfo.Cost = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
802
766
803 // ResourceGroup
767 // ResourceGroup
804− s.Resource.DefaultTitleFg = fgMuted
768+ s.Resource.DefaultTitleFg = o.fgMoreSubtle
805− s.Resource.DefaultDescFg = fgSubtle
769+ s.Resource.DefaultDescFg = o.fgMostSubtle
806
770
807 // Chat
771 // Chat
808 messageFocussedBorder := lipgloss.Border{
772 messageFocussedBorder := lipgloss.Border{
809 Left: "▌",
773 Left: "▌",
810 }
774 }
811
775
812− s.Messages.NoContent = lipgloss.NewStyle().Foreground(fgBase)
776+ s.Messages.NoContent = lipgloss.NewStyle().Foreground(o.fgBase)
813 s.Messages.UserBlurred = s.Messages.NoContent.PaddingLeft(1).BorderLeft(true).
777 s.Messages.UserBlurred = s.Messages.NoContent.PaddingLeft(1).BorderLeft(true).
814− BorderForeground(primary).BorderStyle(lipgloss.NormalBorder())
778+ BorderForeground(o.primary).BorderStyle(lipgloss.NormalBorder())
815 s.Messages.UserFocused = s.Messages.NoContent.PaddingLeft(1).BorderLeft(true).
779 s.Messages.UserFocused = s.Messages.NoContent.PaddingLeft(1).BorderLeft(true).
816− BorderForeground(primary).BorderStyle(messageFocussedBorder)
780+ BorderForeground(o.primary).BorderStyle(messageFocussedBorder)
817 s.Messages.AssistantBlurred = s.Messages.NoContent.PaddingLeft(2)
781 s.Messages.AssistantBlurred = s.Messages.NoContent.PaddingLeft(2)
818 s.Messages.AssistantFocused = s.Messages.NoContent.PaddingLeft(1).BorderLeft(true).
782 s.Messages.AssistantFocused = s.Messages.NoContent.PaddingLeft(1).BorderLeft(true).
819− BorderForeground(successMuted).BorderStyle(messageFocussedBorder)
783+ BorderForeground(o.successMostSubtle).BorderStyle(messageFocussedBorder)
820 s.Messages.Thinking = lipgloss.NewStyle().MaxHeight(10)
784 s.Messages.Thinking = lipgloss.NewStyle().MaxHeight(10)
821 s.Messages.ErrorTag = lipgloss.NewStyle().Padding(0, 1).
785 s.Messages.ErrorTag = lipgloss.NewStyle().Padding(0, 1).
822− Background(danger).Foreground(onAccent)
786+ Background(o.destructive).Foreground(o.primary)
823− s.Messages.ErrorTitle = lipgloss.NewStyle().Foreground(fgHalfMuted)
787+ s.Messages.ErrorTitle = lipgloss.NewStyle().Foreground(o.fgSubtle)
824− s.Messages.ErrorDetails = lipgloss.NewStyle().Foreground(fgSubtle)
788+ s.Messages.ErrorDetails = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
825
789
826 // Message item styles
790 // Message item styles
827 s.Messages.ToolCallFocused = muted.PaddingLeft(1).
791 s.Messages.ToolCallFocused = muted.PaddingLeft(1).
828 BorderStyle(messageFocussedBorder).
792 BorderStyle(messageFocussedBorder).
829 BorderLeft(true).
793 BorderLeft(true).
830− BorderForeground(successMuted)
794+ BorderForeground(o.successMostSubtle)
831 s.Messages.ToolCallBlurred = muted.PaddingLeft(2)
795 s.Messages.ToolCallBlurred = muted.PaddingLeft(2)
832 // No padding or border for compact tool calls within messages
796 // No padding or border for compact tool calls within messages
833 s.Messages.ToolCallCompact = muted
797 s.Messages.ToolCallCompact = muted
@@ -836,144 +800,144 @@ func quickStyle(o quickStyleOpts) Styles {
836 s.Messages.AssistantInfoModel = muted
800 s.Messages.AssistantInfoModel = muted
837 s.Messages.AssistantInfoProvider = subtle
801 s.Messages.AssistantInfoProvider = subtle
838 s.Messages.AssistantInfoDuration = subtle
802 s.Messages.AssistantInfoDuration = subtle
839− s.Messages.AssistantCanceled = lipgloss.NewStyle().Foreground(fgBase).Italic(true)
803+ s.Messages.AssistantCanceled = lipgloss.NewStyle().Foreground(o.fgBase).Italic(true)
840
804
841 // Thinking section styles
805 // Thinking section styles
842− s.Messages.ThinkingBox = subtle.Background(bgBaseLighter)
806+ s.Messages.ThinkingBox = subtle.Background(o.bgLeastVisible)
843 s.Messages.ThinkingTruncationHint = muted
807 s.Messages.ThinkingTruncationHint = muted
844 s.Messages.ThinkingFooterTitle = muted
808 s.Messages.ThinkingFooterTitle = muted
845 s.Messages.ThinkingFooterDuration = subtle
809 s.Messages.ThinkingFooterDuration = subtle
846
810
847 // Text selection.
811 // Text selection.
848− s.TextSelection = lipgloss.NewStyle().Foreground(onPrimary).Background(primary)
812+ s.TextSelection = lipgloss.NewStyle().Foreground(o.onPrimary).Background(o.primary)
849
813
850 // Dialog styles
814 // Dialog styles
851− s.Dialog.Title = base.Padding(0, 1).Foreground(primary)
815+ s.Dialog.Title = base.Padding(0, 1).Foreground(o.primary)
852− s.Dialog.TitleText = base.Foreground(primary)
816+ s.Dialog.TitleText = base.Foreground(o.primary)
853− s.Dialog.TitleError = base.Foreground(danger)
817+ s.Dialog.TitleError = base.Foreground(o.destructive)
854− s.Dialog.TitleAccent = base.Foreground(success).Bold(true)
818+ s.Dialog.TitleAccent = base.Foreground(o.success).Bold(true)
855 s.Dialog.TitleLineBase = lipgloss.NewStyle()
819 s.Dialog.TitleLineBase = lipgloss.NewStyle()
856− s.Dialog.TitleGradFromColor = primary
820+ s.Dialog.TitleGradFromColor = o.primary
857− s.Dialog.TitleGradToColor = secondary
821+ s.Dialog.TitleGradToColor = o.secondary
858
822
859 // Dialog.ListItem (commands, reasoning, models)
823 // Dialog.ListItem (commands, reasoning, models)
860− s.Dialog.ListItem.InfoBlurred = lipgloss.NewStyle().Foreground(fgBase)
824+ s.Dialog.ListItem.InfoBlurred = lipgloss.NewStyle().Foreground(o.fgBase)
861− s.Dialog.ListItem.InfoFocused = lipgloss.NewStyle().Foreground(fgBase)
825+ s.Dialog.ListItem.InfoFocused = lipgloss.NewStyle().Foreground(o.fgBase)
862
826
863 // Dialog.Models
827 // Dialog.Models
864− s.Dialog.Models.ConfiguredText = lipgloss.NewStyle().Foreground(fgSubtle)
828+ s.Dialog.Models.ConfiguredText = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
865
829
866 // Dialog.Permissions
830 // Dialog.Permissions
867− s.Dialog.Permissions.KeyText = lipgloss.NewStyle().Foreground(fgMuted)
831+ s.Dialog.Permissions.KeyText = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
868− s.Dialog.Permissions.ValueText = lipgloss.NewStyle().Foreground(fgBase)
832+ s.Dialog.Permissions.ValueText = lipgloss.NewStyle().Foreground(o.fgBase)
869− s.Dialog.Permissions.ParamsBg = bgSubtle
833+ s.Dialog.Permissions.ParamsBg = o.bgLessVisible
870
834
871 // Dialog.Quit
835 // Dialog.Quit
872− s.Dialog.Quit.Content = lipgloss.NewStyle().Foreground(fgBase)
836+ s.Dialog.Quit.Content = lipgloss.NewStyle().Foreground(o.fgBase)
873− s.Dialog.Quit.Frame = lipgloss.NewStyle().BorderForeground(borderFocus).Border(lipgloss.RoundedBorder()).Padding(1, 2)
837+ s.Dialog.Quit.Frame = lipgloss.NewStyle().BorderForeground(o.primary).Border(lipgloss.RoundedBorder()).Padding(1, 2)
874− s.Dialog.View = base.Border(lipgloss.RoundedBorder()).BorderForeground(borderFocus)
838+ s.Dialog.View = base.Border(lipgloss.RoundedBorder()).BorderForeground(o.primary)
875− s.Dialog.PrimaryText = base.Padding(0, 1).Foreground(primary)
839+ s.Dialog.PrimaryText = base.Padding(0, 1).Foreground(o.primary)
876− s.Dialog.SecondaryText = base.Padding(0, 1).Foreground(fgSubtle)
840+ s.Dialog.SecondaryText = base.Padding(0, 1).Foreground(o.fgMostSubtle)
877 s.Dialog.HelpView = base.Padding(0, 1).AlignHorizontal(lipgloss.Left)
841 s.Dialog.HelpView = base.Padding(0, 1).AlignHorizontal(lipgloss.Left)
878− s.Dialog.Help.ShortKey = base.Foreground(fgMuted)
842+ s.Dialog.Help.ShortKey = base.Foreground(o.fgMoreSubtle)
879− s.Dialog.Help.ShortDesc = base.Foreground(fgSubtle)
843+ s.Dialog.Help.ShortDesc = base.Foreground(o.fgMostSubtle)
880− s.Dialog.Help.ShortSeparator = base.Foreground(border)
844+ s.Dialog.Help.ShortSeparator = base.Foreground(o.separator)
881− s.Dialog.Help.Ellipsis = base.Foreground(border)
845+ s.Dialog.Help.Ellipsis = base.Foreground(o.separator)
882− s.Dialog.Help.FullKey = base.Foreground(fgMuted)
846+ s.Dialog.Help.FullKey = base.Foreground(o.fgMoreSubtle)
883− s.Dialog.Help.FullDesc = base.Foreground(fgSubtle)
847+ s.Dialog.Help.FullDesc = base.Foreground(o.fgMostSubtle)
884− s.Dialog.Help.FullSeparator = base.Foreground(border)
848+ s.Dialog.Help.FullSeparator = base.Foreground(o.separator)
885− s.Dialog.NormalItem = base.Padding(0, 1).Foreground(fgBase)
849+ s.Dialog.NormalItem = base.Padding(0, 1).Foreground(o.fgBase)
886− s.Dialog.SelectedItem = base.Padding(0, 1).Background(primary).Foreground(fgBase)
850+ s.Dialog.SelectedItem = base.Padding(0, 1).Background(o.primary).Foreground(o.fgBase)
887 s.Dialog.InputPrompt = base.Margin(1, 1)
851 s.Dialog.InputPrompt = base.Margin(1, 1)
888
852
889 s.Dialog.List = base.Margin(0, 0, 1, 0)
853 s.Dialog.List = base.Margin(0, 0, 1, 0)
890− s.Dialog.ContentPanel = base.Background(bgSubtle).Foreground(fgBase).Padding(1, 2)
854+ s.Dialog.ContentPanel = base.Background(o.bgLessVisible).Foreground(o.fgBase).Padding(1, 2)
891− s.Dialog.Spinner = base.Foreground(secondary)
855+ s.Dialog.Spinner = base.Foreground(o.secondary)
892− s.Dialog.ScrollbarThumb = base.Foreground(secondary)
856+ s.Dialog.ScrollbarThumb = base.Foreground(o.secondary)
893− s.Dialog.ScrollbarTrack = base.Foreground(border)
857+ s.Dialog.ScrollbarTrack = base.Foreground(o.separator)
894
858
895− s.Dialog.ImagePreview = lipgloss.NewStyle().Padding(0, 1).Foreground(fgSubtle)
859+ s.Dialog.ImagePreview = lipgloss.NewStyle().Padding(0, 1).Foreground(o.fgMostSubtle)
896
860
897 // API key input dialog
861 // API key input dialog
898− s.Dialog.APIKey.Spinner = base.Foreground(success)
862+ s.Dialog.APIKey.Spinner = base.Foreground(o.success)
899
863
900 // OAuth dialog
864 // OAuth dialog
901− s.Dialog.OAuth.Spinner = base.Foreground(successSubtle)
865+ s.Dialog.OAuth.Spinner = base.Foreground(o.successMoreSubtle)
902− s.Dialog.OAuth.Instructions = lipgloss.NewStyle().Foreground(onAccent)
866+ s.Dialog.OAuth.Instructions = lipgloss.NewStyle().Foreground(o.primary)
903− s.Dialog.OAuth.UserCode = lipgloss.NewStyle().Bold(true).Foreground(onAccent)
867+ s.Dialog.OAuth.UserCode = lipgloss.NewStyle().Bold(true).Foreground(o.primary)
904− s.Dialog.OAuth.Success = lipgloss.NewStyle().Foreground(successSubtle)
868+ s.Dialog.OAuth.Success = lipgloss.NewStyle().Foreground(o.successMoreSubtle)
905− s.Dialog.OAuth.Link = lipgloss.NewStyle().Foreground(successMuted).Underline(true)
869+ s.Dialog.OAuth.Link = lipgloss.NewStyle().Foreground(o.successMostSubtle).Underline(true)
906− s.Dialog.OAuth.Enter = lipgloss.NewStyle().Foreground(primary)
870+ s.Dialog.OAuth.Enter = lipgloss.NewStyle().Foreground(o.primary)
907− s.Dialog.OAuth.ErrorText = lipgloss.NewStyle().Foreground(error)
871+ s.Dialog.OAuth.ErrorText = lipgloss.NewStyle().Foreground(o.error)
908− s.Dialog.OAuth.StatusText = lipgloss.NewStyle().Foreground(fgMuted)
872+ s.Dialog.OAuth.StatusText = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
909− s.Dialog.OAuth.UserCodeBg = bgBaseLighter
873+ s.Dialog.OAuth.UserCodeBg = o.bgLeastVisible
910
874
911 s.Dialog.Arguments.Content = base.Padding(1)
875 s.Dialog.Arguments.Content = base.Padding(1)
912 s.Dialog.Arguments.Description = base.MarginBottom(1).MaxHeight(3)
876 s.Dialog.Arguments.Description = base.MarginBottom(1).MaxHeight(3)
913− s.Dialog.Arguments.InputLabelBlurred = base.Foreground(fgMuted)
877+ s.Dialog.Arguments.InputLabelBlurred = base.Foreground(o.fgMoreSubtle)
914 s.Dialog.Arguments.InputLabelFocused = base.Bold(true)
878 s.Dialog.Arguments.InputLabelFocused = base.Bold(true)
915− s.Dialog.Arguments.InputRequiredMarkBlurred = base.Foreground(fgMuted).SetString("*")
879+ s.Dialog.Arguments.InputRequiredMarkBlurred = base.Foreground(o.fgMoreSubtle).SetString("*")
916− s.Dialog.Arguments.InputRequiredMarkFocused = base.Foreground(primary).Bold(true).SetString("*")
880+ s.Dialog.Arguments.InputRequiredMarkFocused = base.Foreground(o.primary).Bold(true).SetString("*")
917
881
918− s.Dialog.Sessions.DeletingTitle = s.Dialog.Title.Foreground(danger)
882+ s.Dialog.Sessions.DeletingTitle = s.Dialog.Title.Foreground(o.destructive)
919− s.Dialog.Sessions.DeletingView = s.Dialog.View.BorderForeground(danger)
883+ s.Dialog.Sessions.DeletingView = s.Dialog.View.BorderForeground(o.destructive)
920 s.Dialog.Sessions.DeletingMessage = base.Padding(1)
884 s.Dialog.Sessions.DeletingMessage = base.Padding(1)
921− s.Dialog.Sessions.DeletingTitleGradientFromColor = danger
885+ s.Dialog.Sessions.DeletingTitleGradientFromColor = o.destructive
922− s.Dialog.Sessions.DeletingTitleGradientToColor = primary
886+ s.Dialog.Sessions.DeletingTitleGradientToColor = o.primary
923− s.Dialog.Sessions.DeletingItemBlurred = s.Dialog.NormalItem.Foreground(fgSubtle)
887+ s.Dialog.Sessions.DeletingItemBlurred = s.Dialog.NormalItem.Foreground(o.fgMostSubtle)
924− s.Dialog.Sessions.DeletingItemFocused = s.Dialog.SelectedItem.Background(danger).Foreground(onAccent)
888+ s.Dialog.Sessions.DeletingItemFocused = s.Dialog.SelectedItem.Background(o.destructive).Foreground(o.onPrimary)
925
889
926− s.Dialog.Sessions.RenamingingTitle = s.Dialog.Title.Foreground(warning)
890+ s.Dialog.Sessions.RenamingingTitle = s.Dialog.Title.Foreground(o.warningSubtle)
927− s.Dialog.Sessions.RenamingView = s.Dialog.View.BorderForeground(warning)
891+ s.Dialog.Sessions.RenamingView = s.Dialog.View.BorderForeground(o.warningSubtle)
928 s.Dialog.Sessions.RenamingingMessage = base.Padding(1)
892 s.Dialog.Sessions.RenamingingMessage = base.Padding(1)
929− s.Dialog.Sessions.RenamingTitleGradientFromColor = warning
893+ s.Dialog.Sessions.RenamingTitleGradientFromColor = o.warningSubtle
930− s.Dialog.Sessions.RenamingTitleGradientToColor = tertiary
894+ s.Dialog.Sessions.RenamingTitleGradientToColor = o.accent
931− s.Dialog.Sessions.RenamingItemBlurred = s.Dialog.NormalItem.Foreground(fgSubtle)
895+ s.Dialog.Sessions.RenamingItemBlurred = s.Dialog.NormalItem.Foreground(o.fgMostSubtle)
932 s.Dialog.Sessions.RenamingingItemFocused = s.Dialog.SelectedItem.UnsetBackground().UnsetForeground()
896 s.Dialog.Sessions.RenamingingItemFocused = s.Dialog.SelectedItem.UnsetBackground().UnsetForeground()
933− s.Dialog.Sessions.RenamingPlaceholder = base.Foreground(fgMuted)
897+ s.Dialog.Sessions.RenamingPlaceholder = base.Foreground(o.fgMoreSubtle)
934− s.Dialog.Sessions.InfoBlurred = lipgloss.NewStyle().Foreground(fgSubtle)
898+ s.Dialog.Sessions.InfoBlurred = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
935− s.Dialog.Sessions.InfoFocused = lipgloss.NewStyle().Foreground(fgBase)
899+ s.Dialog.Sessions.InfoFocused = lipgloss.NewStyle().Foreground(o.fgBase)
936
900
937 s.Status.Help = lipgloss.NewStyle().Padding(0, 1)
901 s.Status.Help = lipgloss.NewStyle().Padding(0, 1)
938− s.Status.SuccessIndicator = base.Foreground(bgSubtle).Background(success).Padding(0, 1).Bold(true).SetString("OKAY!")
902+ s.Status.SuccessIndicator = base.Foreground(o.bgLessVisible).Background(o.success).Padding(0, 1).Bold(true).SetString("OKAY!")
939 s.Status.InfoIndicator = s.Status.SuccessIndicator
903 s.Status.InfoIndicator = s.Status.SuccessIndicator
940 s.Status.UpdateIndicator = s.Status.SuccessIndicator.SetString("HEY!")
904 s.Status.UpdateIndicator = s.Status.SuccessIndicator.SetString("HEY!")
941− s.Status.WarnIndicator = s.Status.SuccessIndicator.Foreground(bgOverlay).Background(warningStrong).SetString("WARNING")
905+ s.Status.WarnIndicator = s.Status.SuccessIndicator.Foreground(o.bgMostVisible).Background(o.warning).SetString("WARNING")
942− s.Status.ErrorIndicator = s.Status.SuccessIndicator.Foreground(bgBase).Background(danger).SetString("ERROR")
906+ s.Status.ErrorIndicator = s.Status.SuccessIndicator.Foreground(o.bgBase).Background(o.destructive).SetString("ERROR")
943− s.Status.SuccessMessage = base.Foreground(bgSubtle).Background(successMuted).Padding(0, 1)
907+ s.Status.SuccessMessage = base.Foreground(o.bgLessVisible).Background(o.successMostSubtle).Padding(0, 1)
944 s.Status.InfoMessage = s.Status.SuccessMessage
908 s.Status.InfoMessage = s.Status.SuccessMessage
945 s.Status.UpdateMessage = s.Status.SuccessMessage
909 s.Status.UpdateMessage = s.Status.SuccessMessage
946− s.Status.WarnMessage = s.Status.SuccessMessage.Foreground(bgOverlay).Background(warning)
910+ s.Status.WarnMessage = s.Status.SuccessMessage.Foreground(o.bgMostVisible).Background(o.warningSubtle)
947− s.Status.ErrorMessage = s.Status.SuccessMessage.Foreground(onAccent).Background(error)
911+ s.Status.ErrorMessage = s.Status.SuccessMessage.Foreground(o.primary).Background(o.error)
948
912
949 // Completions styles
913 // Completions styles
950− s.Completions.Normal = base.Background(bgSubtle).Foreground(fgBase)
914+ s.Completions.Normal = base.Background(o.bgLessVisible).Foreground(o.fgBase)
951− s.Completions.Focused = base.Background(primary).Foreground(onAccent)
915+ s.Completions.Focused = base.Background(o.primary).Foreground(o.primary)
952 s.Completions.Match = base.Underline(true)
916 s.Completions.Match = base.Underline(true)
953
917
954 // Attachments styles
918 // Attachments styles
955− attachmentIconStyle := base.Foreground(bgSubtle).Background(success).Padding(0, 1)
919+ attachmentIconStyle := base.Foreground(o.bgLessVisible).Background(o.success).Padding(0, 1)
956 s.Attachments.Image = attachmentIconStyle.SetString(ImageIcon)
920 s.Attachments.Image = attachmentIconStyle.SetString(ImageIcon)
957 s.Attachments.Text = attachmentIconStyle.SetString(TextIcon)
921 s.Attachments.Text = attachmentIconStyle.SetString(TextIcon)
958− s.Attachments.Normal = base.Padding(0, 1).MarginRight(1).Background(fgMuted).Foreground(fgBase)
922+ s.Attachments.Normal = base.Padding(0, 1).MarginRight(1).Background(o.fgMoreSubtle).Foreground(o.fgBase)
959− s.Attachments.Deleting = base.Padding(0, 1).Bold(true).Background(danger).Foreground(fgBase)
923+ s.Attachments.Deleting = base.Padding(0, 1).Bold(true).Background(o.destructive).Foreground(o.fgBase)
960
924
961 // Pills styles
925 // Pills styles
962 s.Pills.Base = base.Padding(0, 1)
926 s.Pills.Base = base.Padding(0, 1)
963− s.Pills.Focused = base.Padding(0, 1).BorderStyle(lipgloss.RoundedBorder()).BorderForeground(bgOverlay)
927+ s.Pills.Focused = base.Padding(0, 1).BorderStyle(lipgloss.RoundedBorder()).BorderForeground(o.bgMostVisible)
964 s.Pills.Blurred = base.Padding(0, 1).BorderStyle(lipgloss.HiddenBorder())
928 s.Pills.Blurred = base.Padding(0, 1).BorderStyle(lipgloss.HiddenBorder())
965− s.Pills.QueueItemPrefix = lipgloss.NewStyle().Foreground(fgMuted).SetString(" •")
929+ s.Pills.QueueItemPrefix = lipgloss.NewStyle().Foreground(o.fgMoreSubtle).SetString(" •")
966− s.Pills.QueueItemText = lipgloss.NewStyle().Foreground(fgMuted)
930+ s.Pills.QueueItemText = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
967− s.Pills.QueueLabel = lipgloss.NewStyle().Foreground(fgBase)
931+ s.Pills.QueueLabel = lipgloss.NewStyle().Foreground(o.fgBase)
968− s.Pills.QueueIconBase = lipgloss.NewStyle().Foreground(fgBase)
932+ s.Pills.QueueIconBase = lipgloss.NewStyle().Foreground(o.fgBase)
969− s.Pills.QueueGradFromColor = error
933+ s.Pills.QueueGradFromColor = o.error
970− s.Pills.QueueGradToColor = secondary
934+ s.Pills.QueueGradToColor = o.secondary
971− s.Pills.TodoLabel = lipgloss.NewStyle().Foreground(fgBase)
935+ s.Pills.TodoLabel = lipgloss.NewStyle().Foreground(o.fgBase)
972− s.Pills.TodoProgress = lipgloss.NewStyle().Foreground(fgMuted)
936+ s.Pills.TodoProgress = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
973− s.Pills.TodoCurrentTask = lipgloss.NewStyle().Foreground(fgSubtle)
937+ s.Pills.TodoCurrentTask = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
974− s.Pills.TodoSpinner = lipgloss.NewStyle().Foreground(successMuted)
938+ s.Pills.TodoSpinner = lipgloss.NewStyle().Foreground(o.successMostSubtle)
975− s.Pills.HelpKey = lipgloss.NewStyle().Foreground(fgMuted)
939+ s.Pills.HelpKey = lipgloss.NewStyle().Foreground(o.fgMoreSubtle)
976− s.Pills.HelpText = lipgloss.NewStyle().Foreground(fgSubtle)
940+ s.Pills.HelpText = lipgloss.NewStyle().Foreground(o.fgMostSubtle)
977 s.Pills.Area = base
941 s.Pills.Area = base
978
942
979 return s
943 return s
internal/ui/styles/themes.go+44−48
@@ -20,35 +20,33 @@ func CharmtonePantera() Styles {
20 return quickStyle(quickStyleOpts{
20 return quickStyle(quickStyleOpts{
21 primary: charmtone.Charple,
21 primary: charmtone.Charple,
22 secondary: charmtone.Dolly,
22 secondary: charmtone.Dolly,
23− tertiary: charmtone.Bok,
23+ accent: charmtone.Bok,
24
24
25− fgBase: charmtone.Ash,
25+ fgBase: charmtone.Ash,
26+ fgMoreSubtle: charmtone.Squid,
26− fgMuted: charmtone.Squid,
27+ fgSubtle: charmtone.Smoke,
27− fgHalfMuted: charmtone.Smoke,
28− fgSubtle: charmtone.Oyster,
28+ fgMostSubtle: charmtone.Oyster,
29
29
30− onPrimary: charmtone.Salt,
30+ onPrimary: charmtone.Butter,
31− onAccent: charmtone.Butter,
32
31
33− bgBase: charmtone.Pepper,
32+ bgBase: charmtone.Pepper,
34− bgBaseLighter: charmtone.BBQ,
33+ bgLeastVisible: charmtone.BBQ,
35− bgSubtle: charmtone.Charcoal,
34+ bgLessVisible: charmtone.Charcoal,
36− bgOverlay: charmtone.Iron,
35+ bgMostVisible: charmtone.Iron,
37
36
38− border: charmtone.Charcoal,
37+ separator: charmtone.Charcoal,
39− borderFocus: charmtone.Charple,
40
38
41− danger: charmtone.Coral,
39+ destructive: charmtone.Coral,
42− error: charmtone.Sriracha,
40+ error: charmtone.Sriracha,
43− warning: charmtone.Zest,
41+ warningSubtle: charmtone.Zest,
44− warningStrong: charmtone.Mustard,
42+ warning: charmtone.Mustard,
45− busy: charmtone.Citron,
43+ busy: charmtone.Citron,
46− info: charmtone.Malibu,
44+ info: charmtone.Malibu,
47− infoSubtle: charmtone.Sardine,
45+ infoMoreSubtle: charmtone.Sardine,
48− infoMuted: charmtone.Damson,
46+ infoMostSubtle: charmtone.Damson,
49− success: charmtone.Julep,
47+ success: charmtone.Julep,
50− successSubtle: charmtone.Bok,
48+ successMoreSubtle: charmtone.Bok,
51− successMuted: charmtone.Guac,
49+ successMostSubtle: charmtone.Guac,
52 })
50 })
53}
51}
54
52
@@ -57,34 +55,32 @@ func HypercrushObsidiana() Styles {
57 return quickStyle(quickStyleOpts{
55 return quickStyle(quickStyleOpts{
58 primary: charmtone.Charple,
56 primary: charmtone.Charple,
59 secondary: charmtone.Dolly,
57 secondary: charmtone.Dolly,
60− tertiary: charmtone.Bok,
58+ accent: charmtone.Bok,
61
59
62− fgBase: charmtone.Ash,
60+ fgBase: charmtone.Ash,
61+ fgMoreSubtle: charmtone.Squid,
63− fgMuted: charmtone.Squid,
62+ fgSubtle: charmtone.Smoke,
64− fgHalfMuted: charmtone.Smoke,
65− fgSubtle: charmtone.Oyster,
63+ fgMostSubtle: charmtone.Oyster,
66
64
67− onPrimary: charmtone.Salt,
65+ onPrimary: charmtone.Butter,
68− onAccent: charmtone.Butter,
69
66
70− bgBase: charmtone.Pepper,
67+ bgBase: charmtone.Pepper,
71− bgBaseLighter: charmtone.BBQ,
68+ bgLeastVisible: charmtone.BBQ,
72− bgSubtle: charmtone.Charcoal,
69+ bgLessVisible: charmtone.Charcoal,
73− bgOverlay: charmtone.Iron,
70+ bgMostVisible: charmtone.Iron,
74
71
75− border: charmtone.Charcoal,
72+ separator: charmtone.Charcoal,
76− borderFocus: charmtone.Charple,
77
73
78− danger: charmtone.Coral,
74+ destructive: charmtone.Coral,
79− error: charmtone.Sriracha,
75+ error: charmtone.Sriracha,
80− warning: charmtone.Zest,
76+ warningSubtle: charmtone.Zest,
81− warningStrong: charmtone.Mustard,
77+ warning: charmtone.Mustard,
82− busy: charmtone.Citron,
78+ busy: charmtone.Citron,
83− info: charmtone.Malibu,
79+ info: charmtone.Malibu,
84− infoSubtle: charmtone.Sardine,
80+ infoMoreSubtle: charmtone.Sardine,
85− infoMuted: charmtone.Damson,
81+ infoMostSubtle: charmtone.Damson,
86− success: charmtone.Julep,
82+ success: charmtone.Julep,
87− successSubtle: charmtone.Bok,
83+ successMoreSubtle: charmtone.Bok,
88− successMuted: charmtone.Guac,
84+ successMostSubtle: charmtone.Guac,
89 })
85 })
90}
86}