@aivorynet/slaide 1.2.0 → 1.2.1
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 +10 -0
- package/package.json +1 -1
- package/skills/slaide/themes.md +8 -4
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ All notable changes to slaide are recorded here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.2.1] - 2026-07-19
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- **Theme grammar now teaches when to use `image` vs `media` slots**: `media` fills its box edge-to-edge (the type for almost every photograph); `image` contains the whole picture with margins (logos, diagrams, QR codes). The bundled skill and the minimal-master example follow suit, and the `maxw` guidance now warns against wrapping short titles.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Entering the Theme Studio no longer jumps the deck up for a frame: the studio now opens before the dock relayout, so the reflow happens under cover.
|
|
18
|
+
|
|
9
19
|
## [1.2.0] - 2026-07-19
|
|
10
20
|
|
|
11
21
|
Folds in the unpublished 1.1.0 (2026-07-11).
|
package/package.json
CHANGED
package/skills/slaide/themes.md
CHANGED
|
@@ -55,7 +55,7 @@ layouts:
|
|
|
55
55
|
slots:
|
|
56
56
|
title: { type: title, style: { font: display, size: h1, weight: "900" } }
|
|
57
57
|
subtitle: { type: subtitle, style: { size: h3, color: accent } }
|
|
58
|
-
visual: { type:
|
|
58
|
+
visual: { type: media } # a photo FILLS its box; use `image` only for logos/diagrams
|
|
59
59
|
title-content:
|
|
60
60
|
areas: ["title", "body"]
|
|
61
61
|
rows: "auto 1fr"
|
|
@@ -189,7 +189,11 @@ layouts:
|
|
|
189
189
|
s3: { type: body, style: { align: center, valign: center } }
|
|
190
190
|
```
|
|
191
191
|
|
|
192
|
-
**Slot `type`**
|
|
192
|
+
**Slot `type`** — `title`, `subtitle`, `body`, `image`, `media`, `quote`, `caption`. When to use which for pictures:
|
|
193
|
+
|
|
194
|
+
- **`media`** — a photo/screenshot that must **FILL its box edge-to-edge** (cover crop, no margins). This is the type for hero photos, split-layout imagery, full-bleed visuals — i.e. almost every photograph.
|
|
195
|
+
- **`image`** — **contained**: the whole picture stays visible inside the box with margins. Logos, diagrams, QR codes, charts-as-images only. A scene photo in an `image` slot floats small in empty space — the #1 boxed-thumbnail failure.
|
|
196
|
+
- There is **no `fit:` style key** — the slot *type* decides fill vs contain.
|
|
193
197
|
|
|
194
198
|
> **Dark sections — read this or you ship invisible text.** A layout's `background` and its slots' text colour resolve **independently**; roles default to the *light* variant, so a dark `background` with default-role slots renders **dark-on-dark**. Fix: bind **`variant: dark`** to the layout (roles flip automatically — cleanest), or set explicit light `color:` on the slots. The compiler emits **`low-contrast`** when resolved text ≈ background (≈ under 2.5:1, including a `box:` panel's own surface), so `--strict` catches it. Bold/links inherit surrounding colour — never hand-colour a dark span onto a dark ground.
|
|
195
199
|
|
|
@@ -207,7 +211,7 @@ layouts:
|
|
|
207
211
|
| `valign` | **vertical** align in cell | `top`/`center`/`bottom` |
|
|
208
212
|
| `justify` | horizontal self-align in cell — use for an **image/box** (`align` only moves text) | `left`/`center`/`right` |
|
|
209
213
|
| `weight` / `leading` / `transform` / `italic` | weight / line-height / `uppercase` / `true` | — |
|
|
210
|
-
| `maxw` | max-width (
|
|
214
|
+
| `maxw` | max-width (wrap control). Body 30–40ch; a LONG hero title 16–22ch; a 2–3 word title gets **no maxw** (it wraps ugly and narrows the box) | e.g. `"36ch"` |
|
|
211
215
|
| `box` | surface panel (bg + padding + radius) | `true`, a colour role/palette name (preferred), a **named master gradient** (`box: brand` → padded, rounded, gradient hero/closing panel), or a raw hex / CSS colour / gradient |
|
|
212
216
|
| `bg` | background of the slot region | any CSS colour / gradient (literal) |
|
|
213
217
|
| `anchor` | absolutely position the slot | `"x% y% w% h%"` of the canvas |
|
|
@@ -232,7 +236,7 @@ Inline `[text]{.class}` resolves against this master: **colour** = any `palette`
|
|
|
232
236
|
- **No text-only slides — no exceptions.** Every content slide needs a visual: ` ```echart ` for data, inline ` ```svg ` for diagrams/mockups (preferred — precise, brand-styled), `box:` cards, or a stat callout. A comparison/pro-con slide is NOT exempt: use cards, a table, or SVG icons. Mix visual types across the deck — all-SVG or all-cards = monotone.
|
|
233
237
|
- **Vary composition.** Never repeat the same layout archetype — two text+visual slides need structurally different layouts (not image-left twice). Mix archetypes, alternate dark/light grounds. One slide should break the pattern — oversized `.grad` stat, serif quote owning the canvas, or full-bleed visual.
|
|
234
238
|
- **One idea per slide.** Each slide delivers one clear message (4 bullets max). The visual and text reinforce the SAME idea — if the visual still communicates without the text, that's right.
|
|
235
|
-
- **Size contrast.** Pair `hero`/`stat` scale with body text. At least one slide MUST feature a single big number or statement using `.huge`
|
|
239
|
+
- **Size contrast.** Pair `hero`/`stat` scale with body text. At least one slide MUST feature a single big number or statement using `.huge` (the inline class for the `stat` size) — the audience remembers ONE number from every deck. No decorative accent lines under titles (AI tell).
|
|
236
240
|
- **Use every font role** defined in the master (serif, display, mono).
|
|
237
241
|
- **Whitespace.** `--slide-padding` ≥ 96px, `gap` ≥ 2em. `auto` rows for content, `1fr` spacers to centre. Cards need `pad`.
|
|
238
242
|
- **Avoid `<a>` links in slides.** They aren't clickable during presentations and their `link` role color can override slot `color:`. Write URLs as plain text; style with `[text]{.class}` spans.
|