mote.css 0.10.9 → 0.11.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,51 @@ 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.11.0] - 2026-10-29
9
+
10
+ ### Added (components — round-15 findings)
11
+
12
+ - `.mote-card-media` now sizes a direct inline SVG cover while preserving the
13
+ SVG's own `viewBox` ratio. Nested SVG icons remain unaffected.
14
+ - `.mote-card-actions` bottom-aligns a card action row without owning the
15
+ row's display, gap, or wrapping.
16
+ - `.mote-row-status` paints a status row's direct cells with
17
+ `background-color`, preserving semantic row headers and background-image
18
+ layers. Status classes remain token carriers without the helper.
19
+
20
+ ### Fixed (docs — round-15 findings)
21
+
22
+ - The phone-record recipe now requires a non-empty `data-label` on every
23
+ transformed data cell and warns that a missing label renders blank.
24
+ - The recipe states that its breakpoint is an example, that media-query
25
+ thresholds cannot be parameterized with CSS variables, and that the
26
+ transform and cap-release queries must use the same chosen threshold.
27
+ - Table documentation now distinguishes page and wrapper scrolling and
28
+ explains that the 60vh cap does not crop content.
29
+ - Print guidance now includes a practical paper checklist covering content,
30
+ tables, pagination, forms, and generated-PDF inspection.
31
+ - Card documentation now covers direct inline SVG covers and the
32
+ `.mote-card-actions` helper.
33
+
34
+ ### Tests
35
+
36
+ - The regression fixture asserts direct SVG cover sizing and ratio, nested SVG
37
+ isolation, card-action bottom alignment, status-row painting, background
38
+ image preservation, and gated badge behavior.
39
+ - Documentation source checks cover the new guidance, reject leaked live
40
+ tags in copy-ready samples, and pin both the encoded and live SVG card-cover
41
+ structures, including their wrapper, SVG, rectangle, and circle elements.
42
+ - The fixture's screen-only status and card probes stay off paper through a
43
+ fixture-local print rule, so the print-emulation PDF remains a focused
44
+ four-page regression artifact without repurposing `.mote-no-print`.
45
+
46
+ ### Evaluation
47
+
48
+ - Fifteenth round: ten independent agents built ten new page types against
49
+ v0.10.9. All ten would use mote again. The final pages had no confirmed
50
+ library failures; these changes address the recurring authoring friction
51
+ and documentation gaps surfaced by the round.
52
+
8
53
  ## [0.10.9] - 2026-10-29
9
54
 
10
55
  ### Fixed (components — round-14 findings)
@@ -885,7 +930,8 @@ Components:
885
930
  - Opt-in helpers: `.mote-container`, `.mote-muted`, `.mote-note` surfaces.
886
931
  - Element gallery demo page (`demo.html`).
887
932
 
888
- [Unreleased]: https://gitlab.com/abmach/mote/compare/v0.10.9...HEAD
933
+ [Unreleased]: https://gitlab.com/abmach/mote/compare/v0.11.0...HEAD
934
+ [0.11.0]: https://gitlab.com/abmach/mote/compare/v0.10.9...v0.11.0
889
935
  [0.10.9]: https://gitlab.com/abmach/mote/compare/v0.10.8...v0.10.9
890
936
  [0.10.8]: https://gitlab.com/abmach/mote/compare/v0.10.7...v0.10.8
891
937
  [0.10.7]: https://gitlab.com/abmach/mote/compare/v0.10.6...v0.10.7
package/README.md CHANGED
@@ -157,7 +157,7 @@ mote is class-optional by design — elements are styled from tags alone; these
157
157
  | Solid button on any element | `.mote-btn` — the full solid recipe for anchors, spans; status classes gated |
158
158
  | Hero centering | `.mote-hero` — vertically centers content for error/login/empty-state pages |
159
159
  | CTA bands | `.mote-band` — full-bleed tinted section; opaque in both themes, reads `--mote-status` |
160
- | Card cover media | `.mote-card-media` — flush-top cover images with matched radius |
160
+ | Card cover media | `.mote-card-media` — flush-top cover images, video, or direct inline SVG with matched radius |
161
161
  | Brand/wordmark | `.mote-brand` — quiet non-nav link for site headers |
162
162
  | Media objects | `.mote-media` — avatar/icon beside body (flex, last child grows) |
163
163
  | Display text | `.mote-display` — opt-in hero/error-code scale via `--mote-display` |
@@ -170,6 +170,7 @@ mote is class-optional by design — elements are styled from tags alone; these
170
170
  | Pagination | `nav[aria-label="pagination"]` — semantic, no class |
171
171
  | Table of contents | `nav[aria-label="toc"]` — semantic, no class |
172
172
  | Current table row | `tr[aria-current]` — accent-tinted row, reads over zebra |
173
+ | Status table row | `.mote-row-status` + a status class — paints direct cells while preserving background-image layers |
173
174
  | Footer baseline | `body > footer` — semantic top-border + padding; its `nav` renders as a quiet wrapped row |
174
175
  | Screen-reader helper | `.mote-sr-only` — pure hiding, never appears |
175
176
  | Skip link | `.mote-skip-link` — sr-only until focused, then a fixed pill |
@@ -184,6 +185,7 @@ mote is class-optional by design — elements are styled from tags alone; these
184
185
  | Breadcrumbs | `nav[aria-label="breadcrumb"]` — semantic, no class |
185
186
  | Card grids | `.mote-grid` — auto-fill columns from the container, no breakpoints |
186
187
  | Cards | `.mote-card` — normalizes content: alignment reads start even inside centered regions |
188
+ | Card actions | `.mote-card-actions` — bottom-aligns an action row inside a card without owning the row layout |
187
189
  | Badges | `.mote-badge` — gated: status from the badge's own class, never inherited; scales with surrounding text but never enlarges with headings |
188
190
  | Avatars | `.mote-avatar` |
189
191
  | Skeleton / spinner | `.mote-skeleton`, `.mote-spinner` |
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * mote.components.css — opt-in components for mote.css.
3
- * v0.10.9 · MIT
3
+ * v0.11.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).
@@ -36,6 +36,13 @@
36
36
  margin-block-end: 0;
37
37
  }
38
38
 
39
+ /* Bottom-align a card's action row without owning the row's layout.
40
+ .mote-card is a vertical flex column, so the auto margin consumes the
41
+ space above the actions. Pair with .mote-row for the row itself. */
42
+ .mote-card-actions {
43
+ margin-block-start: auto;
44
+ }
45
+
39
46
  /* Band: a full-bleed tinted section — CTA bands, section dividers,
40
47
  announcement strips. An opaque mix (unlike --mote-accent-soft, which is
41
48
  transparent and can vanish over dark backgrounds), so it reads as a
@@ -393,6 +400,25 @@ nav[aria-label="toc"] a:hover {
393
400
  border-radius: inherit;
394
401
  }
395
402
 
403
+ /* A direct inline SVG is a card cover too. Keep this direct-child only:
404
+ nested icons must keep their own dimensions. No fixed aspect ratio —
405
+ the SVG's viewBox determines the rendered height. */
406
+ .mote-card-media > svg {
407
+ display: block;
408
+ width: 100%;
409
+ height: auto;
410
+ max-width: none;
411
+ border-radius: inherit;
412
+ }
413
+
414
+ /* Paint a status row's direct cells when the row opts in. Status classes
415
+ remain token carriers; this helper is the visual step. background-color
416
+ deliberately preserves any existing background-image layer. */
417
+ tr.mote-row-status:is(.mote-success, .mote-warning, .mote-error, .mote-info)
418
+ > :is(td, th[scope="row"]) {
419
+ background-color: var(--mote-status-soft);
420
+ }
421
+
396
422
  /* Scrollable table wrapper: sticky thead, no page scroll, no margin jump */
397
423
  .mote-table-scroll {
398
424
  overflow-x: auto;
package/mote.css CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * mote.css — a mote of styling for plain HTML.
3
- * v0.10.9 · MIT
3
+ * v0.11.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:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mote.css",
3
- "version": "0.10.9",
3
+ "version": "0.11.0",
4
4
  "bugs": {
5
5
  "url": "https://gitlab.com/abmach/mote/-/issues"
6
6
  },