|
2 | 2 |
|
3 | 3 | Build a theme for the stream toolset and submit it to the catalog. |
4 | 4 |
|
5 | | -A theme customizes the look of a single widget — chat box, death counter, |
6 | | -music player, and others as they expose their settings. It is field |
7 | | -overrides (the same settings the tool page exposes) plus optional scoped |
8 | | -CSS. Themes are data and CSS only: no JavaScript, no external assets, no |
9 | | -commerce. Accepted themes are free to every toolset user. |
| 5 | +A theme customizes the look of one or more widgets — chat box, death counter, |
| 6 | +music player, and others as they expose their settings. It is field overrides |
| 7 | +(the same settings the tool page exposes) plus optional scoped CSS. Themes are |
| 8 | +data and CSS only: no JavaScript, no external assets, no commerce. Accepted |
| 9 | +themes are free to every toolset user. |
10 | 10 |
|
11 | | -This repo is both the SDK (how to build a theme) and the submission |
12 | | -inbox (where you open a pull request). If your theme is accepted it shows |
13 | | -up in the in-app Themes catalog at `toolset.deutschmark.online/tools/themes`. |
| 11 | +This repo is both the SDK (how to build a theme) and the submission inbox |
| 12 | +(where you open a pull request). If your theme is accepted it shows up in |
| 13 | +the in-app Themes catalog at `toolset.deutschmark.online/tools/themes`. |
14 | 14 |
|
15 | 15 | ## What you can submit |
16 | 16 |
|
17 | | -A **widget theme**: field overrides plus optional CSS for one widget type. |
18 | | -The format is defined in [`schema/widget-theme.schema.json`](schema/widget-theme.schema.json) |
19 | | -and explained in [`docs/widget-themes.md`](docs/widget-themes.md). |
| 17 | +Two formats. Pick the one that matches what you're styling: |
| 18 | + |
| 19 | +- **Theme pack** (v2, `kind: "theme-pack"`) — styles multiple widgets at once |
| 20 | + with a shared palette. One click in the toolset applies it across the |
| 21 | + streamer's music, chat, death counter, etc. all in matching colors. Best |
| 22 | + for "all-encompassing" looks. Defined in |
| 23 | + [`schema/theme-pack.schema.json`](schema/theme-pack.schema.json); example |
| 24 | + at [`examples/my-first-pack/`](examples/my-first-pack/). |
| 25 | + |
| 26 | +- **Widget theme** (v1, `kind: "widget-theme"`) — styles one widget surface. |
| 27 | + Best when you want to nail a specific look on a specific tool. Defined in |
| 28 | + [`schema/widget-theme.schema.json`](schema/widget-theme.schema.json); |
| 29 | + example at [`examples/my-first-theme/`](examples/my-first-theme/). |
| 30 | + |
| 31 | +Both formats live in the catalog side-by-side. The toolset's apply UX is the |
| 32 | +same shape for both — a multi-source checkbox modal. |
20 | 33 |
|
21 | 34 | ## Quick start |
22 | 35 |
|
23 | 36 | 1. Fork this repo. |
24 | | -2. Copy [`examples/my-first-theme/`](examples/my-first-theme/) to |
| 37 | +2. Copy [`examples/my-first-pack/`](examples/my-first-pack/) (v2) or |
| 38 | + [`examples/my-first-theme/`](examples/my-first-theme/) (v1) to |
25 | 39 | `submissions/<your-handle>/<theme-slug>/`. |
26 | | -3. Edit `theme.json` — set the `widgetType`, `name`, `author`, and the |
27 | | - `fields` you want to override. Keep `fields` to keys the widget |
28 | | - actually exposes (see [`docs/fields-overview.md`](docs/fields-overview.md)). |
29 | | -4. Add an honest `preview.png` and, if you wrote any, `overrides.css`. |
| 40 | +3. Edit `theme.json` — set `name`, `author`, `description`, and the |
| 41 | + `fields` you want to override per widget. Keep `fields` to keys the |
| 42 | + widget actually exposes (see [`docs/fields-overview.md`](docs/fields-overview.md)). |
| 43 | +4. Replace the preview PNGs. Hero is 16:9, ≤ 512 KB. One preview per widget |
| 44 | + the theme covers. |
30 | 45 | 5. Open a pull request. Read [`CONTRIBUTING.md`](CONTRIBUTING.md) first — |
31 | 46 | it covers the quality bar and the rules. |
32 | 47 |
|
|
57 | 72 | css-selectors.md the CSS selector contract themes can rely on |
58 | 73 | review-criteria.md the quality bar, written plainly |
59 | 74 | schema/ |
60 | | - widget-theme.schema.json |
| 75 | + widget-theme.schema.json (v1) |
| 76 | + theme-pack.schema.json (v2) |
61 | 77 | examples/ |
62 | | - my-first-theme/ a minimal working chat-box theme |
| 78 | + my-first-theme/ a minimal working v1 chat-box theme |
| 79 | + my-first-pack/ a minimal working v2 multi-widget pack |
63 | 80 | scripts/ |
64 | 81 | validate-submission.mjs what CI runs — also runs locally |
65 | 82 | tools/ |
|
0 commit comments