remarque-tokens 0.13.0 → 0.14.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 +33 -0
- package/REMARQUE.md +15 -7
- package/package.json +1 -1
- package/theme.css +7 -0
- package/tokens.d.ts +1 -1
- package/tokens.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ All notable changes to `remarque-tokens` are documented here. Token value
|
|
|
4
4
|
changes always state the design rationale — downstream sites pin against
|
|
5
5
|
these entries when syncing.
|
|
6
6
|
|
|
7
|
+
## 0.14.0 — 2026-07-23
|
|
8
|
+
|
|
9
|
+
Triage bundle — prose/`.content-reading` pairing documented, `--motion-easing` bridged into the Tailwind v4 utility layer, USWDS/WCAG source citations added to the accessibility section (closes #23, closes #31, closes #32).
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- **`ease-remarque` Tailwind v4 utility** — `theme.css`'s `@theme inline` block now maps `--ease-remarque: var(--motion-easing)`, mirroring the `transitionTimingFunction.remarque` mapping the v3 `tailwind.config.js` already carried. Utility-class users of `duration-[var(--motion-fast)]` previously fell back to Tailwind's default `ease` timing function instead of the token (#31).
|
|
13
|
+
- **Demo site** — every `duration-[var(--motion-fast)]` call site (22, across `site/src/pages/*`, `layouts/BaseLayout.astro`, `components/Meta.astro`) now pairs with `ease-remarque` so the rendered CSS carries `var(--motion-easing)` instead of Tailwind's default.
|
|
14
|
+
|
|
15
|
+
### Documentation
|
|
16
|
+
- **REMARQUE.md "Editorial Microtypography"** — states that `.remarque-prose` is typography-only (font, line height, numeral register, optical wrapping) and does not center the column; pair it with `.content-reading`, with a minimal code sample (#23).
|
|
17
|
+
- **REMARQUE.md "USWDS Accessibility Compliance"** — every cited WCAG 2.1 success criterion (1.4.3 Contrast Minimum, 1.4.11 Non-text Contrast, 2.5.5 Target Size, 2.3.3 Animation from Interactions, the last in the adjacent "Motion Rules" section) and USWDS claim (16px font-size floor, the overall accessibility approach) now links to its source (`w3.org/WAI/WCAG21/Understanding/*`, `designsystem.digital.gov`) (#32).
|
|
18
|
+
|
|
7
19
|
## 0.13.0 — 2026-07-23
|
|
8
20
|
|
|
9
21
|
Syntax-highlighting palette — 9 `--color-syntax-*` slots, ANSI-derived, golden-gated (closes #53; consensus-ratified 3-0 with a binding taxonomy design record, 2026-07-23).
|
package/README.md
CHANGED
|
@@ -119,6 +119,39 @@ See the [live demo](https://williamzujkowski.github.io/remarque/) for the origin
|
|
|
119
119
|
| Border radius | 0.5rem max | Restrained. No "friendly SaaS" over-rounding |
|
|
120
120
|
| Motion | 120ms/180ms | Hover and theme transitions only. No scroll-triggered, entrance, or staggered animations |
|
|
121
121
|
|
|
122
|
+
## Graduation — when a site invention becomes system vocabulary
|
|
123
|
+
|
|
124
|
+
Consumer sites invent things (the flagship's sidenotes and theme deck, tsundoku's gallery
|
|
125
|
+
grid). Some of those inventions belong upstream; most are the site's own remarque in the
|
|
126
|
+
margin and should stay there. A local invention is upstreamable when **all four** hold:
|
|
127
|
+
|
|
128
|
+
1. **Wanted by 2+ sites** (or one site plus a ratified case that it generalizes).
|
|
129
|
+
2. **Consumes only tokens** — no hardcoded colors, sizes, or faces.
|
|
130
|
+
3. **Passes the audit tooling** (`remarque-audit`, and `remarque-drift` reports it as
|
|
131
|
+
palette-tier INFO, not a core FAIL).
|
|
132
|
+
4. **Violates no Never-list entry** in the spec — or arrives together with an explicit
|
|
133
|
+
spec amendment arguing the change.
|
|
134
|
+
|
|
135
|
+
**Three destinations.** Core spec (rare — core is identity, the bar is a fork-level
|
|
136
|
+
argument); optional module (sidenotes, TOC rail, palette deck); or *documented site-local
|
|
137
|
+
pattern* — explicitly not shared. The zine layer that inspired this checklist is the
|
|
138
|
+
exemplar of the third: sanctioned personality that would be diluted by generalizing it.
|
|
139
|
+
|
|
140
|
+
**Process (single-maintainer scale, no ceremony):** open an issue with before/after
|
|
141
|
+
screenshots and the token-purity check; record the decision in the changelog. Historical
|
|
142
|
+
examples: measure compensation and the Gallery archetype graduated; the theme deck was
|
|
143
|
+
re-scoped on the way up ([#56](https://github.com/williamzujkowski/remarque/issues/56));
|
|
144
|
+
the zine layer deliberately stayed local.
|
|
145
|
+
|
|
146
|
+
**Standing rulings** (ratified 3-0, 2026-07-23) on patterns the reviews kept re-flagging:
|
|
147
|
+
|
|
148
|
+
| Pattern | Ruling |
|
|
149
|
+
|---------|--------|
|
|
150
|
+
| Share links in post footers | Site-local, never a system module. If you build one: URL-encode every interpolated value and reject non-`https` schemes — title/frontmatter injection into share-intent URLs is the classic mistake. |
|
|
151
|
+
| Cross-hue hover accents | Not sanctioned anywhere. The hover move is a lightness/chroma shift within the accent hue (`--color-accent-hover` models it). A cross-hue hover is a documented deviation, not personalization. |
|
|
152
|
+
| Ambient/decorative animation | Site-local only, never in system modules — and the `prefers-reduced-motion` guard is mandatory, not advisory. A future audit scan may flag unguarded infinite animations (as a heuristic check, not a soundness proof). |
|
|
153
|
+
| Landing-page entry counts | Permitted as meta-voice data in the Landing archetype **only when computed from real inventory at build time**. A hardcoded count is a violation — counts drift (see the upstream count-drift bug class this system just fixed in its own theme provider). |
|
|
154
|
+
|
|
122
155
|
## Named For
|
|
123
156
|
|
|
124
157
|
In fine art printmaking, a *remarque* is a small original drawing made by the artist in the margin of a proof print. Found only in limited editions, it is the mark that says: this was made by someone specific, with intention.
|
package/REMARQUE.md
CHANGED
|
@@ -124,6 +124,14 @@ This is why the measure is palette-tier: it is a property of the font choice, no
|
|
|
124
124
|
|
|
125
125
|
The book-craft layer: numerals, small caps, drop caps, pull quotes, and optical wrapping. These are the details that separate typeset prose from a web page that merely uses nice fonts.
|
|
126
126
|
|
|
127
|
+
`.remarque-prose` supplies typography only — font, line height, numeral register, optical wrapping — and stops short of centering the column, so pair it with `.content-reading` wherever the reading column needs to sit centered on the page:
|
|
128
|
+
|
|
129
|
+
```html
|
|
130
|
+
<div class="remarque-prose content-reading">
|
|
131
|
+
<!-- article body -->
|
|
132
|
+
</div>
|
|
133
|
+
```
|
|
134
|
+
|
|
127
135
|
### Numerals
|
|
128
136
|
|
|
129
137
|
Two numeral registers, chosen by context:
|
|
@@ -353,19 +361,19 @@ Motion in Remarque is nearly invisible. The only permitted motion:
|
|
|
353
361
|
- Parallax effects
|
|
354
362
|
- Any animation on non-interactive elements
|
|
355
363
|
|
|
356
|
-
**Reduced motion:** all motion must respect `prefers-reduced-motion` (WCAG 2.3.3). Because every sanctioned transition uses the two duration tokens, tokens.css zeroes `--motion-fast`/`--motion-normal` under `prefers-reduced-motion: reduce` — motion authored with the tokens is automatically safe. Never hardcode durations; any future opt-in animation must live inside a `(prefers-reduced-motion: no-preference)` query.
|
|
364
|
+
**Reduced motion:** all motion must respect `prefers-reduced-motion` ([WCAG 2.3.3](https://www.w3.org/WAI/WCAG21/Understanding/animation-from-interactions.html)). Because every sanctioned transition uses the two duration tokens, tokens.css zeroes `--motion-fast`/`--motion-normal` under `prefers-reduced-motion: reduce` — motion authored with the tokens is automatically safe. Never hardcode durations; any future opt-in animation must live inside a `(prefers-reduced-motion: no-preference)` query.
|
|
357
365
|
|
|
358
366
|
---
|
|
359
367
|
|
|
360
368
|
## USWDS Accessibility Compliance
|
|
361
369
|
|
|
362
|
-
Remarque adopts typography and accessibility standards from the US Web Design System (USWDS) and WCAG 2.1:
|
|
370
|
+
Remarque adopts typography and accessibility standards from the [US Web Design System (USWDS)](https://designsystem.digital.gov/documentation/accessibility/) and [WCAG 2.1](https://www.w3.org/WAI/WCAG21/Understanding/):
|
|
363
371
|
|
|
364
372
|
### Font Size Floors
|
|
365
373
|
|
|
366
374
|
| Token | Value | USWDS Rationale |
|
|
367
375
|
|-------|-------|-----------------|
|
|
368
|
-
| `--text-body` | 17px (1.0625rem) | Exceeds USWDS 16px minimum. Non-negotiable floor. |
|
|
376
|
+
| `--text-body` | 17px (1.0625rem) | Exceeds [USWDS 16px minimum](https://designsystem.digital.gov/components/typography/). Non-negotiable floor. |
|
|
369
377
|
| `--text-meta` | 14px (0.875rem) | USWDS minimum for small text. Used sparingly for metadata, labels, captions. |
|
|
370
378
|
| `--text-micro` | 13px (0.8125rem) | USWDS floor for timestamps and fine print only. Never for body content. |
|
|
371
379
|
|
|
@@ -373,13 +381,13 @@ Remarque adopts typography and accessibility standards from the US Web Design Sy
|
|
|
373
381
|
|
|
374
382
|
| Pairing | Requirement | Notes |
|
|
375
383
|
|---------|-------------|-------|
|
|
376
|
-
| Normal text on background | 4.5:1 minimum |
|
|
377
|
-
| Large text on background | 3:1 minimum |
|
|
378
|
-
| Functional non-text elements | 3:1 minimum | WCAG 1.4.11 — use `--color-border-bold` (meets 3:1). `--color-border` is decorative-only by design and exempt; never the sole boundary of an interactive element |
|
|
384
|
+
| Normal text on background | 4.5:1 minimum | [WCAG 1.4.3](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html) — all text below 24px regular / 18.5px bold. Applies on `--color-surface` too, not just `--color-bg` |
|
|
385
|
+
| Large text on background | 3:1 minimum | [WCAG 1.4.3](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html) — display and title text (24px+) |
|
|
386
|
+
| Functional non-text elements | 3:1 minimum | [WCAG 1.4.11](https://www.w3.org/WAI/WCAG21/Understanding/non-text-contrast.html) — use `--color-border-bold` (meets 3:1). `--color-border` is decorative-only by design and exempt; never the sole boundary of an interactive element |
|
|
379
387
|
|
|
380
388
|
### Touch Targets
|
|
381
389
|
|
|
382
|
-
All interactive elements (links, buttons, inputs) must have a minimum touch target of **44x44px** (WCAG 2.5.5 AAA). This applies to nav links, theme toggles, footer links, chips, and any clickable element.
|
|
390
|
+
All interactive elements (links, buttons, inputs) must have a minimum touch target of **44x44px** ([WCAG 2.5.5](https://www.w3.org/WAI/WCAG21/Understanding/target-size.html) AAA). This applies to nav links, theme toggles, footer links, chips, and any clickable element.
|
|
383
391
|
|
|
384
392
|
### Line Height
|
|
385
393
|
|
package/package.json
CHANGED
package/theme.css
CHANGED
|
@@ -24,6 +24,9 @@
|
|
|
24
24
|
* is never overridden (mt-12 stays 3rem; use mt-remarque-9 for 6rem).
|
|
25
25
|
* Motion utilities: use arbitrary values with the tokens —
|
|
26
26
|
* duration-[var(--motion-fast)] — so reduced-motion zeroing applies.
|
|
27
|
+
* Pair every duration-[var(--motion-*)] utility with ease-remarque
|
|
28
|
+
* (mapped below from --motion-easing) — without it Tailwind falls back
|
|
29
|
+
* to its default `ease` timing function instead of the token (issue #31).
|
|
27
30
|
*/
|
|
28
31
|
|
|
29
32
|
@theme inline {
|
|
@@ -74,4 +77,8 @@
|
|
|
74
77
|
/* Radius (rounded-sm / rounded-md — the system's ceiling) */
|
|
75
78
|
--radius-sm: var(--radius-sm);
|
|
76
79
|
--radius-md: var(--radius-md);
|
|
80
|
+
|
|
81
|
+
/* Easing (ease-remarque) — pair with duration-[var(--motion-*)] so
|
|
82
|
+
transitions use the token instead of Tailwind's default `ease` */
|
|
83
|
+
--ease-remarque: var(--motion-easing);
|
|
77
84
|
}
|
package/tokens.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Remarque design tokens — GENERATED from tokens.json by
|
|
3
|
-
* scripts/tokens-json.mjs (v0.
|
|
3
|
+
* scripts/tokens-json.mjs (v0.14.0). Do not edit — the CSS
|
|
4
4
|
* (tokens-core.css + tokens-palette.css) is the source of truth;
|
|
5
5
|
* tokens.json is the intermediate machine-readable form this file is
|
|
6
6
|
* generated from. Regenerate with: node scripts/tokens-json.mjs
|
package/tokens.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$description": "Remarque design tokens — GENERATED from tokens-core.css + tokens-palette.css by scripts/tokens-json.mjs. Do not edit; the CSS is the source of truth.",
|
|
3
3
|
"$extensions": {
|
|
4
4
|
"remarque": {
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.14.0",
|
|
6
6
|
"tiers": {
|
|
7
7
|
"core": "immutable identity — overriding forks the system",
|
|
8
8
|
"palette": "sanctioned personalization surface — override freely, then run remarque-audit"
|