From e34d15605db9bb7fb11cdd342ac34faf4c8e4b90 Mon Sep 17 00:00:00 2001 From: Łukasz Date: Thu, 23 Jul 2026 13:54:58 +0200 Subject: Addendum B themes: named palettes (transfiguration + catppuccin/tokyonight/gruvbox/nord), ascetic --- .../plans/2026-07-23-lectio-go-rewrite.md | 31 ++++++++++++++++++---- .../specs/2026-07-23-lectio-go-rewrite-design.md | 17 +++++++----- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/docs/superpowers/plans/2026-07-23-lectio-go-rewrite.md b/docs/superpowers/plans/2026-07-23-lectio-go-rewrite.md index a3ab615..37608ad 100644 --- a/docs/superpowers/plans/2026-07-23-lectio-go-rewrite.md +++ b/docs/superpowers/plans/2026-07-23-lectio-go-rewrite.md @@ -1519,17 +1519,38 @@ the domain packages, never the reverse. ### Amendment to Task 10 (config) — web fields Add to `Config`: `WebTheme string \`toml:"web_theme"\``, `WebPort int \`toml:"web_port"\``. -Defaults: `WebTheme "light"`, `WebPort 0`. Validate `WebTheme` ∈ -`{light,dark,sepia,parchment,nord}`. Add the two lines to the embedded seed -(after `offline`): `web_theme = "light"` and `web_port = 0` with the spec's -comments. (Do this as a small follow-up commit to internal/config.) +Defaults: `WebTheme "transfiguration"`, `WebPort 0`. Validate `WebTheme` ∈ +`{transfiguration,catppuccin,tokyonight,gruvbox,nord}`. Add to the embedded seed +(after `offline`): `web_theme = "transfiguration"` and `web_port = 0` with the +spec's comments. (Small follow-up commit to internal/config.) ### Task B1: internal/web — HTML render + embedded themes **Files:** Create `internal/web/render.go`, `internal/web/render_test.go`, -`internal/web/templates/*.html`, `internal/web/static/themes/{light,dark,sepia,parchment,nord}.css`, +`internal/web/templates/*.html`, +`internal/web/static/themes/{transfiguration,catppuccin,tokyonight,gruvbox,nord}.css`, `internal/web/static/htmx.min.js` (download the pinned release). +**Theme aesthetic + palettes.** Minimal, ascetic: a spare serif/system reading +font, generous line-height and whitespace, no gradients/box-shadows/rounded +chrome — each theme is just its palette applied to the role classes +(`.heading`, `.citation`, `.vnum`, `.refrain`, body bg/fg, borders, links). +Define a shared `base.css` (layout/typography, no colours) + one small +colour-only file per theme. Palettes (canonical hex): +- **transfiguration** — read the exact tokens from + `/home/lukasz/git/transfiguration-themes/palettes/transfiguration.json`: bg + `content_bg #262e28`, fg `content_text #e6dec6`, heading/accent `#d3b380` + (gold), citation/muted `text_muted #99a18c`, refrain/link `#97ad6e` (olive), + border `#4a5347`, vnum `#d3b380`. +- **catppuccin** (Mocha): bg `#1e1e2e`, fg `#cdd6f4`, muted `#a6adc8`, accent + `#cba6f7` (mauve), link `#89b4fa`, refrain `#a6e3a1`, border `#313244`. +- **tokyonight** (Night): bg `#1a1b26`, fg `#c0caf5`, muted `#565f89`, accent + `#7aa2f7`, link `#7dcfff`, refrain `#9ece6a`, border `#292e42`. +- **gruvbox** (dark): bg `#282828`, fg `#ebdbb2`, muted `#928374`, accent + `#fabd2f` (yellow), link `#83a598`, refrain `#b8bb26`, border `#3c3836`. +- **nord**: bg `#2e3440`, fg `#d8dee9`, muted `#4c566a`, accent `#88c0d0`, link + `#81a1c1`, refrain `#a3be8c`, border `#3b4252`. + **Interfaces:** - Consumes `liturgy.Section`, `render.GatherVersion`, `render.OfflineVersions`. - Produces: `web.RenderReadings(secs []liturgy.Section, versions []string, lectionary string) template.HTML` diff --git a/docs/superpowers/specs/2026-07-23-lectio-go-rewrite-design.md b/docs/superpowers/specs/2026-07-23-lectio-go-rewrite-design.md index b8f8c81..261997d 100644 --- a/docs/superpowers/specs/2026-07-23-lectio-go-rewrite-design.md +++ b/docs/superpowers/specs/2026-07-23-lectio-go-rewrite-design.md @@ -304,11 +304,16 @@ self-contained single binary — no cgo, no build step. lookup box (`bible.Lookup` over the embedded corpora — type `J 20:1`, pick versions, see it). The main pane shows the day's readings as one version or responsive compare columns. -- **Themes.** A small set of embedded CSS themes, switchable live in the UI and - defaulted by `web_theme`: `light`, `dark`, `sepia`, `parchment`, `nord`. The - colour roles (heading / citation / verse number / refrain) are CSS classes each - theme restyles. The active theme is stored in a cookie; `web_theme` is the - initial default. +- **Themes.** Minimal, ascetic (spare typography, generous whitespace, no + gradients/shadows/rounded chrome — just the palette applied to the role + classes). Five embedded CSS themes based on established palettes, switchable + live in the UI and defaulted by `web_theme`: `transfiguration` (the user's own + palette — dark hill-green, parchment text, gold accents; canonical hex in + `~/git/transfiguration-themes/palettes/transfiguration.json`), `catppuccin` + (Mocha), `tokyonight` (Night), `gruvbox` (dark), `nord`. The colour roles + (heading / citation / verse number / refrain / body) are CSS classes each theme + restyles. The active theme is stored in a cookie; `web_theme` is the initial + default (ships as `transfiguration`). - **Reuse.** Consumes the same core: `readings.Load` → `[]liturgy.Section`, `render.GatherVersion`'s `(label, blocks)` fed into templates. No changes to the domain packages — `internal/web` imports them, never the reverse. @@ -328,7 +333,7 @@ default_version = "pl" # TUI start / `lectio show` default width = 0 # CLI wrap width; 0 = detect terminal all = false # default to all parts (true) or just the gospel (false) offline = false # true = never fetch; read only harvested sigla + cache -web_theme = "light" # lectio-web default theme: light|dark|sepia|parchment|nord +web_theme = "transfiguration" # theme: transfiguration|catppuccin|tokyonight|gruvbox|nord web_port = 0 # lectio-web port; 0 = auto-pick a free port # Which parts to show. Both tables are commented out -> every part is shown. -- cgit v1.3