@honeydeck/honeydeck 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/AGENTS.md +25 -0
- package/DEVELOPMENT.md +522 -0
- package/LICENSE +21 -0
- package/Readme.md +49 -0
- package/SPEC.md +88 -0
- package/docs/components.md +63 -0
- package/docs/configuration.md +91 -0
- package/docs/getting-started.md +116 -0
- package/docs/kit-authoring.md +207 -0
- package/docs/kits.md +387 -0
- package/docs/local-development.md +95 -0
- package/docs/mermaid.md +198 -0
- package/docs/mobile.md +108 -0
- package/docs/navigation.md +93 -0
- package/docs/next-steps.md +377 -0
- package/docs/pdf-export.md +91 -0
- package/docs/presenter-mode.md +104 -0
- package/docs/slides.md +130 -0
- package/docs/slidev-migration.md +42 -0
- package/docs/steps-and-reveals.md +171 -0
- package/package.json +134 -0
- package/skills/SPEC.md +21 -0
- package/skills/honeydeck/SKILL.md +65 -0
- package/skills/presentation-writing/SKILL.md +75 -0
- package/skills/slidev-migration/SKILL.md +153 -0
- package/src/SPEC.md +89 -0
- package/src/assets.d.ts +30 -0
- package/src/cli/SPEC.md +230 -0
- package/src/cli/args.ts +3 -0
- package/src/cli/banner.ts +9 -0
- package/src/cli/bin.js +5 -0
- package/src/cli/build.ts +229 -0
- package/src/cli/deck-path.ts +32 -0
- package/src/cli/dev.ts +263 -0
- package/src/cli/index.ts +126 -0
- package/src/cli/init.ts +369 -0
- package/src/cli/pdf.ts +923 -0
- package/src/cli/skill.ts +75 -0
- package/src/cli/templates/SPEC.md +70 -0
- package/src/cli/templates/deck-mdx.ts +15 -0
- package/src/cli/templates/package-json.ts +36 -0
- package/src/cli/templates/sparkle-button.ts +15 -0
- package/src/cli/templates/starter/components/SparkleButton.tsx +84 -0
- package/src/cli/templates/starter/deck.mdx +153 -0
- package/src/cli/templates/starter/styles.css +14 -0
- package/src/cli/templates/styles-css.ts +14 -0
- package/src/defaults.ts +1 -0
- package/src/layouts/ColorModeImage.tsx +55 -0
- package/src/layouts/SPEC.md +393 -0
- package/src/layouts/SlideFrame.tsx +48 -0
- package/src/layouts/bee/Blank.tsx +12 -0
- package/src/layouts/bee/Cover.tsx +70 -0
- package/src/layouts/bee/Default.tsx +42 -0
- package/src/layouts/bee/Image/Image.tsx +151 -0
- package/src/layouts/bee/Image/placeholder-dark.webp +0 -0
- package/src/layouts/bee/Image/placeholder-vertical-dark.webp +0 -0
- package/src/layouts/bee/Image/placeholder-vertical.webp +0 -0
- package/src/layouts/bee/Image/placeholder.webp +0 -0
- package/src/layouts/bee/ImageLeft.tsx +27 -0
- package/src/layouts/bee/ImageRight.tsx +27 -0
- package/src/layouts/bee/ImageSide.tsx +107 -0
- package/src/layouts/bee/Section.tsx +40 -0
- package/src/layouts/bee/TwoCol.tsx +108 -0
- package/src/layouts/bee/index.ts +40 -0
- package/src/layouts/clean/Blank.tsx +12 -0
- package/src/layouts/clean/Cover.tsx +58 -0
- package/src/layouts/clean/Default.tsx +33 -0
- package/src/layouts/clean/Image/Image.tsx +103 -0
- package/src/layouts/clean/ImageLeft.tsx +27 -0
- package/src/layouts/clean/ImageRight.tsx +27 -0
- package/src/layouts/clean/ImageSide.tsx +113 -0
- package/src/layouts/clean/Section.tsx +35 -0
- package/src/layouts/clean/TwoCol.tsx +63 -0
- package/src/layouts/clean/index.ts +40 -0
- package/src/layouts/index.ts +60 -0
- package/src/layouts/placeholders.ts +9 -0
- package/src/layouts/utils.ts +13 -0
- package/src/remark/SPEC.md +49 -0
- package/src/remark/h1-extract.ts +124 -0
- package/src/remark/index.ts +4 -0
- package/src/remark/shiki-code-blocks.ts +325 -0
- package/src/remark/step-numbering.ts +412 -0
- package/src/runtime/Deck.tsx +533 -0
- package/src/runtime/SPEC.md +256 -0
- package/src/runtime/SlideCanvas.tsx +95 -0
- package/src/runtime/TimelineContext.tsx +122 -0
- package/src/runtime/app-shell/index.html +31 -0
- package/src/runtime/app-shell/main.tsx +42 -0
- package/src/runtime/aspectRatio.ts +34 -0
- package/src/runtime/colorMode.ts +23 -0
- package/src/runtime/components/BrowserFrame.tsx +233 -0
- package/src/runtime/components/Button.tsx +57 -0
- package/src/runtime/components/CodeBlock.tsx +210 -0
- package/src/runtime/components/ColorModeCycleButton.tsx +59 -0
- package/src/runtime/components/ErrorBoundary.tsx +125 -0
- package/src/runtime/components/Keyboard.tsx +87 -0
- package/src/runtime/components/ListStyle.tsx +203 -0
- package/src/runtime/components/NavBar.tsx +223 -0
- package/src/runtime/components/NavBarButton.tsx +47 -0
- package/src/runtime/components/NavBarDivider.tsx +3 -0
- package/src/runtime/components/Notes.tsx +171 -0
- package/src/runtime/components/Reveal.tsx +82 -0
- package/src/runtime/components/RevealGroup.tsx +193 -0
- package/src/runtime/components/SPEC.md +263 -0
- package/src/runtime/components/SlideNumberBadge.tsx +11 -0
- package/src/runtime/components/TimelineSteps.tsx +115 -0
- package/src/runtime/components/index.ts +55 -0
- package/src/runtime/index.ts +42 -0
- package/src/runtime/inputOwnership.ts +68 -0
- package/src/runtime/keyboardTarget.ts +7 -0
- package/src/runtime/lastSlideRoute.ts +56 -0
- package/src/runtime/navigation.ts +211 -0
- package/src/runtime/router.ts +157 -0
- package/src/runtime/slideData.ts +137 -0
- package/src/runtime/sync.ts +267 -0
- package/src/runtime/types.ts +182 -0
- package/src/runtime/useKeyboardNav.ts +138 -0
- package/src/runtime/useSwipeNav.ts +257 -0
- package/src/runtime/views/DocsView.tsx +74 -0
- package/src/runtime/views/OverviewView.tsx +386 -0
- package/src/runtime/views/PresenterNotesPanel.tsx +76 -0
- package/src/runtime/views/PresenterView.tsx +340 -0
- package/src/runtime/views/SPEC.md +152 -0
- package/src/runtime/views/docs/ComponentsTab.tsx +178 -0
- package/src/runtime/views/docs/DocsHeader.tsx +101 -0
- package/src/runtime/views/docs/Intro.tsx +20 -0
- package/src/runtime/views/docs/LayoutsTab.tsx +324 -0
- package/src/runtime/views/docs/ThemeTab.tsx +110 -0
- package/src/runtime/views/index.ts +7 -0
- package/src/runtime/views/overviewGrid.ts +106 -0
- package/src/runtime/views/presenterPreview.ts +27 -0
- package/src/runtime/virtual-modules.d.ts +98 -0
- package/src/theme/SPEC.md +179 -0
- package/src/theme/base.css +623 -0
- package/src/theme/bee.css +35 -0
- package/src/theme/clean.css +38 -0
- package/src/vite-plugin/SPEC.md +114 -0
- package/src/vite-plugin/component-doc-crawler.ts +350 -0
- package/src/vite-plugin/deck-loader.ts +148 -0
- package/src/vite-plugin/index.ts +373 -0
- package/src/vite-plugin/layout-demo-crawler.ts +802 -0
- package/src/vite-plugin/splitter.ts +353 -0
- package/src/vite-plugin/token-manifest.ts +163 -0
- package/src/vite-plugin/virtual-modules.ts +587 -0
|
@@ -0,0 +1,623 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Honeydeck Base Theme
|
|
3
|
+
*
|
|
4
|
+
* CSS custom property tokens for color, typography, and code.
|
|
5
|
+
* Light/dark modes provide a cohesive default palette. Override the CSS
|
|
6
|
+
* variables to retheme a deck. A Tailwind v4 @theme block maps the tokens to
|
|
7
|
+
* utility classes (bg-background, text-foreground, rounded-honeydeck, etc.).
|
|
8
|
+
*
|
|
9
|
+
* Import in your project:
|
|
10
|
+
* @import "tailwindcss";
|
|
11
|
+
* @import "<path-to-honeydeck>/src/theme/base.css";
|
|
12
|
+
*
|
|
13
|
+
* Override any token after the import to customise colors / typography:
|
|
14
|
+
* [data-honeydeck-color-mode="light"] { --honeydeck-primary: oklch(55% 0.25 145); }
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/* ── Source scanning ────────────────────────────────────────────────────────
|
|
18
|
+
Tell Tailwind to scan the built-in layouts for utility class candidates.
|
|
19
|
+
Without this, layouts live outside the Vite root (user's project dir) and
|
|
20
|
+
@tailwindcss/vite's oxide Scanner would never discover their classes. */
|
|
21
|
+
@source "../layouts";
|
|
22
|
+
@source "../runtime";
|
|
23
|
+
|
|
24
|
+
/* ── Typography tokens (shared across color modes) ─────────────────────────
|
|
25
|
+
These live on :root so layouts can read them without caring about mode. */
|
|
26
|
+
:root {
|
|
27
|
+
/* Content padding — internal spacing between slide edge and content */
|
|
28
|
+
--honeydeck-slide-padding: 2rem;
|
|
29
|
+
|
|
30
|
+
/* Font families */
|
|
31
|
+
--honeydeck-font-heading: system-ui, sans-serif;
|
|
32
|
+
--honeydeck-font-body: system-ui, sans-serif;
|
|
33
|
+
--honeydeck-font-mono:
|
|
34
|
+
ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;
|
|
35
|
+
|
|
36
|
+
/* Base size — seeds rem and all other size tokens */
|
|
37
|
+
--honeydeck-font-size-base: 36px;
|
|
38
|
+
--honeydeck-font-scale: 1.25;
|
|
39
|
+
|
|
40
|
+
/* Seed rem units — 1rem = --honeydeck-font-size-base */
|
|
41
|
+
font-size: var(--honeydeck-font-size-base, 36px);
|
|
42
|
+
|
|
43
|
+
/* Body / paragraph text */
|
|
44
|
+
--honeydeck-font-size-body: 1rem; /* = base */
|
|
45
|
+
|
|
46
|
+
/* Heading sizes — computed from scale^n (in rem, so relative to base) */
|
|
47
|
+
--honeydeck-font-size-display: calc(
|
|
48
|
+
1rem *
|
|
49
|
+
var(--honeydeck-font-scale) *
|
|
50
|
+
var(--honeydeck-font-scale) *
|
|
51
|
+
var(--honeydeck-font-scale) *
|
|
52
|
+
var(--honeydeck-font-scale) *
|
|
53
|
+
var(--honeydeck-font-scale)
|
|
54
|
+
); /* scale^5 — Section dividers */
|
|
55
|
+
--honeydeck-font-size-h1: calc(
|
|
56
|
+
1rem *
|
|
57
|
+
var(--honeydeck-font-scale) *
|
|
58
|
+
var(--honeydeck-font-scale) *
|
|
59
|
+
var(--honeydeck-font-scale) *
|
|
60
|
+
var(--honeydeck-font-scale)
|
|
61
|
+
); /* scale^4 */
|
|
62
|
+
--honeydeck-font-size-h2: calc(
|
|
63
|
+
1rem *
|
|
64
|
+
var(--honeydeck-font-scale) *
|
|
65
|
+
var(--honeydeck-font-scale) *
|
|
66
|
+
var(--honeydeck-font-scale)
|
|
67
|
+
); /* scale^3 */
|
|
68
|
+
--honeydeck-font-size-h3: calc(
|
|
69
|
+
1rem *
|
|
70
|
+
var(--honeydeck-font-scale) *
|
|
71
|
+
var(--honeydeck-font-scale)
|
|
72
|
+
); /* scale^2 */
|
|
73
|
+
--honeydeck-font-size-h4: calc(
|
|
74
|
+
1rem *
|
|
75
|
+
var(--honeydeck-font-scale)
|
|
76
|
+
); /* scale^1 */
|
|
77
|
+
--honeydeck-font-size-small: calc(
|
|
78
|
+
1rem /
|
|
79
|
+
var(--honeydeck-font-scale)
|
|
80
|
+
); /* scale^-1 */
|
|
81
|
+
|
|
82
|
+
/* Code blocks */
|
|
83
|
+
--honeydeck-font-size-code: 0.83rem; /* ~20px at 24px base */
|
|
84
|
+
|
|
85
|
+
/* Code step-through: opacity of non-highlighted lines during walkthroughs */
|
|
86
|
+
--honeydeck-code-line-dim-opacity: 0.4;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* ── Light mode ─────────────────────────────────────────────────────────────
|
|
90
|
+
Clean black, white, and grey defaults. */
|
|
91
|
+
[data-honeydeck-color-mode="light"] {
|
|
92
|
+
color-scheme: light;
|
|
93
|
+
|
|
94
|
+
/* Primary brand color — change this to retheme the entire deck */
|
|
95
|
+
--honeydeck-primary: #000000;
|
|
96
|
+
|
|
97
|
+
/* Foreground on primary-colored backgrounds */
|
|
98
|
+
--honeydeck-primary-foreground: #ffffff;
|
|
99
|
+
|
|
100
|
+
/* Slide background */
|
|
101
|
+
--honeydeck-background: #ffffff;
|
|
102
|
+
|
|
103
|
+
/* Main text color */
|
|
104
|
+
--honeydeck-foreground: #111111;
|
|
105
|
+
|
|
106
|
+
/* Secondary surface (cards, code blocks, callouts) */
|
|
107
|
+
--honeydeck-surface: #f2f2f2;
|
|
108
|
+
|
|
109
|
+
/* Text on surface backgrounds */
|
|
110
|
+
--honeydeck-surface-foreground: #222222;
|
|
111
|
+
|
|
112
|
+
/* Divider / border color */
|
|
113
|
+
--honeydeck-border: #c8c8c8;
|
|
114
|
+
|
|
115
|
+
/* Accent / pop color */
|
|
116
|
+
--honeydeck-accent: #000000;
|
|
117
|
+
|
|
118
|
+
/* Text on accent backgrounds */
|
|
119
|
+
--honeydeck-accent-foreground: #ffffff;
|
|
120
|
+
|
|
121
|
+
--honeydeck-link-color: inherit;
|
|
122
|
+
--honeydeck-border-radius: 0.25rem;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* ── Dark mode ───────────────────────────────────────────────────────────────
|
|
126
|
+
Clean inverted defaults for dark rooms. */
|
|
127
|
+
[data-honeydeck-color-mode="dark"] {
|
|
128
|
+
color-scheme: dark;
|
|
129
|
+
|
|
130
|
+
/* Primary brand color */
|
|
131
|
+
--honeydeck-primary: #ffffff;
|
|
132
|
+
|
|
133
|
+
--honeydeck-primary-foreground: #000000;
|
|
134
|
+
|
|
135
|
+
/* Deep dark slide background */
|
|
136
|
+
--honeydeck-background: #000000;
|
|
137
|
+
|
|
138
|
+
/* Near-white text */
|
|
139
|
+
--honeydeck-foreground: #f5f5f5;
|
|
140
|
+
|
|
141
|
+
/* Slightly lighter surface for cards / code blocks */
|
|
142
|
+
--honeydeck-surface: #1f1f1f;
|
|
143
|
+
|
|
144
|
+
--honeydeck-surface-foreground: #e8e8e8;
|
|
145
|
+
|
|
146
|
+
--honeydeck-border: #5c5c5c;
|
|
147
|
+
|
|
148
|
+
--honeydeck-accent: #ffffff;
|
|
149
|
+
|
|
150
|
+
--honeydeck-accent-foreground: #000000;
|
|
151
|
+
|
|
152
|
+
--honeydeck-link-color: inherit;
|
|
153
|
+
--honeydeck-border-radius: 0.25rem;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* ── Tailwind v4 @theme — map tokens to utility classes ────────────────────
|
|
157
|
+
Each --color-* entry creates bg-*, text-*, border-*, ring-* utilities.
|
|
158
|
+
--font-* → font-* family utilities. --radius-* → rounded-* utilities. */
|
|
159
|
+
@theme {
|
|
160
|
+
/* Spacing — pixel-based (decoupled from root font-size which is 36px for slides) */
|
|
161
|
+
--spacing: 4px;
|
|
162
|
+
|
|
163
|
+
/* Text sizes — pixel-based for predictable sizing across contexts */
|
|
164
|
+
--text-2xs: 10px;
|
|
165
|
+
--text-xs: 11px;
|
|
166
|
+
--text-sm: 12px;
|
|
167
|
+
--text-base: 13px;
|
|
168
|
+
--text-md: 14px;
|
|
169
|
+
--text-lg: 15px;
|
|
170
|
+
--text-xl: 16px;
|
|
171
|
+
--text-2xl: 18px;
|
|
172
|
+
--text-3xl: 20px;
|
|
173
|
+
--text-4xl: 22px;
|
|
174
|
+
--text-5xl: 28px;
|
|
175
|
+
--text-6xl: 40px;
|
|
176
|
+
|
|
177
|
+
/* Colors — slide theme */
|
|
178
|
+
--color-primary: var(--honeydeck-primary);
|
|
179
|
+
--color-primary-foreground: var(--honeydeck-primary-foreground);
|
|
180
|
+
--color-background: var(--honeydeck-background);
|
|
181
|
+
--color-foreground: var(--honeydeck-foreground);
|
|
182
|
+
--color-surface: var(--honeydeck-surface);
|
|
183
|
+
--color-surface-foreground: var(--honeydeck-surface-foreground);
|
|
184
|
+
--color-border: var(--honeydeck-border);
|
|
185
|
+
--color-accent: var(--honeydeck-accent);
|
|
186
|
+
--color-accent-foreground: var(--honeydeck-accent-foreground);
|
|
187
|
+
--color-link: var(--honeydeck-link-color);
|
|
188
|
+
|
|
189
|
+
/* Colors — runtime fallbacks */
|
|
190
|
+
--color-error: #ff6b6b;
|
|
191
|
+
--color-error-surface: #1a0a0a;
|
|
192
|
+
--color-void: #111;
|
|
193
|
+
|
|
194
|
+
/* Border radius — pixel-based (unaffected by root font-size) */
|
|
195
|
+
--radius-xs: 4px;
|
|
196
|
+
--radius-sm: 5px;
|
|
197
|
+
--radius: 6px;
|
|
198
|
+
--radius-md: 8px;
|
|
199
|
+
--radius-lg: 10px;
|
|
200
|
+
--radius-xl: 12px;
|
|
201
|
+
--radius-honeydeck: var(--honeydeck-border-radius);
|
|
202
|
+
|
|
203
|
+
/* Fonts */
|
|
204
|
+
--font-heading: var(--honeydeck-font-heading);
|
|
205
|
+
--font-body: var(--honeydeck-font-body);
|
|
206
|
+
--font-mono: var(--honeydeck-font-mono);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/* ── Base element styles ────────────────────────────────────────────────────
|
|
210
|
+
Applied inside slide canvases. */
|
|
211
|
+
|
|
212
|
+
.honeydeck-slide-canvas {
|
|
213
|
+
font-family: var(--honeydeck-font-body);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.honeydeck-overview-thumbnail[data-boundary-feedback="up"] {
|
|
217
|
+
animation: honeydeck-overview-boundary-up 180ms ease-out;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.honeydeck-overview-thumbnail[data-boundary-feedback="down"] {
|
|
221
|
+
animation: honeydeck-overview-boundary-down 180ms ease-out;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
@keyframes honeydeck-overview-boundary-up {
|
|
225
|
+
0%,
|
|
226
|
+
100% {
|
|
227
|
+
transform: translateY(0) scale(1.01);
|
|
228
|
+
}
|
|
229
|
+
35% {
|
|
230
|
+
transform: translateY(-6px) scale(1.01);
|
|
231
|
+
}
|
|
232
|
+
70% {
|
|
233
|
+
transform: translateY(3px) scale(1.01);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
@keyframes honeydeck-overview-boundary-down {
|
|
238
|
+
0%,
|
|
239
|
+
100% {
|
|
240
|
+
transform: translateY(0) scale(1.01);
|
|
241
|
+
}
|
|
242
|
+
35% {
|
|
243
|
+
transform: translateY(6px) scale(1.01);
|
|
244
|
+
}
|
|
245
|
+
70% {
|
|
246
|
+
transform: translateY(-3px) scale(1.01);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.honeydeck-slide-canvas h1 {
|
|
251
|
+
font-family: var(--honeydeck-font-heading);
|
|
252
|
+
font-size: var(--honeydeck-font-size-h1);
|
|
253
|
+
font-weight: 600;
|
|
254
|
+
line-height: 1.15;
|
|
255
|
+
margin: 0 0 0.5em;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.honeydeck-slide-canvas h2 {
|
|
259
|
+
font-family: var(--honeydeck-font-heading);
|
|
260
|
+
font-size: var(--honeydeck-font-size-h2);
|
|
261
|
+
font-weight: 600;
|
|
262
|
+
line-height: 1.2;
|
|
263
|
+
margin: 0 0 0.5em;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.honeydeck-slide-canvas h3 {
|
|
267
|
+
font-family: var(--honeydeck-font-heading);
|
|
268
|
+
font-size: var(--honeydeck-font-size-h3);
|
|
269
|
+
font-weight: 600;
|
|
270
|
+
line-height: 1.25;
|
|
271
|
+
margin: 0 0 0.4em;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.honeydeck-slide-canvas p {
|
|
275
|
+
font-size: var(--honeydeck-font-size-body);
|
|
276
|
+
line-height: 1.6;
|
|
277
|
+
margin: 0 0 0.75em;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.honeydeck-slide-canvas ul,
|
|
281
|
+
.honeydeck-slide-canvas ol {
|
|
282
|
+
font-size: var(--honeydeck-font-size-body);
|
|
283
|
+
line-height: 1.7;
|
|
284
|
+
padding-left: 1.5em;
|
|
285
|
+
margin: 0 0 0.75em;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.honeydeck-slide-canvas ul {
|
|
289
|
+
list-style: disc;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.honeydeck-slide-canvas ol {
|
|
293
|
+
list-style: decimal;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.honeydeck-slide-canvas li {
|
|
297
|
+
margin-bottom: 0.35em;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.honeydeck-slide-canvas code {
|
|
301
|
+
font-family: var(--honeydeck-font-mono);
|
|
302
|
+
font-size: 0.9em;
|
|
303
|
+
background-color: var(--honeydeck-surface);
|
|
304
|
+
color: var(--honeydeck-surface-foreground);
|
|
305
|
+
padding: 0.1em 0.35em;
|
|
306
|
+
border-radius: 0.3em;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.honeydeck-slide-canvas pre {
|
|
310
|
+
font-family: var(--honeydeck-font-mono);
|
|
311
|
+
font-size: var(--honeydeck-font-size-code);
|
|
312
|
+
background-color: var(--honeydeck-surface);
|
|
313
|
+
color: var(--honeydeck-surface-foreground);
|
|
314
|
+
border-radius: var(--honeydeck-border-radius);
|
|
315
|
+
padding: 1.5em;
|
|
316
|
+
overflow-x: auto;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.honeydeck-slide-canvas pre code {
|
|
320
|
+
background: none;
|
|
321
|
+
padding: 0;
|
|
322
|
+
font-size: inherit;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.honeydeck-slide-canvas blockquote {
|
|
326
|
+
border-left: 4px solid var(--honeydeck-primary);
|
|
327
|
+
margin: 0 0 0.75em;
|
|
328
|
+
padding: 0.25em 0 0.25em 1em;
|
|
329
|
+
color: var(--honeydeck-surface-foreground);
|
|
330
|
+
font-style: italic;
|
|
331
|
+
font-size: var(--honeydeck-font-size-body);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.honeydeck-slide-canvas table {
|
|
335
|
+
width: 100%;
|
|
336
|
+
margin: 0 0 0.75em;
|
|
337
|
+
border-collapse: collapse;
|
|
338
|
+
font-size: calc(var(--honeydeck-font-size-body) * 0.68);
|
|
339
|
+
line-height: 1.35;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.honeydeck-slide-canvas th,
|
|
343
|
+
.honeydeck-slide-canvas td {
|
|
344
|
+
padding: 0.55em 0.75em;
|
|
345
|
+
border-bottom: 1px solid var(--honeydeck-border);
|
|
346
|
+
vertical-align: top;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.honeydeck-slide-canvas th:first-child,
|
|
350
|
+
.honeydeck-slide-canvas td:first-child {
|
|
351
|
+
padding-left: 0;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.honeydeck-slide-canvas th:last-child,
|
|
355
|
+
.honeydeck-slide-canvas td:last-child {
|
|
356
|
+
padding-right: 0;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.honeydeck-slide-canvas th {
|
|
360
|
+
font-weight: 700;
|
|
361
|
+
text-align: left;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
.honeydeck-slide-canvas th[align="center"],
|
|
365
|
+
.honeydeck-slide-canvas td[align="center"] {
|
|
366
|
+
text-align: center;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
.honeydeck-slide-canvas th[align="right"],
|
|
370
|
+
.honeydeck-slide-canvas td[align="right"] {
|
|
371
|
+
text-align: right;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/* ── Shiki dual-theme code highlighting ─────────────────────────────────────
|
|
375
|
+
shiki's defaultColor:false mode emits CSS variables (--shiki-light,
|
|
376
|
+
--shiki-dark, --shiki-light-bg, --shiki-dark-bg) as inline styles.
|
|
377
|
+
These rules activate the correct set based on [data-honeydeck-color-mode]. */
|
|
378
|
+
|
|
379
|
+
/* Light mode default (variable is on :root / the pre element itself) */
|
|
380
|
+
.honeydeck-code-block .shiki {
|
|
381
|
+
/* override the generic .honeydeck-slide-canvas pre background */
|
|
382
|
+
background-color: var(--shiki-light-bg);
|
|
383
|
+
/* bring the shiki pre's padding/radius in from the wrapper */
|
|
384
|
+
border-radius: 0;
|
|
385
|
+
padding: 1.5em;
|
|
386
|
+
margin: 0;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.honeydeck-code-block .shiki span {
|
|
390
|
+
color: var(--shiki-light);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/* Dark mode */
|
|
394
|
+
[data-honeydeck-color-mode="dark"] .honeydeck-code-block .shiki {
|
|
395
|
+
background-color: var(--shiki-dark-bg);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
[data-honeydeck-color-mode="dark"] .honeydeck-code-block .shiki span {
|
|
399
|
+
color: var(--shiki-dark);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/* Override the generic .honeydeck-slide-canvas pre code rule */
|
|
403
|
+
.honeydeck-code-block .shiki code {
|
|
404
|
+
background: transparent;
|
|
405
|
+
padding: 0;
|
|
406
|
+
font-size: inherit;
|
|
407
|
+
color: inherit;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.honeydeck-code-copy-button {
|
|
411
|
+
position: absolute;
|
|
412
|
+
top: 0.75em;
|
|
413
|
+
right: 0.75em;
|
|
414
|
+
z-index: 1;
|
|
415
|
+
display: inline-flex;
|
|
416
|
+
width: 2.25em;
|
|
417
|
+
height: 2.25em;
|
|
418
|
+
align-items: center;
|
|
419
|
+
justify-content: center;
|
|
420
|
+
border: 1px solid
|
|
421
|
+
color-mix(in oklch, var(--honeydeck-border) 75%, transparent);
|
|
422
|
+
border-radius: calc(var(--honeydeck-border-radius) * 0.75);
|
|
423
|
+
background: color-mix(in oklch, var(--honeydeck-surface) 88%, transparent);
|
|
424
|
+
color: var(--honeydeck-surface-foreground);
|
|
425
|
+
box-shadow: 0 8px 20px rgb(0 0 0 / 12%);
|
|
426
|
+
cursor: pointer;
|
|
427
|
+
opacity: 0;
|
|
428
|
+
transition:
|
|
429
|
+
opacity 140ms ease-in,
|
|
430
|
+
background-color 140ms ease-in,
|
|
431
|
+
color 140ms ease-in;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.honeydeck-code-copy-button svg {
|
|
435
|
+
width: 1em;
|
|
436
|
+
height: 1em;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
.honeydeck-code-block:hover .honeydeck-code-copy-button,
|
|
440
|
+
.honeydeck-code-copy-button:focus-visible {
|
|
441
|
+
opacity: 1;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.honeydeck-code-copy-button:hover {
|
|
445
|
+
background: var(--honeydeck-primary);
|
|
446
|
+
color: var(--honeydeck-primary-foreground);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.honeydeck-code-block .line {
|
|
450
|
+
transition: opacity 150ms ease-in;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
.honeydeck-code-block .line[data-dim="1"] {
|
|
454
|
+
opacity: var(--honeydeck-code-line-dim-opacity);
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
/* ── Plain code fallback (no shiki, unsupported lang) ────────────────────── */
|
|
458
|
+
|
|
459
|
+
.honeydeck-code-plain {
|
|
460
|
+
padding: 1.5em;
|
|
461
|
+
background-color: var(--honeydeck-surface);
|
|
462
|
+
color: var(--honeydeck-surface-foreground);
|
|
463
|
+
border-radius: var(--honeydeck-border-radius);
|
|
464
|
+
overflow-x: auto;
|
|
465
|
+
font-family: var(--honeydeck-font-mono);
|
|
466
|
+
font-size: var(--honeydeck-font-size-code);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/* ── Documentation Markdown typography ──────────────────────────────────────
|
|
470
|
+
Rendered README/docs pages use plain MDX elements. Keep their typography
|
|
471
|
+
here instead of in DocsView so the React view stays structural. */
|
|
472
|
+
|
|
473
|
+
.honeydeck-docs-content {
|
|
474
|
+
max-width: 56rem;
|
|
475
|
+
color: color-mix(in oklch, var(--honeydeck-foreground) 80%, transparent);
|
|
476
|
+
font-size: 14px;
|
|
477
|
+
line-height: 28px;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.honeydeck-docs-content h1 {
|
|
481
|
+
margin: 0 0 16px;
|
|
482
|
+
color: var(--honeydeck-foreground);
|
|
483
|
+
font-size: 22px;
|
|
484
|
+
font-weight: 600;
|
|
485
|
+
letter-spacing: 0;
|
|
486
|
+
line-height: 1.2;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
.honeydeck-docs-content h2 {
|
|
490
|
+
margin: 40px 0 12px;
|
|
491
|
+
padding-top: 32px;
|
|
492
|
+
border-top: 1px solid var(--honeydeck-border);
|
|
493
|
+
color: var(--honeydeck-foreground);
|
|
494
|
+
font-size: 18px;
|
|
495
|
+
font-weight: 600;
|
|
496
|
+
line-height: 1.25;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
.honeydeck-docs-content h3 {
|
|
500
|
+
margin: 28px 0 8px;
|
|
501
|
+
color: var(--honeydeck-foreground);
|
|
502
|
+
font-size: 15px;
|
|
503
|
+
font-weight: 600;
|
|
504
|
+
line-height: 1.35;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.honeydeck-docs-content p,
|
|
508
|
+
.honeydeck-docs-content ul,
|
|
509
|
+
.honeydeck-docs-content ol {
|
|
510
|
+
margin: 16px 0;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.honeydeck-docs-content ul {
|
|
514
|
+
padding-left: 24px;
|
|
515
|
+
list-style: disc;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.honeydeck-docs-content ol {
|
|
519
|
+
padding-left: 24px;
|
|
520
|
+
list-style: decimal;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.honeydeck-docs-content li {
|
|
524
|
+
margin: 6px 0;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.honeydeck-docs-content a {
|
|
528
|
+
color: var(--honeydeck-primary);
|
|
529
|
+
font-weight: 500;
|
|
530
|
+
text-underline-offset: 4px;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
.honeydeck-docs-content a:hover {
|
|
534
|
+
text-decoration: underline;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
.honeydeck-docs-content blockquote {
|
|
538
|
+
margin: 20px 0;
|
|
539
|
+
padding-left: 16px;
|
|
540
|
+
border-left: 4px solid var(--honeydeck-primary);
|
|
541
|
+
color: color-mix(in oklch, var(--honeydeck-foreground) 65%, transparent);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
.honeydeck-docs-content code {
|
|
545
|
+
padding: 2px 6px;
|
|
546
|
+
border-radius: 4px;
|
|
547
|
+
background: var(--honeydeck-surface);
|
|
548
|
+
color: var(--honeydeck-surface-foreground);
|
|
549
|
+
font-family: var(--honeydeck-font-mono);
|
|
550
|
+
font-size: 12px;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
.honeydeck-docs-content pre code,
|
|
554
|
+
.honeydeck-docs-content .honeydeck-code-block .shiki code {
|
|
555
|
+
padding: 0;
|
|
556
|
+
background: transparent;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
.honeydeck-docs-content .honeydeck-code-block {
|
|
560
|
+
margin: 20px 0;
|
|
561
|
+
font-size: 12px;
|
|
562
|
+
line-height: 24px;
|
|
563
|
+
border: 1px solid var(--honeydeck-border);
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
.honeydeck-docs-content .honeydeck-code-block pre {
|
|
567
|
+
overflow: auto;
|
|
568
|
+
padding: 16px;
|
|
569
|
+
border-radius: 8px;
|
|
570
|
+
font-size: 12px;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
.honeydeck-docs-content table {
|
|
574
|
+
width: 100%;
|
|
575
|
+
margin: 20px 0;
|
|
576
|
+
border-collapse: collapse;
|
|
577
|
+
font-size: 12px;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
.honeydeck-docs-content th,
|
|
581
|
+
.honeydeck-docs-content td {
|
|
582
|
+
padding: 8px 12px;
|
|
583
|
+
border-bottom: 1px solid var(--honeydeck-border);
|
|
584
|
+
vertical-align: top;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
.honeydeck-docs-content th:first-child,
|
|
588
|
+
.honeydeck-docs-content td:first-child {
|
|
589
|
+
padding-left: 0;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
.honeydeck-docs-content th:last-child,
|
|
593
|
+
.honeydeck-docs-content td:last-child {
|
|
594
|
+
padding-right: 0;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.honeydeck-docs-content th {
|
|
598
|
+
text-align: left;
|
|
599
|
+
font-weight: 700;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
.honeydeck-docs-content th[align="center"],
|
|
603
|
+
.honeydeck-docs-content td[align="center"] {
|
|
604
|
+
text-align: center;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
.honeydeck-docs-content th[align="right"],
|
|
608
|
+
.honeydeck-docs-content td[align="right"] {
|
|
609
|
+
text-align: right;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
.honeydeck-slide-canvas a {
|
|
613
|
+
color: var(--honeydeck-link-color);
|
|
614
|
+
text-decoration: underline;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
.honeydeck-slide-canvas strong {
|
|
618
|
+
font-weight: 700;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
.honeydeck-slide-canvas em {
|
|
622
|
+
font-style: italic;
|
|
623
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bee Theme
|
|
3
|
+
*
|
|
4
|
+
* Opinionated Honeydeck theme layer inspired by a playful bee palette.
|
|
5
|
+
* Import this after honeydeck/theme.css.
|
|
6
|
+
*
|
|
7
|
+
* This theme demonstrates how a theme layer can replace the clean defaults
|
|
8
|
+
* with a warmer, playful identity.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
[data-honeydeck-color-mode="light"] {
|
|
12
|
+
--honeydeck-primary: #6d4aff;
|
|
13
|
+
--honeydeck-primary-foreground: #fcfbff;
|
|
14
|
+
--honeydeck-background: #fffdf7;
|
|
15
|
+
--honeydeck-foreground: #1d1733;
|
|
16
|
+
--honeydeck-surface: #f3efff;
|
|
17
|
+
--honeydeck-surface-foreground: #2c2447;
|
|
18
|
+
--honeydeck-border: #dcebff;
|
|
19
|
+
--honeydeck-accent: #ffd93d;
|
|
20
|
+
--honeydeck-accent-foreground: #111111;
|
|
21
|
+
--honeydeck-border-radius: 0.5rem;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
[data-honeydeck-color-mode="dark"] {
|
|
25
|
+
--honeydeck-primary: #6d4aff;
|
|
26
|
+
--honeydeck-primary-foreground: #fcfbff;
|
|
27
|
+
--honeydeck-background: #11101a;
|
|
28
|
+
--honeydeck-foreground: #f7f2ff;
|
|
29
|
+
--honeydeck-surface: #1f1b33;
|
|
30
|
+
--honeydeck-surface-foreground: #eee7ff;
|
|
31
|
+
--honeydeck-border: #3a315c;
|
|
32
|
+
--honeydeck-accent: #ffd93d;
|
|
33
|
+
--honeydeck-accent-foreground: #111111;
|
|
34
|
+
--honeydeck-border-radius: 0.5rem;
|
|
35
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Honeydeck Clean Theme
|
|
3
|
+
*
|
|
4
|
+
* A reduced black, white, and grey theme layer. `@honeydeck/honeydeck/theme.css` already
|
|
5
|
+
* uses these clean defaults; this layer remains as an explicit, compatible
|
|
6
|
+
* import for decks that want to document the choice.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
[data-honeydeck-color-mode="light"] {
|
|
10
|
+
--honeydeck-primary: #000000;
|
|
11
|
+
--honeydeck-primary-foreground: #ffffff;
|
|
12
|
+
--honeydeck-background: #ffffff;
|
|
13
|
+
--honeydeck-foreground: #111111;
|
|
14
|
+
--honeydeck-surface: #f2f2f2;
|
|
15
|
+
--honeydeck-surface-foreground: #222222;
|
|
16
|
+
--honeydeck-border: #c8c8c8;
|
|
17
|
+
--honeydeck-accent: #000000;
|
|
18
|
+
--honeydeck-accent-foreground: #ffffff;
|
|
19
|
+
--honeydeck-border-radius: 0.25rem;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
[data-honeydeck-color-mode="dark"] {
|
|
23
|
+
--honeydeck-primary: #ffffff;
|
|
24
|
+
--honeydeck-primary-foreground: #000000;
|
|
25
|
+
--honeydeck-background: #000000;
|
|
26
|
+
--honeydeck-foreground: #f5f5f5;
|
|
27
|
+
--honeydeck-surface: #1f1f1f;
|
|
28
|
+
--honeydeck-surface-foreground: #e8e8e8;
|
|
29
|
+
--honeydeck-border: #5c5c5c;
|
|
30
|
+
--honeydeck-accent: #ffffff;
|
|
31
|
+
--honeydeck-accent-foreground: #000000;
|
|
32
|
+
--honeydeck-border-radius: 0.25rem;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.honeydeck-code-block,
|
|
36
|
+
.honeydeck-code-plain {
|
|
37
|
+
border: 1px solid var(--honeydeck-border);
|
|
38
|
+
}
|