-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
configurationConfiguration systemConfiguration systemfeatureImplementation of a new featureImplementation of a new featurerefactorCode restructuring without changing external behaviorCode restructuring without changing external behaviorsprint-2Sprint 2 - UX ImprovementsSprint 2 - UX Improvements
Description
Description
Refactor the current hardcoded Catppuccin theme into a flexible, configurable theme system.
Current State
- Colors hardcoded in `pkg/styles/styles.go`
- Single theme (Catppuccin Mocha)
- No user customization
Proposed Architecture
pkg/themes/
├── theme.go # Theme interface and structs
├── loader.go # Theme loading from YAML
├── catppuccin.go # Built-in Catppuccin variants
├── gruvbox.go # Built-in Gruvbox theme
├── nord.go # Built-in Nord theme
└── default.go # Fallback theme
Theme Structure
# ~/.config/lazycurl/themes/my-theme.yml
name: "My Custom Theme"
author: "username"
variant: "dark" # dark | light
colors:
# Base colors
background: "#1e1e2e"
foreground: "#cdd6f4"
# UI elements
border: "#45475a"
selection: "#585b70"
cursor: "#f5e0dc"
# Syntax
keyword: "#cba6f7"
string: "#a6e3a1"
number: "#fab387"
# HTTP methods
method_get: "#a6e3a1"
method_post: "#fab387"
method_put: "#89b4fa"
method_delete: "#f38ba8"
# Status codes
status_2xx: "#a6e3a1"
status_3xx: "#89b4fa"
status_4xx: "#fab387"
status_5xx: "#f38ba8"Technical Implementation
- Define Theme interface with all color properties
- Create theme loader for YAML files
- Update styles package to use theme colors
- Add theme hot-reload support
- Migrate existing Catppuccin colors to theme format
Acceptance Criteria
- Theme interface defined
- Built-in themes: Catppuccin (Mocha, Latte), Gruvbox, Nord
- Custom themes loadable from YAML
- All UI elements use theme colors
- Theme switchable via config
Metadata
Metadata
Assignees
Labels
configurationConfiguration systemConfiguration systemfeatureImplementation of a new featureImplementation of a new featurerefactorCode restructuring without changing external behaviorCode restructuring without changing external behaviorsprint-2Sprint 2 - UX ImprovementsSprint 2 - UX Improvements