@strategicnerds/slide-nerds 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/dist/cli/commands/analytics.d.ts +6 -0
- package/dist/cli/commands/analytics.d.ts.map +1 -0
- package/dist/cli/commands/analytics.js +44 -0
- package/dist/cli/commands/analytics.js.map +1 -0
- package/dist/cli/commands/create.d.ts +4 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +87 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/export.d.ts +6 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +109 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +12 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/template-path.d.ts +4 -0
- package/dist/cli/template-path.d.ts.map +1 -0
- package/dist/cli/template-path.js +13 -0
- package/dist/cli/template-path.js.map +1 -0
- package/dist/runtime/export-api.d.ts +15 -0
- package/dist/runtime/export-api.d.ts.map +1 -0
- package/dist/runtime/export-api.js +21 -0
- package/dist/runtime/export-api.js.map +1 -0
- package/dist/runtime/index.d.ts +12 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/light-table.d.ts +8 -0
- package/dist/runtime/light-table.d.ts.map +1 -0
- package/dist/runtime/light-table.js +104 -0
- package/dist/runtime/light-table.js.map +1 -0
- package/dist/runtime/presenter-view.d.ts +7 -0
- package/dist/runtime/presenter-view.d.ts.map +1 -0
- package/dist/runtime/presenter-view.js +62 -0
- package/dist/runtime/presenter-view.js.map +1 -0
- package/dist/runtime/slide-context.d.ts +16 -0
- package/dist/runtime/slide-context.d.ts.map +1 -0
- package/dist/runtime/slide-context.js +18 -0
- package/dist/runtime/slide-context.js.map +1 -0
- package/dist/runtime/slide-controls.d.ts +3 -0
- package/dist/runtime/slide-controls.d.ts.map +1 -0
- package/dist/runtime/slide-controls.js +177 -0
- package/dist/runtime/slide-controls.js.map +1 -0
- package/dist/runtime/slide-dom.d.ts +17 -0
- package/dist/runtime/slide-dom.d.ts.map +1 -0
- package/dist/runtime/slide-dom.js +89 -0
- package/dist/runtime/slide-dom.js.map +1 -0
- package/dist/runtime/slide-runtime.d.ts +7 -0
- package/dist/runtime/slide-runtime.d.ts.map +1 -0
- package/dist/runtime/slide-runtime.js +125 -0
- package/dist/runtime/slide-runtime.js.map +1 -0
- package/dist/runtime/slide-shape.d.ts +21 -0
- package/dist/runtime/slide-shape.d.ts.map +1 -0
- package/dist/runtime/slide-shape.js +115 -0
- package/dist/runtime/slide-shape.js.map +1 -0
- package/dist/runtime/types.d.ts +150 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +38 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/use-presenter-mode.d.ts +14 -0
- package/dist/runtime/use-presenter-mode.d.ts.map +1 -0
- package/dist/runtime/use-presenter-mode.js +52 -0
- package/dist/runtime/use-presenter-mode.js.map +1 -0
- package/dist/runtime/use-slide-navigation.d.ts +13 -0
- package/dist/runtime/use-slide-navigation.d.ts.map +1 -0
- package/dist/runtime/use-slide-navigation.js +230 -0
- package/dist/runtime/use-slide-navigation.js.map +1 -0
- package/package.json +64 -0
- package/skills/accessibility/SKILL.md +236 -0
- package/skills/advanced-layouts/SKILL.md +429 -0
- package/skills/analytics/SKILL.md +97 -0
- package/skills/animation/SKILL.md +364 -0
- package/skills/brand/SKILL.md +200 -0
- package/skills/data-visualization/SKILL.md +533 -0
- package/skills/deck-templates/SKILL.md +93 -0
- package/skills/diagrams/SKILL.md +395 -0
- package/skills/export/SKILL.md +119 -0
- package/skills/interactive/SKILL.md +292 -0
- package/skills/layout/SKILL.md +178 -0
- package/skills/narrative-frameworks/SKILL.md +250 -0
- package/skills/react-component-embeds/SKILL.md +73 -0
- package/skills/slide-types/SKILL.md +384 -0
- package/skills/slidenerds-runtime/SKILL.md +163 -0
- package/skills/speaker-notes/SKILL.md +128 -0
- package/skills/strategic-frameworks/SKILL.md +392 -0
- package/skills/visual-design/SKILL.md +373 -0
- package/templates/analytics/custom.tsx.tmpl +20 -0
- package/templates/analytics/ga4.tsx.tmpl +15 -0
- package/templates/analytics/gtm.tsx.tmpl +9 -0
- package/templates/analytics/plausible.tsx.tmpl +10 -0
- package/templates/analytics/posthog.tsx.tmpl +14 -0
- package/templates/next-app/CLAUDE.md.tmpl +574 -0
- package/templates/next-app/README.md.tmpl +35 -0
- package/templates/next-app/app/globals.css.tmpl +274 -0
- package/templates/next-app/app/layout.tsx.tmpl +31 -0
- package/templates/next-app/app/page.tsx.tmpl +38 -0
- package/templates/next-app/brand.config.ts.tmpl +32 -0
- package/templates/next-app/package.json.tmpl +25 -0
- package/templates/next-app/postcss.config.mjs.tmpl +8 -0
- package/templates/next-app/tsconfig.json.tmpl +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-slide-navigation.js","sourceRoot":"","sources":["../../src/runtime/use-slide-navigation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@strategicnerds/slide-nerds",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Presentation runtime, CLI, and LLM skill library for Next.js",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/runtime/index.js",
|
|
7
|
+
"types": "./dist/runtime/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/runtime/index.d.ts",
|
|
11
|
+
"import": "./dist/runtime/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"slidenerds": "./dist/cli/index.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"templates",
|
|
20
|
+
"skills"
|
|
21
|
+
],
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/strategicnerds/slide-nerds.git",
|
|
26
|
+
"directory": "packages/slide-nerds"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"presentation",
|
|
30
|
+
"slides",
|
|
31
|
+
"nextjs",
|
|
32
|
+
"react",
|
|
33
|
+
"keynote",
|
|
34
|
+
"magic-move",
|
|
35
|
+
"ai",
|
|
36
|
+
"llm",
|
|
37
|
+
"claude"
|
|
38
|
+
],
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "tsc",
|
|
41
|
+
"typecheck": "tsc --noEmit",
|
|
42
|
+
"prepublishOnly": "npm run build"
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"react": "^19.0.0",
|
|
46
|
+
"react-dom": "^19.0.0"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"commander": "^13.0.0",
|
|
50
|
+
"fs-extra": "^11.0.0",
|
|
51
|
+
"pptxgenjs": "^4.0.1",
|
|
52
|
+
"zod": "^3.24.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@testing-library/jest-dom": "^6.0.0",
|
|
56
|
+
"@testing-library/react": "^16.0.0",
|
|
57
|
+
"@testing-library/user-event": "^14.0.0",
|
|
58
|
+
"@types/fs-extra": "^11.0.0",
|
|
59
|
+
"@types/puppeteer": "^5.4.7",
|
|
60
|
+
"jsdom": "^25.0.0",
|
|
61
|
+
"react": "^19.0.0",
|
|
62
|
+
"react-dom": "^19.0.0"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: accessibility
|
|
3
|
+
description: WCAG compliance, contrast ratios, motion reduction, screen reader support, and projection readability for slidenerds slides
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Accessibility skill
|
|
7
|
+
|
|
8
|
+
Use this skill when building or reviewing slides to ensure they are accessible to all audiences, including people with visual, motor, or cognitive disabilities, and audiences viewing on projectors in bright rooms.
|
|
9
|
+
|
|
10
|
+
## Color contrast
|
|
11
|
+
|
|
12
|
+
### WCAG 2.2 AA requirements
|
|
13
|
+
|
|
14
|
+
| Element | Minimum contrast ratio | Notes |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| Normal text (<24px) | 4.5:1 against background | All body text, labels, captions |
|
|
17
|
+
| Large text (>=24px or >=18.66px bold) | 3:1 against background | Titles, headings, hero stats |
|
|
18
|
+
| UI components and graphics | 3:1 against adjacent colors | Chart bars, shape borders, icons, buttons |
|
|
19
|
+
| Focus indicators | 3:1 against adjacent colors | Keyboard navigation outlines |
|
|
20
|
+
|
|
21
|
+
### Projection adjustment
|
|
22
|
+
|
|
23
|
+
Projectors reduce contrast. Aim higher than WCAG minimums:
|
|
24
|
+
|
|
25
|
+
| Element | Target for projection |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Body text | 7:1 or higher |
|
|
28
|
+
| Headings | 4.5:1 or higher |
|
|
29
|
+
| Chart elements | 4:1 or higher |
|
|
30
|
+
|
|
31
|
+
### How to check contrast
|
|
32
|
+
|
|
33
|
+
Use the accent and text colors from `brand.config.ts` and verify against the background:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Text (#e8e6e3) on Background (#111114) = 14.7:1 (passes)
|
|
37
|
+
Accent (#f59e0b) on Background (#111114) = 8.3:1 (passes)
|
|
38
|
+
Text-secondary (60% opacity) on Background = ~7.5:1 (passes)
|
|
39
|
+
Text-tertiary (40% opacity) on Background = ~4.2:1 (passes for large text only)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
When creating a new brand palette, verify these four combinations before building slides.
|
|
43
|
+
|
|
44
|
+
### Color-blind safe palettes
|
|
45
|
+
|
|
46
|
+
8% of men and 0.5% of women have some form of color vision deficiency. When using color to encode meaning (charts, status indicators, before/after):
|
|
47
|
+
|
|
48
|
+
- Never rely on color alone. Add text labels, patterns, or shapes.
|
|
49
|
+
- Avoid red/green as the only differentiator. Use red/blue or orange/blue instead.
|
|
50
|
+
- For chart series, use shapes (circle, square, triangle) alongside colors.
|
|
51
|
+
- Test with a color blindness simulator (Chrome DevTools > Rendering > Emulate vision deficiencies).
|
|
52
|
+
|
|
53
|
+
Safe color pairs for data visualization:
|
|
54
|
+
|
|
55
|
+
| Pair | Works for |
|
|
56
|
+
|---|---|
|
|
57
|
+
| Blue (#3b82f6) + Orange (#f59e0b) | All color vision types |
|
|
58
|
+
| Blue (#3b82f6) + Red (#ef4444) | Protanopia, tritanopia |
|
|
59
|
+
| Purple (#8b5cf6) + Yellow (#eab308) | All types |
|
|
60
|
+
| Teal (#14b8a6) + Pink (#ec4899) | Deuteranopia, protanopia |
|
|
61
|
+
|
|
62
|
+
## Typography accessibility
|
|
63
|
+
|
|
64
|
+
### Minimum font sizes
|
|
65
|
+
|
|
66
|
+
These are absolute minimums, not recommendations. See the visual-design skill for recommended sizes.
|
|
67
|
+
|
|
68
|
+
| Element | Minimum on screen | Minimum for projection |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| Body text | 16px (1rem) | 20px (1.25rem) |
|
|
71
|
+
| Captions / labels | 14px (0.875rem) | 16px (1rem) |
|
|
72
|
+
| Footnotes | 12px (0.75rem) | Never use on projected slides |
|
|
73
|
+
|
|
74
|
+
### Line length
|
|
75
|
+
|
|
76
|
+
- Maximum 75 characters per line for body text.
|
|
77
|
+
- Use `max-w-3xl` (48rem) to constrain text blocks.
|
|
78
|
+
- Narrower is better for readability from distance.
|
|
79
|
+
|
|
80
|
+
### Font weight
|
|
81
|
+
|
|
82
|
+
- Body text: 400 (regular) minimum. Never use 300 (light) for body text below 24px.
|
|
83
|
+
- Headings: 600-800. The weight contrast between heading and body aids scannability.
|
|
84
|
+
|
|
85
|
+
## Motion and animation
|
|
86
|
+
|
|
87
|
+
### prefers-reduced-motion
|
|
88
|
+
|
|
89
|
+
Some users experience vertigo, nausea, or seizures from animation. Respect the OS-level motion preference:
|
|
90
|
+
|
|
91
|
+
```css
|
|
92
|
+
@media (prefers-reduced-motion: reduce) {
|
|
93
|
+
[data-step] {
|
|
94
|
+
transition: none !important;
|
|
95
|
+
animation: none !important;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
[data-step].step-visible {
|
|
99
|
+
visibility: visible !important;
|
|
100
|
+
opacity: 1 !important;
|
|
101
|
+
transform: none !important;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Add this to `globals.css` in every deck. It disables all step animations while preserving content visibility.
|
|
107
|
+
|
|
108
|
+
### Animation safety rules
|
|
109
|
+
|
|
110
|
+
- No animation faster than 100ms (appears as a flash).
|
|
111
|
+
- No animation slower than 800ms for presenter-controlled steps (breaks pacing).
|
|
112
|
+
- No infinite loops on visible content.
|
|
113
|
+
- No more than 3 elements animating simultaneously.
|
|
114
|
+
- No flashing content (3 flashes per second is the WCAG seizure threshold).
|
|
115
|
+
|
|
116
|
+
## Screen reader support
|
|
117
|
+
|
|
118
|
+
### Slide structure
|
|
119
|
+
|
|
120
|
+
- Each slide is a `<section>` with `data-slide`. Add `role="region"` and `aria-label` for screen reader navigation:
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
<section data-slide="" role="region" aria-label="Quarterly revenue">
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- Use semantic heading hierarchy: one `<h1>` for the deck title (on the title slide), `<h2>` for slide titles, `<h3>` for sub-sections.
|
|
127
|
+
|
|
128
|
+
### Speaker notes as descriptions
|
|
129
|
+
|
|
130
|
+
Speaker notes contain the verbal explanation of each slide. Make them available to screen readers:
|
|
131
|
+
|
|
132
|
+
```tsx
|
|
133
|
+
<section data-slide="" role="region" aria-label="Revenue chart"
|
|
134
|
+
aria-describedby={`notes-${slideIndex}`}>
|
|
135
|
+
{/* Slide content */}
|
|
136
|
+
<div data-notes="" id={`notes-${slideIndex}`}>
|
|
137
|
+
Revenue grew 142% year over year, driven by enterprise contracts in Q3 and Q4.
|
|
138
|
+
</div>
|
|
139
|
+
</section>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The `data-notes` elements are visually hidden but remain in the DOM for screen readers.
|
|
143
|
+
|
|
144
|
+
### Images
|
|
145
|
+
|
|
146
|
+
Every `<img>` must have an `alt` attribute:
|
|
147
|
+
|
|
148
|
+
- **Decorative images** (backgrounds, textures): `alt=""`
|
|
149
|
+
- **Content images** (screenshots, photos of people): Descriptive alt text
|
|
150
|
+
- **Charts rendered as images**: Alt text should describe the key insight, not the raw data. "Bar chart showing revenue growing from $1.1M to $4.2M over five quarters" not "Bar chart with five bars."
|
|
151
|
+
|
|
152
|
+
### Charts
|
|
153
|
+
|
|
154
|
+
Recharts renders SVG which is not screen-reader friendly. Add a visually hidden data table as an alternative:
|
|
155
|
+
|
|
156
|
+
```tsx
|
|
157
|
+
<div data-step="" className="step-fade">
|
|
158
|
+
<div className="card-surface p-8">
|
|
159
|
+
<ResponsiveContainer width="100%" height={400}>
|
|
160
|
+
<BarChart data={data}>{/* ... */}</BarChart>
|
|
161
|
+
</ResponsiveContainer>
|
|
162
|
+
</div>
|
|
163
|
+
{/* Screen reader alternative */}
|
|
164
|
+
<table className="sr-only">
|
|
165
|
+
<caption>Quarterly ARR in millions</caption>
|
|
166
|
+
<thead><tr><th>Quarter</th><th>ARR</th></tr></thead>
|
|
167
|
+
<tbody>
|
|
168
|
+
{data.map((d) => (
|
|
169
|
+
<tr key={d.quarter}><td>{d.quarter}</td><td>${d.arr}M</td></tr>
|
|
170
|
+
))}
|
|
171
|
+
</tbody>
|
|
172
|
+
</table>
|
|
173
|
+
</div>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Add this utility class to `globals.css`:
|
|
177
|
+
|
|
178
|
+
```css
|
|
179
|
+
.sr-only {
|
|
180
|
+
position: absolute;
|
|
181
|
+
width: 1px;
|
|
182
|
+
height: 1px;
|
|
183
|
+
padding: 0;
|
|
184
|
+
margin: -1px;
|
|
185
|
+
overflow: hidden;
|
|
186
|
+
clip: rect(0, 0, 0, 0);
|
|
187
|
+
white-space: nowrap;
|
|
188
|
+
border: 0;
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Keyboard navigation
|
|
193
|
+
|
|
194
|
+
The runtime already handles keyboard navigation (arrow keys, space, P, L, F, Escape). Additional accessibility requirements:
|
|
195
|
+
|
|
196
|
+
- All interactive elements (Light Table cards, controls menu) must be focusable with Tab.
|
|
197
|
+
- Focus must be visible (minimum 2px outline in accent color).
|
|
198
|
+
- Focus order must follow visual order (left-to-right, top-to-bottom).
|
|
199
|
+
|
|
200
|
+
```css
|
|
201
|
+
:focus-visible {
|
|
202
|
+
outline: 2px solid var(--color-accent);
|
|
203
|
+
outline-offset: 2px;
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Language declaration
|
|
208
|
+
|
|
209
|
+
Set the `lang` attribute on `<html>`. This enables screen readers to use correct pronunciation:
|
|
210
|
+
|
|
211
|
+
```tsx
|
|
212
|
+
<html lang="en">
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
For multilingual decks, use `lang` on individual elements:
|
|
216
|
+
|
|
217
|
+
```tsx
|
|
218
|
+
<p lang="fr">Bonjour le monde</p>
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Checklist
|
|
222
|
+
|
|
223
|
+
Before presenting, verify:
|
|
224
|
+
|
|
225
|
+
- [ ] All text meets contrast requirements (4.5:1 normal, 3:1 large)
|
|
226
|
+
- [ ] Accent color meets 3:1 against background
|
|
227
|
+
- [ ] No text below 16px on screen (20px for projection)
|
|
228
|
+
- [ ] `prefers-reduced-motion` media query added to `globals.css`
|
|
229
|
+
- [ ] All `<img>` tags have `alt` attributes
|
|
230
|
+
- [ ] Slide `<section>` elements have `aria-label`
|
|
231
|
+
- [ ] Charts have hidden data table alternatives
|
|
232
|
+
- [ ] Focus styles are visible on all interactive elements
|
|
233
|
+
- [ ] `lang` attribute set on `<html>`
|
|
234
|
+
- [ ] No content relies solely on color to convey meaning
|
|
235
|
+
- [ ] No flashing content (3+ flashes per second)
|
|
236
|
+
- [ ] Heading hierarchy is sequential (h1 > h2 > h3)
|