mote.css 0.10.7 → 0.10.9
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 +96 -2
- package/README.md +2 -2
- package/mote.components.css +27 -10
- package/mote.css +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,99 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [0.10.9] - 2026-10-29
|
|
9
|
+
|
|
10
|
+
### Fixed (components — round-14 findings)
|
|
11
|
+
|
|
12
|
+
- Scrollable-table header cells now become static on paper. The print
|
|
13
|
+
override follows the sticky-cell rule, so Chromium can repeat the semantic
|
|
14
|
+
`<thead>` at the top of continuation pages instead of painting it after the
|
|
15
|
+
rows.
|
|
16
|
+
|
|
17
|
+
### Fixed (docs — round-14 findings)
|
|
18
|
+
|
|
19
|
+
- The phone-record recipe now start-aligns numeric values in its label/value
|
|
20
|
+
branch, removes generated labels during narrow-viewport print emulation,
|
|
21
|
+
and resets sticky header cells while restoring the table.
|
|
22
|
+
- The row-status recipe now includes semantic row headers
|
|
23
|
+
(`th[scope="row"]`) and uses `background-color`, preserving background
|
|
24
|
+
image layers such as the documented weekend-column shading.
|
|
25
|
+
- The narrow-header recipe now states that it applies to mote's canonical
|
|
26
|
+
composition, where `.mote-row` owns the header row. Custom flex headers
|
|
27
|
+
need page-owned rules for their own structure.
|
|
28
|
+
- Print guidance no longer implies that restoring `position: sticky`
|
|
29
|
+
guarantees a repeated running head; repetition depends on the browser's
|
|
30
|
+
paged-media implementation and the generated PDF must be inspected.
|
|
31
|
+
- Clarified card flex behavior and bottom-aligned actions, inline SVG media
|
|
32
|
+
sizing, prose-heavy card-grid density, and badge scaling.
|
|
33
|
+
|
|
34
|
+
### Tests
|
|
35
|
+
|
|
36
|
+
- The regression fixture asserts that scrollable-table header cells are
|
|
37
|
+
static on paper.
|
|
38
|
+
- Docs-source checks pin the phone-record print and numeric-alignment rules,
|
|
39
|
+
the row-header and background-color contract, and the canonical narrow
|
|
40
|
+
header row owner.
|
|
41
|
+
|
|
42
|
+
### Evaluation
|
|
43
|
+
|
|
44
|
+
- Fourteenth round: ten independent agents built ten new page types against
|
|
45
|
+
v0.10.8. All ten would use mote again. The builders' final pages had no
|
|
46
|
+
confirmed failures; remediation confirmed one library-facing print defect in
|
|
47
|
+
the scrollable-table header, fixed here alongside the documentation gaps
|
|
48
|
+
surfaced by the round.
|
|
49
|
+
|
|
50
|
+
## [0.10.8] - 2026-10-28
|
|
51
|
+
|
|
52
|
+
### Fixed (components — round-13 findings)
|
|
53
|
+
|
|
54
|
+
- The sticky site header goes static on paper, so it no longer repeats over
|
|
55
|
+
every printed page. A page that wants a running head re-applies
|
|
56
|
+
`position: sticky` in its own print CSS.
|
|
57
|
+
|
|
58
|
+
### Fixed (docs — round-13 findings)
|
|
59
|
+
|
|
60
|
+
- The phone-record recipe keeps one label column for the whole table
|
|
61
|
+
(`--records-label`, 7rem by default) instead of a fixed 6rem track, so
|
|
62
|
+
longer labels no longer wrap and every record's labels line up. The label
|
|
63
|
+
keeps `text-align: start`, so a right-aligned numeric column no longer
|
|
64
|
+
drags the label away from its value.
|
|
65
|
+
- The phone-record recipe now covers `<caption>` and row headers
|
|
66
|
+
(`th[scope="row"]`), and its print guard restores the table, the hidden
|
|
67
|
+
header row and the caption: the phone layout hides the header, so a print
|
|
68
|
+
rule that only reverted `display` would have printed a table with no
|
|
69
|
+
columns.
|
|
70
|
+
- The phone-record recipe now states that the transform branch does not need
|
|
71
|
+
`.mote-table-scroll`, and that a table serving both branches must release
|
|
72
|
+
the panel cap in the narrow query (`--mote-table-max: none`) — the shipped
|
|
73
|
+
60vh cap otherwise crops the records it contains.
|
|
74
|
+
- Status on a table row now has a documented page rule, and the status
|
|
75
|
+
reference states that progress and meter inherit a status while badges and
|
|
76
|
+
buttons are gated.
|
|
77
|
+
- Small clarifications: an exclusive `<details name>` group spans the whole
|
|
78
|
+
document; badge scale follows the surrounding font size, not the body;
|
|
79
|
+
definition lists need one column in a narrow rail; a left-rail contents
|
|
80
|
+
list is a `nav` before `main`; Chromium repeats `tfoot` totals across page
|
|
81
|
+
breaks; `.mote-card-media` sizes a direct `img` or `video` child.
|
|
82
|
+
|
|
83
|
+
### Added (docs — round-13 findings)
|
|
84
|
+
|
|
85
|
+
- A reusable-dialog example: one `<dialog>` filled from the trigger before
|
|
86
|
+
`showModal()`. mote ships no JavaScript and the docs keep saying so.
|
|
87
|
+
|
|
88
|
+
### Tests
|
|
89
|
+
|
|
90
|
+
- The published phone-record recipe is pinned by a docs-source check
|
|
91
|
+
(`tests/docs-recipes.cjs`), which also fails if a code sample leaks a live
|
|
92
|
+
tag into the page.
|
|
93
|
+
- The regression fixture asserts that mote's sticky header is sticky on
|
|
94
|
+
screen and static on paper.
|
|
95
|
+
|
|
96
|
+
### Evaluation
|
|
97
|
+
|
|
98
|
+
- Thirteenth round: ten independent agents built ten new page types against
|
|
99
|
+
v0.10.7. All ten would use mote again; no library failure was confirmed.
|
|
100
|
+
The round surfaced the recipe, print and documentation gaps fixed here.
|
|
9
101
|
|
|
10
102
|
## [0.10.7] - 2026-10-26
|
|
11
103
|
|
|
@@ -793,7 +885,9 @@ Components:
|
|
|
793
885
|
- Opt-in helpers: `.mote-container`, `.mote-muted`, `.mote-note` surfaces.
|
|
794
886
|
- Element gallery demo page (`demo.html`).
|
|
795
887
|
|
|
796
|
-
[Unreleased]: https://gitlab.com/abmach/mote/compare/v0.10.
|
|
888
|
+
[Unreleased]: https://gitlab.com/abmach/mote/compare/v0.10.9...HEAD
|
|
889
|
+
[0.10.9]: https://gitlab.com/abmach/mote/compare/v0.10.8...v0.10.9
|
|
890
|
+
[0.10.8]: https://gitlab.com/abmach/mote/compare/v0.10.7...v0.10.8
|
|
797
891
|
[0.10.7]: https://gitlab.com/abmach/mote/compare/v0.10.6...v0.10.7
|
|
798
892
|
[0.10.6]: https://gitlab.com/abmach/mote/compare/v0.10.5...v0.10.6
|
|
799
893
|
[0.10.5]: https://gitlab.com/abmach/mote/compare/v0.10.4...v0.10.5
|
package/README.md
CHANGED
|
@@ -151,7 +151,7 @@ mote is class-optional by design — elements are styled from tags alone; these
|
|
|
151
151
|
| Component | Hook |
|
|
152
152
|
|---|---|
|
|
153
153
|
| Document layout (landmark grid) | `.mote-doc` on `<body>` — `:has()` reads your `header`/`nav`/`main`/`aside`/`footer` |
|
|
154
|
-
| Sticky site header / nav pills | `body > header` — semantic; `.mote-header`/`.mote-nav` only for shells wrapped in a `<div
|
|
154
|
+
| Sticky site header / nav pills | `body > header` — semantic; `.mote-header`/`.mote-nav` only for shells wrapped in a `<div>`; goes static on paper |
|
|
155
155
|
| Semantic buttons (gated) | `class="mote-success"` etc. on the button itself — themed sections never recolor actions |
|
|
156
156
|
| Ghost buttons | `.mote-ghost` — transparent fill; status tints from the button's own class (gated like solids) |
|
|
157
157
|
| Solid button on any element | `.mote-btn` — the full solid recipe for anchors, spans; status classes gated |
|
|
@@ -184,7 +184,7 @@ mote is class-optional by design — elements are styled from tags alone; these
|
|
|
184
184
|
| Breadcrumbs | `nav[aria-label="breadcrumb"]` — semantic, no class |
|
|
185
185
|
| Card grids | `.mote-grid` — auto-fill columns from the container, no breakpoints |
|
|
186
186
|
| Cards | `.mote-card` — normalizes content: alignment reads start even inside centered regions |
|
|
187
|
-
| Badges | `.mote-badge` — gated: status from the badge's own class, never inherited; never
|
|
187
|
+
| Badges | `.mote-badge` — gated: status from the badge's own class, never inherited; scales with surrounding text but never enlarges with headings |
|
|
188
188
|
| Avatars | `.mote-avatar` |
|
|
189
189
|
| Skeleton / spinner | `.mote-skeleton`, `.mote-spinner` |
|
|
190
190
|
| Tooltips | `[popover].mote-tooltip` + `popovertarget` button |
|
package/mote.components.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* mote.components.css — opt-in components for mote.css.
|
|
3
|
-
* v0.10.
|
|
3
|
+
* v0.10.9 · MIT
|
|
4
4
|
* https://gitlab.com/abmach/mote · mirror: https://github.com/abmach/mote
|
|
5
5
|
*
|
|
6
6
|
* Requires mote.css loaded first (provides the --mote-* tokens).
|
|
@@ -66,8 +66,8 @@
|
|
|
66
66
|
display: inline-block;
|
|
67
67
|
padding: 0.1rem 0.6rem;
|
|
68
68
|
border-radius: 999px;
|
|
69
|
-
/*
|
|
70
|
-
|
|
69
|
+
/* Scale with the surrounding text, but never enlarge with headings:
|
|
70
|
+
0.8em balloons inside a heading, so cap it at 0.8rem. */
|
|
71
71
|
font-size: min(0.8em, 0.8rem);
|
|
72
72
|
font-weight: 500;
|
|
73
73
|
line-height: 1.4;
|
|
@@ -168,6 +168,16 @@ a:where(.mote-badge):hover {
|
|
|
168
168
|
padding-block: 0.7rem;
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
+
/* On paper the bar must not repeat over every sheet: a sticky header is
|
|
172
|
+
screen chrome. A print-specific layout may restore sticky positioning,
|
|
173
|
+
but repeated running heads depend on the browser's paged-media behavior
|
|
174
|
+
and are not guaranteed by this library. */
|
|
175
|
+
@media print {
|
|
176
|
+
:where(body > header, .mote-header) {
|
|
177
|
+
position: static;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
171
181
|
/* Long navs scroll inside the bar — they never wrap to a second line
|
|
172
182
|
or push the rest of the row (brand, toggle) off it. min-width lets
|
|
173
183
|
the nav yield space before the surrounding row needs to. */
|
|
@@ -390,13 +400,6 @@ nav[aria-label="toc"] a:hover {
|
|
|
390
400
|
overflow-y: auto;
|
|
391
401
|
}
|
|
392
402
|
|
|
393
|
-
/* The components file owns this component's print behavior. Keep the
|
|
394
|
-
override after the screen rule so loading the optional file cannot
|
|
395
|
-
undo the core print promise. */
|
|
396
|
-
@media print {
|
|
397
|
-
.mote-table-scroll { max-height: none; overflow: visible; }
|
|
398
|
-
}
|
|
399
|
-
|
|
400
403
|
/* Chromium paints collapsed borders at the original flow position,
|
|
401
404
|
not with the sticky cell — separate borders belong to the cell. */
|
|
402
405
|
.mote-table-scroll table {
|
|
@@ -411,6 +414,20 @@ nav[aria-label="toc"] a:hover {
|
|
|
411
414
|
background: var(--mote-bg);
|
|
412
415
|
}
|
|
413
416
|
|
|
417
|
+
/* The components file owns this component's print behavior. Keep the
|
|
418
|
+
override after the sticky-cell rule so paper restores a normal table:
|
|
419
|
+
Chromium can repeat the semantic thead without sticky positioning. */
|
|
420
|
+
@media print {
|
|
421
|
+
.mote-table-scroll {
|
|
422
|
+
max-height: none;
|
|
423
|
+
overflow: visible;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
.mote-table-scroll thead th {
|
|
427
|
+
position: static;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
414
431
|
/* Page footer: the quiet sibling of the site header */
|
|
415
432
|
:where(body > footer, .mote-footer) {
|
|
416
433
|
margin-block-start: 3rem;
|
package/mote.css
CHANGED