@atom63/slides 0.1.0
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/LICENSE +21 -0
- package/README.md +210 -0
- package/dist/chunk-AD3ZOVWR.js +6149 -0
- package/dist/chunk-AD3ZOVWR.js.map +1 -0
- package/dist/editor/index.css +68 -0
- package/dist/editor/index.css.map +1 -0
- package/dist/editor/index.d.ts +96 -0
- package/dist/editor/index.js +252 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/index.css +68 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +1284 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/template-registry-BOJP4rlI.d.ts +81 -0
- package/dist/vite/index.d.ts +30 -0
- package/dist/vite/index.js +121 -0
- package/dist/vite/index.js.map +1 -0
- package/package.json +139 -0
- package/src/editor/styles.css +206 -0
- package/src/editor/styles.d.ts +1 -0
- package/src/styles/slides.css +30 -0
- package/src/styles/theme-defaults.css +223 -0
- package/src/styles/themes/bold.css +48 -0
- package/src/styles/themes/dark.css +45 -0
- package/src/styles/themes/editorial.css +48 -0
- package/src/styles/themes/neon.css +47 -0
- package/src/styles/themes/terminal.css +50 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/* =============================================================================
|
|
2
|
+
@atom63/slides — STANDALONE DEFAULT TOKENS
|
|
3
|
+
|
|
4
|
+
Self-contained default values for every theme/palette/contract custom
|
|
5
|
+
property the slide player reads. `@import` this into your Tailwind v4 entry
|
|
6
|
+
CSS (NOT a JS import) so the `@theme` block below is processed and the
|
|
7
|
+
engine's semantic color utilities (text-foreground, bg-primary, …) resolve:
|
|
8
|
+
|
|
9
|
+
@import "tailwindcss";
|
|
10
|
+
@import "@atom63/slides/theme-defaults";
|
|
11
|
+
@import "@atom63/slides/styles";
|
|
12
|
+
|
|
13
|
+
These are ADDITIVE, low-specificity `:root` defaults. A host that ships its
|
|
14
|
+
own design tokens (like os63, which imports @atom63/tokens) defines the same
|
|
15
|
+
properties later in the cascade and therefore overrides everything here — so
|
|
16
|
+
importing this file in such a host is a harmless no-op. os63 does NOT import
|
|
17
|
+
it.
|
|
18
|
+
|
|
19
|
+
Values mirror the Modern (default-theme, light-mode) look from
|
|
20
|
+
@atom63/tokens (primitives/aliases/semantics/radius/effects/components/
|
|
21
|
+
slide-surfaces). Every var() used as a value below resolves to another token
|
|
22
|
+
defined IN this file, except Tailwind-provided primitives (--spacing, --tw-*,
|
|
23
|
+
--color-*) which the consumer's Tailwind build supplies.
|
|
24
|
+
============================================================================= */
|
|
25
|
+
|
|
26
|
+
/* Map the semantic palette into Tailwind's color theme so utilities like
|
|
27
|
+
`text-foreground`, `bg-background`, `bg-primary`, `border-input` resolve.
|
|
28
|
+
`inline` keeps them as `var(--token)` refs, so overriding a token at :root
|
|
29
|
+
(e.g. a dark theme) flows through at runtime. Requires this file to be
|
|
30
|
+
@import-ed into the consumer's Tailwind entry (see header). */
|
|
31
|
+
@theme inline {
|
|
32
|
+
--color-background: var(--background);
|
|
33
|
+
--color-foreground: var(--foreground);
|
|
34
|
+
--color-card: var(--card);
|
|
35
|
+
--color-card-foreground: var(--foreground);
|
|
36
|
+
--color-popover: var(--popover);
|
|
37
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
38
|
+
--color-muted: var(--muted);
|
|
39
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
40
|
+
--color-secondary: var(--secondary);
|
|
41
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
42
|
+
--color-accent: var(--accent);
|
|
43
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
44
|
+
--color-primary: var(--primary);
|
|
45
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
46
|
+
--color-destructive: var(--destructive);
|
|
47
|
+
--color-border: var(--border);
|
|
48
|
+
--color-input: var(--input);
|
|
49
|
+
--color-ring: var(--ring);
|
|
50
|
+
--color-light: var(--light);
|
|
51
|
+
--color-dark: var(--dark);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:root {
|
|
55
|
+
/* ── Fonts ──────────────────────────────────────────────────────────── */
|
|
56
|
+
--font-serif: "Brawler", ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
|
57
|
+
--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
58
|
+
"Liberation Mono", "Courier New", monospace;
|
|
59
|
+
|
|
60
|
+
/* ── Z-layers (subset the slide player uses) ────────────────────────── */
|
|
61
|
+
--z-layer-below: -1;
|
|
62
|
+
--z-layer-default: 0;
|
|
63
|
+
--z-layer-base: 10;
|
|
64
|
+
--z-layer-sticky: 20;
|
|
65
|
+
--z-layer-tooltip: 980;
|
|
66
|
+
|
|
67
|
+
/* ── Radius scale ───────────────────────────────────────────────────────
|
|
68
|
+
Same formula as @atom63/tokens so a host that later sets --corner-radius /
|
|
69
|
+
--radius-multiplier reshapes these identically. Concrete leaves below. */
|
|
70
|
+
--corner-radius: 10px;
|
|
71
|
+
--radius-multiplier: 1;
|
|
72
|
+
--radius-md: calc(var(--corner-radius) * 0.8 * var(--radius-multiplier));
|
|
73
|
+
--radius-lg: calc(var(--corner-radius) * var(--radius-multiplier));
|
|
74
|
+
--radius-xl: calc(var(--corner-radius) * 1.4 * var(--radius-multiplier));
|
|
75
|
+
--radius-3xl: calc(var(--corner-radius) * 2.2 * var(--radius-multiplier));
|
|
76
|
+
/* --radius-sm is referenced transitively by --theme-selection-radius. */
|
|
77
|
+
--radius-sm: calc(var(--corner-radius) * 0.6 * var(--radius-multiplier));
|
|
78
|
+
|
|
79
|
+
/* ── Base palette / semantic colors (Modern theme, light mode) ──────────
|
|
80
|
+
Concrete leaves copied from the resolved @atom63/tokens chain
|
|
81
|
+
(semantics.css → aliases.css → primitives.css, light values). */
|
|
82
|
+
--background: rgba(249, 249, 249, 1);
|
|
83
|
+
--foreground: rgba(32, 32, 32, 1);
|
|
84
|
+
--card: rgba(252, 252, 252, 1);
|
|
85
|
+
--popover: rgba(252, 252, 252, 1);
|
|
86
|
+
--popover-foreground: rgba(32, 32, 32, 1);
|
|
87
|
+
--light: rgba(252, 252, 252, 1);
|
|
88
|
+
--dark: rgba(17, 17, 17, 1);
|
|
89
|
+
--muted: rgba(240, 240, 240, 1);
|
|
90
|
+
--muted-foreground: rgba(100, 100, 100, 1);
|
|
91
|
+
--secondary: rgba(240, 240, 240, 1);
|
|
92
|
+
--secondary-foreground: rgba(100, 100, 100, 1);
|
|
93
|
+
--border: rgba(232, 232, 232, 1);
|
|
94
|
+
--input: rgba(224, 224, 224, 1);
|
|
95
|
+
--ring: rgba(217, 217, 217, 1);
|
|
96
|
+
--accent: color-mix(in srgb, rgba(232, 232, 232, 1), transparent 20%);
|
|
97
|
+
--accent-foreground: rgba(32, 32, 32, 1);
|
|
98
|
+
--primary: rgba(44, 127, 255, 1);
|
|
99
|
+
--primary-foreground: rgba(239, 252, 255, 1);
|
|
100
|
+
--destructive: rgba(231, 67, 64, 1);
|
|
101
|
+
|
|
102
|
+
/* ── Shared border / shadow effect leaves (from effects.css) ─────────────
|
|
103
|
+
Internal helpers the chrome contract references; not consumed directly by
|
|
104
|
+
slides but needed so the contract tokens below resolve in-file. */
|
|
105
|
+
--theme-border-width: 1px;
|
|
106
|
+
--theme-border-style: solid;
|
|
107
|
+
--effect-shadow-xs:
|
|
108
|
+
0px 1px 2px 0px rgb(0 0 0 / 0.05), 0px 2px 4px -2px rgb(0 0 0 / 0.08);
|
|
109
|
+
--effect-shadow-sm:
|
|
110
|
+
0px 2px 4px -1px rgb(0 0 0 / 0.06), 0px 6px 10px -4px rgb(0 0 0 / 0.08);
|
|
111
|
+
--effect-shadow-md:
|
|
112
|
+
0px 4px 8px -2px rgb(0 0 0 / 0.06), 0px 12px 18px -8px rgb(0 0 0 / 0.09);
|
|
113
|
+
|
|
114
|
+
/* ── Slide theme contract (verbatim from tokens/slide-surfaces.css) ─── */
|
|
115
|
+
--theme-slide-bg: var(--background);
|
|
116
|
+
--theme-slide-stage-bg: color-mix(in oklch, var(--muted) 70%, var(--border) 30%);
|
|
117
|
+
--theme-slide-stage-slide-ring: rgba(0, 0, 0, 0.08);
|
|
118
|
+
--theme-slide-toolbar-bg: color-mix(in oklch, var(--muted) 38%, transparent);
|
|
119
|
+
--theme-slide-toolbar-border: color-mix(in oklch, var(--border) 64%, transparent);
|
|
120
|
+
--theme-slide-statusbar-bg: color-mix(in oklch, var(--muted) 20%, transparent);
|
|
121
|
+
--theme-slide-statusbar-border: color-mix(in oklch, var(--border) 50%, transparent);
|
|
122
|
+
--theme-slide-sidebar-bg: color-mix(in oklch, var(--muted) 30%, transparent);
|
|
123
|
+
--theme-slide-sidebar-border: color-mix(in oklch, var(--border) 50%, transparent);
|
|
124
|
+
--theme-slide-surface: var(--card);
|
|
125
|
+
--theme-slide-rule-color: color-mix(in oklch, var(--foreground) 25%, transparent);
|
|
126
|
+
--theme-slide-rule-width: 1px;
|
|
127
|
+
--theme-slide-accent: var(--primary);
|
|
128
|
+
--theme-slide-accent-foreground: var(--primary-foreground);
|
|
129
|
+
--theme-slide-muted: var(--muted-foreground);
|
|
130
|
+
--theme-slide-code-bg: var(--card);
|
|
131
|
+
--theme-slide-code-border: color-mix(in oklch, var(--foreground) 10%, transparent);
|
|
132
|
+
--theme-slide-quote-color: color-mix(in oklch, var(--foreground) 90%, transparent);
|
|
133
|
+
|
|
134
|
+
/* ── Control / overlay / focus contract (from effects.css) ──────────── */
|
|
135
|
+
--theme-control-border-width: var(--theme-border-width);
|
|
136
|
+
--theme-control-border-style: var(--theme-border-style);
|
|
137
|
+
--theme-control-active-border-style: var(--theme-control-border-style);
|
|
138
|
+
--theme-control-shadow: none;
|
|
139
|
+
--theme-overlay-border-width: var(--theme-border-width);
|
|
140
|
+
--theme-overlay-border-style: var(--theme-border-style);
|
|
141
|
+
--theme-overlay-shadow: var(--effect-shadow-md);
|
|
142
|
+
--theme-focus-outline-width: 0px;
|
|
143
|
+
--theme-focus-outline-offset: 0px;
|
|
144
|
+
--theme-focus-outline-color: var(--ring);
|
|
145
|
+
--theme-focus-shadow: none;
|
|
146
|
+
--theme-selection-border-width: var(--theme-border-width);
|
|
147
|
+
--theme-selection-border-style: var(--theme-border-style);
|
|
148
|
+
--theme-selection-radius: var(--radius-sm);
|
|
149
|
+
|
|
150
|
+
/* ── Switch contract (from effects.css) ─────────────────────────────── */
|
|
151
|
+
--theme-switch-track-shadow: inset 0 1px rgb(0 0 0 / 0.06);
|
|
152
|
+
--theme-switch-thumb-border-width: 0px;
|
|
153
|
+
--theme-switch-thumb-border-style: var(--theme-border-style);
|
|
154
|
+
--theme-switch-thumb-shadow: var(--effect-shadow-sm);
|
|
155
|
+
|
|
156
|
+
/* ── Tabs contract (from effects.css) ───────────────────────────────── */
|
|
157
|
+
--theme-tabs-list-border-color: transparent;
|
|
158
|
+
--theme-tabs-list-border-width: 0px;
|
|
159
|
+
--theme-tabs-list-border-style: var(--theme-border-style);
|
|
160
|
+
--theme-tabs-list-shadow: none;
|
|
161
|
+
--theme-tabs-active-border-width: 0px;
|
|
162
|
+
--theme-tabs-active-border-style: var(--theme-border-style);
|
|
163
|
+
--theme-tabs-active-background: var(--card);
|
|
164
|
+
--theme-tabs-active-background-color: transparent;
|
|
165
|
+
--theme-tabs-active-shadow: var(--effect-shadow-sm);
|
|
166
|
+
|
|
167
|
+
/* ── Segment-control contract (from effects.css) ────────────────────── */
|
|
168
|
+
--theme-segment-list-background: color-mix(in oklch, var(--muted) 64%, transparent);
|
|
169
|
+
--theme-segment-list-border-color: color-mix(in oklch, var(--border) 80%, transparent);
|
|
170
|
+
--theme-segment-list-shadow: var(--theme-tabs-list-shadow);
|
|
171
|
+
--theme-segment-item-text-shadow: none;
|
|
172
|
+
--theme-segment-item-hover-background: transparent;
|
|
173
|
+
--theme-segment-active-background: var(--theme-tabs-active-background);
|
|
174
|
+
--theme-segment-active-background-color: var(--theme-tabs-active-background-color);
|
|
175
|
+
--theme-segment-active-border-color: transparent;
|
|
176
|
+
--theme-segment-active-text-shadow: none;
|
|
177
|
+
--theme-segment-active-shadow: var(--theme-tabs-active-shadow);
|
|
178
|
+
--theme-segment-active-icon-filter: none;
|
|
179
|
+
|
|
180
|
+
/* ── Button-group contract (from effects.css + components.css) ──────────
|
|
181
|
+
--theme-button-group-text-* mirror the slide-side inline fallbacks
|
|
182
|
+
(--muted / --input / --foreground) so the default look is faithful. */
|
|
183
|
+
--theme-button-group-radius: var(--radius-lg);
|
|
184
|
+
--theme-button-group-background: color-mix(in oklch, var(--muted) 72%, transparent);
|
|
185
|
+
--theme-button-group-border-color: color-mix(in oklch, var(--border) 82%, var(--foreground) 8%);
|
|
186
|
+
--theme-button-group-border-width: 0px;
|
|
187
|
+
--theme-button-group-separator-color: color-mix(in oklch, var(--border) 82%, var(--foreground) 8%);
|
|
188
|
+
--theme-button-group-shadow: none;
|
|
189
|
+
--theme-button-group-text-background: var(--muted);
|
|
190
|
+
--theme-button-group-text-border-color: var(--input);
|
|
191
|
+
--theme-button-group-text-foreground: var(--foreground);
|
|
192
|
+
|
|
193
|
+
/* ── Button contract (base button, from components.css) ─────────────── */
|
|
194
|
+
--theme-button-background: var(--secondary);
|
|
195
|
+
--theme-button-foreground: var(--secondary-foreground);
|
|
196
|
+
--theme-button-border-color: transparent;
|
|
197
|
+
--theme-button-hover-background: color-mix(in oklch, var(--secondary) 90%, transparent);
|
|
198
|
+
--theme-button-hover-border-color: transparent;
|
|
199
|
+
--theme-button-active-background: color-mix(in oklch, var(--secondary) 80%, transparent);
|
|
200
|
+
--theme-button-active-border-color: transparent;
|
|
201
|
+
--theme-button-shadow: var(--theme-control-shadow);
|
|
202
|
+
--theme-button-text-shadow: none;
|
|
203
|
+
--theme-button-icon-filter: none;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* -----------------------------------------------------------------------------
|
|
207
|
+
Default border color. Tailwind v4 leaves `border` utilities at `currentColor`
|
|
208
|
+
(which renders as the text color — near-black). The full ATOM63 design system
|
|
209
|
+
sets a global `--border` default; standalone consumers don't have that, so the
|
|
210
|
+
player's chrome (toolbar, config panel, switches, segmented controls) would
|
|
211
|
+
show hard black borders. Restore the sensible default here so an opt-in
|
|
212
|
+
consumer gets correct subtle borders. Lives in @layer base so component-level
|
|
213
|
+
border-color utilities still win. Override `--border` to restyle.
|
|
214
|
+
----------------------------------------------------------------------------- */
|
|
215
|
+
@layer base {
|
|
216
|
+
*,
|
|
217
|
+
::after,
|
|
218
|
+
::before,
|
|
219
|
+
::backdrop,
|
|
220
|
+
::file-selector-button {
|
|
221
|
+
border-color: var(--border, currentColor);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* =============================================================================
|
|
2
|
+
@atom63/slides — BOLD THEME
|
|
3
|
+
|
|
4
|
+
A dark, high-impact palette for the slide player — charcoal greys with a
|
|
5
|
+
bright orange signal and a strong Archivo sans for headlines. Import it AFTER
|
|
6
|
+
the default tokens to flip the whole deck (slides + chrome) to this look;
|
|
7
|
+
every --theme-slide-* and chrome token derives from this base palette, so
|
|
8
|
+
overriding the palette + font tokens is enough:
|
|
9
|
+
|
|
10
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
11
|
+
import "@atom63/slides/themes/bold"; // override → bold
|
|
12
|
+
import "@atom63/slides/styles";
|
|
13
|
+
|
|
14
|
+
A theme is ONLY a :root override of the documented tokens — no per-theme
|
|
15
|
+
component code. Override any of these tokens in your own stylesheet to tweak.
|
|
16
|
+
|
|
17
|
+
Palette adapted from zarazhangrui/frontend-slides (MIT).
|
|
18
|
+
============================================================================= */
|
|
19
|
+
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800&display=swap');
|
|
20
|
+
:root {
|
|
21
|
+
/* ── Base palette (bold) ─────────────────────────────────────────────── */
|
|
22
|
+
--background: #1a1a1a;
|
|
23
|
+
--foreground: #ffffff;
|
|
24
|
+
--card: #242424;
|
|
25
|
+
--popover: #242424;
|
|
26
|
+
--popover-foreground: #ffffff;
|
|
27
|
+
--muted: #2a2a2a;
|
|
28
|
+
--muted-foreground: #a0a0a0;
|
|
29
|
+
--secondary: #2a2a2a;
|
|
30
|
+
--secondary-foreground: #e0e0e0;
|
|
31
|
+
--border: #3a3a3a;
|
|
32
|
+
--input: #3a3a3a;
|
|
33
|
+
--ring: #ff5722;
|
|
34
|
+
--accent: #2e2e2e;
|
|
35
|
+
--accent-foreground: #ffffff;
|
|
36
|
+
--primary: #ff5722;
|
|
37
|
+
--primary-foreground: #1a1a1a;
|
|
38
|
+
--destructive: #ff5722;
|
|
39
|
+
|
|
40
|
+
/* ── Fonts — strong sans headlines; serif & mono stay default ────────── */
|
|
41
|
+
--font-sans: "Archivo", ui-sans-serif, system-ui, sans-serif;
|
|
42
|
+
|
|
43
|
+
/* ── Slide surfaces tuned for the high-impact look ───────────────────── */
|
|
44
|
+
--theme-slide-stage-bg: #0e0e0e;
|
|
45
|
+
--theme-slide-surface: #242424;
|
|
46
|
+
--theme-slide-code-bg: #242424;
|
|
47
|
+
--theme-slide-accent: #ff5722;
|
|
48
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/* =============================================================================
|
|
2
|
+
@atom63/slides — DARK THEME
|
|
3
|
+
|
|
4
|
+
A dark palette for the slide player. Import it AFTER the default tokens to
|
|
5
|
+
flip the whole deck (slides + chrome) to dark — every --theme-slide-* and
|
|
6
|
+
chrome token derives from this base palette via color-mix, so overriding the
|
|
7
|
+
palette is enough:
|
|
8
|
+
|
|
9
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
10
|
+
import "@atom63/slides/themes/dark"; // override → dark
|
|
11
|
+
import "@atom63/slides/styles";
|
|
12
|
+
|
|
13
|
+
Want a runtime light/dark toggle instead of a hard import? Re-scope the rule
|
|
14
|
+
below from `:root` to e.g. `[data-slides-theme="dark"]` in your own CSS.
|
|
15
|
+
Want a custom theme? Override any of these tokens in your own stylesheet.
|
|
16
|
+
============================================================================= */
|
|
17
|
+
:root {
|
|
18
|
+
/* ── Base palette (dark) ─────────────────────────────────────────────── */
|
|
19
|
+
--background: rgba(20, 20, 22, 1);
|
|
20
|
+
--foreground: rgba(237, 237, 240, 1);
|
|
21
|
+
--card: rgba(28, 28, 31, 1);
|
|
22
|
+
--popover: rgba(28, 28, 31, 1);
|
|
23
|
+
--popover-foreground: rgba(237, 237, 240, 1);
|
|
24
|
+
--light: rgba(252, 252, 252, 1);
|
|
25
|
+
--dark: rgba(12, 12, 14, 1);
|
|
26
|
+
--muted: rgba(40, 40, 44, 1);
|
|
27
|
+
--muted-foreground: rgba(160, 160, 166, 1);
|
|
28
|
+
--secondary: rgba(40, 40, 44, 1);
|
|
29
|
+
--secondary-foreground: rgba(210, 210, 215, 1);
|
|
30
|
+
--border: rgba(74, 74, 80, 1);
|
|
31
|
+
--input: rgba(62, 62, 68, 1);
|
|
32
|
+
--ring: rgba(90, 90, 98, 1);
|
|
33
|
+
--accent: color-mix(in srgb, rgba(48, 48, 53, 1), transparent 20%);
|
|
34
|
+
--accent-foreground: rgba(237, 237, 240, 1);
|
|
35
|
+
--primary: rgba(80, 150, 255, 1);
|
|
36
|
+
--primary-foreground: rgba(8, 14, 24, 1);
|
|
37
|
+
--destructive: rgba(240, 96, 92, 1);
|
|
38
|
+
|
|
39
|
+
/* ── Slide surfaces that read better tuned explicitly on dark ────────── */
|
|
40
|
+
--theme-slide-stage-bg: rgba(12, 12, 14, 1);
|
|
41
|
+
--theme-slide-stage-slide-ring: rgba(255, 255, 255, 0.06);
|
|
42
|
+
--theme-slide-surface: rgba(34, 34, 38, 1);
|
|
43
|
+
--theme-slide-code-bg: rgba(34, 34, 38, 1);
|
|
44
|
+
--theme-switch-track-shadow: inset 0 1px rgb(0 0 0 / 0.2);
|
|
45
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* =============================================================================
|
|
2
|
+
@atom63/slides — EDITORIAL THEME
|
|
3
|
+
|
|
4
|
+
A light, serif "paper & ink" palette for the slide player — warm off-white
|
|
5
|
+
stock, near-black ink, a deep editorial red signal, and Cormorant serif
|
|
6
|
+
headlines. Import it AFTER the default tokens to flip the whole deck (slides +
|
|
7
|
+
chrome) to this look; every --theme-slide-* and chrome token derives from this
|
|
8
|
+
base palette, so overriding the palette + font tokens is enough:
|
|
9
|
+
|
|
10
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
11
|
+
import "@atom63/slides/themes/editorial"; // override → editorial
|
|
12
|
+
import "@atom63/slides/styles";
|
|
13
|
+
|
|
14
|
+
A theme is ONLY a :root override of the documented tokens — no per-theme
|
|
15
|
+
component code. Override any of these tokens in your own stylesheet to tweak.
|
|
16
|
+
|
|
17
|
+
Palette adapted from zarazhangrui/frontend-slides (MIT).
|
|
18
|
+
============================================================================= */
|
|
19
|
+
@import url('https://fonts.googleapis.com/css2?family=Cormorant:wght@500;600;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,600&display=swap');
|
|
20
|
+
:root {
|
|
21
|
+
/* ── Base palette (editorial) ────────────────────────────────────────── */
|
|
22
|
+
--background: #faf9f7;
|
|
23
|
+
--foreground: #1a1a1a;
|
|
24
|
+
--card: #ffffff;
|
|
25
|
+
--popover: #ffffff;
|
|
26
|
+
--popover-foreground: #1a1a1a;
|
|
27
|
+
--muted: #efece6;
|
|
28
|
+
--muted-foreground: #6b6258;
|
|
29
|
+
--secondary: #efece6;
|
|
30
|
+
--secondary-foreground: #4a4038;
|
|
31
|
+
--border: #e2dcd2;
|
|
32
|
+
--input: #d9d2c6;
|
|
33
|
+
--ring: #c41e3a;
|
|
34
|
+
--accent: #efe7dc;
|
|
35
|
+
--accent-foreground: #1a1a1a;
|
|
36
|
+
--primary: #c41e3a;
|
|
37
|
+
--primary-foreground: #fff7f5;
|
|
38
|
+
--destructive: #c41e3a;
|
|
39
|
+
|
|
40
|
+
/* ── Fonts — serif headlines & body; mono stays default ──────────────── */
|
|
41
|
+
--font-sans: "Cormorant", Georgia, serif;
|
|
42
|
+
--font-serif: "Cormorant", Georgia, serif;
|
|
43
|
+
|
|
44
|
+
/* ── Slide surfaces tuned for the paper & ink look ───────────────────── */
|
|
45
|
+
--theme-slide-stage-bg: #ece8e1;
|
|
46
|
+
--theme-slide-surface: #ffffff;
|
|
47
|
+
--theme-slide-quote-color: #2a2a2a;
|
|
48
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* =============================================================================
|
|
2
|
+
@atom63/slides — NEON THEME
|
|
3
|
+
|
|
4
|
+
A dark "cyber" palette for the slide player — deep navy with a cyan signal and
|
|
5
|
+
magenta destructive. Palette-led (no special webfont, to keep it light).
|
|
6
|
+
Import it AFTER the default tokens to flip the whole deck (slides + chrome) to
|
|
7
|
+
this look; every --theme-slide-* and chrome token derives from this base
|
|
8
|
+
palette, so overriding the palette is enough:
|
|
9
|
+
|
|
10
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
11
|
+
import "@atom63/slides/themes/neon"; // override → neon
|
|
12
|
+
import "@atom63/slides/styles";
|
|
13
|
+
|
|
14
|
+
A theme is ONLY a :root override of the documented tokens — no per-theme
|
|
15
|
+
component code. Override any of these tokens in your own stylesheet to tweak.
|
|
16
|
+
|
|
17
|
+
Palette adapted from zarazhangrui/frontend-slides (MIT).
|
|
18
|
+
============================================================================= */
|
|
19
|
+
:root {
|
|
20
|
+
/* ── Base palette (neon) ─────────────────────────────────────────────── */
|
|
21
|
+
--background: #0a0f1c;
|
|
22
|
+
--foreground: #e6f0ff;
|
|
23
|
+
--card: #111829;
|
|
24
|
+
--popover: #111829;
|
|
25
|
+
--popover-foreground: #e6f0ff;
|
|
26
|
+
--muted: #141b2e;
|
|
27
|
+
--muted-foreground: #8da2c0;
|
|
28
|
+
--secondary: #141b2e;
|
|
29
|
+
--secondary-foreground: #cfe0ff;
|
|
30
|
+
--border: #243049;
|
|
31
|
+
--input: #243049;
|
|
32
|
+
--ring: #00ffcc;
|
|
33
|
+
--accent: #16203a;
|
|
34
|
+
--accent-foreground: #e6f0ff;
|
|
35
|
+
--primary: #00ffcc;
|
|
36
|
+
--primary-foreground: #04121a;
|
|
37
|
+
--destructive: #ff00aa;
|
|
38
|
+
|
|
39
|
+
/* ── Fonts — defaults (this is a palette-only theme) ─────────────────── */
|
|
40
|
+
|
|
41
|
+
/* ── Slide surfaces tuned for the cyber look ─────────────────────────── */
|
|
42
|
+
--theme-slide-stage-bg: #05080f;
|
|
43
|
+
--theme-slide-surface: #111829;
|
|
44
|
+
--theme-slide-code-bg: #111829;
|
|
45
|
+
--theme-slide-accent: #00ffcc;
|
|
46
|
+
--theme-slide-quote-color: #b9e8ff;
|
|
47
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* =============================================================================
|
|
2
|
+
@atom63/slides — TERMINAL THEME
|
|
3
|
+
|
|
4
|
+
A dark, monospace "terminal" palette for the slide player — GitHub-dark greys
|
|
5
|
+
with a phosphor-green signal color and JetBrains Mono everywhere. Import it
|
|
6
|
+
AFTER the default tokens to flip the whole deck (slides + chrome) to this look;
|
|
7
|
+
every --theme-slide-* and chrome token derives from this base palette, so
|
|
8
|
+
overriding the palette + font tokens is enough:
|
|
9
|
+
|
|
10
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
11
|
+
import "@atom63/slides/themes/terminal"; // override → terminal
|
|
12
|
+
import "@atom63/slides/styles";
|
|
13
|
+
|
|
14
|
+
A theme is ONLY a :root override of the documented tokens — no per-theme
|
|
15
|
+
component code. Override any of these tokens in your own stylesheet to tweak.
|
|
16
|
+
|
|
17
|
+
Palette adapted from zarazhangrui/frontend-slides (MIT).
|
|
18
|
+
============================================================================= */
|
|
19
|
+
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap');
|
|
20
|
+
:root {
|
|
21
|
+
/* ── Base palette (terminal) ─────────────────────────────────────────── */
|
|
22
|
+
--background: #0d1117;
|
|
23
|
+
--foreground: #c9d1d9;
|
|
24
|
+
--card: #161b22;
|
|
25
|
+
--popover: #161b22;
|
|
26
|
+
--popover-foreground: #c9d1d9;
|
|
27
|
+
--muted: #161b22;
|
|
28
|
+
--muted-foreground: #8b949e;
|
|
29
|
+
--secondary: #161b22;
|
|
30
|
+
--secondary-foreground: #c9d1d9;
|
|
31
|
+
--border: #30363d;
|
|
32
|
+
--input: #30363d;
|
|
33
|
+
--ring: #39d353;
|
|
34
|
+
--accent: #1f2630;
|
|
35
|
+
--accent-foreground: #c9d1d9;
|
|
36
|
+
--primary: #39d353;
|
|
37
|
+
--primary-foreground: #0d1117;
|
|
38
|
+
--destructive: #f85149;
|
|
39
|
+
|
|
40
|
+
/* ── Fonts — mono everything, that's the terminal vibe ───────────────── */
|
|
41
|
+
--font-sans: "JetBrains Mono", ui-monospace, monospace;
|
|
42
|
+
--font-serif: "JetBrains Mono", ui-monospace, monospace;
|
|
43
|
+
--font-mono: "JetBrains Mono", ui-monospace, monospace;
|
|
44
|
+
|
|
45
|
+
/* ── Slide surfaces tuned for the terminal look ──────────────────────── */
|
|
46
|
+
--theme-slide-stage-bg: #010409;
|
|
47
|
+
--theme-slide-surface: #161b22;
|
|
48
|
+
--theme-slide-code-bg: #161b22;
|
|
49
|
+
--theme-slide-accent: #39d353;
|
|
50
|
+
}
|