mote.css 0.9.0 → 0.10.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 CHANGED
@@ -5,6 +5,64 @@ 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.0] - 2026-10-23
9
+
10
+ ### Fixed
11
+
12
+ - **`.mote-doc > header` was missing `min-width: 0`** (the shell gives it
13
+ to main, nav, and aside but not the header): a header carrying long nav
14
+ content pushed the *page* sideways at narrow viewports. Found by the
15
+ round-7 course builder; fixture-pinned.
16
+
17
+ ### Added
18
+
19
+ - `.mote-tabular`: tabular figures without the right-alignment — day
20
+ numbers, headline balances, meta lines. `.mote-num` keeps
21
+ alignment + figures for table columns (tables already render tabular
22
+ numerals on every cell, so alignment is the column class's real job).
23
+ Five round-7 builds hit the old coupling.
24
+ - `--mote-avatar-radius` (default 999px): square cover art and favicons
25
+ no longer fight the circular default — three round-7 builds overrode it
26
+ by hand.
27
+
28
+ ### Changed
29
+
30
+ - Header nav pills never break mid-label (`white-space: nowrap`): the
31
+ pill row scrolls instead — three round-7 builds added this rule by
32
+ hand; deferred from round 6 as a recipe, three recurrences made it a
33
+ default.
34
+
35
+ ### Fixed (docs — round-7 findings)
36
+
37
+ - Status classes are token carriers, not text colors — documented with
38
+ the tinted-text recipe (`color: var(--mote-success)`).
39
+ - `.mote-stack` on a `<fieldset>` flattens the legend notch — documented.
40
+ - Nav hints only exist while the pills overflow — documented.
41
+ - New recipes: small indicator dots (skeleton `min-height`), grouped
42
+ messages (`.mote-media` + `aria-hidden` spacer), weekend columns
43
+ (row-tint-safe column shading), quiet captions.
44
+ - `--mote-avatar-radius` and `.mote-tabular` in the token and class
45
+ tables.
46
+
47
+ ### Evaluation
48
+
49
+ - Seventh round: ten agents built ten NEW page types (chat, job board,
50
+ calendar, recipe, transactions, lesson, search results, team, hotel,
51
+ podcast) against v0.9.1 on a faster builder model. 10/10
52
+ would-use-again, zero final-state rendering failures; every v0.9.x
53
+ feature verified in the wild by every agent that touched it.
54
+
55
+ ## [0.9.1] - 2026-10-23
56
+
57
+ ### Fixed
58
+
59
+ - The header hairline is now fully snippet-driven: it paints only
60
+ while the nav actually scrolls. With the snippet, an empty
61
+ `data-nav` (a single pill, nothing to scroll) leaves the line gone;
62
+ without the snippet there is no line at all — zero-JS headers keep
63
+ just the pills, and the cut pill is the overflow signal. Both states
64
+ fixture-pinned.
65
+
8
66
  ## [0.9.0] - 2026-10-22
9
67
 
10
68
  ### Added
@@ -560,6 +618,8 @@ Components:
560
618
  [0.3.0]: https://gitlab.com/abmach/mote/compare/v0.2.1...v0.3.0
561
619
  [0.8.0]: https://gitlab.com/abmach/mote/compare/v0.7.0...v0.8.0
562
620
  [0.9.0]: https://gitlab.com/abmach/mote/compare/v0.8.0...v0.9.0
621
+ [0.9.1]: https://gitlab.com/abmach/mote/compare/v0.9.0...v0.9.1
622
+ [0.10.0]: https://gitlab.com/abmach/mote/compare/v0.9.1...v0.10.0
563
623
  [0.7.0]: https://gitlab.com/abmach/mote/compare/v0.6.1...v0.7.0
564
624
  [0.6.1]: https://gitlab.com/abmach/mote/compare/v0.6.0...v0.6.1
565
625
  [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 |
@@ -161,6 +162,7 @@ mote is class-optional by design — elements are styled from tags alone; these
161
162
  | Stacks | `.mote-stack` — vertical rhythm with `--mote-stack-gap`; fields full width, checkboxes 1em, works on any content |
162
163
  | Scrollable tables | `.mote-table-scroll` — sticky `thead`, no page scroll, no margin jump |
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 |
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * mote.components.css — opt-in components for mote.css.
3
- * v0.9.0 · MIT
3
+ * v0.10.0 · 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
- border-radius: 999px;
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);
@@ -187,6 +189,14 @@ a:where(.mote-badge):hover {
187
189
  position: relative;
188
190
  flex: 1 1 0%;
189
191
  min-width: 0;
192
+ }
193
+
194
+ /* The hairline is snippet-driven: it paints only while the nav
195
+ actually scrolls. An empty data-nav means "nothing to scroll" —
196
+ no line under a single pill. No attribute at all means no snippet:
197
+ no line either; zero-JS headers keep just the pills, and the cut
198
+ pill is the overflow signal. */
199
+ :where(body > header nav[data-nav]:not([data-nav=""]), .mote-nav[data-nav]:not([data-nav=""])) {
190
200
  background:
191
201
  linear-gradient(var(--mote-border), var(--mote-border)) left bottom / 100% 2px no-repeat;
192
202
  }
@@ -255,6 +265,8 @@ a:where(.mote-badge):hover {
255
265
  display: inline-block;
256
266
  padding: 0.35rem 0.8rem;
257
267
  border-radius: 999px;
268
+ /* Pills never break mid-label; the row scrolls instead. */
269
+ white-space: nowrap;
258
270
  color: var(--mote-fg);
259
271
  text-decoration: none;
260
272
  transition: background var(--mote-transition), color var(--mote-transition);
@@ -652,7 +664,7 @@ html:where(:has(body > header)) {
652
664
  --mote-rail-top: 4.75rem;
653
665
  }
654
666
 
655
- .mote-doc > header { grid-row: 1; grid-column: 1 / -1; }
667
+ .mote-doc > header { grid-row: 1; grid-column: 1 / -1; min-width: 0; }
656
668
  .mote-doc > footer { grid-row: 3; grid-column: 1 / -1; }
657
669
 
658
670
  .mote-doc > main { grid-row: 2; grid-column: 1; min-width: 0; }
package/mote.css CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * mote.css — a mote of styling for plain HTML.
3
- * v0.9.0 · MIT
3
+ * v0.10.0 · 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;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mote.css",
3
- "version": "0.9.0",
4
- "description": "A mote of styling for plain HTML — tiny, semantic, class-optional CSS with zero dependencies and no build step.",
3
+ "version": "0.10.0",
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",