Summary
Split the current unified Theme struct into two independent layers:
- Color Theme — palette only (primary, accent, muted, border, status colors, background type)
- UI Theme — structural/layout choices that change how the program looks and feels
Currently everything lives in one Theme struct in internal/theme/theme.go. This bundles colors with structural decisions (list markers, divider chars, quote bars, checklist glyphs, code label alignment, heading styles). The split would let users mix and match — e.g. "ocean" colors with a "minimal" UI, or "dracula" colors with a "retro" UI.
Color Theme (palette)
What it controls — same as today's core color fields:
Primary, Success, Error, Warning, Muted, Border, Accent
StatusBg, StatusFg
Background ("dark" / "light")
UI Theme (structure & layout)
What it controls — things that change the program's shape, not its colors:
- Footer design — different footer layouts/styles
- Help menu — card overlay vs. bottom popup from footer vs. other layouts
- Background color / fill — whether the app fills the terminal or floats content
- Icons / ASCII art — glyph sets, decorative elements
- Editor/viewer chrome — left sidebar presence, element picker style
- Block styles — list markers, checklist glyphs, divider chars, quote bars, heading decoration, code label alignment (currently
BlockStyles)
- General layout — spacing, padding, chrome density
Config
color_theme = "ocean"
ui_theme = "minimal"
Task list
Summary
Split the current unified
Themestruct into two independent layers:Currently everything lives in one
Themestruct ininternal/theme/theme.go. This bundles colors with structural decisions (list markers, divider chars, quote bars, checklist glyphs, code label alignment, heading styles). The split would let users mix and match — e.g. "ocean" colors with a "minimal" UI, or "dracula" colors with a "retro" UI.Color Theme (palette)
What it controls — same as today's core color fields:
Primary,Success,Error,Warning,Muted,Border,AccentStatusBg,StatusFgBackground("dark" / "light")UI Theme (structure & layout)
What it controls — things that change the program's shape, not its colors:
BlockStyles)Config
Task list
ColorThemeandUIThemestructsThemeto compose both (or replace entirely)FromName/ preset loading to resolve color + UI independentlynotebook color-theme,notebook ui-themeor extend existingnotebook theme)