mdeck 3.4.0 → 3.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/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/assets/extensions/palettes/cobalt/extension.toml +30 -0
- package/assets/extensions/palettes/greyscale/extension.toml +57 -0
- package/assets/extensions/themes/academic/extension.toml +13 -0
- package/assets/extensions/themes/glass/extension.toml +71 -0
- package/assets/extensions/themes/glass/styles.css +754 -0
- package/assets/extensions/themes/minimal/extension.toml +10 -0
- package/assets/extensions/themes/neue/extension.toml +12 -0
- package/assets/extensions/themes/plain/extension.toml +72 -0
- package/assets/extensions/themes/plain/styles.css +471 -0
- package/assets/extensions/themes/work/extension.toml +69 -0
- package/assets/extensions/themes/work/styles.css +512 -0
- package/docs/reference/authoring.md +25 -8
- package/docs/reference/extensions.md +15 -0
- package/docs/reference/palettes.md +4 -3
- package/docs/reference/themes.md +10 -3
- package/docs/site/content/appearance.md +24 -10
- package/docs/site/content/audience.md +14 -0
- package/docs/site/content/theme-authoring.md +16 -0
- package/docs/site/content/theme-repository.md +8 -8
- package/docs/site/images/themes/academic-dark.webp +0 -0
- package/docs/site/images/themes/academic-light.webp +0 -0
- package/docs/site/images/themes/academic.webp +0 -0
- package/docs/site/images/themes/glass-dark.webp +0 -0
- package/docs/site/images/themes/glass-light.webp +0 -0
- package/docs/site/images/themes/glass.webp +0 -0
- package/docs/site/images/themes/minimal-dark.webp +0 -0
- package/docs/site/images/themes/minimal-light.webp +0 -0
- package/docs/site/images/themes/minimal.webp +0 -0
- package/docs/site/images/themes/neue-dark.webp +0 -0
- package/docs/site/images/themes/neue-light.webp +0 -0
- package/docs/site/images/themes/neue.webp +0 -0
- package/docs/site/images/themes/plain-dark.webp +0 -0
- package/docs/site/images/themes/plain-light.webp +0 -0
- package/docs/site/images/themes/plain.webp +0 -0
- package/docs/site/images/themes/work-dark.webp +0 -0
- package/docs/site/images/themes/work-light.webp +0 -0
- package/docs/site/images/themes/work.webp +0 -0
- package/examples/showcase/slides.md +2 -2
- package/package.json +4 -1
- package/skills/write-slides/SKILL.md +4 -3
- package/src/build/slidesPlugin.js +16 -15
- package/src/cli/index.js +5 -1
- package/src/cli/themes.js +5 -2
- package/src/components/Poll.jsx +17 -5
- package/src/components/inlineText.js +38 -15
- package/src/components/poll.css +3 -0
- package/src/core/editDeck.js +4 -5
- package/src/core/pollList.js +66 -0
- package/src/core/tags.js +195 -0
- package/src/editor/extensions.js +8 -0
- package/src/extensions/discover.js +2 -2
- package/src/extensions/manifest.js +33 -1
- package/src/extensions/moved.js +4 -4
- package/src/extensions/packages.js +2 -1
- package/src/layouts/layoutApi.jsx +20 -10
- package/src/live/roomTag.js +11 -19
- package/src/runtime/main.jsx +2 -1
- package/src/runtime/markedSetup.js +3 -0
- package/assets/extensions/palettes/neon/extension.toml +0 -30
- package/assets/extensions/themes/aurora/extension.toml +0 -40
- package/assets/extensions/themes/aurora/styles.css +0 -670
- package/docs/site/images/themes/aurora-dark.webp +0 -0
- package/docs/site/images/themes/aurora-light.webp +0 -0
- package/docs/site/images/themes/aurora.webp +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.6.0 — 2026-10-09
|
|
4
|
+
|
|
5
|
+
- A theme can say what it is for and how to write for it: a `[guide]` in its `extension.toml` with `suits` and `avoid` (short phrases) and `writing` (a few sentences). `mdeck list` and `mdeck themes search` show what each theme suits, search finds themes by it (`mdeck themes search photo`), and `mdeck list themes --json` and the theme repository's catalogue carry the whole guide. The slide-writing skill chooses a theme by its guide and follows its writing advice, as the theme author's advice and never as instructions. The six built-in themes have guides. A theme with a guide needs this version of mdeck.
|
|
6
|
+
|
|
7
|
+
## 3.5.0 — 2026-10-09
|
|
8
|
+
|
|
9
|
+
- mdeck now comes with six themes: `neue` (still the default), `academic` and `minimal` as before, and new among them `plain` (black on white, the heading in a column beside the content), `work` (an everyday company template with an accent band, the logo and numbered sections) and `glass` (liquid glass, dark by default). The palettes `greyscale` (`plain`'s) and `cobalt` (`work`'s) come with it too. `aurora` and its palette `neon` moved to the theme repository: a deck that uses them is told to run `mdeck themes install aurora`; files made with `mdeck send` or `mdeck build` keep working, because they carry their theme. The tour example now uses `glass`.
|
|
10
|
+
- Tags in a deck are found the way the slide finds them, everywhere mdeck looks for them: the phones, `--no-polls`, the pictures and videos a build takes along. A `>` in a quoted value no longer cuts a tag short there either (`<qrcode label="a > b" join />`, `<img alt="a > b" src="…">`), and a tag that a blank line cuts in two is no activity for the phones when the slide does not show it.
|
|
11
|
+
- Fixed: a bar inside `code`, a [link](…) or a picture in a poll's options split the option in two. Only bars outside them, and outside formulas, separate options.
|
|
12
|
+
- A poll's options may be a list inside the tag, one item each, with `[x]` for a right answer: `<poll room="d">` then `- [x] $2x$`, `- [ ] $x^2$` and `</poll>`. Nothing needs escaping, and long options read better than in one attribute.
|
|
13
|
+
- Fixed: text after an activity written `<poll … />` (or any component closed with `/>`) went missing from the slide, as did another activity right after it. What follows an activity or a join code now has room above it in every theme.
|
|
14
|
+
|
|
3
15
|
## 3.4.0 — 2026-10-08
|
|
4
16
|
|
|
5
17
|
- What follows a list has room above it in every theme, so a sentence after a list no longer sits right against its last item.
|
package/README.md
CHANGED
|
@@ -143,7 +143,7 @@ complete folder.
|
|
|
143
143
|
|
|
144
144
|
| Example | Theme | What it demonstrates |
|
|
145
145
|
|---|---|---|
|
|
146
|
-
| [Tour](examples/showcase/slides.md) |
|
|
146
|
+
| [Tour](examples/showcase/slides.md) | Glass | Start here: each slide shows the Markdown beside what it becomes, from headings to layouts, live code, notes, drawing, a poll and sharing |
|
|
147
147
|
| [Python](examples/python/slides.md) | Academic | A real lesson: live code to try out, points revealed step by step, notes on every slide, a poll to check understanding |
|
|
148
148
|
| [Poll](examples/poll/slides.md) | Neue | A join slide, then a poll, a scale, a word cloud and open questions; start it with `mdeck run slides.md --network` |
|
|
149
149
|
| [Custom layouts](examples/custom-layouts/slides.md) | Neue | A deck-local comparison design and named regions |
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
schema = 1
|
|
2
|
+
kind = "palette"
|
|
3
|
+
id = "cobalt"
|
|
4
|
+
title = "Cobalt"
|
|
5
|
+
description = "Strong ultramarine on white, with vivid orange; bold and clear."
|
|
6
|
+
version = "1.0.0"
|
|
7
|
+
author = "Tilman Schieber"
|
|
8
|
+
license = "MIT"
|
|
9
|
+
|
|
10
|
+
[light]
|
|
11
|
+
"--bg" = "#ffffff"
|
|
12
|
+
"--surface" = "#eef1fb"
|
|
13
|
+
"--ink" = "#0c1033"
|
|
14
|
+
"--ink-soft" = "#2a2f55"
|
|
15
|
+
"--muted" = "#5b6080"
|
|
16
|
+
"--rule" = "#d5dbf0"
|
|
17
|
+
"--accent" = "#1f3fd1"
|
|
18
|
+
"--accent-2" = "#e8590c"
|
|
19
|
+
"--on-accent" = "#ffffff"
|
|
20
|
+
|
|
21
|
+
[dark]
|
|
22
|
+
"--bg" = "#0a1030"
|
|
23
|
+
"--surface" = "#121a44"
|
|
24
|
+
"--ink" = "#eef1ff"
|
|
25
|
+
"--ink-soft" = "#c9cff0"
|
|
26
|
+
"--muted" = "#8e97c4"
|
|
27
|
+
"--rule" = "#212b5e"
|
|
28
|
+
"--accent" = "#6f8cff"
|
|
29
|
+
"--accent-2" = "#ff922b"
|
|
30
|
+
"--on-accent" = "#0a1030"
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
schema = 1
|
|
2
|
+
kind = "palette"
|
|
3
|
+
id = "greyscale"
|
|
4
|
+
title = "Greyscale"
|
|
5
|
+
description = "Black, white and greys only, code and callouts too: for printing and for a quiet look."
|
|
6
|
+
version = "1.0.0"
|
|
7
|
+
author = "Tilman Schieber"
|
|
8
|
+
license = "MIT"
|
|
9
|
+
|
|
10
|
+
# No colour anywhere: emphasis is black against the softer body text, the
|
|
11
|
+
# second accent a mid grey; code and callouts use greys instead of their
|
|
12
|
+
# usual colours.
|
|
13
|
+
[light]
|
|
14
|
+
"--bg" = "#ffffff"
|
|
15
|
+
"--surface" = "#f0f0f0"
|
|
16
|
+
"--ink" = "#141414"
|
|
17
|
+
"--ink-soft" = "#363636"
|
|
18
|
+
"--muted" = "#606060"
|
|
19
|
+
"--rule" = "#d4d4d4"
|
|
20
|
+
"--accent" = "#000000"
|
|
21
|
+
"--accent-2" = "#6e6e6e"
|
|
22
|
+
"--on-accent" = "#ffffff"
|
|
23
|
+
"--token-default" = "#141414"
|
|
24
|
+
"--token-comment" = "#6b6b6b"
|
|
25
|
+
"--token-string" = "#454545"
|
|
26
|
+
"--token-number" = "#000000"
|
|
27
|
+
"--token-keyword" = "#000000"
|
|
28
|
+
"--token-function" = "#2a2a2a"
|
|
29
|
+
"--token-operator" = "#555555"
|
|
30
|
+
"--callout-note" = "#4a4a4a"
|
|
31
|
+
"--callout-tip" = "#4a4a4a"
|
|
32
|
+
"--callout-important" = "#000000"
|
|
33
|
+
"--callout-warning" = "#7a7a7a"
|
|
34
|
+
"--callout-caution" = "#000000"
|
|
35
|
+
|
|
36
|
+
[dark]
|
|
37
|
+
"--bg" = "#121212"
|
|
38
|
+
"--surface" = "#1f1f1f"
|
|
39
|
+
"--ink" = "#f2f2f2"
|
|
40
|
+
"--ink-soft" = "#d0d0d0"
|
|
41
|
+
"--muted" = "#9c9c9c"
|
|
42
|
+
"--rule" = "#303030"
|
|
43
|
+
"--accent" = "#ffffff"
|
|
44
|
+
"--accent-2" = "#a6a6a6"
|
|
45
|
+
"--on-accent" = "#121212"
|
|
46
|
+
"--token-default" = "#f2f2f2"
|
|
47
|
+
"--token-comment" = "#9a9a9a"
|
|
48
|
+
"--token-string" = "#c4c4c4"
|
|
49
|
+
"--token-number" = "#ffffff"
|
|
50
|
+
"--token-keyword" = "#ffffff"
|
|
51
|
+
"--token-function" = "#e0e0e0"
|
|
52
|
+
"--token-operator" = "#b0b0b0"
|
|
53
|
+
"--callout-note" = "#b8b8b8"
|
|
54
|
+
"--callout-tip" = "#b8b8b8"
|
|
55
|
+
"--callout-important" = "#ffffff"
|
|
56
|
+
"--callout-warning" = "#8c8c8c"
|
|
57
|
+
"--callout-caution" = "#ffffff"
|
|
@@ -54,3 +54,16 @@ title = "Body font"
|
|
|
54
54
|
[params.fontSerif]
|
|
55
55
|
token = "--font-serif"
|
|
56
56
|
title = "Serif for theorems and quotes"
|
|
57
|
+
|
|
58
|
+
# What this theme is for and how to write for it: shown in listings, and read
|
|
59
|
+
# by assistants that write slides as the theme author's advice.
|
|
60
|
+
[guide]
|
|
61
|
+
suits = ["lectures and seminars", "mathematics and science", "conference talks with citations"]
|
|
62
|
+
avoid = ["keynotes with few words", "photo-led talks"]
|
|
63
|
+
writing = """
|
|
64
|
+
Slides may hold more than in other themes: a definition, a formula, a few
|
|
65
|
+
points. Use the lecture blocks for mathematics (::: definition, ::: theorem,
|
|
66
|
+
::: lemma, ::: proof), footnotes and citations ([@key]) for sources, and
|
|
67
|
+
tables for numbers; they are set as in papers. Headings stay in a fixed place
|
|
68
|
+
at the top, so keep them to one line.
|
|
69
|
+
"""
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
schema = 1
|
|
2
|
+
kind = "theme"
|
|
3
|
+
id = "glass"
|
|
4
|
+
title = "Glass"
|
|
5
|
+
description = "Liquid glass: soft pools of light behind every slide, content without frames, titles on a frosted pane with a bright rim; capsule labels, glass beads for list markers and a glass lens for chapter numbers; Geist throughout, dark by default."
|
|
6
|
+
version = "0.1.1"
|
|
7
|
+
author = "Tilman Schieber"
|
|
8
|
+
license = "MIT"
|
|
9
|
+
# The palette this theme uses unless the deck sets one; colours come only from palettes.
|
|
10
|
+
# Muted: polar night, ice blue and lavender; the glass is the look, not the colour.
|
|
11
|
+
palette = "nordic"
|
|
12
|
+
appearance = "dark"
|
|
13
|
+
fonts = [
|
|
14
|
+
"https://fonts.googleapis.com/css2?family=Geist:wght@300..800&family=Geist+Mono:wght@400..600&display=swap",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[files]
|
|
18
|
+
styles = "styles.css"
|
|
19
|
+
|
|
20
|
+
# Type, spacing and fonts used by styles.css; colours come from the palette.
|
|
21
|
+
# Deck settings (params) override these.
|
|
22
|
+
[tokens]
|
|
23
|
+
|
|
24
|
+
# Type scale (px) — projection-appropriate at 1920×1080
|
|
25
|
+
"--fs-display" = "136px"
|
|
26
|
+
"--fs-title" = "104px"
|
|
27
|
+
"--fs-focus" = "88px"
|
|
28
|
+
"--fs-h" = "68px"
|
|
29
|
+
"--fs-sub" = "40px"
|
|
30
|
+
"--fs-body" = "32px"
|
|
31
|
+
"--fs-small" = "24px"
|
|
32
|
+
"--fs-eyebrow" = "20px"
|
|
33
|
+
|
|
34
|
+
# Spacing
|
|
35
|
+
"--pad-x" = "96px"
|
|
36
|
+
"--pad-y" = "60px"
|
|
37
|
+
"--gap-title" = "40px"
|
|
38
|
+
"--gap-item" = "22px"
|
|
39
|
+
|
|
40
|
+
# The glass: how round the panes are and how much they blur what is behind them.
|
|
41
|
+
"--glass-radius" = "44px"
|
|
42
|
+
"--glass-blur" = "28px"
|
|
43
|
+
|
|
44
|
+
# Type families
|
|
45
|
+
"--font-display" = "\"Geist\", \"Inter\", \"Helvetica Neue\", Arial, sans-serif"
|
|
46
|
+
"--font-body" = "\"Geist\", \"Inter\", \"Helvetica Neue\", Arial, sans-serif"
|
|
47
|
+
"--font-mono" = "\"Geist Mono\", ui-monospace, \"SF Mono\", Menlo, Consolas, monospace"
|
|
48
|
+
|
|
49
|
+
[params.fontDisplay]
|
|
50
|
+
token = "--font-display"
|
|
51
|
+
title = "Display font"
|
|
52
|
+
|
|
53
|
+
[params.fontBody]
|
|
54
|
+
token = "--font-body"
|
|
55
|
+
title = "Body font"
|
|
56
|
+
|
|
57
|
+
[params.glassBlur]
|
|
58
|
+
token = "--glass-blur"
|
|
59
|
+
title = "How much the glass blurs"
|
|
60
|
+
|
|
61
|
+
# What this theme is for and how to write for it: shown in listings, and read
|
|
62
|
+
# by assistants that write slides as the theme author's advice.
|
|
63
|
+
[guide]
|
|
64
|
+
suits = ["product launches and keynotes", "tech and design talks", "dark rooms and big screens"]
|
|
65
|
+
avoid = ["dense tables", "slides mostly read on paper"]
|
|
66
|
+
writing = """
|
|
67
|
+
Dark by default. The look is carried by the title and chapter slides (a glass
|
|
68
|
+
pane and a glass lens for the chapter number), so give the talk a title slide
|
|
69
|
+
and numbered chapters. Content slides are calm: a heading and a few points.
|
|
70
|
+
Emphasis in a heading shines in both accents: use it for one word.
|
|
71
|
+
"""
|