28 lines
1.1 KiB
Markdown
28 lines
1.1 KiB
Markdown
# Theming
|
|
|
|
`xyz.meowing.lattice.ui.theme.Theme` holds the semantic tokens every widget
|
|
default reads:
|
|
|
|
| Token | Role |
|
|
| --- | --- |
|
|
| `accent` | primary accent (slider fill, switch on-state, checkmark, dropdown icon) |
|
|
| `accentSelection` | text selection highlight |
|
|
| `background` / `backgroundHover` / `backgroundPressed` | interactive surfaces |
|
|
| `backgroundDark` / `backgroundDisabled` | filled/disabled states |
|
|
| `surface` / `surfaceBorder` | panels and tooltips |
|
|
| `border` | default widget border |
|
|
| `text` / `textMuted` | foreground text |
|
|
| `track` / `scrollbar` | slider/switch tracks, scrollbars |
|
|
| `animFast` / `animNormal` / `animSlow` | shared animation durations (ms) |
|
|
|
|
All colors are Int ARGB. Defaults match the original Vexel palette.
|
|
|
|
Tokens are read **at construction time** — widget constructor defaults
|
|
evaluate `Theme.x` when the widget is created. So:
|
|
|
|
```kotlin
|
|
Theme.accent = 0xFF10B981.toInt() // before building UI: everything green
|
|
```
|
|
|
|
Retheming a live screen means rebuilding it (see the "Cycle accent" row in
|
|
the example mod). Explicit constructor arguments always win over tokens.
|