mote.css 0.5.0 → 0.5.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 +23 -0
- package/README.md +6 -6
- package/mote.components.css +8 -3
- package/mote.css +4 -3
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ 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.5.1] - 2026-10-20
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Pagination: the current page (`aria-current`) kept its pill state on
|
|
13
|
+
hover — previously the generic link hover overrode the accent pill,
|
|
14
|
+
making "you are here" indistinguishable from hovering any other page.
|
|
15
|
+
The current page now deepens on hover (same accent-mix pattern as solid
|
|
16
|
+
buttons); non-current links keep the soft-tint hover. Docs recommend a
|
|
17
|
+
`<span>` for the current page (you are already there — not a link).
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- Logo: a cinematic photograph of a single dust mote floating in warm
|
|
22
|
+
golden sunbeams (docs/img/mote-logo.jpg), integrated into the docs hero.
|
|
23
|
+
- Repositioned from "classless" to "class-optional" throughout — more
|
|
24
|
+
honest now that the library ships ~25 opt-in classes for statuses,
|
|
25
|
+
components, helpers, and layout. The core promise is unchanged:
|
|
26
|
+
zero classes required, semantic elements are the default.
|
|
27
|
+
- Pagination documentation: code sample and live example in the Layout
|
|
28
|
+
section, alongside the breadcrumbs it mirrors.
|
|
29
|
+
|
|
8
30
|
## [0.5.0] - 2026-10-20
|
|
9
31
|
|
|
10
32
|
### Added
|
|
@@ -252,6 +274,7 @@ Components:
|
|
|
252
274
|
- Element gallery demo page (`demo.html`).
|
|
253
275
|
|
|
254
276
|
[0.3.0]: https://gitlab.com/abmach/mote/compare/v0.2.1...v0.3.0
|
|
277
|
+
[0.5.1]: https://gitlab.com/abmach/mote/compare/v0.5.0...v0.5.1
|
|
255
278
|
[0.5.0]: https://gitlab.com/abmach/mote/compare/v0.4.0...v0.5.0
|
|
256
279
|
[0.4.0]: https://gitlab.com/abmach/mote/compare/v0.3.0...v0.4.0
|
|
257
280
|
[0.3.0]: https://gitlab.com/abmach/mote/compare/v0.2.1...v0.3.0
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# mote.css
|
|
2
2
|
|
|
3
|
-
> The smallest thing that can carry style — a tiny, semantic,
|
|
3
|
+
> The smallest thing that can carry style — a tiny, semantic, class-optional CSS layer for plain HTML.
|
|
4
4
|
|
|
5
|
-
A mote of styling for plain HTML: **zero dependencies, zero build step, zero classes required
|
|
5
|
+
A mote of styling for plain HTML: **zero dependencies, zero build step, zero classes required** — but opt-in classes exist for statuses, components, and layout when you want them. Write semantic HTML, drop in one file, and it looks like a place you'd want to stay a while — modern, warm, unobtrusive. Inspired by the quiet excellence of [oat](https://github.com/knadh/oat), with its own cozy voice.
|
|
6
6
|
|
|
7
7
|
Source on [GitLab](https://gitlab.com/abmach/mote) · mirrored on [GitHub](https://github.com/abmach/mote).
|
|
8
8
|
|
|
@@ -23,7 +23,7 @@ Source on [GitLab](https://gitlab.com/abmach/mote) · mirrored on [GitHub](https
|
|
|
23
23
|
|
|
24
24
|
## Principles
|
|
25
25
|
|
|
26
|
-
- **Semantic HTML is the API.** mote styles elements by what they *are* — headings, forms, `dialog`, `menu` — not by the classes they wear.
|
|
26
|
+
- **Semantic HTML is the API.** mote styles elements by what they *are* — headings, forms, `dialog`, `menu` — not by the classes they wear. Zero classes are required; optional classes exist as opt-in conveniences for statuses, components, and helpers.
|
|
27
27
|
- **The platform before the library.** Interactive components ride on native features: `popover`, `dialog`, `<details name>`, `:user-invalid`. Where the browser can do it, mote never ships JavaScript to do it worse.
|
|
28
28
|
- **Tokens all the way down.** Every color, radius, shadow, font and status is a `--mote-*` custom property, and derived tones are computed with `color-mix()`. Status classes set tokens and nothing else — one override re-skins every note, badge and toast. Re-theme by overriding variables, never by fighting selectors.
|
|
29
29
|
- **Weightless by default.** `mote.css` styles your elements; `mote.components.css` is opt-in and CSS-only. You ship zero bytes of library JavaScript, ever.
|
|
@@ -125,7 +125,7 @@ Or self-host with `npm install @fontsource-variable/inter @fontsource/commit-mon
|
|
|
125
125
|
|
|
126
126
|
## Opt-in helpers
|
|
127
127
|
|
|
128
|
-
mote is
|
|
128
|
+
mote is class-optional by design — elements are styled from tags alone; these classes are opt-in conveniences, never a required API:
|
|
129
129
|
|
|
130
130
|
| Class | Purpose |
|
|
131
131
|
|---|---|
|
|
@@ -141,13 +141,13 @@ mote is classless by design; these are the only escape hatches, plus status clas
|
|
|
141
141
|
| Component | Hook |
|
|
142
142
|
|---|---|
|
|
143
143
|
| Document layout (landmark grid) | `.mote-doc` on `<body>` — `:has()` reads your `header`/`nav`/`main`/`aside`/`footer` |
|
|
144
|
-
| Sticky site header / nav pills | `body > header` —
|
|
144
|
+
| Sticky site header / nav pills | `body > header` — semantic; `.mote-header`/`.mote-nav` only for shells wrapped in a `<div>` |
|
|
145
145
|
| Semantic buttons (gated) | `class="mote-success"` etc. on the button itself — themed sections never recolor actions |
|
|
146
146
|
| Ghost buttons | `.mote-ghost` — transparent fill; status tints from the button's own class (gated like solids) |
|
|
147
147
|
| Display text | `.mote-display` — opt-in hero/error-code scale via `--mote-display` |
|
|
148
148
|
| Content rows | `.mote-row` + `.mote-push` — flex row, right-align helper |
|
|
149
149
|
| Pagination | `nav[aria-label="pagination"]` — semantic, no class |
|
|
150
|
-
| Footer baseline | `body > footer` —
|
|
150
|
+
| Footer baseline | `body > footer` — semantic top-border + padding |
|
|
151
151
|
| Screen-reader helper | `.mote-sr-only` (doubles as a skip link when focused) |
|
|
152
152
|
| Status inheritance control | `.mote-default` (force accent) · `.mote-reset` (clear inherited status) |
|
|
153
153
|
| Breadcrumbs | `nav[aria-label="breadcrumb"]` — semantic, no class |
|
package/mote.components.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* mote.components.css — opt-in components for mote.css.
|
|
3
|
-
* v0.5.
|
|
3
|
+
* v0.5.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).
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
/* ---------------------------------------------------------------------------
|
|
111
111
|
* 6. Site header and nav
|
|
112
112
|
*
|
|
113
|
-
* The page shell is styled
|
|
113
|
+
* The page shell is styled semantically: a header that is a direct
|
|
114
114
|
* child of <body> is the site bar, its nav the pill row. The classes
|
|
115
115
|
* exist for the one case landmarks cannot express — a shell wrapped
|
|
116
116
|
* in a <div> (common with frameworks), where body > header cannot
|
|
@@ -200,7 +200,7 @@ nav[aria-label="pagination"] a {
|
|
|
200
200
|
transition: background var(--mote-transition), color var(--mote-transition);
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
-
nav[aria-label="pagination"] a:hover {
|
|
203
|
+
nav[aria-label="pagination"] a:hover:not([aria-current]) {
|
|
204
204
|
background: var(--mote-accent-soft);
|
|
205
205
|
color: var(--mote-accent-deep);
|
|
206
206
|
}
|
|
@@ -210,6 +210,11 @@ nav[aria-label="pagination"] [aria-current="page"] {
|
|
|
210
210
|
color: var(--mote-on-accent);
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
+
nav[aria-label="pagination"] [aria-current="page"]:hover {
|
|
214
|
+
background: color-mix(in oklab, var(--mote-accent), var(--mote-fg) 14%);
|
|
215
|
+
color: var(--mote-on-accent);
|
|
216
|
+
}
|
|
217
|
+
|
|
213
218
|
/* Page footer: the quiet sibling of the site header */
|
|
214
219
|
:where(body > footer, .mote-footer) {
|
|
215
220
|
margin-block-start: 3rem;
|
package/mote.css
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* mote.css — a mote of styling for plain HTML.
|
|
3
|
-
* v0.5.
|
|
3
|
+
* v0.5.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:
|
|
7
|
-
* framework-agnostic, semantic,
|
|
7
|
+
* framework-agnostic, semantic, class-optional, zero dependencies.
|
|
8
8
|
*
|
|
9
9
|
* MIT License. Fonts (Inter, Commit Mono) are NOT bundled.
|
|
10
10
|
* See the README for one-line self-hosting instructions.
|
|
@@ -625,7 +625,8 @@ progress, meter {
|
|
|
625
625
|
/* ---------------------------------------------------------------------------
|
|
626
626
|
* 11. Opt-in helpers
|
|
627
627
|
*
|
|
628
|
-
* mote is
|
|
628
|
+
* mote is class-optional by design — elements are styled from tags
|
|
629
|
+
* alone; these classes are opt-in conveniences, never a required API.
|
|
629
630
|
* ------------------------------------------------------------------------- */
|
|
630
631
|
|
|
631
632
|
/* Centered page wrapper: <main class="mote-container"> */
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mote.css",
|
|
3
|
-
"version": "0.5.
|
|
4
|
-
"description": "A mote of styling for plain HTML — tiny, semantic,
|
|
3
|
+
"version": "0.5.1",
|
|
4
|
+
"description": "A mote of styling for plain HTML — tiny, semantic, class-optional CSS with zero dependencies and no build step.",
|
|
5
5
|
"style": "mote.css",
|
|
6
6
|
"files": [
|
|
7
7
|
"mote.css",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
],
|
|
13
13
|
"keywords": [
|
|
14
14
|
"css",
|
|
15
|
-
"
|
|
15
|
+
"class-optional",
|
|
16
16
|
"semantic",
|
|
17
17
|
"framework-agnostic",
|
|
18
18
|
"dark-mode",
|