@atom63/slides 0.3.0 → 0.4.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/README.md +34 -0
- package/dist/{chunk-AD3ZOVWR.js → chunk-FNPEZIX4.js} +3332 -3322
- package/dist/chunk-FNPEZIX4.js.map +1 -0
- package/dist/editor/index.js +98 -7
- package/dist/editor/index.js.map +1 -1
- package/dist/index.d.ts +21 -1
- package/dist/index.js +1 -1
- package/package.json +7 -3
- package/src/editor/styles.css +41 -0
- package/src/styles/themes.css +245 -0
- package/dist/chunk-AD3ZOVWR.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1158,6 +1158,26 @@ declare const syllabusMdxComponents: {
|
|
|
1158
1158
|
caption: ({ className, ...props }: react.ComponentProps<"caption">) => react_jsx_runtime.JSX.Element;
|
|
1159
1159
|
};
|
|
1160
1160
|
|
|
1161
|
+
declare const BUILTIN_THEMES: readonly ["dark", "terminal", "editorial", "neon", "bold"];
|
|
1162
|
+
type BuiltinTheme = (typeof BUILTIN_THEMES)[number];
|
|
1163
|
+
/**
|
|
1164
|
+
* Validate and resolve a `theme` value from deck metadata.
|
|
1165
|
+
*
|
|
1166
|
+
* Returns the theme name if it is one of the {@link BUILTIN_THEMES}, or
|
|
1167
|
+
* `undefined` if the value is absent, unknown, or not a string. This is the
|
|
1168
|
+
* canonical validation path — use it wherever you'd otherwise write an inline
|
|
1169
|
+
* `BUILTIN_THEMES.includes(...)` guard.
|
|
1170
|
+
*
|
|
1171
|
+
* @example
|
|
1172
|
+
* ```ts
|
|
1173
|
+
* const theme = resolveTheme(deck.meta)
|
|
1174
|
+
* // → 'dark' | 'terminal' | 'editorial' | 'neon' | 'bold' | undefined
|
|
1175
|
+
* ```
|
|
1176
|
+
*/
|
|
1177
|
+
declare function resolveTheme(meta: {
|
|
1178
|
+
theme?: unknown;
|
|
1179
|
+
} | undefined): BuiltinTheme | undefined;
|
|
1180
|
+
|
|
1161
1181
|
interface SlidesPlayerProps {
|
|
1162
1182
|
deck: SlideDeckItem;
|
|
1163
1183
|
initialSlide?: number;
|
|
@@ -1281,4 +1301,4 @@ declare function useSlideRenderMode(): SlideRenderMode;
|
|
|
1281
1301
|
/** Signals to the syllabus page that a <Syllabus> block was actually rendered. */
|
|
1282
1302
|
declare const SyllabusDetectContext: react.Context<(() => void) | null>;
|
|
1283
1303
|
|
|
1284
|
-
export { Accent, Avatar, Badge, Bleed, Body, BodyLines, Box, CONFIG_GAP_PX, Cell, Center, ClosingSlide, Collage, ColorBlock, Columns, CoverSlide, Demo, Display, Divider, FRAME_PADDING_PX, FigureMark, Fill, FullBleedCoverSlide, FullBleedGallery, FullBleedSlide, Grid, Headline, HeroBento, Highlight, Icon, Image, ImageDuoSlide, ImageSlide, ImageTrioSlide, InlineCode, Item, Label, List, Live, MediaTrio, Mono, Position, Quote, QuoteSlide, QuoteWithMedia, Reveal, Row, SLIDE_FRAME_WATERMARK_PX, Section, SectionMarker, SectionSlide, SlideCodeBlock, type SlideConfigPadding, type SlideConfigTypographyScale, SlideDeckItem, type SlideGateProvider, SlideLayout, SlidePaddingContext, type SlideRenderMode, SlideRenderModeContext, SlidesPlayer, type SlidesPlayerProps, Spacer, Split, SplitHalf, SplitWithStat, Stack, StatBento, StatementSlide, Subtitle, Syllabus, SyllabusDetectContext, TYPOGRAPHY_SCALE_VALUES, TalkTrack, TextLead, TimelineBento, Title, Trio, Video, slideMdxComponents, syllabusMdxComponents, useSlideConfig, useSlidePadding, useSlideRenderMode };
|
|
1304
|
+
export { Accent, Avatar, BUILTIN_THEMES, Badge, Bleed, Body, BodyLines, Box, type BuiltinTheme, CONFIG_GAP_PX, Cell, Center, ClosingSlide, Collage, ColorBlock, Columns, CoverSlide, Demo, Display, Divider, FRAME_PADDING_PX, FigureMark, Fill, FullBleedCoverSlide, FullBleedGallery, FullBleedSlide, Grid, Headline, HeroBento, Highlight, Icon, Image, ImageDuoSlide, ImageSlide, ImageTrioSlide, InlineCode, Item, Label, List, Live, MediaTrio, Mono, Position, Quote, QuoteSlide, QuoteWithMedia, Reveal, Row, SLIDE_FRAME_WATERMARK_PX, Section, SectionMarker, SectionSlide, SlideCodeBlock, type SlideConfigPadding, type SlideConfigTypographyScale, SlideDeckItem, type SlideGateProvider, SlideLayout, SlidePaddingContext, type SlideRenderMode, SlideRenderModeContext, SlidesPlayer, type SlidesPlayerProps, Spacer, Split, SplitHalf, SplitWithStat, Stack, StatBento, StatementSlide, Subtitle, Syllabus, SyllabusDetectContext, TYPOGRAPHY_SCALE_VALUES, TalkTrack, TextLead, TimelineBento, Title, Trio, Video, resolveTheme, slideMdxComponents, syllabusMdxComponents, useSlideConfig, useSlidePadding, useSlideRenderMode };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { Accent, Avatar, Badge, Bleed, Body, BodyLines, Box, CONFIG_GAP_PX, Cell, Center, ClosingSlide, Collage, ColorBlock, Columns, CoverSlide, Demo, Display, Divider, FRAME_PADDING_PX, FigureMark, Fill, FullBleedCoverSlide, FullBleedGallery, FullBleedSlide, Grid, Headline, HeroBento, Highlight, Icon, Image, ImageDuoSlide, ImageSlide, ImageTrioSlide, InlineCode, Item, Label, List, Live, MediaTrio, Mono, Position, Quote, QuoteSlide, QuoteWithMedia, Reveal, Row, SLIDE_FRAME_WATERMARK_PX, Section, SectionMarker, SectionSlide, SlideCodeBlock, SlidePaddingContext, SlideRenderModeContext, SlidesPlayer, Spacer, Split, SplitHalf, SplitWithStat, Stack, StatBento, StatementSlide, Subtitle, Syllabus, SyllabusDetectContext, TYPOGRAPHY_SCALE_VALUES, TalkTrack, TextLead, TimelineBento, Title, Trio, Video, getTemplate, listTemplates, slideMdxComponents, syllabusMdxComponents, templateNames, templateRegistry, useSlideConfig, useSlidePadding, useSlideRenderMode } from './chunk-
|
|
1
|
+
export { Accent, Avatar, BUILTIN_THEMES, Badge, Bleed, Body, BodyLines, Box, CONFIG_GAP_PX, Cell, Center, ClosingSlide, Collage, ColorBlock, Columns, CoverSlide, Demo, Display, Divider, FRAME_PADDING_PX, FigureMark, Fill, FullBleedCoverSlide, FullBleedGallery, FullBleedSlide, Grid, Headline, HeroBento, Highlight, Icon, Image, ImageDuoSlide, ImageSlide, ImageTrioSlide, InlineCode, Item, Label, List, Live, MediaTrio, Mono, Position, Quote, QuoteSlide, QuoteWithMedia, Reveal, Row, SLIDE_FRAME_WATERMARK_PX, Section, SectionMarker, SectionSlide, SlideCodeBlock, SlidePaddingContext, SlideRenderModeContext, SlidesPlayer, Spacer, Split, SplitHalf, SplitWithStat, Stack, StatBento, StatementSlide, Subtitle, Syllabus, SyllabusDetectContext, TYPOGRAPHY_SCALE_VALUES, TalkTrack, TextLead, TimelineBento, Title, Trio, Video, getTemplate, listTemplates, resolveTheme, slideMdxComponents, syllabusMdxComponents, templateNames, templateRegistry, useSlideConfig, useSlidePadding, useSlideRenderMode } from './chunk-FNPEZIX4.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atom63/slides",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -72,6 +72,9 @@
|
|
|
72
72
|
},
|
|
73
73
|
"./themes/bold": {
|
|
74
74
|
"default": "./src/styles/themes/bold.css"
|
|
75
|
+
},
|
|
76
|
+
"./themes": {
|
|
77
|
+
"default": "./src/styles/themes.css"
|
|
75
78
|
}
|
|
76
79
|
},
|
|
77
80
|
"sideEffects": [
|
|
@@ -87,7 +90,8 @@
|
|
|
87
90
|
"src/styles/themes/neon.css",
|
|
88
91
|
"src/styles/themes/bold.css",
|
|
89
92
|
"src/editor/styles.css",
|
|
90
|
-
"src/editor/styles.d.ts"
|
|
93
|
+
"src/editor/styles.d.ts",
|
|
94
|
+
"src/styles/themes.css"
|
|
91
95
|
],
|
|
92
96
|
"dependencies": {
|
|
93
97
|
"@base-ui/react": "^1.3.0",
|
|
@@ -140,7 +144,7 @@
|
|
|
140
144
|
"@atom63/tsconfig": "0.1.0"
|
|
141
145
|
},
|
|
142
146
|
"scripts": {
|
|
143
|
-
"build": "tsup",
|
|
147
|
+
"build": "node ../../scripts/gen-theme-bundle.mjs && tsup",
|
|
144
148
|
"dev": "tsup --watch",
|
|
145
149
|
"test": "vitest run",
|
|
146
150
|
"typecheck": "tsc --noEmit",
|
package/src/editor/styles.css
CHANGED
|
@@ -212,6 +212,11 @@
|
|
|
212
212
|
height: 100%;
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
+
/* DeckSurface edit-mode wrapper — pass-through so it doesn't affect layout. */
|
|
216
|
+
.a63-surface-edit {
|
|
217
|
+
display: contents;
|
|
218
|
+
}
|
|
219
|
+
|
|
215
220
|
/* Floating Edit button — top-right corner of present view. */
|
|
216
221
|
.a63-surface__edit {
|
|
217
222
|
position: absolute;
|
|
@@ -481,3 +486,39 @@
|
|
|
481
486
|
font-size: 0.82rem;
|
|
482
487
|
color: #555;
|
|
483
488
|
}
|
|
489
|
+
|
|
490
|
+
/* ─── ThemePicker — deck token theme select ──────────────────────────────── */
|
|
491
|
+
/* Controls `theme:` frontmatter (deck visual theme). Distinct from the
|
|
492
|
+
Light/Dark preview-canvas toggle which only affects the editor background. */
|
|
493
|
+
.a63-editor__theme-picker-label {
|
|
494
|
+
display: inline-flex;
|
|
495
|
+
align-items: center;
|
|
496
|
+
gap: 0.3rem;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
.a63-editor__theme-picker-text {
|
|
500
|
+
font-size: 0.72rem;
|
|
501
|
+
font-weight: 600;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
.a63-editor__theme-select {
|
|
505
|
+
padding: 0.2rem 0.4rem;
|
|
506
|
+
border: 1px solid rgba(127, 127, 127, 0.4);
|
|
507
|
+
border-radius: 999px;
|
|
508
|
+
background: transparent;
|
|
509
|
+
color: inherit;
|
|
510
|
+
font-size: 0.72rem;
|
|
511
|
+
font-weight: 600;
|
|
512
|
+
font-family: inherit;
|
|
513
|
+
cursor: pointer;
|
|
514
|
+
outline: none;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
.a63-editor__theme-select:hover {
|
|
518
|
+
background: rgba(127, 127, 127, 0.12);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
.a63-editor__theme-select:focus-visible {
|
|
522
|
+
outline: 2px solid rgba(59, 130, 246, 0.7);
|
|
523
|
+
outline-offset: 1px;
|
|
524
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/* GENERATED by scripts/gen-theme-bundle.mjs — do not edit by hand. Source: src/styles/themes/<name>.css */
|
|
2
|
+
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap');
|
|
3
|
+
@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');
|
|
4
|
+
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800&display=swap');
|
|
5
|
+
|
|
6
|
+
/* GENERATED by scripts/gen-theme-bundle.mjs — do not edit by hand. Source: src/styles/themes/dark.css */
|
|
7
|
+
/* =============================================================================
|
|
8
|
+
@atom63/slides — DARK THEME
|
|
9
|
+
|
|
10
|
+
A dark palette for the slide player. Import it AFTER the default tokens to
|
|
11
|
+
flip the whole deck (slides + chrome) to dark — every --theme-slide-* and
|
|
12
|
+
chrome token derives from this base palette via color-mix, so overriding the
|
|
13
|
+
palette is enough:
|
|
14
|
+
|
|
15
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
16
|
+
import "@atom63/slides/themes/dark"; // override → dark
|
|
17
|
+
import "@atom63/slides/styles";
|
|
18
|
+
|
|
19
|
+
Want a runtime light/dark toggle instead of a hard import? Re-scope the rule
|
|
20
|
+
below from `:root` to e.g. `[data-slides-theme="dark"]` in your own CSS.
|
|
21
|
+
Want a custom theme? Override any of these tokens in your own stylesheet.
|
|
22
|
+
============================================================================= */
|
|
23
|
+
[data-slides-theme="dark"] {
|
|
24
|
+
/* ── Base palette (dark) ─────────────────────────────────────────────── */
|
|
25
|
+
--background: rgba(20, 20, 22, 1);
|
|
26
|
+
--foreground: rgba(237, 237, 240, 1);
|
|
27
|
+
--card: rgba(28, 28, 31, 1);
|
|
28
|
+
--popover: rgba(28, 28, 31, 1);
|
|
29
|
+
--popover-foreground: rgba(237, 237, 240, 1);
|
|
30
|
+
--light: rgba(252, 252, 252, 1);
|
|
31
|
+
--dark: rgba(12, 12, 14, 1);
|
|
32
|
+
--muted: rgba(40, 40, 44, 1);
|
|
33
|
+
--muted-foreground: rgba(160, 160, 166, 1);
|
|
34
|
+
--secondary: rgba(40, 40, 44, 1);
|
|
35
|
+
--secondary-foreground: rgba(210, 210, 215, 1);
|
|
36
|
+
--border: rgba(74, 74, 80, 1);
|
|
37
|
+
--input: rgba(62, 62, 68, 1);
|
|
38
|
+
--ring: rgba(90, 90, 98, 1);
|
|
39
|
+
--accent: color-mix(in srgb, rgba(48, 48, 53, 1), transparent 20%);
|
|
40
|
+
--accent-foreground: rgba(237, 237, 240, 1);
|
|
41
|
+
--primary: rgba(80, 150, 255, 1);
|
|
42
|
+
--primary-foreground: rgba(8, 14, 24, 1);
|
|
43
|
+
--destructive: rgba(240, 96, 92, 1);
|
|
44
|
+
|
|
45
|
+
/* ── Slide surfaces that read better tuned explicitly on dark ────────── */
|
|
46
|
+
--theme-slide-stage-bg: rgba(12, 12, 14, 1);
|
|
47
|
+
--theme-slide-stage-slide-ring: rgba(255, 255, 255, 0.06);
|
|
48
|
+
--theme-slide-surface: rgba(34, 34, 38, 1);
|
|
49
|
+
--theme-slide-code-bg: rgba(34, 34, 38, 1);
|
|
50
|
+
--theme-switch-track-shadow: inset 0 1px rgb(0 0 0 / 0.2);
|
|
51
|
+
}
|
|
52
|
+
/* GENERATED by scripts/gen-theme-bundle.mjs — do not edit by hand. Source: src/styles/themes/terminal.css */
|
|
53
|
+
/* =============================================================================
|
|
54
|
+
@atom63/slides — TERMINAL THEME
|
|
55
|
+
|
|
56
|
+
A dark, monospace "terminal" palette for the slide player — GitHub-dark greys
|
|
57
|
+
with a phosphor-green signal color and JetBrains Mono everywhere. Import it
|
|
58
|
+
AFTER the default tokens to flip the whole deck (slides + chrome) to this look;
|
|
59
|
+
every --theme-slide-* and chrome token derives from this base palette, so
|
|
60
|
+
overriding the palette + font tokens is enough:
|
|
61
|
+
|
|
62
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
63
|
+
import "@atom63/slides/themes/terminal"; // override → terminal
|
|
64
|
+
import "@atom63/slides/styles";
|
|
65
|
+
|
|
66
|
+
A theme is ONLY a :root override of the documented tokens — no per-theme
|
|
67
|
+
component code. Override any of these tokens in your own stylesheet to tweak.
|
|
68
|
+
|
|
69
|
+
Palette adapted from zarazhangrui/frontend-slides (MIT).
|
|
70
|
+
============================================================================= */
|
|
71
|
+
[data-slides-theme="terminal"] {
|
|
72
|
+
/* ── Base palette (terminal) ─────────────────────────────────────────── */
|
|
73
|
+
--background: #0d1117;
|
|
74
|
+
--foreground: #c9d1d9;
|
|
75
|
+
--card: #161b22;
|
|
76
|
+
--popover: #161b22;
|
|
77
|
+
--popover-foreground: #c9d1d9;
|
|
78
|
+
--muted: #161b22;
|
|
79
|
+
--muted-foreground: #8b949e;
|
|
80
|
+
--secondary: #161b22;
|
|
81
|
+
--secondary-foreground: #c9d1d9;
|
|
82
|
+
--border: #30363d;
|
|
83
|
+
--input: #30363d;
|
|
84
|
+
--ring: #39d353;
|
|
85
|
+
--accent: #1f2630;
|
|
86
|
+
--accent-foreground: #c9d1d9;
|
|
87
|
+
--primary: #39d353;
|
|
88
|
+
--primary-foreground: #0d1117;
|
|
89
|
+
--destructive: #f85149;
|
|
90
|
+
|
|
91
|
+
/* ── Fonts — mono everything, that's the terminal vibe ───────────────── */
|
|
92
|
+
--font-sans: "JetBrains Mono", ui-monospace, monospace;
|
|
93
|
+
--font-serif: "JetBrains Mono", ui-monospace, monospace;
|
|
94
|
+
--font-mono: "JetBrains Mono", ui-monospace, monospace;
|
|
95
|
+
|
|
96
|
+
/* ── Slide surfaces tuned for the terminal look ──────────────────────── */
|
|
97
|
+
--theme-slide-stage-bg: #010409;
|
|
98
|
+
--theme-slide-surface: #161b22;
|
|
99
|
+
--theme-slide-code-bg: #161b22;
|
|
100
|
+
--theme-slide-accent: #39d353;
|
|
101
|
+
}
|
|
102
|
+
/* GENERATED by scripts/gen-theme-bundle.mjs — do not edit by hand. Source: src/styles/themes/editorial.css */
|
|
103
|
+
/* =============================================================================
|
|
104
|
+
@atom63/slides — EDITORIAL THEME
|
|
105
|
+
|
|
106
|
+
A light, serif "paper & ink" palette for the slide player — warm off-white
|
|
107
|
+
stock, near-black ink, a deep editorial red signal, and Cormorant serif
|
|
108
|
+
headlines. Import it AFTER the default tokens to flip the whole deck (slides +
|
|
109
|
+
chrome) to this look; every --theme-slide-* and chrome token derives from this
|
|
110
|
+
base palette, so overriding the palette + font tokens is enough:
|
|
111
|
+
|
|
112
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
113
|
+
import "@atom63/slides/themes/editorial"; // override → editorial
|
|
114
|
+
import "@atom63/slides/styles";
|
|
115
|
+
|
|
116
|
+
A theme is ONLY a :root override of the documented tokens — no per-theme
|
|
117
|
+
component code. Override any of these tokens in your own stylesheet to tweak.
|
|
118
|
+
|
|
119
|
+
Palette adapted from zarazhangrui/frontend-slides (MIT).
|
|
120
|
+
============================================================================= */
|
|
121
|
+
[data-slides-theme="editorial"] {
|
|
122
|
+
/* ── Base palette (editorial) ────────────────────────────────────────── */
|
|
123
|
+
--background: #faf9f7;
|
|
124
|
+
--foreground: #1a1a1a;
|
|
125
|
+
--card: #ffffff;
|
|
126
|
+
--popover: #ffffff;
|
|
127
|
+
--popover-foreground: #1a1a1a;
|
|
128
|
+
--muted: #efece6;
|
|
129
|
+
--muted-foreground: #6b6258;
|
|
130
|
+
--secondary: #efece6;
|
|
131
|
+
--secondary-foreground: #4a4038;
|
|
132
|
+
--border: #e2dcd2;
|
|
133
|
+
--input: #d9d2c6;
|
|
134
|
+
--ring: #c41e3a;
|
|
135
|
+
--accent: #efe7dc;
|
|
136
|
+
--accent-foreground: #1a1a1a;
|
|
137
|
+
--primary: #c41e3a;
|
|
138
|
+
--primary-foreground: #fff7f5;
|
|
139
|
+
--destructive: #c41e3a;
|
|
140
|
+
|
|
141
|
+
/* ── Fonts — serif headlines & body; mono stays default ──────────────── */
|
|
142
|
+
--font-sans: "Cormorant", Georgia, serif;
|
|
143
|
+
--font-serif: "Cormorant", Georgia, serif;
|
|
144
|
+
|
|
145
|
+
/* ── Slide surfaces tuned for the paper & ink look ───────────────────── */
|
|
146
|
+
--theme-slide-stage-bg: #ece8e1;
|
|
147
|
+
--theme-slide-surface: #ffffff;
|
|
148
|
+
--theme-slide-quote-color: #2a2a2a;
|
|
149
|
+
}
|
|
150
|
+
/* GENERATED by scripts/gen-theme-bundle.mjs — do not edit by hand. Source: src/styles/themes/neon.css */
|
|
151
|
+
/* =============================================================================
|
|
152
|
+
@atom63/slides — NEON THEME
|
|
153
|
+
|
|
154
|
+
A dark "cyber" palette for the slide player — deep navy with a cyan signal and
|
|
155
|
+
magenta destructive. Palette-led (no special webfont, to keep it light).
|
|
156
|
+
Import it AFTER the default tokens to flip the whole deck (slides + chrome) to
|
|
157
|
+
this look; every --theme-slide-* and chrome token derives from this base
|
|
158
|
+
palette, so overriding the palette is enough:
|
|
159
|
+
|
|
160
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
161
|
+
import "@atom63/slides/themes/neon"; // override → neon
|
|
162
|
+
import "@atom63/slides/styles";
|
|
163
|
+
|
|
164
|
+
A theme is ONLY a :root override of the documented tokens — no per-theme
|
|
165
|
+
component code. Override any of these tokens in your own stylesheet to tweak.
|
|
166
|
+
|
|
167
|
+
Palette adapted from zarazhangrui/frontend-slides (MIT).
|
|
168
|
+
============================================================================= */
|
|
169
|
+
[data-slides-theme="neon"] {
|
|
170
|
+
/* ── Base palette (neon) ─────────────────────────────────────────────── */
|
|
171
|
+
--background: #0a0f1c;
|
|
172
|
+
--foreground: #e6f0ff;
|
|
173
|
+
--card: #111829;
|
|
174
|
+
--popover: #111829;
|
|
175
|
+
--popover-foreground: #e6f0ff;
|
|
176
|
+
--muted: #141b2e;
|
|
177
|
+
--muted-foreground: #8da2c0;
|
|
178
|
+
--secondary: #141b2e;
|
|
179
|
+
--secondary-foreground: #cfe0ff;
|
|
180
|
+
--border: #243049;
|
|
181
|
+
--input: #243049;
|
|
182
|
+
--ring: #00ffcc;
|
|
183
|
+
--accent: #16203a;
|
|
184
|
+
--accent-foreground: #e6f0ff;
|
|
185
|
+
--primary: #00ffcc;
|
|
186
|
+
--primary-foreground: #04121a;
|
|
187
|
+
--destructive: #ff00aa;
|
|
188
|
+
|
|
189
|
+
/* ── Fonts — defaults (this is a palette-only theme) ─────────────────── */
|
|
190
|
+
|
|
191
|
+
/* ── Slide surfaces tuned for the cyber look ─────────────────────────── */
|
|
192
|
+
--theme-slide-stage-bg: #05080f;
|
|
193
|
+
--theme-slide-surface: #111829;
|
|
194
|
+
--theme-slide-code-bg: #111829;
|
|
195
|
+
--theme-slide-accent: #00ffcc;
|
|
196
|
+
--theme-slide-quote-color: #b9e8ff;
|
|
197
|
+
}
|
|
198
|
+
/* GENERATED by scripts/gen-theme-bundle.mjs — do not edit by hand. Source: src/styles/themes/bold.css */
|
|
199
|
+
/* =============================================================================
|
|
200
|
+
@atom63/slides — BOLD THEME
|
|
201
|
+
|
|
202
|
+
A dark, high-impact palette for the slide player — charcoal greys with a
|
|
203
|
+
bright orange signal and a strong Archivo sans for headlines. Import it AFTER
|
|
204
|
+
the default tokens to flip the whole deck (slides + chrome) to this look;
|
|
205
|
+
every --theme-slide-* and chrome token derives from this base palette, so
|
|
206
|
+
overriding the palette + font tokens is enough:
|
|
207
|
+
|
|
208
|
+
import "@atom63/slides/theme-defaults"; // light defaults + base rules
|
|
209
|
+
import "@atom63/slides/themes/bold"; // override → bold
|
|
210
|
+
import "@atom63/slides/styles";
|
|
211
|
+
|
|
212
|
+
A theme is ONLY a :root override of the documented tokens — no per-theme
|
|
213
|
+
component code. Override any of these tokens in your own stylesheet to tweak.
|
|
214
|
+
|
|
215
|
+
Palette adapted from zarazhangrui/frontend-slides (MIT).
|
|
216
|
+
============================================================================= */
|
|
217
|
+
[data-slides-theme="bold"] {
|
|
218
|
+
/* ── Base palette (bold) ─────────────────────────────────────────────── */
|
|
219
|
+
--background: #1a1a1a;
|
|
220
|
+
--foreground: #ffffff;
|
|
221
|
+
--card: #242424;
|
|
222
|
+
--popover: #242424;
|
|
223
|
+
--popover-foreground: #ffffff;
|
|
224
|
+
--muted: #2a2a2a;
|
|
225
|
+
--muted-foreground: #a0a0a0;
|
|
226
|
+
--secondary: #2a2a2a;
|
|
227
|
+
--secondary-foreground: #e0e0e0;
|
|
228
|
+
--border: #3a3a3a;
|
|
229
|
+
--input: #3a3a3a;
|
|
230
|
+
--ring: #ff5722;
|
|
231
|
+
--accent: #2e2e2e;
|
|
232
|
+
--accent-foreground: #ffffff;
|
|
233
|
+
--primary: #ff5722;
|
|
234
|
+
--primary-foreground: #1a1a1a;
|
|
235
|
+
--destructive: #ff5722;
|
|
236
|
+
|
|
237
|
+
/* ── Fonts — strong sans headlines; serif & mono stay default ────────── */
|
|
238
|
+
--font-sans: "Archivo", ui-sans-serif, system-ui, sans-serif;
|
|
239
|
+
|
|
240
|
+
/* ── Slide surfaces tuned for the high-impact look ───────────────────── */
|
|
241
|
+
--theme-slide-stage-bg: #0e0e0e;
|
|
242
|
+
--theme-slide-surface: #242424;
|
|
243
|
+
--theme-slide-code-bg: #242424;
|
|
244
|
+
--theme-slide-accent: #ff5722;
|
|
245
|
+
}
|