# Built-in Themes v1.1

## 1. Theme families voor v1
Aanbevolen built-in theme families voor v1.1:
- `default`
- `macos-soft`
- `midnight`
- `graphite`
- `windows11`

Deze set is klein genoeg om beheersbaar te blijven en groot genoeg om visueel zinvolle keuze te bieden zonder een theme-explosie te veroorzaken.

## 2. LCARS
`lcars` hoort expliciet niet in v1.1.

Aanbevolen behandeling:
- niet opnemen in deze slice
- later als aparte v2 onderzoeken

Reden:
- `lcars` is visueel extreem uitgesproken
- hoger risico op regressie in leesbaarheid, functiebalkgebruik, row states, modals en paneelcontrast
- grotere kans dat componentstructuur visueel gaat knellen tegen de huidige dual-pane workflow

Conclusie:
- `lcars` beter behandelen als aparte latere theme-slice met eigen UX-validatie

## 3. Theme-model
Het bestaande model blijft leidend:
- `selected_theme` = theme family
- `selected_color_mode` = `dark` of `light`

Beide blijven persistent opgeslagen in SQLite settings.

Voorbeelden van effectieve combinaties:
- `default-dark`
- `default-light`
- `macos-soft-dark`
- `macos-soft-light`
- `midnight-dark`
- `graphite-light`
- `windows11-dark`

Belangrijk:
- theme family en color mode blijven twee gescheiden concepten
- de hoofdinterface-toggle blijft alleen `selected_color_mode` wisselen
- `Settings > Interface` blijft alleen `selected_theme` beheren

## 4. CSS-architectuur
Voorkeursrichting voor v1.1:
- één gedeelde `base.css` voor:
  - layout
  - spacing
  - componentstructuur
  - modals
  - panelen
  - functiebalk
  - lijst/tabelstructuur
  - algemene componentbasis
- aparte CSS-bestanden per theme-family:
  - `theme-default.css`
  - `theme-macos-soft.css`
  - `theme-midnight.css`
  - `theme-graphite.css`
  - `theme-windows11.css`
- light/dark binnen dezelfde family geregeld via selectors of tokens

Dus expliciet niet:
- één enorm all-in-one CSS-bestand met alles door elkaar
- per `theme+mode` een volledig apart layoutbestand

Aanbevolen structuur:
- `base.css`
- `theme-default.css`
- `theme-macos-soft.css`
- `theme-midnight.css`
- `theme-graphite.css`
- `theme-windows11.css`

Binnen elk theme-family bestand:
- alleen tokens en beperkte theme-afwerking
- geen duplicatie van layoutregels
- geen alternatieve componentstructuur

Voorbeeldselector-richting:
- `:root[data-theme-family="macos-soft"][data-color-mode="dark"] { ... }`
- `:root[data-theme-family="macos-soft"][data-color-mode="light"] { ... }`

Of equivalent via custom properties.

## 5. Waarom deze architectuur onderhoudbaarder is
Deze architectuur is onderhoudbaarder omdat hij drie dingen schoon van elkaar scheidt:
- wat de UI is: layout en componentstructuur in `base.css`
- welke stijl-family actief is: family-bestand
- welke kleurmodus actief is: dark/light tokens binnen die family

Voordelen:
- layout-CSS staat op één plek
- theme-bestanden blijven klein en thematisch leesbaar
- regressies zijn makkelijker te isoleren per family
- nieuwe family toevoegen vereist minder risico op breken van bestaande layout
- dark/light binnen één family blijft samenhangend beheerd

Hoe duplicatie van layout-CSS voorkomen wordt:
- `base.css` bevat alle structurele regels
- family-bestanden overschrijven alleen tokens en kleine visuele accenten
- geen herhaling van paneelgrid, modal layout, functiebalkstructuur of lijstlayout per family

Hoe theme switching schoon blijft:
- frontend hoeft alleen `selected_theme` en `selected_color_mode` te lezen
- die waarden vertalen naar theme-attributen op `document.documentElement`
- CSS doet de rest via selectors/custom properties
- geen runtime CSS-generatie nodig
- geen vrije bestandsselectie
- geen ingewikkelde asset-resolutie

## 6. Visuele richting per theme
Alle themes behouden exact dezelfde layout en informatiearchitectuur. Alleen visuele stijl verschilt.

### `default`
Doel:
- neutrale baseline
- functioneel
- rustig
- compact

Karakter:
- de huidige standaardstijl, iets verfijnd maar niet uitgesproken

### `macos-soft`
Doel:
- zacht
- verfijnd
- vriendelijk

Karakter:
- subtiele surfaces
- zachte grijstinten
- lichte premium desktop-app indruk
- iets vriendelijkere rounding/shadows, zonder layout te veranderen

### `midnight`
Doel:
- donker
- gefocust
- rustig

Karakter:
- diepere donkere panelen
- koele accenten
- sterke maar nette current/selected contrasten
- geschikt voor langdurig gebruik in dark mode

### `graphite`
Doel:
- sober
- professioneel
- bijna monochroom

Karakter:
- grijs-gedreven palette
- minimale accentkleur
- contrast via luminantie in plaats van felle tinten

### `windows11`
Doel:
- helder
- modern
- clean desktop-app gevoel

Karakter:
- lichtere surfaces
- subtiele border/surface scheiding
- iets luchtiger accentgebruik
- behoud van compacte file-manager ergonomie

## 7. Settings UI
`Settings > Interface` toont een dropdown/select met de theme families:
- `default`
- `macos-soft`
- `midnight`
- `graphite`
- `windows11`

Dark/light blijft via de bestaande toggle in de hoofdinterface.

Dus:
- Interface tab = keuze van style family
- Main interface toggle = keuze van color mode

Geen extra theme-complexiteit in v1.1:
- geen preview gallery
- geen import/export
- geen vrije CSS-keuze
- geen uploads

## 8. Backend-impact
Backend-aanpassing blijft klein:
- whitelist van `selected_theme` uitbreiden met:
  - `default`
  - `macos-soft`
  - `midnight`
  - `graphite`
  - `windows11`
- `selected_color_mode` blijft bestaan zoals nu
- geen vrije css-bestandskeuze
- geen uploadmechanisme
- geen nieuwe dependencies

De bestaande settings-opslag en settings-API kunnen verder hetzelfde model blijven gebruiken.

## 9. Regressierisico
Belangrijkste risico’s:
- leesbaarheid per theme/mode
- current row / selected row contrast te zwak of te hard
- modals die in bepaalde families te vlak worden
- functiebalk die visueel wegvalt
- editor/viewers die niet goed mee themen
- thumbnail/icon-slot met te weinig contrast
- CSS-fragmentatie als family-bestanden toch structurele regels gaan bevatten
- duplicatie als layout-regels alsnog in family-bestanden belanden

Belangrijk mitigatieprincipe:
- family-bestanden beperken tot visuele tokens en kleine afwerkingsregels
- geen layout-overrides per family
- consistent regressietesten van dezelfde states in alle families

## 10. Aanbeveling
Aanbevolen richting voor deze app:
- ja, `base.css` + aparte CSS per theme-family is de juiste richting

Waarom:
- laag regressierisico
- duidelijke scheiding tussen structuur en uiterlijk
- onderhoudbaar bij toekomstige uitbreiding
- sluit aan op het bestaande model van `selected_theme` + `selected_color_mode`
- voorkomt zowel een gigantisch all-in-one stylesheet als onnodige duplicatie per `theme+mode`

Expliciete aanbevelingen:
- gebruik gedeelde basis-CSS voor layout/componentstructuur
- gebruik aparte CSS per theme-family
- regel dark/light binnen dezelfde family via selectors/tokens
- behandel `lcars` expliciet als aparte latere slice

Conclusie:
- deze architectuur is de juiste basis voor built-in themes in deze app
- `lcars` moet niet worden meegetrokken in v1.1, maar apart worden ontworpen en gevalideerd
