themes: titular default skins + resolve neobrute name collision
Each app's default skin is a titular theme named after the app; the rest are
universal and cross-available.
- neobrute.toml (the lavender "Original GoingsOn" look) -> goingson.toml,
name "GoingsOn" — GoingsOn's titular skin.
- mnw-default.toml -> makenotwork.toml; DEFAULT_THEME_ID = "makenotwork".
Still the exact current platform CSS, lossless.
- New audiofiles.toml: muted sage-and-mocha light theme (audiofiles' titular
skin), cross-available here.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7 files changed,
+96 insertions,
-65 deletions
| 25 |
25 |
|
|
| 26 |
26 |
|
/// The platform default theme id — the stock parchment look. Reproduces the
|
| 27 |
27 |
|
/// historical `:root` exactly, so an unset (`None`) choice renders unchanged.
|
| 28 |
|
- |
pub const DEFAULT_THEME_ID: &str = "mnw-default";
|
|
28 |
+ |
pub const DEFAULT_THEME_ID: &str = "makenotwork";
|
| 29 |
29 |
|
|
| 30 |
30 |
|
/// A built-in theme: its metadata (for the picker) and its pre-rendered
|
| 31 |
31 |
|
/// primitive-layer CSS (for `<head>` injection).
|
| 143 |
143 |
|
fn default_theme_is_bundled() {
|
| 144 |
144 |
|
assert!(
|
| 145 |
145 |
|
is_valid_theme(DEFAULT_THEME_ID),
|
| 146 |
|
- |
"mnw-default.toml must be bundled"
|
|
146 |
+ |
"makenotwork.toml must be bundled"
|
| 147 |
147 |
|
);
|
| 148 |
148 |
|
}
|
| 149 |
149 |
|
|
| 142 |
142 |
|
3 fg, 6 accent, 1 border. These are the ONLY literal source for
|
| 143 |
143 |
|
themeable color. A built-in or creator theme swaps this block; the
|
| 144 |
144 |
|
semantic layer below derives from it, so re-theming cascades for free.
|
| 145 |
|
- |
Values reproduce shared/themes/mnw-default.toml exactly. Names match
|
|
145 |
+ |
Values reproduce shared/themes/makenotwork.toml exactly. Names match
|
| 146 |
146 |
|
GoingsOn + audiofiles, so one theme ports across every product.
|
| 147 |
147 |
|
-------------------------------------------------------------------- */
|
| 148 |
148 |
|
--bg-primary: #ede8e1;
|
|
1 |
+ |
# audiofiles — the app's titular default skin. Cross-available as a universal
|
|
2 |
+ |
# theme. Built from a 5-tone earthy palette: Ash Grey #CCDAD1 / #9CAEA9,
|
|
3 |
+ |
# Grey Olive #788585, Dim Grey #6F6866, Deep Mocha #38302E. Accents are
|
|
4 |
+ |
# desaturated naturals tuned to harmonize with the sage-to-mocha range.
|
|
5 |
+ |
|
|
6 |
+ |
[meta]
|
|
7 |
+ |
name = "audiofiles"
|
|
8 |
+ |
variant = "light"
|
|
9 |
+ |
|
|
10 |
+ |
[background]
|
|
11 |
+ |
primary = "#CCDAD1" # Ash Grey — main canvas
|
|
12 |
+ |
secondary = "#B4C5BB" # mid sage — headers / secondary panels
|
|
13 |
+ |
tertiary = "#9CAEA9" # Ash Grey deep — selected / inset
|
|
14 |
+ |
surface = "#DAE3DC" # lighter sage — raised cards/rows
|
|
15 |
+ |
|
|
16 |
+ |
[foreground]
|
|
17 |
+ |
primary = "#38302E" # Deep Mocha — body text
|
|
18 |
+ |
secondary = "#6F6866" # Dim Grey
|
|
19 |
+ |
muted = "#788585" # Grey Olive — hints / disabled
|
|
20 |
+ |
|
|
21 |
+ |
[accent]
|
|
22 |
+ |
red = "#B05F4E" # muted terracotta
|
|
23 |
+ |
green = "#6F8A5C" # muted olive
|
|
24 |
+ |
blue = "#5E7C8E" # muted slate
|
|
25 |
+ |
yellow = "#C19A53" # muted ochre
|
|
26 |
+ |
purple = "#836A80" # muted mauve
|
|
27 |
+ |
cyan = "#5F8C82" # muted teal
|
|
28 |
+ |
|
|
29 |
+ |
[border]
|
|
30 |
+ |
default = "#9CAEA9"
|
|
1 |
+ |
# GoingsOn — the app's titular default skin (formerly "neobrute"). Also
|
|
2 |
+ |
# available cross-app as a universal theme.
|
|
3 |
+ |
|
|
4 |
+ |
[meta]
|
|
5 |
+ |
name = "GoingsOn"
|
|
6 |
+ |
variant = "light"
|
|
7 |
+ |
|
|
8 |
+ |
[background]
|
|
9 |
+ |
primary = "#E0E4FA"
|
|
10 |
+ |
secondary = "#CDD3F0"
|
|
11 |
+ |
tertiary = "#BAC2E6"
|
|
12 |
+ |
surface = "#FFFFFF"
|
|
13 |
+ |
|
|
14 |
+ |
[foreground]
|
|
15 |
+ |
primary = "#000000"
|
|
16 |
+ |
secondary = "#2D2D2D"
|
|
17 |
+ |
muted = "#6B6B6B"
|
|
18 |
+ |
|
|
19 |
+ |
[accent]
|
|
20 |
+ |
red = "#DC3545"
|
|
21 |
+ |
green = "#5CB85C"
|
|
22 |
+ |
blue = "#6196FF"
|
|
23 |
+ |
yellow = "#F7D154"
|
|
24 |
+ |
purple = "#7B68EE"
|
|
25 |
+ |
cyan = "#17A2B8"
|
|
26 |
+ |
|
|
27 |
+ |
[border]
|
|
28 |
+ |
default = "#000000"
|
|
1 |
+ |
# makenot.work — the platform's titular default skin (the stock parchment
|
|
2 |
+ |
# look), cross-available as a universal theme. Authored to be visually lossless
|
|
3 |
+ |
# against the hand-tuned :root in server/static/style.css: each value below is
|
|
4 |
+ |
# the exact hex that MNW's semantic layer derives from. Picking a different
|
|
5 |
+ |
# built-in theme swaps these primitives; this file reproduces the default.
|
|
6 |
+ |
#
|
|
7 |
+ |
# MNW tokens that diverge from a generic accent (brown --warning, health-*,
|
|
8 |
+ |
# diff-*, --stripe, input/overlay tints) stay app-side literals in style.css and
|
|
9 |
+ |
# are intentionally NOT represented here — the crate is a pure palette.
|
|
10 |
+ |
|
|
11 |
+ |
[meta]
|
|
12 |
+ |
name = "makenot.work"
|
|
13 |
+ |
variant = "light"
|
|
14 |
+ |
|
|
15 |
+ |
[background]
|
|
16 |
+ |
primary = "#ede8e1" # --background: base page parchment
|
|
17 |
+ |
secondary = "#f4f0eb" # --light-background / --secondary-bg: raised light sections
|
|
18 |
+ |
tertiary = "#ddd7c5" # --surface-muted: darker inset panel
|
|
19 |
+ |
surface = "#f5f0eb" # --surface-raised: card surface
|
|
20 |
+ |
|
|
21 |
+ |
[foreground]
|
|
22 |
+ |
primary = "#3d3530" # --detail / --text: body and headings
|
|
23 |
+ |
secondary = "#5c554f" # mid-tone between primary and muted (portability slot)
|
|
24 |
+ |
muted = "#8a8480" # --text-muted: secondary/disabled copy
|
|
25 |
+ |
|
|
26 |
+ |
[accent]
|
|
27 |
+ |
red = "#c0392b" # --danger
|
|
28 |
+ |
green = "#27ae60" # --success
|
|
29 |
+ |
blue = "#6c5ce7" # --highlight: the brand accent / primary action
|
|
30 |
+ |
yellow = "#f59e0b" # amber for warning emphasis (portable; brown --warning stays app-side)
|
|
31 |
+ |
purple = "#a29bfe" # brand-adjacent indigo light (portability slot)
|
|
32 |
+ |
cyan = "#17a2b8" # teal (portability slot)
|
|
33 |
+ |
|
|
34 |
+ |
[border]
|
|
35 |
+ |
default = "#d0cbb8" # --border / --surface-border
|
| 1 |
|
- |
# makenot.work default — the platform's stock parchment look as a theme-common
|
| 2 |
|
- |
# palette. Authored to be visually lossless against the hand-tuned :root in
|
| 3 |
|
- |
# server/static/style.css: each value below is the exact hex that MNW's semantic
|
| 4 |
|
- |
# layer derives from. Picking a different built-in theme swaps these primitives;
|
| 5 |
|
- |
# this file reproduces the default.
|
| 6 |
|
- |
#
|
| 7 |
|
- |
# MNW tokens that diverge from a generic accent (brown --warning, health-*,
|
| 8 |
|
- |
# diff-*, --stripe, input/overlay tints) stay app-side literals in style.css and
|
| 9 |
|
- |
# are intentionally NOT represented here — the crate is a pure palette.
|
| 10 |
|
- |
|
| 11 |
|
- |
[meta]
|
| 12 |
|
- |
name = "makenot.work"
|
| 13 |
|
- |
variant = "light"
|
| 14 |
|
- |
|
| 15 |
|
- |
[background]
|
| 16 |
|
- |
primary = "#ede8e1" # --background: base page parchment
|
| 17 |
|
- |
secondary = "#f4f0eb" # --light-background / --secondary-bg: raised light sections
|
| 18 |
|
- |
tertiary = "#ddd7c5" # --surface-muted: darker inset panel
|
| 19 |
|
- |
surface = "#f5f0eb" # --surface-raised: card surface
|
| 20 |
|
- |
|
| 21 |
|
- |
[foreground]
|
| 22 |
|
- |
primary = "#3d3530" # --detail / --text: body and headings
|
| 23 |
|
- |
secondary = "#5c554f" # mid-tone between primary and muted (portability slot)
|
| 24 |
|
- |
muted = "#8a8480" # --text-muted: secondary/disabled copy
|
| 25 |
|
- |
|
| 26 |
|
- |
[accent]
|
| 27 |
|
- |
red = "#c0392b" # --danger
|
| 28 |
|
- |
green = "#27ae60" # --success
|
| 29 |
|
- |
blue = "#6c5ce7" # --highlight: the brand accent / primary action
|
| 30 |
|
- |
yellow = "#f59e0b" # amber for warning emphasis (portable; brown --warning stays app-side)
|
| 31 |
|
- |
purple = "#a29bfe" # brand-adjacent indigo light (portability slot)
|
| 32 |
|
- |
cyan = "#17a2b8" # teal (portability slot)
|
| 33 |
|
- |
|
| 34 |
|
- |
[border]
|
| 35 |
|
- |
default = "#d0cbb8" # --border / --surface-border
|
| 1 |
|
- |
# Original GoingsOn theme
|
| 2 |
|
- |
|
| 3 |
|
- |
[meta]
|
| 4 |
|
- |
name = "Neobrute"
|
| 5 |
|
- |
variant = "light"
|
| 6 |
|
- |
|
| 7 |
|
- |
[background]
|
| 8 |
|
- |
primary = "#E0E4FA"
|
| 9 |
|
- |
secondary = "#CDD3F0"
|
| 10 |
|
- |
tertiary = "#BAC2E6"
|
| 11 |
|
- |
surface = "#FFFFFF"
|
| 12 |
|
- |
|
| 13 |
|
- |
[foreground]
|
| 14 |
|
- |
primary = "#000000"
|
| 15 |
|
- |
secondary = "#2D2D2D"
|
| 16 |
|
- |
muted = "#6B6B6B"
|
| 17 |
|
- |
|
| 18 |
|
- |
[accent]
|
| 19 |
|
- |
red = "#DC3545"
|
| 20 |
|
- |
green = "#5CB85C"
|
| 21 |
|
- |
blue = "#6196FF"
|
| 22 |
|
- |
yellow = "#F7D154"
|
| 23 |
|
- |
purple = "#7B68EE"
|
| 24 |
|
- |
cyan = "#17A2B8"
|
| 25 |
|
- |
|
| 26 |
|
- |
[border]
|
| 27 |
|
- |
default = "#000000"
|