@honeydeck/honeydeck 0.4.0 → 0.6.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 +4 -4
- package/DEVELOPMENT.md +6 -4
- package/Readme.md +15 -15
- package/SPEC.md +5 -4
- package/docs/browser-frame.md +38 -0
- package/docs/components.md +16 -57
- package/docs/configuration.md +13 -0
- package/docs/customization.md +2 -0
- package/docs/deeper-dive.md +32 -7
- package/docs/getting-started.md +4 -2
- package/docs/index.json +258 -0
- package/docs/keyboard.md +35 -0
- package/docs/list-style.md +53 -0
- package/docs/local-development.md +3 -1
- package/docs/mermaid.md +2 -0
- package/docs/mobile.md +2 -0
- package/docs/navigation.md +3 -1
- package/docs/notes.md +40 -0
- package/docs/pdf-export.md +6 -2
- package/docs/presenter-mode.md +8 -3
- package/docs/reveal-group.md +60 -0
- package/docs/reveal-with.md +39 -0
- package/docs/reveal.md +35 -0
- package/docs/skills.md +5 -3
- package/docs/slides.md +2 -0
- package/docs/slidev-migration.md +5 -0
- package/docs/steps-and-reveals.md +145 -8
- package/docs/timeline-steps.md +50 -0
- package/package.json +6 -2
- package/skills/SPEC.md +6 -6
- package/skills/honeydeck/SKILL.md +9 -9
- package/skills/slidev-migration/SKILL.md +7 -6
- package/src/SPEC.md +8 -3
- package/src/cli/SPEC.md +3 -2
- package/src/cli/pdf.ts +11 -4
- package/src/remark/SPEC.md +102 -2
- package/src/remark/code-utils.ts +151 -0
- package/src/remark/shiki-code-blocks.ts +329 -136
- package/src/remark/step-numbering.ts +408 -103
- package/src/runtime/Deck.tsx +133 -116
- package/src/runtime/EffectiveColorModeContext.tsx +37 -0
- package/src/runtime/SPEC.md +21 -8
- package/src/runtime/SlideCanvas.tsx +19 -16
- package/src/runtime/SlideScaleContext.tsx +23 -0
- package/src/runtime/components/CodeBlock.tsx +19 -202
- package/src/runtime/components/CodeBlockCopyButton.tsx +64 -0
- package/src/runtime/components/CodeBlockShared.ts +17 -0
- package/src/runtime/components/Fade.tsx +51 -0
- package/src/runtime/components/FadeGroup.tsx +175 -0
- package/src/runtime/components/FadeWith.tsx +54 -0
- package/src/runtime/components/MagicCodeBlock.tsx +223 -0
- package/src/runtime/components/NavBar.tsx +1 -1
- package/src/runtime/components/NormalCodeBlock.tsx +128 -0
- package/src/runtime/components/Reveal.tsx +27 -27
- package/src/runtime/components/RevealGroup.tsx +143 -41
- package/src/runtime/components/RevealWith.tsx +63 -0
- package/src/runtime/components/SPEC.md +115 -10
- package/src/runtime/components/TimelineReveal.tsx +81 -0
- package/src/runtime/components/index.ts +13 -5
- package/src/runtime/components/timelineVisibility.ts +45 -0
- package/src/runtime/index.ts +9 -1
- package/src/runtime/navigation.ts +6 -4
- package/src/runtime/presentationApi.ts +449 -0
- package/src/runtime/views/PresenterCastButton.tsx +39 -0
- package/src/runtime/views/PresenterView.tsx +21 -4
- package/src/runtime/views/SPEC.md +7 -5
- package/src/theme/base.css +67 -2
- package/src/vite-plugin/SPEC.md +20 -2
- package/src/vite-plugin/index.ts +16 -2
- package/src/vite-plugin/splitter.ts +1 -0
- package/src/vite-plugin/virtual-modules.ts +16 -6
package/docs/index.json
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
{
|
|
2
|
+
"generatedFrom": "packages/docs/content/docs",
|
|
3
|
+
"pages": [
|
|
4
|
+
{
|
|
5
|
+
"slug": "getting-started",
|
|
6
|
+
"title": "Getting started",
|
|
7
|
+
"description": "Getting started documentation for Honeydeck.",
|
|
8
|
+
"breadcrumbs": [
|
|
9
|
+
"Start",
|
|
10
|
+
"Getting started"
|
|
11
|
+
],
|
|
12
|
+
"file": "getting-started.md",
|
|
13
|
+
"sourcePath": "packages/docs/content/docs/(start)/getting-started.mdx"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"slug": "deeper-dive",
|
|
17
|
+
"title": "Deeper dive",
|
|
18
|
+
"description": "Deeper dive documentation for Honeydeck.",
|
|
19
|
+
"breadcrumbs": [
|
|
20
|
+
"Start",
|
|
21
|
+
"Deeper dive"
|
|
22
|
+
],
|
|
23
|
+
"file": "deeper-dive.md",
|
|
24
|
+
"sourcePath": "packages/docs/content/docs/(start)/deeper-dive.mdx"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"slug": "slides",
|
|
28
|
+
"title": "Slides",
|
|
29
|
+
"description": "Slides documentation for Honeydeck.",
|
|
30
|
+
"breadcrumbs": [
|
|
31
|
+
"Core",
|
|
32
|
+
"Slides"
|
|
33
|
+
],
|
|
34
|
+
"file": "slides.md",
|
|
35
|
+
"sourcePath": "packages/docs/content/docs/(core)/slides.mdx"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"slug": "configuration",
|
|
39
|
+
"title": "Configuration",
|
|
40
|
+
"description": "Configuration documentation for Honeydeck.",
|
|
41
|
+
"breadcrumbs": [
|
|
42
|
+
"Core",
|
|
43
|
+
"Configuration"
|
|
44
|
+
],
|
|
45
|
+
"file": "configuration.md",
|
|
46
|
+
"sourcePath": "packages/docs/content/docs/(core)/configuration.mdx"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"slug": "steps-and-reveals",
|
|
50
|
+
"title": "Steps and reveals",
|
|
51
|
+
"description": "Steps and reveals documentation for Honeydeck.",
|
|
52
|
+
"breadcrumbs": [
|
|
53
|
+
"Core",
|
|
54
|
+
"Steps and reveals"
|
|
55
|
+
],
|
|
56
|
+
"file": "steps-and-reveals.md",
|
|
57
|
+
"sourcePath": "packages/docs/content/docs/(core)/steps-and-reveals.mdx"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"slug": "customization",
|
|
61
|
+
"title": "Customization",
|
|
62
|
+
"description": "Customization documentation for Honeydeck.",
|
|
63
|
+
"breadcrumbs": [
|
|
64
|
+
"Core",
|
|
65
|
+
"Customization"
|
|
66
|
+
],
|
|
67
|
+
"file": "customization.md",
|
|
68
|
+
"sourcePath": "packages/docs/content/docs/(core)/customization.mdx"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"slug": "navigation",
|
|
72
|
+
"title": "Navigation",
|
|
73
|
+
"description": "Navigation documentation for Honeydeck.",
|
|
74
|
+
"breadcrumbs": [
|
|
75
|
+
"Core",
|
|
76
|
+
"Navigation"
|
|
77
|
+
],
|
|
78
|
+
"file": "navigation.md",
|
|
79
|
+
"sourcePath": "packages/docs/content/docs/(core)/navigation.mdx"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"slug": "mobile",
|
|
83
|
+
"title": "Mobile and touch",
|
|
84
|
+
"description": "Mobile and touch documentation for Honeydeck.",
|
|
85
|
+
"breadcrumbs": [
|
|
86
|
+
"Core",
|
|
87
|
+
"Mobile and touch"
|
|
88
|
+
],
|
|
89
|
+
"file": "mobile.md",
|
|
90
|
+
"sourcePath": "packages/docs/content/docs/(core)/mobile.mdx"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"slug": "presenter-mode",
|
|
94
|
+
"title": "Presenter mode",
|
|
95
|
+
"description": "Presenter mode documentation for Honeydeck.",
|
|
96
|
+
"breadcrumbs": [
|
|
97
|
+
"Core",
|
|
98
|
+
"Presenter mode"
|
|
99
|
+
],
|
|
100
|
+
"file": "presenter-mode.md",
|
|
101
|
+
"sourcePath": "packages/docs/content/docs/(core)/presenter-mode.mdx"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"slug": "pdf-export",
|
|
105
|
+
"title": "PDF export",
|
|
106
|
+
"description": "PDF export documentation for Honeydeck.",
|
|
107
|
+
"breadcrumbs": [
|
|
108
|
+
"Core",
|
|
109
|
+
"PDF export"
|
|
110
|
+
],
|
|
111
|
+
"file": "pdf-export.md",
|
|
112
|
+
"sourcePath": "packages/docs/content/docs/(core)/pdf-export.mdx"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"slug": "components",
|
|
116
|
+
"title": "Components",
|
|
117
|
+
"description": "Core Honeydeck components for timelines, presenter notes, browser frames, keyboard shortcuts, and styled lists.",
|
|
118
|
+
"breadcrumbs": [
|
|
119
|
+
"Components",
|
|
120
|
+
"Components"
|
|
121
|
+
],
|
|
122
|
+
"file": "components.md",
|
|
123
|
+
"sourcePath": "packages/docs/content/docs/(components)/components.mdx"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"slug": "reveal",
|
|
127
|
+
"title": "Reveal",
|
|
128
|
+
"description": "Reveal documentation for Honeydeck.",
|
|
129
|
+
"breadcrumbs": [
|
|
130
|
+
"Components",
|
|
131
|
+
"Reveal"
|
|
132
|
+
],
|
|
133
|
+
"file": "reveal.md",
|
|
134
|
+
"sourcePath": "packages/docs/content/docs/(components)/reveal.mdx"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"slug": "reveal-with",
|
|
138
|
+
"title": "RevealWith",
|
|
139
|
+
"description": "RevealWith documentation for Honeydeck.",
|
|
140
|
+
"breadcrumbs": [
|
|
141
|
+
"Components",
|
|
142
|
+
"RevealWith"
|
|
143
|
+
],
|
|
144
|
+
"file": "reveal-with.md",
|
|
145
|
+
"sourcePath": "packages/docs/content/docs/(components)/reveal-with.mdx"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"slug": "reveal-group",
|
|
149
|
+
"title": "RevealGroup",
|
|
150
|
+
"description": "RevealGroup documentation for Honeydeck.",
|
|
151
|
+
"breadcrumbs": [
|
|
152
|
+
"Components",
|
|
153
|
+
"RevealGroup"
|
|
154
|
+
],
|
|
155
|
+
"file": "reveal-group.md",
|
|
156
|
+
"sourcePath": "packages/docs/content/docs/(components)/reveal-group.mdx"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"slug": "timeline-steps",
|
|
160
|
+
"title": "TimelineSteps",
|
|
161
|
+
"description": "TimelineSteps documentation for Honeydeck.",
|
|
162
|
+
"breadcrumbs": [
|
|
163
|
+
"Components",
|
|
164
|
+
"TimelineSteps"
|
|
165
|
+
],
|
|
166
|
+
"file": "timeline-steps.md",
|
|
167
|
+
"sourcePath": "packages/docs/content/docs/(components)/timeline-steps.mdx"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"slug": "list-style",
|
|
171
|
+
"title": "ListStyle",
|
|
172
|
+
"description": "ListStyle documentation for Honeydeck.",
|
|
173
|
+
"breadcrumbs": [
|
|
174
|
+
"Components",
|
|
175
|
+
"ListStyle"
|
|
176
|
+
],
|
|
177
|
+
"file": "list-style.md",
|
|
178
|
+
"sourcePath": "packages/docs/content/docs/(components)/list-style.mdx"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"slug": "keyboard",
|
|
182
|
+
"title": "Keyboard",
|
|
183
|
+
"description": "Keyboard documentation for Honeydeck.",
|
|
184
|
+
"breadcrumbs": [
|
|
185
|
+
"Components",
|
|
186
|
+
"Keyboard"
|
|
187
|
+
],
|
|
188
|
+
"file": "keyboard.md",
|
|
189
|
+
"sourcePath": "packages/docs/content/docs/(components)/keyboard.mdx"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"slug": "browser-frame",
|
|
193
|
+
"title": "BrowserFrame",
|
|
194
|
+
"description": "BrowserFrame documentation for Honeydeck.",
|
|
195
|
+
"breadcrumbs": [
|
|
196
|
+
"Components",
|
|
197
|
+
"BrowserFrame"
|
|
198
|
+
],
|
|
199
|
+
"file": "browser-frame.md",
|
|
200
|
+
"sourcePath": "packages/docs/content/docs/(components)/browser-frame.mdx"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"slug": "notes",
|
|
204
|
+
"title": "Notes",
|
|
205
|
+
"description": "Notes documentation for Honeydeck.",
|
|
206
|
+
"breadcrumbs": [
|
|
207
|
+
"Components",
|
|
208
|
+
"Notes"
|
|
209
|
+
],
|
|
210
|
+
"file": "notes.md",
|
|
211
|
+
"sourcePath": "packages/docs/content/docs/(components)/notes.mdx"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"slug": "local-development",
|
|
215
|
+
"title": "Local development",
|
|
216
|
+
"description": "Local development documentation for Honeydeck.",
|
|
217
|
+
"breadcrumbs": [
|
|
218
|
+
"Develop",
|
|
219
|
+
"Local development"
|
|
220
|
+
],
|
|
221
|
+
"file": "local-development.md",
|
|
222
|
+
"sourcePath": "packages/docs/content/docs/(develop)/local-development.mdx"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"slug": "skills",
|
|
226
|
+
"title": "Skills",
|
|
227
|
+
"description": "Skills documentation for Honeydeck.",
|
|
228
|
+
"breadcrumbs": [
|
|
229
|
+
"Advanced",
|
|
230
|
+
"Skills"
|
|
231
|
+
],
|
|
232
|
+
"file": "skills.md",
|
|
233
|
+
"sourcePath": "packages/docs/content/docs/(advanced)/skills.mdx"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"slug": "slidev-migration",
|
|
237
|
+
"title": "Slidev migration",
|
|
238
|
+
"description": "Slidev migration documentation for Honeydeck.",
|
|
239
|
+
"breadcrumbs": [
|
|
240
|
+
"Advanced",
|
|
241
|
+
"Slidev migration"
|
|
242
|
+
],
|
|
243
|
+
"file": "slidev-migration.md",
|
|
244
|
+
"sourcePath": "packages/docs/content/docs/(advanced)/slidev-migration.mdx"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"slug": "mermaid",
|
|
248
|
+
"title": "Mermaid",
|
|
249
|
+
"description": "Mermaid documentation for Honeydeck.",
|
|
250
|
+
"breadcrumbs": [
|
|
251
|
+
"Advanced",
|
|
252
|
+
"Mermaid"
|
|
253
|
+
],
|
|
254
|
+
"file": "mermaid.md",
|
|
255
|
+
"sourcePath": "packages/docs/content/docs/(advanced)/mermaid.mdx"
|
|
256
|
+
}
|
|
257
|
+
]
|
|
258
|
+
}
|
package/docs/keyboard.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(components)/keyboard.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# Keyboard
|
|
4
|
+
|
|
5
|
+
Use `<Keyboard>` to show one key or a shortcut in slide prose.
|
|
6
|
+
|
|
7
|
+
<KeyboardPlayground />
|
|
8
|
+
|
|
9
|
+
```mdx
|
|
10
|
+
import { Keyboard } from '@honeydeck/honeydeck'
|
|
11
|
+
|
|
12
|
+
Press <Keyboard>Esc</Keyboard> to close overview.
|
|
13
|
+
|
|
14
|
+
Advance with <Keyboard keys="Space" />.
|
|
15
|
+
|
|
16
|
+
Open command palette with <Keyboard keys={["Ctrl", "Shift", "P"]} />.
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`keys` accepts a single value or an ordered array. When `keys` is omitted, `children` is rendered as one key. Array values render one `<kbd>` per key, separated by `+` by default:
|
|
20
|
+
|
|
21
|
+
```mdx
|
|
22
|
+
<Keyboard keys={["⌘", "K"]} />
|
|
23
|
+
<Keyboard keys={["Ctrl", "Alt", "Delete"]} separator=" " />
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Props
|
|
27
|
+
|
|
28
|
+
| Prop | Type | Default | Description |
|
|
29
|
+
| --- | --- | --- | --- |
|
|
30
|
+
| `keys` | `ReactNode \| ReactNode[]` | — | Key label or ordered shortcut key labels. |
|
|
31
|
+
| `children` | `ReactNode` | — | Single key label when `keys` is omitted. |
|
|
32
|
+
| `separator` | `ReactNode` | `+` | Separator rendered between array entries. |
|
|
33
|
+
| `className` | `string` | — | Custom class for the outer wrapper. |
|
|
34
|
+
|
|
35
|
+
The component uses semantic `<kbd>` markup, is inline by default, uses Honeydeck theme styling, and does not add timeline steps.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(components)/list-style.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# ListStyle
|
|
4
|
+
|
|
5
|
+
Use `<ListStyle>` to style Markdown, HTML, or JSX lists inside a wrapper.
|
|
6
|
+
|
|
7
|
+
<ListStylePlayground />
|
|
8
|
+
|
|
9
|
+
By default it removes native markers:
|
|
10
|
+
|
|
11
|
+
```mdx
|
|
12
|
+
import { ListStyle } from '@honeydeck/honeydeck'
|
|
13
|
+
|
|
14
|
+
<ListStyle>
|
|
15
|
+
- No marker
|
|
16
|
+
- Still aligned
|
|
17
|
+
</ListStyle>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Pass `bullets` to render custom markers:
|
|
21
|
+
|
|
22
|
+
```mdx
|
|
23
|
+
import { ListStyle } from '@honeydeck/honeydeck'
|
|
24
|
+
import { CheckIcon, CircleIcon } from 'lucide-react'
|
|
25
|
+
|
|
26
|
+
<ListStyle bullets={[<CheckIcon />, <CircleIcon />]}>
|
|
27
|
+
- Level one uses a check icon
|
|
28
|
+
- Level two uses a circle icon
|
|
29
|
+
</ListStyle>
|
|
30
|
+
|
|
31
|
+
<ListStyle bullets={["→", "–", "·"]}>
|
|
32
|
+
- Level one
|
|
33
|
+
- Level two
|
|
34
|
+
- Level three
|
|
35
|
+
</ListStyle>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Props
|
|
39
|
+
|
|
40
|
+
| Prop | Type | Default | Description |
|
|
41
|
+
| --- | --- | --- | --- |
|
|
42
|
+
| `children` | `ReactNode` | — | List content to style. |
|
|
43
|
+
| `bullets` | `ReactNode \| ReactNode[] \| false \| "none" \| null` | `undefined` | Marker config. Omit it, pass `false`, `"none"`, or `null` for markerless lists. |
|
|
44
|
+
| `className` | `string` | — | Custom class for the wrapper. |
|
|
45
|
+
| `style` | `CSSProperties` | — | Inline style for the wrapper. |
|
|
46
|
+
|
|
47
|
+
## Behavior
|
|
48
|
+
|
|
49
|
+
- Native list markers are removed for all nested lists in the wrapper.
|
|
50
|
+
- A single `bullets` value is reused for every nesting level.
|
|
51
|
+
- An array uses one marker per nesting level.
|
|
52
|
+
- Deeper levels reuse the last configured marker.
|
|
53
|
+
- Custom markers apply to authored list elements passed as children.
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(develop)/local-development.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
1
3
|
# Local development
|
|
2
4
|
|
|
3
5
|
This guide explains how to test Honeydeck locally before it is published to npm.
|
|
@@ -19,7 +21,7 @@ npm install
|
|
|
19
21
|
npm run dev
|
|
20
22
|
```
|
|
21
23
|
|
|
22
|
-
Root `npm run dev` starts the private showcase deck package and the
|
|
24
|
+
Root `npm run dev` starts the private showcase deck package and the docs site together.
|
|
23
25
|
|
|
24
26
|
To run only the showcase deck:
|
|
25
27
|
|
package/docs/mermaid.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(advanced)/mermaid.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
1
3
|
# Mermaid
|
|
2
4
|
|
|
3
5
|
Mermaid is not part of Honeydeck core. Use it as a normal project dependency and render diagrams through a local React component that you import from your deck.
|
package/docs/mobile.md
CHANGED
package/docs/navigation.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(core)/navigation.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
1
3
|
# Navigation
|
|
2
4
|
|
|
3
5
|
## Keyboard Shortcuts
|
|
@@ -9,7 +11,7 @@
|
|
|
9
11
|
| `↓` / `s` | Next slide |
|
|
10
12
|
| `↑` / `w` | Previous slide |
|
|
11
13
|
| `o` | Toggle overview mode |
|
|
12
|
-
| `p` | Open presenter mode (
|
|
14
|
+
| `p` | Open presenter mode (same tab) |
|
|
13
15
|
| `f` | Toggle fullscreen |
|
|
14
16
|
| `Escape` | Exit overview / exit fullscreen |
|
|
15
17
|
|
package/docs/notes.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(components)/notes.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# Notes
|
|
4
|
+
|
|
5
|
+
Use `<Notes>` to add presenter-only speaker notes to a slide.
|
|
6
|
+
|
|
7
|
+
<NotesPlayground />
|
|
8
|
+
|
|
9
|
+
```mdx
|
|
10
|
+
import { Notes } from '@honeydeck/honeydeck'
|
|
11
|
+
|
|
12
|
+
# Launch plan
|
|
13
|
+
|
|
14
|
+
- What changed
|
|
15
|
+
- Why it matters
|
|
16
|
+
|
|
17
|
+
<Notes>
|
|
18
|
+
# Demo cue
|
|
19
|
+
|
|
20
|
+
- Demo the interactive component.
|
|
21
|
+
- Mention PDF export.
|
|
22
|
+
</Notes>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Notes render nothing in audience view, overview thumbnails, and normal PDF output. In presenter mode, Markdown inside `<Notes>` renders as formatted speaker notes, including headings, paragraphs, lists, links, inline code, code blocks, and block quotes.
|
|
26
|
+
|
|
27
|
+
## Props
|
|
28
|
+
|
|
29
|
+
| Prop | Type | Default | Description |
|
|
30
|
+
| --- | --- | --- | --- |
|
|
31
|
+
| `children` | `ReactNode` | — | Speaker-note content collected by presenter mode. |
|
|
32
|
+
|
|
33
|
+
## Behavior
|
|
34
|
+
|
|
35
|
+
- `<Notes>` is a no-op outside presenter mode.
|
|
36
|
+
- Notes are collected from the current slide preview in presenter mode.
|
|
37
|
+
- Updating the slide notes updates the presenter notes panel.
|
|
38
|
+
- You can use Markdown inside Notes.
|
|
39
|
+
|
|
40
|
+
See [Presenter mode](presenter-mode.md) for the full presenter workflow.
|
package/docs/pdf-export.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(core)/pdf-export.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
1
3
|
# PDF Export
|
|
2
4
|
|
|
3
5
|
## How It Works
|
|
@@ -51,14 +53,16 @@ Honeydeck builds an ordered capture plan before taking screenshots. The final PD
|
|
|
51
53
|
|
|
52
54
|
When `pdfSteps: all`:
|
|
53
55
|
|
|
54
|
-
- Each `Reveal`/`RevealGroup` step becomes a separate page.
|
|
56
|
+
- Each `Reveal`/`RevealGroup` step becomes a separate page. `RevealWith` appears on the page for its target step and adds no extra page.
|
|
55
57
|
- Stepped code blocks show their first highlight group on the baseline page; each later code highlight group becomes a separate page.
|
|
56
|
-
-
|
|
58
|
+
- Magic Code blocks show their first inner code fence on the baseline page; later line-highlight states and code morph states become separate pages according to the same timeline.
|
|
59
|
+
- Reveals, stepped code blocks, Magic Code, and custom `TimelineSteps` blocks use the same underlying timeline.
|
|
57
60
|
|
|
58
61
|
When `pdfSteps: final` (default):
|
|
59
62
|
|
|
60
63
|
- All reveals shown in final (visible) state.
|
|
61
64
|
- Code blocks shown with final highlight applied.
|
|
65
|
+
- Magic Code blocks shown at their final code state with final highlight applied.
|
|
62
66
|
- `useTimeline()` and `useTimelineSteps()` expose `isPdfFinalRender: true`, so
|
|
63
67
|
custom step-driven components can render an all-open/all-visible PDF state.
|
|
64
68
|
|
package/docs/presenter-mode.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(core)/presenter-mode.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
1
3
|
# Presenter Mode
|
|
2
4
|
|
|
3
5
|
## Overview
|
|
@@ -29,6 +31,7 @@ Includes:
|
|
|
29
31
|
- Slide number / step counter
|
|
30
32
|
- Wall clock
|
|
31
33
|
- Button to open audience view in a new tab/window
|
|
34
|
+
- Button to cast the audience view to a secondary display when supported; the same control becomes a stop button while casting and is disabled with a hint when unsupported
|
|
32
35
|
- Navigation buttons that move through the timeline while staying in presenter mode
|
|
33
36
|
|
|
34
37
|
## Speaker Notes
|
|
@@ -58,11 +61,11 @@ Content here.
|
|
|
58
61
|
|
|
59
62
|
## Opening Presenter Mode
|
|
60
63
|
|
|
61
|
-
- Keyboard shortcut `p` from normal presentation → opens in
|
|
64
|
+
- Keyboard shortcut `p` from normal presentation → opens presenter mode in the current tab.
|
|
62
65
|
- Navigation controls button in normal presentation.
|
|
63
66
|
- Direct URL: `/#/presenter/1/0`
|
|
64
67
|
|
|
65
|
-
Pressing `p` opens presenter mode in
|
|
68
|
+
Pressing `p` opens presenter mode in the **current tab**.
|
|
66
69
|
|
|
67
70
|
## Navigation
|
|
68
71
|
|
|
@@ -85,10 +88,12 @@ When no next timeline state exists, the `Next` preview shows an end-of-deck plac
|
|
|
85
88
|
|
|
86
89
|
## Presenter/Audience Sync
|
|
87
90
|
|
|
88
|
-
Presenter mode and audience view synchronize navigation via `BroadcastChannel`
|
|
91
|
+
Presenter mode and audience view synchronize navigation via `BroadcastChannel` and, when supported, the Presentation API.
|
|
89
92
|
|
|
90
93
|
- Presenter mode acts as the controller.
|
|
91
94
|
- Audience view (opened from presenter mode) listens for navigation updates.
|
|
95
|
+
- The cast audience sends a `sync-request` as soon as the receiver connection appears; the presenter replies with the current slide/step in a `sync-response` so late connections resync immediately.
|
|
96
|
+
- The cast audience follows presenter navigation through Presentation API receiver messages.
|
|
92
97
|
- No server, internet, WebSocket, or device pairing required.
|
|
93
98
|
- If `BroadcastChannel` is unavailable, both views function independently.
|
|
94
99
|
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(components)/reveal-group.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# RevealGroup
|
|
4
|
+
|
|
5
|
+
Use `<RevealGroup>` when a short sequence should appear one item at a time.
|
|
6
|
+
|
|
7
|
+
```mdx
|
|
8
|
+
import { RevealGroup } from '@honeydeck/honeydeck'
|
|
9
|
+
|
|
10
|
+
<RevealGroup>
|
|
11
|
+
- First point
|
|
12
|
+
- Second point
|
|
13
|
+
- Third point
|
|
14
|
+
</RevealGroup>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Each meaningful direct child becomes one timeline step. Whitespace-only text children are ignored. Markdown, HTML, and JSX lists are special: each top-level list item is revealed one after another while preserving the list container.
|
|
18
|
+
|
|
19
|
+
Use `listRevealMode="nested"` when nested list items should also become individual steps:
|
|
20
|
+
|
|
21
|
+
```mdx
|
|
22
|
+
<RevealGroup listRevealMode="nested">
|
|
23
|
+
- Parent
|
|
24
|
+
- Child A
|
|
25
|
+
- Child B
|
|
26
|
+
- Sibling
|
|
27
|
+
</RevealGroup>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Timeline: parent → child A → child B → sibling. The default mode is `"direct"`, which keeps nested items grouped with their parent.
|
|
31
|
+
|
|
32
|
+
To reveal multiple elements together, wrap them in one direct child:
|
|
33
|
+
|
|
34
|
+
```mdx
|
|
35
|
+
<RevealGroup>
|
|
36
|
+
<div>
|
|
37
|
+
<h3>One idea</h3>
|
|
38
|
+
<p>Supporting context appears with it.</p>
|
|
39
|
+
</div>
|
|
40
|
+
<div>Next idea</div>
|
|
41
|
+
</RevealGroup>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Nested timeline entries inside a group target are flattened after that target and before the following group target:
|
|
45
|
+
|
|
46
|
+
```mdx
|
|
47
|
+
<RevealGroup>
|
|
48
|
+
<div>
|
|
49
|
+
Parent item
|
|
50
|
+
<Reveal>Nested detail</Reveal>
|
|
51
|
+
</div>
|
|
52
|
+
<div>Sibling item</div>
|
|
53
|
+
</RevealGroup>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Timeline:**
|
|
57
|
+
|
|
58
|
+
1. Parent item appears
|
|
59
|
+
2. Nested detail appears
|
|
60
|
+
3. Sibling item appears
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(components)/reveal-with.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# RevealWith
|
|
4
|
+
|
|
5
|
+
Use `<RevealWith>` when content should appear at the same timeline step as a named `<Reveal>` or any existing numeric slide step. It never adds a new step.
|
|
6
|
+
|
|
7
|
+
````mdx
|
|
8
|
+
import { Reveal, RevealWith } from '@honeydeck/honeydeck'
|
|
9
|
+
|
|
10
|
+
<Reveal name="intro">Intro appears first</Reveal>
|
|
11
|
+
<RevealWith target="intro">This appears with the intro reveal</RevealWith>
|
|
12
|
+
|
|
13
|
+
```ts {1|2|3}
|
|
14
|
+
const answer = 42
|
|
15
|
+
console.log(answer)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
<RevealWith at={2}>This appears with step 2</RevealWith>
|
|
19
|
+
````
|
|
20
|
+
|
|
21
|
+
## Props
|
|
22
|
+
|
|
23
|
+
| Prop | Type | Default | Description |
|
|
24
|
+
| --- | --- | --- | --- |
|
|
25
|
+
| `target` | `string` | — | Same-slide `<Reveal name="...">` target. Must be a literal non-empty string. Use exactly one of `target` or `at`. |
|
|
26
|
+
| `at` | `number` | resolved/injected | Existing 1-based slide-local timeline step. Must be a literal positive integer when authored. Use exactly one of `target` or `at`. |
|
|
27
|
+
| `children` | `ReactNode` | — | Content to reveal with the target step. |
|
|
28
|
+
| `className` | `string` | — | Custom class for styling or transitions. |
|
|
29
|
+
| `as` | `"div" | "span"` | injected | Wrapper element. Honeydeck injects this to keep valid MDX/HTML around block or inline content. |
|
|
30
|
+
|
|
31
|
+
## Behavior
|
|
32
|
+
|
|
33
|
+
- `RevealWith` is cumulative like `Reveal`: once visible, it stays visible.
|
|
34
|
+
- `target` supports forward references to named reveals later on the same slide.
|
|
35
|
+
- `at` can target any existing slide step, including a `RevealGroup` item, code highlight, Magic Code state, or `TimelineSteps` state.
|
|
36
|
+
- Hidden content reserves layout space and uses the same fade/future-preview behavior as `Reveal`.
|
|
37
|
+
- Invalid targets, duplicate reveal names, non-literal values, and out-of-range numeric steps are build errors.
|
|
38
|
+
|
|
39
|
+
See [Steps and reveals](steps-and-reveals.md#revealwith) for timeline ordering examples.
|
package/docs/reveal.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(components)/reveal.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# Reveal
|
|
4
|
+
|
|
5
|
+
Use `<Reveal>` when content should appear at the next timeline step.
|
|
6
|
+
|
|
7
|
+
```mdx
|
|
8
|
+
import { Reveal } from '@honeydeck/honeydeck'
|
|
9
|
+
|
|
10
|
+
<Reveal>Start with Markdown</Reveal>
|
|
11
|
+
<Reveal>Enhance with React</Reveal>
|
|
12
|
+
<Reveal>Export to PDF</Reveal>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Reveals are cumulative: once visible, they stay visible while you advance through the slide. Hidden reveal content reserves layout space, so the slide does not jump when the content appears.
|
|
16
|
+
|
|
17
|
+
## Props
|
|
18
|
+
|
|
19
|
+
| Prop | Type | Default | Description |
|
|
20
|
+
| --- | --- | --- | --- |
|
|
21
|
+
| `children` | `ReactNode` | — | Content to reveal. |
|
|
22
|
+
| `name` | `string` | — | Optional slide-local target for [`RevealWith target="..."`](reveal-with.md). Must be a literal non-empty string. |
|
|
23
|
+
| `className` | `string` | — | Custom class for styling or transitions. |
|
|
24
|
+
| `at` | `number` | injected | Timeline step. Honeydeck injects this during compilation; author-authored values are build errors. Use [`RevealWith`](reveal-with.md) to sync with an existing step. |
|
|
25
|
+
| `as` | `"div" \| "span"` | injected | Wrapper element. Honeydeck injects this to keep valid MDX/HTML around block or inline content. |
|
|
26
|
+
|
|
27
|
+
## Behavior
|
|
28
|
+
|
|
29
|
+
- Reveals fade in.
|
|
30
|
+
- Hidden content uses `visibility: hidden` plus `opacity: 0`, not `display: none`.
|
|
31
|
+
- Nested reveals are supported.
|
|
32
|
+
- Inline reveals inside paragraphs render inline wrappers.
|
|
33
|
+
- Optional `name="..."` creates a slide-local target for [`RevealWith`](reveal-with.md).
|
|
34
|
+
|
|
35
|
+
See [Steps and reveals](steps-and-reveals.md) for timeline ordering examples.
|
package/docs/skills.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- Generated from packages/docs/content/docs/(advanced)/skills.mdx. Do not edit by hand. -->
|
|
2
|
+
|
|
1
3
|
# Skills
|
|
2
4
|
|
|
3
5
|
Honeydeck ships optional agent skills that help AI coding agents work with presentations more reliably. They are plain skill files bundled with the `@honeydeck/honeydeck` package, so you can install them into a deck project or into your global agent setup.
|
|
@@ -31,9 +33,9 @@ npx skills add <honeydeck-repo-url> --copy --skill slidev-migration
|
|
|
31
33
|
|
|
32
34
|
| Skill | Use it for |
|
|
33
35
|
| --- | --- |
|
|
34
|
-
| `honeydeck` | Honeydeck-specific guidance for MDX decks, layouts, CSS imports, presenter notes, reveals, code steps, PDF export, and package
|
|
36
|
+
| `honeydeck` | Honeydeck-specific guidance for MDX decks, layouts, CSS imports, presenter notes, reveals, code steps, Magic Code, PDF export, public docs, and package specs. |
|
|
35
37
|
| `presentation-writing` | Framework-agnostic help with audience, storyline, slide headlines, speaker notes, timing, and review heuristics. |
|
|
36
|
-
| `slidev-migration` | Migrating Slidev decks to Honeydeck while preserving source files until you approve cleanup. |
|
|
38
|
+
| `slidev-migration` | Migrating Slidev decks to Honeydeck, including rewriting Slidev `md magic-move` blocks to Honeydeck `md magic-code`, while preserving source files until you approve cleanup. |
|
|
37
39
|
|
|
38
40
|
The `honeydeck` and `presentation-writing` skills work well together: one keeps the agent inside Honeydeck conventions, while the other improves the story and delivery. Add `slidev-migration` when you are converting an existing Slidev project.
|
|
39
41
|
|
|
@@ -48,7 +50,7 @@ For example, an agent with the `honeydeck` skill should prefer:
|
|
|
48
50
|
- slide frontmatter for layouts
|
|
49
51
|
- explicit imports from `@honeydeck/honeydeck`
|
|
50
52
|
- `<Notes>` for speaker notes
|
|
51
|
-
- `<Reveal>`, `<RevealGroup>`,
|
|
53
|
+
- `<Reveal>`, `<RevealGroup>`, code metadata, and Magic Code for steps
|
|
52
54
|
- `honeydeck pdf` for PDF export
|
|
53
55
|
|
|
54
56
|
The skills also point agents back to the packaged docs and specs, so generated deck changes can stay aligned with the installed Honeydeck version.
|