@odla-ai/ui 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/llms.txt +11 -1
- package/package.json +1 -1
- package/themes/chalk/tokens.css +99 -0
- package/themes/clay/tokens.css +98 -0
- package/themes/juniper/tokens.css +84 -0
- package/themes/paper/tokens.css +100 -0
- package/themes/salt/tokens.css +140 -0
package/llms.txt
CHANGED
|
@@ -15,6 +15,7 @@ alone. Everything except `dist/` ships as source — read it when in doubt.
|
|
|
15
15
|
├── themes/<name>/ # paper, juniper, salt, chalk, clay
|
|
16
16
|
│ ├── theme.json # { name, label, description, fonts }
|
|
17
17
|
│ ├── styles.css # the theme's own tokens (+ page styling for blog themes)
|
|
18
|
+
│ ├── tokens.css # GENERATED tokens-only layer (fonts + custom props, no page styling)
|
|
18
19
|
│ └── ui.css # maps the theme's palette onto the --ui-* contract
|
|
19
20
|
├── fonts/*.css # remote-@import font stacks (plex, editorial, satoshi, lora, fira-code, system)
|
|
20
21
|
├── js/ # buildless ESM: tokens data, theme toggle, palette reader, canvas helpers
|
|
@@ -67,9 +68,18 @@ Five bundled themes; metadata in each `theme.json`:
|
|
|
67
68
|
|
|
68
69
|
Anatomy: `styles.css` carries the theme's OWN token names (e.g. salt's
|
|
69
70
|
`--accent`, paper's `--panel`); `ui.css` maps them onto `--ui-*`. **Always
|
|
70
|
-
load `ui.css` alongside
|
|
71
|
+
load `ui.css` alongside the theme** or component classes fall back to the
|
|
71
72
|
neutral defaults instead of the theme's palette.
|
|
72
73
|
|
|
74
|
+
Which theme file to load:
|
|
75
|
+
- Blog/content sites: `styles.css` (full page styling; blog does this).
|
|
76
|
+
- Apps (dashboards, tools): `tokens.css` (generated fonts+tokens extract —
|
|
77
|
+
no `html`/`body`/blog-selector styling to fight your layout) + `ui.css`.
|
|
78
|
+
Runtime theme switching = swap the `tokens.css` + `ui.css` pair, e.g. two
|
|
79
|
+
managed `<link>` elements (Vite: `import url from
|
|
80
|
+
"@odla-ai/ui/themes/salt/tokens.css?url"`). paper's `styles.css` is
|
|
81
|
+
app-safe too (tokens + minimal base) — fine as a static default.
|
|
82
|
+
|
|
73
83
|
Dark-mode invariant (tested; keep it when editing any theme): dark tokens are
|
|
74
84
|
duplicated on BOTH `[data-theme="dark"]` and
|
|
75
85
|
`@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) }`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odla-ai/ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "The odla design system: semantic CSS design tokens, five themes (paper, juniper, salt, chalk, clay), class-scoped component styles, canvas chart helpers, and optional React/Preact form components. CSS and JS helpers ship as source; only /components is compiled.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/* chalk/tokens.css — GENERATED from styles.css by scripts/gen-css.mjs; do not edit.
|
|
2
|
+
The theme's tokens-only layer (fonts + custom properties, no page styling)
|
|
3
|
+
for app consumers — pair with ui.css. Blog sites use styles.css instead. */
|
|
4
|
+
|
|
5
|
+
@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400&family=Instrument+Sans:wght@500;700&family=JetBrains+Mono:wght@300;400;500&family=Spectral:ital,wght@0,300;0,400;0,500;1,300;1,400&display=swap");
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
--bg: #f4f1ea;
|
|
9
|
+
--grid-line: rgba(70, 90, 120, 0.07);
|
|
10
|
+
--grid-major: rgba(70, 90, 120, 0.13);
|
|
11
|
+
--vignette: transparent;
|
|
12
|
+
--text: #23252b;
|
|
13
|
+
--text-dim: rgba(35, 37, 43, 0.62);
|
|
14
|
+
--text-faint: rgba(35, 37, 43, 0.4);
|
|
15
|
+
--accent: #a55f28;
|
|
16
|
+
--accent-border: rgba(165, 95, 40, 0.35);
|
|
17
|
+
--accent-glow: rgba(165, 95, 40, 0.08);
|
|
18
|
+
--accent-2: #0a7d99;
|
|
19
|
+
--border: rgba(35, 37, 43, 0.14);
|
|
20
|
+
|
|
21
|
+
--code-bg: rgba(35, 37, 43, 0.045);
|
|
22
|
+
--code-text: #2b2d33;
|
|
23
|
+
--hl-keyword: #a55f28;
|
|
24
|
+
--hl-string: #0a7d99;
|
|
25
|
+
--hl-comment: #8b8677;
|
|
26
|
+
--hl-number: #a3790f;
|
|
27
|
+
--hl-title: #23252b;
|
|
28
|
+
--hl-attr: #3d6f8e;
|
|
29
|
+
--hl-type: #0d6e86;
|
|
30
|
+
--hl-meta: #8c6a3f;
|
|
31
|
+
--hl-addition: #15803d;
|
|
32
|
+
--hl-deletion: #b91c1c;
|
|
33
|
+
|
|
34
|
+
--font-display: "Cormorant Garamond", serif;
|
|
35
|
+
--font-body: "Spectral", Georgia, serif;
|
|
36
|
+
--font-mono: "JetBrains Mono", ui-monospace, monospace;
|
|
37
|
+
--font-wordmark: "Instrument Sans", sans-serif;
|
|
38
|
+
|
|
39
|
+
--max-width: 760px;
|
|
40
|
+
--header-width: var(--max-width);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
[data-theme="dark"] {
|
|
44
|
+
--bg: #0f1014;
|
|
45
|
+
--grid-line: rgba(255, 255, 255, 0.025);
|
|
46
|
+
--grid-major: rgba(255, 255, 255, 0.045);
|
|
47
|
+
--vignette: rgba(0, 0, 0, 0.6);
|
|
48
|
+
--text: rgba(235, 230, 220, 0.92);
|
|
49
|
+
--text-dim: rgba(235, 230, 220, 0.55);
|
|
50
|
+
--text-faint: rgba(235, 230, 220, 0.4);
|
|
51
|
+
--accent: #c47a3a;
|
|
52
|
+
--accent-border: rgba(196, 122, 58, 0.35);
|
|
53
|
+
--accent-glow: rgba(196, 122, 58, 0.08);
|
|
54
|
+
--accent-2: #0ea5c9;
|
|
55
|
+
--border: rgba(235, 230, 220, 0.12);
|
|
56
|
+
|
|
57
|
+
--code-bg: rgba(235, 230, 220, 0.04);
|
|
58
|
+
--code-text: rgba(235, 230, 220, 0.88);
|
|
59
|
+
--hl-keyword: #c47a3a;
|
|
60
|
+
--hl-string: #6cc9e0;
|
|
61
|
+
--hl-comment: rgba(235, 230, 220, 0.42);
|
|
62
|
+
--hl-number: #d4a017;
|
|
63
|
+
--hl-title: #ebe6dc;
|
|
64
|
+
--hl-attr: #8cd2eb;
|
|
65
|
+
--hl-type: #45b8d4;
|
|
66
|
+
--hl-meta: rgba(220, 180, 145, 0.8);
|
|
67
|
+
--hl-addition: #22c55e;
|
|
68
|
+
--hl-deletion: #ef4444;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@media (prefers-color-scheme: dark) {
|
|
72
|
+
:root:not([data-theme="light"]) {
|
|
73
|
+
--bg: #0f1014;
|
|
74
|
+
--grid-line: rgba(255, 255, 255, 0.025);
|
|
75
|
+
--grid-major: rgba(255, 255, 255, 0.045);
|
|
76
|
+
--vignette: rgba(0, 0, 0, 0.6);
|
|
77
|
+
--text: rgba(235, 230, 220, 0.92);
|
|
78
|
+
--text-dim: rgba(235, 230, 220, 0.55);
|
|
79
|
+
--text-faint: rgba(235, 230, 220, 0.4);
|
|
80
|
+
--accent: #c47a3a;
|
|
81
|
+
--accent-border: rgba(196, 122, 58, 0.35);
|
|
82
|
+
--accent-glow: rgba(196, 122, 58, 0.08);
|
|
83
|
+
--accent-2: #0ea5c9;
|
|
84
|
+
--border: rgba(235, 230, 220, 0.12);
|
|
85
|
+
|
|
86
|
+
--code-bg: rgba(235, 230, 220, 0.04);
|
|
87
|
+
--code-text: rgba(235, 230, 220, 0.88);
|
|
88
|
+
--hl-keyword: #c47a3a;
|
|
89
|
+
--hl-string: #6cc9e0;
|
|
90
|
+
--hl-comment: rgba(235, 230, 220, 0.42);
|
|
91
|
+
--hl-number: #d4a017;
|
|
92
|
+
--hl-title: #ebe6dc;
|
|
93
|
+
--hl-attr: #8cd2eb;
|
|
94
|
+
--hl-type: #45b8d4;
|
|
95
|
+
--hl-meta: rgba(220, 180, 145, 0.8);
|
|
96
|
+
--hl-addition: #22c55e;
|
|
97
|
+
--hl-deletion: #ef4444;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/* clay/tokens.css — GENERATED from styles.css by scripts/gen-css.mjs; do not edit.
|
|
2
|
+
The theme's tokens-only layer (fonts + custom properties, no page styling)
|
|
3
|
+
for app consumers — pair with ui.css. Blog sites use styles.css instead. */
|
|
4
|
+
|
|
5
|
+
:root {
|
|
6
|
+
--bg: #f6f1e9;
|
|
7
|
+
--panel: #ffffff;
|
|
8
|
+
--panel-raised: #f1ebe0;
|
|
9
|
+
--border: #e4dac9;
|
|
10
|
+
--text: #2c2722;
|
|
11
|
+
--muted: #6f655a;
|
|
12
|
+
--faint: #a99d8c;
|
|
13
|
+
--accent: #a8572e;
|
|
14
|
+
--accent-deep: #8c4623;
|
|
15
|
+
--accent-dim: rgba(168, 87, 46, 0.1);
|
|
16
|
+
--good: #5f7d52;
|
|
17
|
+
--warn: #b08433;
|
|
18
|
+
--shadow: 0 1px 2px rgba(44, 39, 34, 0.03);
|
|
19
|
+
|
|
20
|
+
--code-bg: #f1ebe0;
|
|
21
|
+
--code-text: #3a332b;
|
|
22
|
+
--hl-keyword: #a8572e;
|
|
23
|
+
--hl-string: #5f7d52;
|
|
24
|
+
--hl-comment: #a99d8c;
|
|
25
|
+
--hl-number: #b08433;
|
|
26
|
+
--hl-title: #2c2722;
|
|
27
|
+
--hl-attr: #5f7da8;
|
|
28
|
+
--hl-type: #7d5fa8;
|
|
29
|
+
--hl-meta: #8a6d9e;
|
|
30
|
+
--hl-addition: #5f7d52;
|
|
31
|
+
--hl-deletion: #a8402e;
|
|
32
|
+
|
|
33
|
+
--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
34
|
+
--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
|
|
35
|
+
--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
|
|
36
|
+
|
|
37
|
+
--max-width: 44rem;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
[data-theme="dark"] {
|
|
41
|
+
--bg: #211d19;
|
|
42
|
+
--panel: #2a251f;
|
|
43
|
+
--panel-raised: #332d26;
|
|
44
|
+
--border: #3e362c;
|
|
45
|
+
--text: #ece5da;
|
|
46
|
+
--muted: #b3a794;
|
|
47
|
+
--faint: #857a6a;
|
|
48
|
+
--accent: #d07a4d;
|
|
49
|
+
--accent-deep: #de8f66;
|
|
50
|
+
--accent-dim: rgba(208, 122, 77, 0.14);
|
|
51
|
+
--good: #8aa87c;
|
|
52
|
+
--warn: #c9a25a;
|
|
53
|
+
--shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
54
|
+
|
|
55
|
+
--code-bg: #2a251f;
|
|
56
|
+
--code-text: #ddd5c8;
|
|
57
|
+
--hl-keyword: #d07a4d;
|
|
58
|
+
--hl-string: #8aa87c;
|
|
59
|
+
--hl-comment: #857a6a;
|
|
60
|
+
--hl-number: #c9a25a;
|
|
61
|
+
--hl-title: #ece5da;
|
|
62
|
+
--hl-attr: #8ba3c7;
|
|
63
|
+
--hl-type: #a78bc9;
|
|
64
|
+
--hl-meta: #ab8fbd;
|
|
65
|
+
--hl-addition: #8aa87c;
|
|
66
|
+
--hl-deletion: #d0684d;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@media (prefers-color-scheme: dark) {
|
|
70
|
+
:root:not([data-theme="light"]) {
|
|
71
|
+
--bg: #211d19;
|
|
72
|
+
--panel: #2a251f;
|
|
73
|
+
--panel-raised: #332d26;
|
|
74
|
+
--border: #3e362c;
|
|
75
|
+
--text: #ece5da;
|
|
76
|
+
--muted: #b3a794;
|
|
77
|
+
--faint: #857a6a;
|
|
78
|
+
--accent: #d07a4d;
|
|
79
|
+
--accent-deep: #de8f66;
|
|
80
|
+
--accent-dim: rgba(208, 122, 77, 0.14);
|
|
81
|
+
--good: #8aa87c;
|
|
82
|
+
--warn: #c9a25a;
|
|
83
|
+
--shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
84
|
+
|
|
85
|
+
--code-bg: #2a251f;
|
|
86
|
+
--code-text: #ddd5c8;
|
|
87
|
+
--hl-keyword: #d07a4d;
|
|
88
|
+
--hl-string: #8aa87c;
|
|
89
|
+
--hl-comment: #857a6a;
|
|
90
|
+
--hl-number: #c9a25a;
|
|
91
|
+
--hl-title: #ece5da;
|
|
92
|
+
--hl-attr: #8ba3c7;
|
|
93
|
+
--hl-type: #a78bc9;
|
|
94
|
+
--hl-meta: #ab8fbd;
|
|
95
|
+
--hl-addition: #8aa87c;
|
|
96
|
+
--hl-deletion: #d0684d;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/* juniper/tokens.css — GENERATED from styles.css by scripts/gen-css.mjs; do not edit.
|
|
2
|
+
The theme's tokens-only layer (fonts + custom properties, no page styling)
|
|
3
|
+
for app consumers — pair with ui.css. Blog sites use styles.css instead. */
|
|
4
|
+
|
|
5
|
+
@import url("https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,700&display=swap");
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
--bg: #eaeaea;
|
|
9
|
+
--surface: #f5f5f5;
|
|
10
|
+
--text: #0a0a0a;
|
|
11
|
+
--text-secondary: #666666;
|
|
12
|
+
--accent: #250653;
|
|
13
|
+
--accent-2: #324444;
|
|
14
|
+
--border: #d9d9d9;
|
|
15
|
+
|
|
16
|
+
--code-bg: #f5f5f5;
|
|
17
|
+
--code-text: #24292e;
|
|
18
|
+
--hl-keyword: #581c87;
|
|
19
|
+
--hl-string: #1a7f4b;
|
|
20
|
+
--hl-comment: #6e6e6e;
|
|
21
|
+
--hl-number: #0f5132;
|
|
22
|
+
--hl-title: #250653;
|
|
23
|
+
--hl-attr: #92400e;
|
|
24
|
+
--hl-type: #324444;
|
|
25
|
+
--hl-meta: #92400e;
|
|
26
|
+
--hl-addition: #15803d;
|
|
27
|
+
--hl-deletion: #b91c1c;
|
|
28
|
+
|
|
29
|
+
--font-sans: Helvetica, "Helvetica Neue", -apple-system, BlinkMacSystemFont, Arial, sans-serif;
|
|
30
|
+
--font-body: "Lora", Georgia, serif;
|
|
31
|
+
--font-titles: "Gill Sans", "Gill Sans MT", Calibri, "Trebuchet MS", sans-serif;
|
|
32
|
+
--font-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, monospace;
|
|
33
|
+
|
|
34
|
+
--max-width: 42rem;
|
|
35
|
+
--header-width: var(--max-width);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
[data-theme="dark"] {
|
|
39
|
+
--bg: #0a1a0a;
|
|
40
|
+
--surface: #1a1a1a;
|
|
41
|
+
--text: #e5e5e5;
|
|
42
|
+
--text-secondary: #a3a3a3;
|
|
43
|
+
--accent: #d3c5fc;
|
|
44
|
+
--accent-2: #581c87;
|
|
45
|
+
--border: #262626;
|
|
46
|
+
|
|
47
|
+
--code-bg: #1a1a1a;
|
|
48
|
+
--code-text: #d6d6d6;
|
|
49
|
+
--hl-keyword: #d3c5fc;
|
|
50
|
+
--hl-string: #9ae6b4;
|
|
51
|
+
--hl-comment: #8a8a8a;
|
|
52
|
+
--hl-number: #86d7b6;
|
|
53
|
+
--hl-title: #ede9fe;
|
|
54
|
+
--hl-attr: #a78bfa;
|
|
55
|
+
--hl-type: #99d6c0;
|
|
56
|
+
--hl-meta: #d8b48a;
|
|
57
|
+
--hl-addition: #7bc98a;
|
|
58
|
+
--hl-deletion: #ef8783;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@media (prefers-color-scheme: dark) {
|
|
62
|
+
:root:not([data-theme="light"]) {
|
|
63
|
+
--bg: #0a1a0a;
|
|
64
|
+
--surface: #1a1a1a;
|
|
65
|
+
--text: #e5e5e5;
|
|
66
|
+
--text-secondary: #a3a3a3;
|
|
67
|
+
--accent: #d3c5fc;
|
|
68
|
+
--accent-2: #581c87;
|
|
69
|
+
--border: #262626;
|
|
70
|
+
|
|
71
|
+
--code-bg: #1a1a1a;
|
|
72
|
+
--code-text: #d6d6d6;
|
|
73
|
+
--hl-keyword: #d3c5fc;
|
|
74
|
+
--hl-string: #9ae6b4;
|
|
75
|
+
--hl-comment: #8a8a8a;
|
|
76
|
+
--hl-number: #86d7b6;
|
|
77
|
+
--hl-title: #ede9fe;
|
|
78
|
+
--hl-attr: #a78bfa;
|
|
79
|
+
--hl-type: #99d6c0;
|
|
80
|
+
--hl-meta: #d8b48a;
|
|
81
|
+
--hl-addition: #7bc98a;
|
|
82
|
+
--hl-deletion: #ef8783;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/* paper/tokens.css — GENERATED from styles.css by scripts/gen-css.mjs; do not edit.
|
|
2
|
+
The theme's tokens-only layer (fonts + custom properties, no page styling)
|
|
3
|
+
for app consumers — pair with ui.css. Blog sites use styles.css instead. */
|
|
4
|
+
|
|
5
|
+
:root {
|
|
6
|
+
--bg: #f6f1e9;
|
|
7
|
+
--panel: #ffffff;
|
|
8
|
+
--panel-2: #f1ebe0;
|
|
9
|
+
--border: #e4dac9;
|
|
10
|
+
--text: #2c2722;
|
|
11
|
+
--muted: #6f655a;
|
|
12
|
+
--faint: #a99d8c;
|
|
13
|
+
--accent: #a8572e;
|
|
14
|
+
--accent-deep: #8c4623;
|
|
15
|
+
--accent-dim: rgba(168, 87, 46, 0.1);
|
|
16
|
+
--good: #5f7d52;
|
|
17
|
+
--good-dim: rgba(95, 125, 82, 0.12);
|
|
18
|
+
--warn: #b08433;
|
|
19
|
+
--danger: #b3402e;
|
|
20
|
+
--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
21
|
+
--sans: "IBM Plex Sans", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
|
|
22
|
+
--shadow: 0 1px 2px rgba(44, 39, 34, 0.04), 0 8px 24px rgba(44, 39, 34, 0.06);
|
|
23
|
+
|
|
24
|
+
--code-bg: #f1ebe0;
|
|
25
|
+
--code-text: #3a332b;
|
|
26
|
+
--hl-keyword: #a8572e;
|
|
27
|
+
--hl-string: #5f7d52;
|
|
28
|
+
--hl-comment: #a99d8c;
|
|
29
|
+
--hl-number: #b08433;
|
|
30
|
+
--hl-title: #2c2722;
|
|
31
|
+
--hl-attr: #5f7da8;
|
|
32
|
+
--hl-type: #7d5fa8;
|
|
33
|
+
--hl-meta: #8a6d9e;
|
|
34
|
+
--hl-addition: #5f7d52;
|
|
35
|
+
--hl-deletion: #a8402e;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
[data-theme="dark"] {
|
|
39
|
+
--bg: #211d19;
|
|
40
|
+
--panel: #2a251f;
|
|
41
|
+
--panel-2: #332d26;
|
|
42
|
+
--border: #3e362c;
|
|
43
|
+
--text: #ece5da;
|
|
44
|
+
--muted: #b3a794;
|
|
45
|
+
--faint: #857a6a;
|
|
46
|
+
--accent: #d07a4d;
|
|
47
|
+
--accent-deep: #de8f66;
|
|
48
|
+
--accent-dim: rgba(208, 122, 77, 0.14);
|
|
49
|
+
--good: #8aa87c;
|
|
50
|
+
--good-dim: rgba(138, 168, 124, 0.16);
|
|
51
|
+
--warn: #c9a25a;
|
|
52
|
+
--danger: #d0684d;
|
|
53
|
+
--shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 8px 24px rgba(0, 0, 0, 0.3);
|
|
54
|
+
|
|
55
|
+
--code-bg: #2a251f;
|
|
56
|
+
--code-text: #ddd5c8;
|
|
57
|
+
--hl-keyword: #d07a4d;
|
|
58
|
+
--hl-string: #8aa87c;
|
|
59
|
+
--hl-comment: #857a6a;
|
|
60
|
+
--hl-number: #c9a25a;
|
|
61
|
+
--hl-title: #ece5da;
|
|
62
|
+
--hl-attr: #8ba3c7;
|
|
63
|
+
--hl-type: #a78bc9;
|
|
64
|
+
--hl-meta: #ab8fbd;
|
|
65
|
+
--hl-addition: #8aa87c;
|
|
66
|
+
--hl-deletion: #d0684d;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@media (prefers-color-scheme: dark) {
|
|
70
|
+
:root:not([data-theme="light"]) {
|
|
71
|
+
--bg: #211d19;
|
|
72
|
+
--panel: #2a251f;
|
|
73
|
+
--panel-2: #332d26;
|
|
74
|
+
--border: #3e362c;
|
|
75
|
+
--text: #ece5da;
|
|
76
|
+
--muted: #b3a794;
|
|
77
|
+
--faint: #857a6a;
|
|
78
|
+
--accent: #d07a4d;
|
|
79
|
+
--accent-deep: #de8f66;
|
|
80
|
+
--accent-dim: rgba(208, 122, 77, 0.14);
|
|
81
|
+
--good: #8aa87c;
|
|
82
|
+
--good-dim: rgba(138, 168, 124, 0.16);
|
|
83
|
+
--warn: #c9a25a;
|
|
84
|
+
--danger: #d0684d;
|
|
85
|
+
--shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 8px 24px rgba(0, 0, 0, 0.3);
|
|
86
|
+
|
|
87
|
+
--code-bg: #2a251f;
|
|
88
|
+
--code-text: #ddd5c8;
|
|
89
|
+
--hl-keyword: #d07a4d;
|
|
90
|
+
--hl-string: #8aa87c;
|
|
91
|
+
--hl-comment: #857a6a;
|
|
92
|
+
--hl-number: #c9a25a;
|
|
93
|
+
--hl-title: #ece5da;
|
|
94
|
+
--hl-attr: #8ba3c7;
|
|
95
|
+
--hl-type: #a78bc9;
|
|
96
|
+
--hl-meta: #ab8fbd;
|
|
97
|
+
--hl-addition: #8aa87c;
|
|
98
|
+
--hl-deletion: #d0684d;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/* salt/tokens.css — GENERATED from styles.css by scripts/gen-css.mjs; do not edit.
|
|
2
|
+
The theme's tokens-only layer (fonts + custom properties, no page styling)
|
|
3
|
+
for app consumers — pair with ui.css. Blog sites use styles.css instead. */
|
|
4
|
+
|
|
5
|
+
@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400;1,600&display=swap");
|
|
6
|
+
|
|
7
|
+
@import url("https://api.fontshare.com/v2/css?f[]=satoshi@400,500,700&display=swap");
|
|
8
|
+
|
|
9
|
+
@font-face {
|
|
10
|
+
font-family: "Cormorant Garamond";
|
|
11
|
+
font-style: normal;
|
|
12
|
+
font-weight: 300;
|
|
13
|
+
font-display: swap;
|
|
14
|
+
src: url(https://fonts.gstatic.com/s/cormorantinfant/v22/HhyPU44g9vKiM1sORYSiWeAsLN997_cV2RkDTq8.woff2) format("woff2");
|
|
15
|
+
unicode-range: U+0030-0039;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@font-face {
|
|
19
|
+
font-family: "Cormorant Garamond";
|
|
20
|
+
font-style: normal;
|
|
21
|
+
font-weight: 400;
|
|
22
|
+
font-display: swap;
|
|
23
|
+
src: url(https://fonts.gstatic.com/s/cormorantinfant/v22/HhyPU44g9vKiM1sORYSiWeAsLN997_cV2RkDTq8.woff2) format("woff2");
|
|
24
|
+
unicode-range: U+0030-0039;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@font-face {
|
|
28
|
+
font-family: "Cormorant Garamond";
|
|
29
|
+
font-style: normal;
|
|
30
|
+
font-weight: 600;
|
|
31
|
+
font-display: swap;
|
|
32
|
+
src: url(https://fonts.gstatic.com/s/cormorantinfant/v22/HhyPU44g9vKiM1sORYSiWeAsLN997_cV2RkDTq8.woff2) format("woff2");
|
|
33
|
+
unicode-range: U+0030-0039;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@font-face {
|
|
37
|
+
font-family: "Cormorant Garamond";
|
|
38
|
+
font-style: normal;
|
|
39
|
+
font-weight: 700;
|
|
40
|
+
font-display: swap;
|
|
41
|
+
src: url(https://fonts.gstatic.com/s/cormorantinfant/v22/HhyPU44g9vKiM1sORYSiWeAsLN997_cV2RkDTq8.woff2) format("woff2");
|
|
42
|
+
unicode-range: U+0030-0039;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@font-face {
|
|
46
|
+
font-family: "Cormorant Garamond";
|
|
47
|
+
font-style: italic;
|
|
48
|
+
font-weight: 400;
|
|
49
|
+
font-display: swap;
|
|
50
|
+
src: url(https://fonts.gstatic.com/s/cormorantinfant/v22/HhyJU44g9vKiM1sORYSiWeAsLN997_Il2xMEbK0UPg.woff2) format("woff2");
|
|
51
|
+
unicode-range: U+0030-0039;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:root {
|
|
55
|
+
--bg: #FBF8F2;
|
|
56
|
+
--surface: #F4EFE6;
|
|
57
|
+
--text: #2F3E34;
|
|
58
|
+
--text-body: #4A5E50;
|
|
59
|
+
--text-secondary: #7E8E84;
|
|
60
|
+
--accent: #D16B4F;
|
|
61
|
+
--accent-hover: #E07A5E;
|
|
62
|
+
--accent-2: #1A8F7D;
|
|
63
|
+
--warm: #C4A47E;
|
|
64
|
+
--border: rgba(47, 62, 52, 0.12);
|
|
65
|
+
|
|
66
|
+
--code-bg: #F4EFE6;
|
|
67
|
+
--code-text: #3A4A40;
|
|
68
|
+
--hl-keyword: #C15A40;
|
|
69
|
+
--hl-string: #177E6E;
|
|
70
|
+
--hl-comment: #8A9A8F;
|
|
71
|
+
--hl-number: #C87F5A;
|
|
72
|
+
--hl-title: #2F3E34;
|
|
73
|
+
--hl-attr: #3D5A99;
|
|
74
|
+
--hl-type: #14675B;
|
|
75
|
+
--hl-meta: #A08050;
|
|
76
|
+
--hl-addition: #5F7D52;
|
|
77
|
+
--hl-deletion: #B0492F;
|
|
78
|
+
|
|
79
|
+
--font-sans: "Satoshi", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
80
|
+
--font-serif: "Cormorant Garamond", Garamond, Georgia, serif;
|
|
81
|
+
--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
|
|
82
|
+
|
|
83
|
+
--tracking-widest: 0.14em;
|
|
84
|
+
--max-width: 44rem;
|
|
85
|
+
--header-width: var(--max-width);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
[data-theme="dark"] {
|
|
89
|
+
--bg: #1F2823;
|
|
90
|
+
--surface: #2A362F;
|
|
91
|
+
--text: #F0EDE7;
|
|
92
|
+
--text-body: #B8C4BB;
|
|
93
|
+
--text-secondary: #8A9E90;
|
|
94
|
+
--accent: #E07A5E;
|
|
95
|
+
--accent-hover: #EE8D72;
|
|
96
|
+
--accent-2: #2FAE99;
|
|
97
|
+
--warm: #C4A47E;
|
|
98
|
+
--border: rgba(240, 237, 231, 0.12);
|
|
99
|
+
|
|
100
|
+
--code-bg: #26312B;
|
|
101
|
+
--code-text: #D8DFD8;
|
|
102
|
+
--hl-keyword: #E07A5E;
|
|
103
|
+
--hl-string: #4FC3AE;
|
|
104
|
+
--hl-comment: #7E8E84;
|
|
105
|
+
--hl-number: #D9A87E;
|
|
106
|
+
--hl-title: #F0EDE7;
|
|
107
|
+
--hl-attr: #9FB4E0;
|
|
108
|
+
--hl-type: #7CCFC0;
|
|
109
|
+
--hl-meta: #C4A47E;
|
|
110
|
+
--hl-addition: #8FB07F;
|
|
111
|
+
--hl-deletion: #E8907B;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@media (prefers-color-scheme: dark) {
|
|
115
|
+
:root:not([data-theme="light"]) {
|
|
116
|
+
--bg: #1F2823;
|
|
117
|
+
--surface: #2A362F;
|
|
118
|
+
--text: #F0EDE7;
|
|
119
|
+
--text-body: #B8C4BB;
|
|
120
|
+
--text-secondary: #8A9E90;
|
|
121
|
+
--accent: #E07A5E;
|
|
122
|
+
--accent-hover: #EE8D72;
|
|
123
|
+
--accent-2: #2FAE99;
|
|
124
|
+
--warm: #C4A47E;
|
|
125
|
+
--border: rgba(240, 237, 231, 0.12);
|
|
126
|
+
|
|
127
|
+
--code-bg: #26312B;
|
|
128
|
+
--code-text: #D8DFD8;
|
|
129
|
+
--hl-keyword: #E07A5E;
|
|
130
|
+
--hl-string: #4FC3AE;
|
|
131
|
+
--hl-comment: #7E8E84;
|
|
132
|
+
--hl-number: #D9A87E;
|
|
133
|
+
--hl-title: #F0EDE7;
|
|
134
|
+
--hl-attr: #9FB4E0;
|
|
135
|
+
--hl-type: #7CCFC0;
|
|
136
|
+
--hl-meta: #C4A47E;
|
|
137
|
+
--hl-addition: #8FB07F;
|
|
138
|
+
--hl-deletion: #E8907B;
|
|
139
|
+
}
|
|
140
|
+
}
|