mdeck 2.3.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 +259 -0
- package/LICENSE +21 -0
- package/README.md +156 -0
- package/assets/base.css +196 -0
- package/assets/extensions/layouts/chapter/extension.toml +26 -0
- package/assets/extensions/layouts/chapter/layout.jsx +21 -0
- package/assets/extensions/layouts/chapter/starter.md +8 -0
- package/assets/extensions/layouts/focus/extension.toml +8 -0
- package/assets/extensions/layouts/focus/layout.jsx +10 -0
- package/assets/extensions/layouts/focus/starter.md +4 -0
- package/assets/extensions/layouts/full-bleed-image/extension.toml +31 -0
- package/assets/extensions/layouts/full-bleed-image/layout.jsx +19 -0
- package/assets/extensions/layouts/full-bleed-image/starter.md +6 -0
- package/assets/extensions/layouts/generic/extension.toml +8 -0
- package/assets/extensions/layouts/generic/layout.jsx +8 -0
- package/assets/extensions/layouts/generic/starter.md +4 -0
- package/assets/extensions/layouts/image-text/extension.toml +25 -0
- package/assets/extensions/layouts/image-text/layout.jsx +17 -0
- package/assets/extensions/layouts/image-text/starter.md +6 -0
- package/assets/extensions/layouts/split/extension.toml +25 -0
- package/assets/extensions/layouts/split/layout.jsx +19 -0
- package/assets/extensions/layouts/split/starter.md +14 -0
- package/assets/extensions/layouts/title/extension.toml +26 -0
- package/assets/extensions/layouts/title/layout.jsx +14 -0
- package/assets/extensions/layouts/title/starter.md +5 -0
- package/assets/extensions/palettes/brand/extension.toml +29 -0
- package/assets/extensions/palettes/cobalt/extension.toml +27 -0
- package/assets/extensions/palettes/ember/extension.toml +27 -0
- package/assets/extensions/palettes/forest/extension.toml +27 -0
- package/assets/extensions/palettes/graphite/extension.toml +27 -0
- package/assets/extensions/palettes/lagoon/extension.toml +27 -0
- package/assets/extensions/palettes/neon/extension.toml +27 -0
- package/assets/extensions/palettes/nordic/extension.toml +27 -0
- package/assets/extensions/palettes/pastel/extension.toml +30 -0
- package/assets/extensions/palettes/phosphor/extension.toml +27 -0
- package/assets/extensions/palettes/swiss/extension.toml +27 -0
- package/assets/extensions/palettes/terra/extension.toml +27 -0
- package/assets/extensions/themes/academic/extension.toml +53 -0
- package/assets/extensions/themes/academic/styles.css +631 -0
- package/assets/extensions/themes/aurora/extension.toml +37 -0
- package/assets/extensions/themes/aurora/styles.css +644 -0
- package/assets/extensions/themes/duet/extension.toml +46 -0
- package/assets/extensions/themes/duet/styles.css +573 -0
- package/assets/extensions/themes/editorial/extension.toml +46 -0
- package/assets/extensions/themes/editorial/styles.css +574 -0
- package/assets/extensions/themes/fhnw/extension.toml +61 -0
- package/assets/extensions/themes/fhnw/styles.css +604 -0
- package/assets/extensions/themes/neue/extension.toml +46 -0
- package/assets/extensions/themes/neue/styles.css +489 -0
- package/assets/extensions/themes/sketch/extension.toml +48 -0
- package/assets/extensions/themes/sketch/styles.css +633 -0
- package/assets/extensions/themes/terminal/extension.toml +38 -0
- package/assets/extensions/themes/terminal/styles.css +550 -0
- package/assets/logo/avatar.png +0 -0
- package/assets/logo/logo-dark.svg +10 -0
- package/assets/logo/logo-light.svg +10 -0
- package/assets/logo/mark.svg +15 -0
- package/bin/mdeck.js +2 -0
- package/docs/README.md +8 -0
- package/docs/reference/authoring.md +795 -0
- package/docs/reference/claude-skill.md +96 -0
- package/docs/reference/extensions.md +250 -0
- package/docs/reference/layouts.md +153 -0
- package/docs/reference/palettes.md +106 -0
- package/docs/reference/structured-slides.md +120 -0
- package/docs/reference/themes.md +133 -0
- package/docs/site/assets/favicon.svg +15 -0
- package/docs/site/assets/github-logo.svg +1 -0
- package/docs/site/assets/site.css +162 -0
- package/docs/site/assets/site.js +123 -0
- package/docs/site/build.js +148 -0
- package/docs/site/content/appearance.md +203 -0
- package/docs/site/content/audience.md +178 -0
- package/docs/site/content/commands.md +153 -0
- package/docs/site/content/components.md +134 -0
- package/docs/site/content/drawing.md +72 -0
- package/docs/site/content/editing.md +59 -0
- package/docs/site/content/getting-started.md +103 -0
- package/docs/site/content/layouts.md +126 -0
- package/docs/site/content/media.md +107 -0
- package/docs/site/content/more-content.md +130 -0
- package/docs/site/content/presenting.md +93 -0
- package/docs/site/content/reusable-layouts.md +74 -0
- package/docs/site/content/sharing.md +88 -0
- package/docs/site/content/theme-authoring.md +144 -0
- package/docs/site/content/theme-repository.md +76 -0
- package/docs/site/content/troubleshooting.md +92 -0
- package/docs/site/content/views.md +56 -0
- package/docs/site/content/welcome.md +71 -0
- package/docs/site/content/writing.md +121 -0
- package/docs/site/examples/first-talk.md +88 -0
- package/docs/site/examples/notebook.svg +58 -0
- 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/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/docs/site/images/themes/duet-dark.webp +0 -0
- package/docs/site/images/themes/duet-light.webp +0 -0
- package/docs/site/images/themes/duet.webp +0 -0
- package/docs/site/images/themes/editorial-dark.webp +0 -0
- package/docs/site/images/themes/editorial-light.webp +0 -0
- package/docs/site/images/themes/editorial.webp +0 -0
- package/docs/site/images/themes/fhnw.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/sketch-dark.webp +0 -0
- package/docs/site/images/themes/sketch-light.webp +0 -0
- package/docs/site/images/themes/sketch.webp +0 -0
- package/docs/site/images/themes/terminal-dark.webp +0 -0
- package/docs/site/images/themes/terminal-light.webp +0 -0
- package/docs/site/images/themes/terminal.webp +0 -0
- package/docs/site/package.json +9 -0
- package/docs/site/pages.js +27 -0
- package/docs/site/server.js +58 -0
- package/examples/custom-layouts/extensions/comparison/extension.toml +35 -0
- package/examples/custom-layouts/extensions/comparison/layout.jsx +15 -0
- package/examples/custom-layouts/extensions/comparison/starter.md +17 -0
- package/examples/custom-layouts/extensions/comparison/styles.css +4 -0
- package/examples/custom-layouts/slides.md +60 -0
- package/examples/poll/slides.md +127 -0
- package/examples/python/.mdeck-backups/slides.drawings-2026-10-06T08-36-47Z.json +19 -0
- package/examples/python/.mdeck-backups/slides.drawings-2026-10-06T11-27-30Z.json +6 -0
- package/examples/python/slides.drawings.json +6 -0
- package/examples/python/slides.md +493 -0
- package/examples/showcase/.mdeck-backups/slides.drawings-2026-10-06T08-08-30Z.json +10 -0
- package/examples/showcase/.mdeck-backups/slides.drawings-2026-10-06T11-41-35Z.json +13 -0
- package/examples/showcase/img/image.jpg +0 -0
- package/examples/showcase/img/mdeck.svg +66 -0
- package/examples/showcase/slides.drawings.json +11 -0
- package/examples/showcase/slides.md +427 -0
- package/package.json +75 -0
- package/skills/write-slides/SKILL.md +144 -0
- package/src/build/check.js +49 -0
- package/src/build/chrome.js +130 -0
- package/src/build/components.js +44 -0
- package/src/build/config.js +61 -0
- package/src/build/drawings.js +14 -0
- package/src/build/editorPlugin.js +272 -0
- package/src/build/editorServer.js +36 -0
- package/src/build/fonts.js +84 -0
- package/src/build/homePlugin.js +208 -0
- package/src/build/inkPlugin.js +192 -0
- package/src/build/ownWrites.js +18 -0
- package/src/build/pairing.js +81 -0
- package/src/build/pdf.js +34 -0
- package/src/build/relayAccess.js +85 -0
- package/src/build/slidesPlugin.js +371 -0
- package/src/build/themeCheck.js +151 -0
- package/src/build/tunnelClient.js +184 -0
- package/src/cli/args.js +76 -0
- package/src/cli/index.js +758 -0
- package/src/cli/migrate.js +123 -0
- package/src/cli/skill.js +40 -0
- package/src/cli/themes.js +140 -0
- package/src/components/CodeBlock.jsx +168 -0
- package/src/components/ConnectedViews.jsx +25 -0
- package/src/components/Icon.jsx +8 -0
- package/src/components/Poll.jsx +67 -0
- package/src/components/QrCode.jsx +29 -0
- package/src/components/QrCodeTag.jsx +27 -0
- package/src/components/Question.jsx +28 -0
- package/src/components/Scale.jsx +47 -0
- package/src/components/VideoPlayer.jsx +108 -0
- package/src/components/WordCloud.jsx +106 -0
- package/src/components/activity.jsx +35 -0
- package/src/components/callout.css +78 -0
- package/src/components/code-block.css +123 -0
- package/src/components/columns.css +11 -0
- package/src/components/poll.css +81 -0
- package/src/components/video-player.css +14 -0
- package/src/core/devPath.js +4 -0
- package/src/core/editDeck.js +230 -0
- package/src/core/icons.js +69 -0
- package/src/core/ink.js +221 -0
- package/src/core/labels.js +144 -0
- package/src/core/outline.js +33 -0
- package/src/core/parseSlides.js +152 -0
- package/src/core/source.js +137 -0
- package/src/core/urls.js +34 -0
- package/src/core/validateDeck.js +139 -0
- package/src/editor/api.js +67 -0
- package/src/editor/components/App.jsx +75 -0
- package/src/editor/components/ConflictBanner.jsx +10 -0
- package/src/editor/components/DeckSettings.jsx +108 -0
- package/src/editor/components/DesignApp.jsx +252 -0
- package/src/editor/components/Diagnostics.jsx +10 -0
- package/src/editor/components/ExtensionEditor.jsx +66 -0
- package/src/editor/components/ExtensionForms.jsx +134 -0
- package/src/editor/components/ExtensionsPanel.jsx +114 -0
- package/src/editor/components/Field.jsx +24 -0
- package/src/editor/components/Inspector.jsx +36 -0
- package/src/editor/components/LayoutPicker.jsx +23 -0
- package/src/editor/components/LayoutSelect.jsx +25 -0
- package/src/editor/components/LookThumbnail.jsx +8 -0
- package/src/editor/components/MetaFields.jsx +24 -0
- package/src/editor/components/Outline.jsx +28 -0
- package/src/editor/components/PalettePicker.jsx +32 -0
- package/src/editor/components/Preview.jsx +63 -0
- package/src/editor/components/PropsForm.jsx +46 -0
- package/src/editor/components/RawSlideEditor.jsx +9 -0
- package/src/editor/components/RegionEditor.jsx +15 -0
- package/src/editor/components/Resizer.jsx +18 -0
- package/src/editor/designLink.js +19 -0
- package/src/editor/editor.css +139 -0
- package/src/editor/extensions.js +86 -0
- package/src/editor/keyboard.js +21 -0
- package/src/editor/model.js +38 -0
- package/src/editor/sampleDeck.js +165 -0
- package/src/editor/saveQueue.js +47 -0
- package/src/editor/schema.js +36 -0
- package/src/editor/state.js +92 -0
- package/src/editor/useDeckDocument.js +67 -0
- package/src/extensions/appearance.js +79 -0
- package/src/extensions/contrast.js +57 -0
- package/src/extensions/discover.js +126 -0
- package/src/extensions/manifest.js +209 -0
- package/src/extensions/packs.js +268 -0
- package/src/extensions/tokens.js +25 -0
- package/src/home/Home.jsx +362 -0
- package/src/home/home.css +148 -0
- package/src/layouts/layoutApi.jsx +205 -0
- package/src/layouts/layoutProps.js +30 -0
- package/src/layouts/renderSlide.jsx +17 -0
- package/src/live/answer/answer.css +34 -0
- package/src/live/answer/answer.html +14 -0
- package/src/live/answer/answer.js +130 -0
- package/src/live/client.js +290 -0
- package/src/live/code.js +19 -0
- package/src/live/follow.js +17 -0
- package/src/live/pairing.js +34 -0
- package/src/live/presence.js +33 -0
- package/src/live/roomTag.js +38 -0
- package/src/live/rooms.js +249 -0
- package/src/live/server.js +82 -0
- package/src/live/tunnel.js +180 -0
- package/src/paths.js +9 -0
- package/src/runtime/ReaderView.jsx +193 -0
- package/src/runtime/SlideErrorBoundary.jsx +28 -0
- package/src/runtime/chrome.jsx +55 -0
- package/src/runtime/deck-stage.js +1533 -0
- package/src/runtime/design.html +12 -0
- package/src/runtime/design.jsx +5 -0
- package/src/runtime/editor.html +12 -0
- package/src/runtime/editor.jsx +5 -0
- package/src/runtime/editorBridge.js +58 -0
- package/src/runtime/fit.js +149 -0
- package/src/runtime/home.html +13 -0
- package/src/runtime/home.jsx +5 -0
- package/src/runtime/index.html +15 -0
- package/src/runtime/ink/InkLayer.jsx +17 -0
- package/src/runtime/ink/Toolbar.jsx +145 -0
- package/src/runtime/ink/attach.js +69 -0
- package/src/runtime/ink/bus.js +126 -0
- package/src/runtime/ink/controller.js +132 -0
- package/src/runtime/ink/room.js +101 -0
- package/src/runtime/ink/select.js +124 -0
- package/src/runtime/ink/server.js +75 -0
- package/src/runtime/ink/store.js +55 -0
- package/src/runtime/ink/toolbar.css +79 -0
- package/src/runtime/main.jsx +863 -0
- package/src/runtime/markedSetup.js +147 -0
- package/src/runtime/reader.css +59 -0
- package/src/runtime/registry.jsx +26 -0
- package/src/runtime/syncOrder.js +32 -0
- package/src/runtime/themeLoader.js +68 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Install or share a theme
|
|
2
|
+
|
|
3
|
+
Besides the themes and palettes that come with mdeck, other people share theirs in the **theme repository**: <https://github.com/tilman-schieber/mdeck-themes>. A shared theme or palette comes as a **pack**: one theme with the palettes made for it, or a set of palettes.
|
|
4
|
+
|
|
5
|
+
## Find and install one
|
|
6
|
+
|
|
7
|
+
See what there is:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
mdeck themes search
|
|
11
|
+
mdeck themes search warm
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Install a pack beside your slides:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
mdeck themes install solarized my-talk.md
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
It is copied into the `extensions` folder next to `my-talk.md`, like a theme you made yourself, so the slide folder keeps working on any computer. Then choose it in the deck settings (`palette: solarized`) or in the editor's **Deck** tab.
|
|
21
|
+
|
|
22
|
+
The design page has the repository too: open it with `mdeck design my-talk.md`, and under **From the theme repository** press **Show what others made**. Each pack shows a picture and an **Install** button.
|
|
23
|
+
|
|
24
|
+
## For every deck
|
|
25
|
+
|
|
26
|
+
With `--global`, a pack is installed once for all your decks, in a folder in your home folder (`~/.mdeck/extensions`):
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
mdeck themes install solarized --global
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
A slide file that uses it works only on your computer. `mdeck check` reminds you, and `mdeck themes install solarized my-talk.md` puts a copy beside the slides. When a deck has its own copy, that one is used.
|
|
33
|
+
|
|
34
|
+
## Update and remove
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
mdeck themes list my-talk.md # what is installed, here and for every deck
|
|
38
|
+
mdeck themes update my-talk.md # newer versions of everything installed here
|
|
39
|
+
mdeck themes remove solarized my-talk.md
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Add `--global` to work on the packs for every deck. If you changed an installed file by hand, `update` and `remove` stop and tell you which one, so your change is not lost; add `--force` to go ahead anyway.
|
|
43
|
+
|
|
44
|
+
## What a pack may contain
|
|
45
|
+
|
|
46
|
+
Packs hold only theme and palette settings (`extension.toml`) and theme stylesheets (`styles.css`). They never contain code that runs in your slides. Fonts may come only from Google Fonts or Bunny Fonts, and stylesheets may not load anything from the web. mdeck checks this again when it installs a pack, and refuses a pack that does not match the checksum the repository lists for it.
|
|
47
|
+
|
|
48
|
+
## Share your own
|
|
49
|
+
|
|
50
|
+
1. Make the theme or palette as described in [Create a theme or palette](theme-authoring.html), and fine-tune it with `mdeck design`.
|
|
51
|
+
2. Fork the theme repository and add a folder `packs/<your-pack>/` with a `pack.toml` and one folder per theme or palette:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
packs/
|
|
55
|
+
harbour/
|
|
56
|
+
pack.toml
|
|
57
|
+
harbour/ a theme
|
|
58
|
+
extension.toml
|
|
59
|
+
styles.css
|
|
60
|
+
harbour-night/ its palette
|
|
61
|
+
extension.toml
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```toml
|
|
65
|
+
schema = 1
|
|
66
|
+
id = "harbour"
|
|
67
|
+
title = "Harbour"
|
|
68
|
+
description = "Navy and brass, with a serif for headings."
|
|
69
|
+
version = "1.0.0"
|
|
70
|
+
author = "Your Name"
|
|
71
|
+
license = "MIT"
|
|
72
|
+
mdeck = ">=2.3.0"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
3. Check it the way the repository will: `mdeck themes build packs -o site --check` shows every theme and palette in the pack on every kind of slide, light and dark, and fails on text that does not fit or is hard to read.
|
|
76
|
+
4. Open a pull request. Once it is merged, `mdeck themes search` lists it. For a new version, raise `version` in `pack.toml`.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# When something goes wrong
|
|
2
|
+
|
|
3
|
+
Most problems come from a filename, a small settings mistake, or a preview that is no longer running. Start with the message you see below.
|
|
4
|
+
|
|
5
|
+
If an AI assistant wrote or changed the slides, ask it first. It can run `mdeck check`, read the message and fix the file:
|
|
6
|
+
|
|
7
|
+
```prompt
|
|
8
|
+
The picture on the title slide is missing. Run mdeck check and fix
|
|
9
|
+
what it reports.
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## The command is not recognized
|
|
13
|
+
|
|
14
|
+
If the terminal cannot find `mdeck`, open the mdeck project folder and run `npm link`. Close and reopen the terminal if needed, then try `mdeck --help`.
|
|
15
|
+
|
|
16
|
+
If it cannot find `npm` or `node`, Node.js needs to be installed or made available in your terminal first. Ask the person who manages your computer if you do not normally install software yourself.
|
|
17
|
+
|
|
18
|
+
You can still run the checkout directly from its project folder with `node bin/mdeck.js --help`. This runs the same command.
|
|
19
|
+
|
|
20
|
+
## The slide file cannot be found
|
|
21
|
+
|
|
22
|
+
Check that the terminal is open in the folder containing your talk. Look at the filename carefully: a plain-text editor may have saved `my-talk.md.txt` instead of `my-talk.md`.
|
|
23
|
+
|
|
24
|
+
For a file in another folder, give its path:
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
mdeck run "talks/my garden talk.md"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## The preview does not update
|
|
31
|
+
|
|
32
|
+
Save the slide file, and check that the terminal running `mdeck run` is still open. Make sure you are viewing the browser address printed by that command.
|
|
33
|
+
|
|
34
|
+
If you changed the file's name or moved it, stop the old preview with `Ctrl+C` and start it with the new path.
|
|
35
|
+
|
|
36
|
+
## It says the port is in use
|
|
37
|
+
|
|
38
|
+
This is usually harmless. Another local preview is using that address, so mdeck chooses the next available port. Open the address shown in the terminal, for example `http://localhost:5174/`.
|
|
39
|
+
|
|
40
|
+
“Re-optimizing dependencies” is also a normal development message after mdeck's setup changes. You do not need to do anything.
|
|
41
|
+
|
|
42
|
+
## It mentions files in the public directory
|
|
43
|
+
|
|
44
|
+
This warning can appear for deck-local layout files in the current slide development server. It comes from how that server serves the presentation folder. If the slides render, you do not need to rewrite the paths suggested in the warning.
|
|
45
|
+
|
|
46
|
+
It is a known slide-preview configuration issue; the documentation server is separate. If a layout fails to render, check for a more specific error below the warning and run `mdeck check my-talk.md`.
|
|
47
|
+
|
|
48
|
+
## A picture is missing
|
|
49
|
+
|
|
50
|
+
Check its path relative to the slide file, including capital letters. For `./img/garden.jpg`, there must be an `img` folder beside the slide file with `garden.jpg` inside it.
|
|
51
|
+
|
|
52
|
+
Run `mdeck check my-talk.md` for a list of missing local assets. If you are opening a built presentation, keep the whole output folder together.
|
|
53
|
+
|
|
54
|
+
## There is a settings error
|
|
55
|
+
|
|
56
|
+
A message such as `my-talk.md:12:1` points to line 12, column 1 of your file. Look there for a missing quote, an incorrect setting name, or inconsistent spaces.
|
|
57
|
+
|
|
58
|
+
Use spaces rather than tabs. Quote text with punctuation, such as `title: "Plans: a fresh start"`.
|
|
59
|
+
|
|
60
|
+
For new slides, a settings block should begin with `:::meta` and end with `:::`. Content goes underneath it. A notes or slot block also needs its own closing `:::`.
|
|
61
|
+
|
|
62
|
+
## Text is missing or does not fit
|
|
63
|
+
|
|
64
|
+
A slide has a fixed amount of space. Split a long explanation over two slides, shorten a paragraph, or try a simpler layout. The current checker does not automatically detect visual overflow; tell your assistant which slides overflow.
|
|
65
|
+
|
|
66
|
+
If you see an “unknown region” error, check that the layout supports the named area you used. For example, `left` and `right` work with `split`, but not with `title`.
|
|
67
|
+
|
|
68
|
+
## The colors change back
|
|
69
|
+
|
|
70
|
+
Appearance changes in the presenter view are temporary. Save the theme and palette you want in your slide file's settings. See [Change the look](appearance.html).
|
|
71
|
+
|
|
72
|
+
## A video or live example does not work offline
|
|
73
|
+
|
|
74
|
+
Online videos and live Python need a network connection. A self-contained build embeds local media; it does not download an entire external service. Use a local video file if you need to play it offline.
|
|
75
|
+
|
|
76
|
+
## Phones cannot open the poll
|
|
77
|
+
|
|
78
|
+
The QR code points at your computer when you present with `mdeck run my-talk.md --network`. The phones must be in the same network. Many large Wi-Fi networks, often at universities, do not let devices reach each other, even when both are connected.
|
|
79
|
+
|
|
80
|
+
Try a phone hotspot that both your computer and the phones join, or use a server on the internet as described in [Ask your audience](audience.html#use-it-in-a-real-session). If the slide says phones cannot reach it, you started without `--network`.
|
|
81
|
+
|
|
82
|
+
## I want an earlier version of my slide file
|
|
83
|
+
|
|
84
|
+
Before its first change in each session, the visual editor saves a copy of the file in a `.mdeck-backups` folder next to it, named with the date and time. Open the copy you want, and copy the text you need back into your slide file. The folder may be hidden in your file manager because its name starts with a dot.
|
|
85
|
+
|
|
86
|
+
## A component from another folder is missing
|
|
87
|
+
|
|
88
|
+
If a tag such as `<chart />` shows nothing, run `mdeck check my-talk.md`. It reports a folder listed under `components:` that does not exist. Paths are relative to the slide file. The tag is the file name in lowercase: `<chart>` comes from `Chart.jsx` or `chart.jsx`. See [sharing components between decks](components.html#share-components-between-decks).
|
|
89
|
+
|
|
90
|
+
## Still stuck?
|
|
91
|
+
|
|
92
|
+
Keep the exact error message and a small copy of the slide that causes it. Include the command you ran and whether the problem happens in the live preview or a built file. Those details make it much easier for someone, or an AI assistant, to help.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Views, commands and servers
|
|
2
|
+
|
|
3
|
+
mdeck has a few commands that start a server or make files, and a few views of the same slides that you choose in the browser. This page puts them side by side.
|
|
4
|
+
|
|
5
|
+
## Views
|
|
6
|
+
|
|
7
|
+
Every build and every preview contains all views. The address picks one with `?view=`:
|
|
8
|
+
|
|
9
|
+
| Address | View | For |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `?view=deck` | Standalone slides with drawing controls | Slides opened from the reader view or a built file |
|
|
12
|
+
| `?view=presenter` | Current and next slide, notes and timer, and a button that opens the audience window | You, while presenting |
|
|
13
|
+
| `?view=audience` | Slides without notes, with navigation synced to the presenter view | The projector |
|
|
14
|
+
| `?view=reader` | The reader view: an outline, **Slides** and **Read** modes, a **Look** menu and a PDF | People you send the talk to |
|
|
15
|
+
|
|
16
|
+
Ways to switch between them:
|
|
17
|
+
|
|
18
|
+
- The **Overview** link in the corner of the deck opens the reader view. Its outline is the overview of all slides.
|
|
19
|
+
- **Present** in the reader view opens standalone slides at the current slide.
|
|
20
|
+
- The presenter view's audience-window button opens the audience view in a new window. Navigation in either window updates the other, in the same browser or on a paired iPad: see [Draw on your slides](drawing.html#present-from-an-ipad).
|
|
21
|
+
- The launch page of `mdeck run`, at the preview's plain address, offers Presenter, Audience and Reader. Its presenter and audience buttons belong together.
|
|
22
|
+
- Fullscreen is a control inside a view (**F** or its fullscreen button). For a single screen, use the presenter view's slide-only layout.
|
|
23
|
+
- A poll's QR code opens the server's answer page, not the slides: see [Ask your audience](audience.html).
|
|
24
|
+
|
|
25
|
+
## Commands
|
|
26
|
+
|
|
27
|
+
| Command | What it does | Where it runs |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `mdeck run my-talk.md` | Preview that reloads when you save; launch page; server for polls | Your computer. Add `--network` to reach it from phones in the same network, or `--server` to reach it from an iPad on any network through your own server |
|
|
30
|
+
| `mdeck edit my-talk.md` | Visual editor that saves into the file and keeps a backup | Your computer only. The launch page can start it too |
|
|
31
|
+
| `mdeck build my-talk.md` | A `dist` folder to host or copy | Anywhere afterwards; no mdeck needed |
|
|
32
|
+
| `mdeck send my-talk.md` | One file to send, without notes, with a PDF inside | Opens on its own |
|
|
33
|
+
| `mdeck pdf my-talk.md` | A PDF, one page per slide | Needs Chrome or Chromium while building |
|
|
34
|
+
| `mdeck server` | The server for polls in hosted presentations, and for presenting from an iPad through it | A web server |
|
|
35
|
+
| `mdeck docs` | These guides | Your computer |
|
|
36
|
+
|
|
37
|
+
The [command guide](commands.html) lists every option.
|
|
38
|
+
|
|
39
|
+
## What needs a server
|
|
40
|
+
|
|
41
|
+
**Presenting.** While you work, use `mdeck run`. A built folder can be presented from any ordinary web server; `mdeck build my-talk.md --launchers` adds a small one that needs Python. A self-contained file for readers opens on its own.
|
|
42
|
+
|
|
43
|
+
**Editing and the launch page.** These run only while `mdeck edit` or `mdeck run` is running, and only answer on your own computer.
|
|
44
|
+
|
|
45
|
+
**Polls.** Only a server must be reachable by the phones; they never load the slides. You present from your own computer, with the slides as they are right now.
|
|
46
|
+
|
|
47
|
+
| Situation | Server | Settings |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| Rehearsing, small group | Built into `mdeck run my-talk.md --network` on your laptop | None. Phones must be in the same network |
|
|
50
|
+
| Lecture hall | `mdeck server` on a web server, once for all your talks | `server`, and the key `MDECK_SERVER_KEY` when you start `mdeck run` |
|
|
51
|
+
|
|
52
|
+
Many large Wi-Fi networks do not let devices reach each other. If phones cannot reach your laptop, use a phone hotspot or a server on the internet. Details are in [Ask your audience](audience.html).
|
|
53
|
+
|
|
54
|
+
**Drawings.** `mdeck run` saves them in `my-talk.drawings.json` next to the slides. An iPad next to your laptop pairs with `mdeck run --network` through a QR code on the launch page, or from any network with `mdeck run --server`; the audience window on the laptop then follows it. See [Draw on your slides](drawing.html).
|
|
55
|
+
|
|
56
|
+
**PDFs.** Only building one needs Chrome. The PDF shows interactive slides finished. Polls show the answers the deck's `server` had at that moment; without one, they show their question and options, marked as answered live during the talk.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Make your next presentation.
|
|
2
|
+
|
|
3
|
+
Bring what you already have: old PowerPoint slides, a PDF, a Word document, a paper, or a page of notes. An AI assistant turns it into a clean, well-designed deck, and mdeck presents it in a web browser, with your notes, and sends it as one file or a PDF.
|
|
4
|
+
|
|
5
|
+
The content stays yours. The assistant works from your material, not from its own idea of the topic: it chooses layouts, tidies wording, moves detail into speaker notes and checks the file. You do not need to know how to program. The slides are a plain text file, so you can read every word, change any of it yourself, or ask for something different.
|
|
6
|
+
|
|
7
|
+
[Make your first presentation](getting-started.html)
|
|
8
|
+
|
|
9
|
+
<!-- preview -->
|
|
10
|
+
|
|
11
|
+
## Bring your material, then shape it
|
|
12
|
+
|
|
13
|
+
Put your files in a folder, open your assistant there, and point it at them:
|
|
14
|
+
|
|
15
|
+
```prompt
|
|
16
|
+
/write-slides Turn lab-notebooks.pptx and my notes in notes.md into
|
|
17
|
+
a 15-minute talk for new lab students. Keep my examples, reuse the
|
|
18
|
+
photos from the old slides, and add one poll at the start.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The assistant reads your files, keeps your structure, facts and pictures, picks a layout for each slide, writes speaker notes from what you wrote, checks the file with mdeck, and tells you how to open it. From there you keep talking: “make slide 4 a big statement”, “use a dark look”, “the third section of the PDF is missing”.
|
|
22
|
+
|
|
23
|
+
## The slides are a text file
|
|
24
|
+
|
|
25
|
+
mdeck slides are written in Markdown, the format AI assistants already answer in. That is why they are good at it: no slide software to operate, no file format to reverse-engineer, just the kind of text they write all day. What the assistant writes looks like this:
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
# A small idea
|
|
29
|
+
|
|
30
|
+
Every good talk starts somewhere.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# What comes next?
|
|
35
|
+
|
|
36
|
+
- Explain the idea.
|
|
37
|
+
- Show an example.
|
|
38
|
+
- Invite questions.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The `#` makes a heading. The line with `---` starts another slide. A dash before a sentence makes a list item. Knowing these few marks lets you fix a word in seconds without asking anyone. [Read and adjust your slides](writing.html) explains the rest.
|
|
42
|
+
|
|
43
|
+
## Find what you need
|
|
44
|
+
|
|
45
|
+
- **Starting from scratch?** Follow [Make your first presentation](getting-started.html).
|
|
46
|
+
- **Already use an AI assistant?** [Work with an AI assistant](claude-skill.html) shows how to set it up for mdeck and how to ask for good slides.
|
|
47
|
+
- **Already have a slide file?** Learn to [add pictures](pictures-and-video.html) or [change the look](appearance.html).
|
|
48
|
+
- **Getting ready to speak?** Set up [your notes and audience screen](notes-and-presenting.html).
|
|
49
|
+
- **Want the room to take part?** [Ask your audience](audience.html) with polls, scales, word clouds and open questions they answer on their phones.
|
|
50
|
+
- **Want to mark up a slide?** [Draw on your slides](drawing.html) with a pen, a finger or an iPad pencil, live or ahead of time.
|
|
51
|
+
- **Sending your talk to someone?** Choose a [sharing or printing option](sharing.html).
|
|
52
|
+
- **Which view or server do I need?** See [Views, commands and servers](views.html).
|
|
53
|
+
- **Something looks wrong?** Try [the troubleshooting guide](troubleshooting.html).
|
|
54
|
+
|
|
55
|
+
## What mdeck does today
|
|
56
|
+
|
|
57
|
+
mdeck gives you ready-made slide layouts, different visual themes, speaker notes, pictures, videos, a separate presenter view, drawing on slides (also from an iPad), polls and other questions your audience answers on their phones, and a reader view with a PDF for people you send the slides to. It can also use layouts, themes and colors made for your team, and your assistant can make new ones for a single talk.
|
|
58
|
+
|
|
59
|
+
`mdeck run` opens a launch page for your talk with all of this in one place: the presenter view, the editor, these guides, buttons that make the files to share, and a check for missing pictures.
|
|
60
|
+
|
|
61
|
+
Whoever writes the slides, your assistant, a text editor, or the built-in browser editor (`mdeck edit`), the file stays the single copy, and the preview updates as it changes.
|
|
62
|
+
|
|
63
|
+
## Keep this guide nearby
|
|
64
|
+
|
|
65
|
+
Open these pages again with:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
mdeck docs
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The documentation runs on your own computer. No account or hosted service is needed.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Read and adjust your slides
|
|
2
|
+
|
|
3
|
+
Whether your assistant wrote the slides or you did, they are a plain text file in **Markdown**: a way to add simple formatting to plain text. A few marks alongside the words tell mdeck what is a heading, a list, or a new slide.
|
|
4
|
+
|
|
5
|
+
You do not have to write Markdown yourself. But knowing these marks lets you read what the assistant wrote, check it, and fix a word or a number without asking. Markdown is also what AI assistants write most naturally, which is why mdeck uses it.
|
|
6
|
+
|
|
7
|
+
## Headings and paragraphs
|
|
8
|
+
|
|
9
|
+
Put `#` and a space before the main heading. Use `##` and a space for a smaller heading. Leave a blank line between paragraphs.
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
# Our next adventure
|
|
13
|
+
|
|
14
|
+
This is a paragraph of ordinary text.
|
|
15
|
+
|
|
16
|
+
## Where we are going
|
|
17
|
+
|
|
18
|
+
This paragraph explains a little more.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Keep each slide focused on one idea. If your words do not fit, make another slide rather than making all the text smaller.
|
|
22
|
+
|
|
23
|
+
## Start another slide
|
|
24
|
+
|
|
25
|
+
Write three dashes on a line of their own:
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
# The first idea
|
|
29
|
+
|
|
30
|
+
Some words about it.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# The next idea
|
|
35
|
+
|
|
36
|
+
Some more words.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Lists, emphasis, and links
|
|
40
|
+
|
|
41
|
+
| You write | What it means |
|
|
42
|
+
|---|---|
|
|
43
|
+
| `- A point to remember` | A bullet point |
|
|
44
|
+
| `1. First step` | A numbered list item |
|
|
45
|
+
| `**important words**` | Bold words |
|
|
46
|
+
| `*a little emphasis*` | Emphasized words, styled by your theme |
|
|
47
|
+
| `[Visit our website](https://example.com)` | A clickable link |
|
|
48
|
+
|
|
49
|
+
Put each list item on its own line:
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
- Bring a notebook.
|
|
53
|
+
- Ask **one good question**.
|
|
54
|
+
- Share what you learn.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Give a slide some settings
|
|
58
|
+
|
|
59
|
+
You can tell mdeck which layout to use. Put this small settings block at the beginning of a slide:
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
:::meta
|
|
63
|
+
layout: focus
|
|
64
|
+
:::
|
|
65
|
+
# One idea worth remembering.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The opening `:::meta` and closing `:::` mark the settings. The line between them asks for the `focus` layout: a large statement slide. The words beneath the block are the slide's content.
|
|
69
|
+
|
|
70
|
+
You do not need a settings block on every slide. The [layout guide](layouts.html) gives you complete examples to copy.
|
|
71
|
+
|
|
72
|
+
## Give a slide a lasting link
|
|
73
|
+
|
|
74
|
+
Add an `id` when you want to link directly to a particular slide:
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
:::meta
|
|
78
|
+
id: questions
|
|
79
|
+
:::
|
|
80
|
+
# Your questions
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
You can then add `#questions` to the presentation's address. IDs must be unique within the talk and start with a letter. Use letters, numbers, hyphens, or underscores, with no spaces.
|
|
84
|
+
|
|
85
|
+
## Settings for the whole presentation
|
|
86
|
+
|
|
87
|
+
A settings block at the very top of the file controls the whole presentation. It uses `---` around its contents:
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
---
|
|
91
|
+
theme: neue
|
|
92
|
+
palette: swiss
|
|
93
|
+
meta:
|
|
94
|
+
title: "Our next adventure"
|
|
95
|
+
author: "Alex Morgan"
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
:::meta
|
|
100
|
+
layout: title
|
|
101
|
+
:::
|
|
102
|
+
# Our next adventure
|
|
103
|
+
## A plan we can share
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Keep the spaces before `title` and `author`: they put those values inside the `meta` group. Use spaces rather than tabs. Quoting text is helpful when it contains punctuation.
|
|
107
|
+
|
|
108
|
+
For a talk in German, add `lang: de` to these settings. The page is then marked as German, which helps screen readers and hyphenation, and the words mdeck adds for your audience, such as the buttons for readers and polls, are German too.
|
|
109
|
+
|
|
110
|
+
## Reading older examples
|
|
111
|
+
|
|
112
|
+
Older decks put slide settings between `---` lines too:
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
---
|
|
116
|
+
layout: focus
|
|
117
|
+
---
|
|
118
|
+
# One idea worth remembering.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
This still works. For new slides, the explicit `:::meta` form makes it easier to see where settings end and writing begins.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
theme: editorial
|
|
3
|
+
show:
|
|
4
|
+
organization: none
|
|
5
|
+
author: none
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
:::meta
|
|
10
|
+
layout: title
|
|
11
|
+
id: hello
|
|
12
|
+
:::
|
|
13
|
+
# Write it down.
|
|
14
|
+
## Why every lab keeps a notebook
|
|
15
|
+
|
|
16
|
+
:::notes
|
|
17
|
+
Ask who has ever repeated an experiment because nobody remembered how it was done.
|
|
18
|
+
:::
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
:::meta
|
|
22
|
+
layout: split
|
|
23
|
+
props:
|
|
24
|
+
ratio: [1, 1]
|
|
25
|
+
:::
|
|
26
|
+
# A notebook answers three questions.
|
|
27
|
+
|
|
28
|
+
- What did I do?
|
|
29
|
+
- What did I see?
|
|
30
|
+
- What would I change?
|
|
31
|
+
|
|
32
|
+
:::notes
|
|
33
|
+
Everything else in a good notebook serves one of these three questions.
|
|
34
|
+
:::
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
:::meta
|
|
38
|
+
layout: focus
|
|
39
|
+
attribution: "A saying in many labs"
|
|
40
|
+
:::
|
|
41
|
+
# If it is not written down, it did not happen.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
:::meta
|
|
45
|
+
layout: chapter
|
|
46
|
+
number: 1
|
|
47
|
+
part: "Good habits"
|
|
48
|
+
:::
|
|
49
|
+
# Write as you work.
|
|
50
|
+
|
|
51
|
+
Two habits that make a notebook useful a year later.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
:::meta
|
|
55
|
+
layout: split
|
|
56
|
+
props:
|
|
57
|
+
ratio: [1, 1]
|
|
58
|
+
:::
|
|
59
|
+
# Two habits that pay off
|
|
60
|
+
|
|
61
|
+
:::slot left
|
|
62
|
+
## Date every page
|
|
63
|
+
The date and the experiment's name come first, before anything else.
|
|
64
|
+
:::
|
|
65
|
+
|
|
66
|
+
:::slot right
|
|
67
|
+
## Record what went wrong
|
|
68
|
+
Failed runs explain the successful ones. Never tear out a page.
|
|
69
|
+
:::
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
:::meta
|
|
73
|
+
layout: image-text
|
|
74
|
+
image: ./notebook.svg
|
|
75
|
+
alt: "An open lab notebook with written steps, a results table and a plot"
|
|
76
|
+
:::
|
|
77
|
+
# One page per experiment
|
|
78
|
+
|
|
79
|
+
Aim, materials, steps, results and a short conclusion. Glue in printouts so nothing gets lost.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
:::meta
|
|
83
|
+
layout: full-bleed-image
|
|
84
|
+
image: ./notebook.svg
|
|
85
|
+
alt: "An open lab notebook with written steps, a results table and a plot"
|
|
86
|
+
overlay: true
|
|
87
|
+
:::
|
|
88
|
+
# Your future self will thank you.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="1000" viewBox="0 0 1600 1000">
|
|
2
|
+
<!-- An open lab notebook on a dark desk: ruled pages with entries, a results table, a plot and a pen.
|
|
3
|
+
The lower part of the picture stays dark so a heading can sit on it. -->
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="desk" x1="0" y1="0" x2="0" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#4a3b30"/>
|
|
7
|
+
<stop offset="1" stop-color="#211a15"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="spine" x1="0" x2="1">
|
|
10
|
+
<stop offset="0" stop-color="#fbf8f1" stop-opacity="0"/>
|
|
11
|
+
<stop offset=".5" stop-color="#b9ad98"/>
|
|
12
|
+
<stop offset="1" stop-color="#fbf8f1" stop-opacity="0"/>
|
|
13
|
+
</linearGradient>
|
|
14
|
+
<pattern id="rule" width="10" height="40" patternUnits="userSpaceOnUse">
|
|
15
|
+
<line x1="0" y1="39.5" x2="10" y2="39.5" stroke="#bfd3e6" stroke-width="2"/>
|
|
16
|
+
</pattern>
|
|
17
|
+
</defs>
|
|
18
|
+
<rect width="1600" height="1000" fill="url(#desk)"/>
|
|
19
|
+
<g transform="translate(260 40) scale(.68) rotate(-3 800 500)">
|
|
20
|
+
<rect x="150" y="90" width="1300" height="830" rx="14" fill="#1b2533"/>
|
|
21
|
+
<rect x="170" y="105" width="625" height="800" fill="#fbf8f1"/>
|
|
22
|
+
<rect x="805" y="105" width="625" height="800" fill="#fbf8f1"/>
|
|
23
|
+
<rect x="770" y="105" width="60" height="800" fill="url(#spine)"/>
|
|
24
|
+
<rect x="170" y="180" width="625" height="700" fill="url(#rule)"/>
|
|
25
|
+
<rect x="805" y="180" width="625" height="700" fill="url(#rule)"/>
|
|
26
|
+
<line x1="240" y1="105" x2="240" y2="905" stroke="#e39a9a" stroke-width="3"/>
|
|
27
|
+
<line x1="875" y1="105" x2="875" y2="905" stroke="#e39a9a" stroke-width="3"/>
|
|
28
|
+
<g fill="none" stroke="#24304a" stroke-width="5" stroke-linecap="round">
|
|
29
|
+
<path d="M262 165 h120 M402 165 h70"/>
|
|
30
|
+
<path d="M262 245 h300" stroke-width="7"/>
|
|
31
|
+
<path d="M262 325 h420 M262 365 h380 M262 405 h300"/>
|
|
32
|
+
<path d="M262 485 h30 M310 485 h300 M262 525 h30 M310 525 h340 M262 565 h30 M310 565 h260 M262 605 h30 M310 605 h320"/>
|
|
33
|
+
<path d="M262 685 h400 M262 725 h360"/>
|
|
34
|
+
<path d="M262 805 h250" stroke="#b5452f"/>
|
|
35
|
+
</g>
|
|
36
|
+
<path d="M520 798 q20 -18 40 0 t40 0" fill="none" stroke="#b5452f" stroke-width="4" stroke-linecap="round"/>
|
|
37
|
+
<g fill="none" stroke="#24304a" stroke-width="4" stroke-linecap="round">
|
|
38
|
+
<path d="M897 165 h160"/>
|
|
39
|
+
<rect x="897" y="220" width="460" height="200"/>
|
|
40
|
+
<path d="M897 270 h460 M897 320 h460 M897 370 h460 M1050 220 v200 M1200 220 v200"/>
|
|
41
|
+
<path d="M915 247 h90 M1068 247 h90 M1218 247 h90" stroke-width="5"/>
|
|
42
|
+
<path d="M915 297 h60 M1068 297 h70 M1218 297 h50 M915 347 h60 M1068 347 h40 M1218 347 h80 M915 397 h60 M1068 397 h60 M1218 397 h60" stroke-width="3"/>
|
|
43
|
+
<path d="M917 820 V480 M917 820 H1360"/>
|
|
44
|
+
<path d="M930 800 C1010 790 1060 700 1110 610 S1240 500 1340 495" stroke="#2455c7" stroke-width="5"/>
|
|
45
|
+
</g>
|
|
46
|
+
<g fill="#2455c7">
|
|
47
|
+
<circle cx="960" cy="792" r="9"/><circle cx="1040" cy="742" r="9"/><circle cx="1105" cy="628" r="9"/>
|
|
48
|
+
<circle cx="1175" cy="545" r="9"/><circle cx="1260" cy="510" r="9"/><circle cx="1335" cy="500" r="9"/>
|
|
49
|
+
</g>
|
|
50
|
+
<g transform="rotate(32 1260 690)">
|
|
51
|
+
<rect x="1000" y="676" width="430" height="30" rx="14" fill="#1d2735"/>
|
|
52
|
+
<rect x="1330" y="676" width="34" height="30" fill="#c9a24b"/>
|
|
53
|
+
<path d="M1000 676 l-46 15 l46 15 z" fill="#e8dcc4"/>
|
|
54
|
+
<path d="M954 691 l14 -4 v8 z" fill="#1d2735"/>
|
|
55
|
+
<rect x="1080" y="668" width="150" height="10" rx="5" fill="#c9a24b"/>
|
|
56
|
+
</g>
|
|
57
|
+
</g>
|
|
58
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|