Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Theme system refactoring #12

@kbrdn1

Description

@kbrdn1

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

No one assigned

    Labels

    configurationConfiguration systemfeatureImplementation of a new featurerefactorCode restructuring without changing external behaviorsprint-2Sprint 2 - UX Improvements

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions