mote.css 0.9.1 → 0.10.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 +85 -0
- package/README.md +4 -2
- package/mote.components.css +19 -10
- package/mote.css +10 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,89 @@ 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
|
+
## [0.10.1] - 2026-10-24
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Narrow `.mote-doc` layouts keep landmark order**: the collapsed shell no
|
|
13
|
+
longer places the footer before `main` when guide and context rails are
|
|
14
|
+
present.
|
|
15
|
+
- **`.mote-table-scroll` expands on paper**: the optional components file
|
|
16
|
+
now owns its print override, so loading it can no longer undo the core
|
|
17
|
+
print behavior.
|
|
18
|
+
- **`.mote-skip-link` reveals on any focus**: programmatic focus now gets
|
|
19
|
+
the same fixed skip-link pill as keyboard focus, removing a focus-modality
|
|
20
|
+
dependency from the accessibility helper and regression fixture.
|
|
21
|
+
|
|
22
|
+
### Changed (tests — round-8 findings)
|
|
23
|
+
|
|
24
|
+
- The regression fixture now selects an active screen or print-specific
|
|
25
|
+
assertion suite, rebuilds its results on media changes, and self-checks both
|
|
26
|
+
paper helpers and printable table expansion.
|
|
27
|
+
|
|
28
|
+
### Changed (docs — round-8 findings)
|
|
29
|
+
|
|
30
|
+
- Document-layout guidance now states that the collapsed shell preserves
|
|
31
|
+
source order, distinguishes `main` overflow from table-wrapper overflow,
|
|
32
|
+
and calls out the body-level gutter.
|
|
33
|
+
- Header guidance now includes a narrow-screen recipe that gives the nav its
|
|
34
|
+
own row when the brand and pushed controls leave too little room.
|
|
35
|
+
- The helper map now includes print helpers and a right-rail TOC recipe.
|
|
36
|
+
|
|
37
|
+
### Evaluation
|
|
38
|
+
|
|
39
|
+
- Eighth round: ten independent agents built ten new page types against
|
|
40
|
+
v0.10.0. All ten would use mote again and kept page-level horizontal
|
|
41
|
+
overflow at zero; the round exposed the collapsed document-order and
|
|
42
|
+
cross-file print defects fixed in this release.
|
|
43
|
+
|
|
44
|
+
## [0.10.0] - 2026-10-23
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- **`.mote-doc > header` was missing `min-width: 0`** (the shell gives it
|
|
49
|
+
to main, nav, and aside but not the header): a header carrying long nav
|
|
50
|
+
content pushed the *page* sideways at narrow viewports. Found by the
|
|
51
|
+
round-7 course builder; fixture-pinned.
|
|
52
|
+
|
|
53
|
+
### Added
|
|
54
|
+
|
|
55
|
+
- `.mote-tabular`: tabular figures without the right-alignment — day
|
|
56
|
+
numbers, headline balances, meta lines. `.mote-num` keeps
|
|
57
|
+
alignment + figures for table columns (tables already render tabular
|
|
58
|
+
numerals on every cell, so alignment is the column class's real job).
|
|
59
|
+
Five round-7 builds hit the old coupling.
|
|
60
|
+
- `--mote-avatar-radius` (default 999px): square cover art and favicons
|
|
61
|
+
no longer fight the circular default — three round-7 builds overrode it
|
|
62
|
+
by hand.
|
|
63
|
+
|
|
64
|
+
### Changed
|
|
65
|
+
|
|
66
|
+
- Header nav pills never break mid-label (`white-space: nowrap`): the
|
|
67
|
+
pill row scrolls instead — three round-7 builds added this rule by
|
|
68
|
+
hand; deferred from round 6 as a recipe, three recurrences made it a
|
|
69
|
+
default.
|
|
70
|
+
|
|
71
|
+
### Fixed (docs — round-7 findings)
|
|
72
|
+
|
|
73
|
+
- Status classes are token carriers, not text colors — documented with
|
|
74
|
+
the tinted-text recipe (`color: var(--mote-success)`).
|
|
75
|
+
- `.mote-stack` on a `<fieldset>` flattens the legend notch — documented.
|
|
76
|
+
- Nav hints only exist while the pills overflow — documented.
|
|
77
|
+
- New recipes: small indicator dots (skeleton `min-height`), grouped
|
|
78
|
+
messages (`.mote-media` + `aria-hidden` spacer), weekend columns
|
|
79
|
+
(row-tint-safe column shading), quiet captions.
|
|
80
|
+
- `--mote-avatar-radius` and `.mote-tabular` in the token and class
|
|
81
|
+
tables.
|
|
82
|
+
|
|
83
|
+
### Evaluation
|
|
84
|
+
|
|
85
|
+
- Seventh round: ten agents built ten NEW page types (chat, job board,
|
|
86
|
+
calendar, recipe, transactions, lesson, search results, team, hotel,
|
|
87
|
+
podcast) against v0.9.1 on a faster builder model. 10/10
|
|
88
|
+
would-use-again, zero final-state rendering failures; every v0.9.x
|
|
89
|
+
feature verified in the wild by every agent that touched it.
|
|
90
|
+
|
|
8
91
|
## [0.9.1] - 2026-10-23
|
|
9
92
|
|
|
10
93
|
### Fixed
|
|
@@ -572,6 +655,8 @@ Components:
|
|
|
572
655
|
[0.8.0]: https://gitlab.com/abmach/mote/compare/v0.7.0...v0.8.0
|
|
573
656
|
[0.9.0]: https://gitlab.com/abmach/mote/compare/v0.8.0...v0.9.0
|
|
574
657
|
[0.9.1]: https://gitlab.com/abmach/mote/compare/v0.9.0...v0.9.1
|
|
658
|
+
[0.10.1]: https://gitlab.com/abmach/mote/compare/v0.10.0...v0.10.1
|
|
659
|
+
[0.10.0]: https://gitlab.com/abmach/mote/compare/v0.9.1...v0.10.0
|
|
575
660
|
[0.7.0]: https://gitlab.com/abmach/mote/compare/v0.6.1...v0.7.0
|
|
576
661
|
[0.6.1]: https://gitlab.com/abmach/mote/compare/v0.6.0...v0.6.1
|
|
577
662
|
[0.6.0]: https://gitlab.com/abmach/mote/compare/v0.5.1...v0.6.0
|
package/README.md
CHANGED
|
@@ -100,6 +100,7 @@ The consequence: theming is a handful of variable overrides, and an inline tweak
|
|
|
100
100
|
| `--mote-display` | `clamp(2.75rem, 1.5rem + 4vw, 5rem)` | | Display text scale (opt-in) |
|
|
101
101
|
| `--mote-grid-min` | `16rem` | | Card grid minimum track width |
|
|
102
102
|
| `--mote-avatar` | `2.5rem` | | Avatar size |
|
|
103
|
+
| Avatar corners | `--mote-avatar-radius` (default 999px) — 0 for square covers and favicons |
|
|
103
104
|
| `--mote-control-pad` | `0.5rem` | | Button/control vertical padding |
|
|
104
105
|
| `--mote-cell-pad` | `0.6rem` | | Table cell vertical padding |
|
|
105
106
|
| `--mote-shadow` / `--mote-shadow-sm` | warm diffuse | | Elevation |
|
|
@@ -159,15 +160,16 @@ mote is class-optional by design — elements are styled from tags alone; these
|
|
|
159
160
|
| Display text | `.mote-display` — opt-in hero/error-code scale via `--mote-display` |
|
|
160
161
|
| Content rows | `.mote-row` + `.mote-push` — flex row, right-align helper |
|
|
161
162
|
| Stacks | `.mote-stack` — vertical rhythm with `--mote-stack-gap`; fields full width, checkboxes 1em, works on any content |
|
|
162
|
-
| Scrollable tables | `.mote-table-scroll` — sticky `thead`, no page scroll, no margin jump |
|
|
163
|
+
| Scrollable tables | `.mote-table-scroll` — sticky `thead`, no page scroll, no margin jump; expands on paper |
|
|
163
164
|
| Numeric columns | `.mote-num` — right-aligned tabular figures |
|
|
165
|
+
| Tabular figures | `.mote-tabular` — tabular numerals without the right-alignment (day numbers, meta lines) |
|
|
164
166
|
| Sparse grids | `.mote-grid-sparse` — standalone auto-fit variant, collapses empty tracks |
|
|
165
167
|
| Pagination | `nav[aria-label="pagination"]` — semantic, no class |
|
|
166
168
|
| Table of contents | `nav[aria-label="toc"]` — semantic, no class |
|
|
167
169
|
| Current table row | `tr[aria-current]` — accent-tinted row, reads over zebra |
|
|
168
170
|
| Footer baseline | `body > footer` — semantic top-border + padding; its `nav` renders as a quiet wrapped row |
|
|
169
171
|
| Screen-reader helper | `.mote-sr-only` — pure hiding, never appears |
|
|
170
|
-
| Skip link | `.mote-skip-link` — sr-only until
|
|
172
|
+
| Skip link | `.mote-skip-link` — sr-only until focused, then a fixed pill |
|
|
171
173
|
| Print helpers | `.mote-no-print` / `.mote-print-only` |
|
|
172
174
|
| Theme-switch guard | `.mote-theme-switch` — prevents Chromium stale-color bug on `data-theme` flips |
|
|
173
175
|
| Status inheritance control | `.mote-default` (force accent) · `.mote-reset` (clear inherited status) |
|
package/mote.components.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* mote.components.css — opt-in components for mote.css.
|
|
3
|
-
* v0.
|
|
3
|
+
* v0.10.1 · 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).
|
|
@@ -96,7 +96,9 @@ a:where(.mote-badge):hover {
|
|
|
96
96
|
.mote-avatar {
|
|
97
97
|
width: var(--mote-avatar, 2.5rem);
|
|
98
98
|
height: var(--mote-avatar, 2.5rem);
|
|
99
|
-
|
|
99
|
+
/* Round by default (people); square cover art and favicons set
|
|
100
|
+
--mote-avatar-radius: 0 (or any corner value). */
|
|
101
|
+
border-radius: var(--mote-avatar-radius, 999px);
|
|
100
102
|
object-fit: cover;
|
|
101
103
|
border: var(--mote-border-width) solid var(--mote-border);
|
|
102
104
|
box-shadow: var(--mote-shadow-sm);
|
|
@@ -263,6 +265,8 @@ a:where(.mote-badge):hover {
|
|
|
263
265
|
display: inline-block;
|
|
264
266
|
padding: 0.35rem 0.8rem;
|
|
265
267
|
border-radius: 999px;
|
|
268
|
+
/* Pills never break mid-label; the row scrolls instead. */
|
|
269
|
+
white-space: nowrap;
|
|
266
270
|
color: var(--mote-fg);
|
|
267
271
|
text-decoration: none;
|
|
268
272
|
transition: background var(--mote-transition), color var(--mote-transition);
|
|
@@ -386,6 +390,13 @@ nav[aria-label="toc"] a:hover {
|
|
|
386
390
|
overflow-y: auto;
|
|
387
391
|
}
|
|
388
392
|
|
|
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
|
+
|
|
389
400
|
/* Chromium paints collapsed borders at the original flow position,
|
|
390
401
|
not with the sticky cell — separate borders belong to the cell. */
|
|
391
402
|
.mote-table-scroll table {
|
|
@@ -660,7 +671,7 @@ html:where(:has(body > header)) {
|
|
|
660
671
|
--mote-rail-top: 4.75rem;
|
|
661
672
|
}
|
|
662
673
|
|
|
663
|
-
.mote-doc > header { grid-row: 1; grid-column: 1 / -1; }
|
|
674
|
+
.mote-doc > header { grid-row: 1; grid-column: 1 / -1; min-width: 0; }
|
|
664
675
|
.mote-doc > footer { grid-row: 3; grid-column: 1 / -1; }
|
|
665
676
|
|
|
666
677
|
.mote-doc > main { grid-row: 2; grid-column: 1; min-width: 0; }
|
|
@@ -761,15 +772,13 @@ nav[aria-label="toc"] :is(h2, h3) {
|
|
|
761
772
|
}
|
|
762
773
|
|
|
763
774
|
@media (width < 50rem) {
|
|
764
|
-
.mote-doc
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
grid-template-columns: 1fr;
|
|
775
|
+
.mote-doc {
|
|
776
|
+
display: flex;
|
|
777
|
+
flex-direction: column;
|
|
768
778
|
}
|
|
769
779
|
|
|
770
|
-
.mote-doc >
|
|
771
|
-
|
|
772
|
-
grid-row: auto;
|
|
780
|
+
.mote-doc > main {
|
|
781
|
+
flex: 1 0 auto;
|
|
773
782
|
}
|
|
774
783
|
|
|
775
784
|
.mote-doc > aside {
|
package/mote.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* mote.css — a mote of styling for plain HTML.
|
|
3
|
-
* v0.
|
|
3
|
+
* v0.10.1 · MIT
|
|
4
4
|
* https://gitlab.com/abmach/mote · mirror: https://github.com/abmach/mote
|
|
5
5
|
*
|
|
6
6
|
* The smallest thing that can carry style:
|
|
@@ -785,6 +785,14 @@ progress, meter {
|
|
|
785
785
|
font-variant-numeric: tabular-nums;
|
|
786
786
|
}
|
|
787
787
|
|
|
788
|
+
/* Tabular figures without the right-alignment — day numbers, headline
|
|
789
|
+
figures, meta lines. Tables already render tabular numerals on every
|
|
790
|
+
cell; this is for figures outside them (or cells that must not align
|
|
791
|
+
end). */
|
|
792
|
+
.mote-tabular {
|
|
793
|
+
font-variant-numeric: tabular-nums;
|
|
794
|
+
}
|
|
795
|
+
|
|
788
796
|
.mote-sr-only,
|
|
789
797
|
.mote-skip-link {
|
|
790
798
|
position: absolute;
|
|
@@ -802,7 +810,7 @@ progress, meter {
|
|
|
802
810
|
Use .mote-skip-link for the accessibility skip link;
|
|
803
811
|
use plain .mote-sr-only to hide things that must never
|
|
804
812
|
appear (radios driving CSS toggles, visually hidden labels). */
|
|
805
|
-
.mote-skip-link:focus
|
|
813
|
+
.mote-skip-link:focus {
|
|
806
814
|
position: fixed;
|
|
807
815
|
top: 1rem;
|
|
808
816
|
left: 1rem;
|
|
@@ -928,7 +936,6 @@ progress, meter {
|
|
|
928
936
|
/* Opt-in print helpers */
|
|
929
937
|
.mote-no-print { display: none !important; }
|
|
930
938
|
.mote-print-only { display: block; }
|
|
931
|
-
.mote-table-scroll { max-height: none; overflow: visible; }
|
|
932
939
|
}
|
|
933
940
|
|
|
934
941
|
@media not print {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mote.css",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "A mote of styling for plain HTML
|
|
3
|
+
"version": "0.10.1",
|
|
4
|
+
"description": "A mote of styling for plain HTML \u2014 tiny, semantic, class-optional CSS with zero dependencies and no build step.",
|
|
5
5
|
"style": "mote.css",
|
|
6
6
|
"files": [
|
|
7
7
|
"mote.css",
|