actual-css 0.12.0 → 0.13.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 +49 -0
- package/README.md +7 -8
- package/components.json +8 -2
- package/dist/actual.full.css +505 -233
- package/dist/actual.full.js +1 -1
- package/dist/actual.full.min.css +1 -1
- package/docs/design-notes/architecture.md +67 -0
- package/docs/design-notes/steps.md +45 -28
- package/docs/pages/components/avatar.md +17 -11
- package/docs/pages/components/breadcrumb.md +16 -2
- package/docs/pages/components/list.md +9 -13
- package/docs/pages/components/navbar.md +42 -22
- package/docs/pages/components/pagination.md +19 -0
- package/docs/pages/components/steps.md +24 -20
- package/docs/pages/enhancements/scrollspy.md +6 -6
- package/docs/pages/enhancements/tabs.md +74 -3
- package/docs/pages/forms/floating-field.md +21 -7
- package/docs/pages/forms/form-actions.md +3 -6
- package/docs/pages/forms/states-and-sizes.md +15 -15
- package/docs/pages/foundations/philosophy.md +97 -1
- package/docs/pages/foundations/tokens.md +40 -4
- package/docs/pages/guides/design-tools.md +1 -1
- package/docs/pages/guides/integrating-actual-css.md +74 -8
- package/docs/pages/guides/introduction.md +3 -2
- package/docs/pages/guides/modular-import.md +1 -1
- package/docs/pages/guides/progressive-enhancement.md +25 -7
- package/docs/pages/guides/upgrading.md +86 -9
- package/docs/pages/layout/center.md +2 -1
- package/docs/pages/layout/cluster.md +11 -4
- package/docs/pages/layout/grid.md +2 -0
- package/docs/pages/layout/sidebar-layout.md +3 -0
- package/docs/pages/layout/switcher.md +2 -0
- package/docs/pages/layout/topbar.md +6 -4
- package/docs/pages/patterns/icon-slot.md +17 -1
- package/docs/pages/utilities/flex.md +1 -1
- package/docs/pages/utilities/sizing-wrapping.md +51 -6
- package/package.json +5 -5
- package/src/cli/actual-css.js +1 -1
- package/src/css/components/alert.css +34 -34
- package/src/css/components/avatar.css +2 -18
- package/src/css/components/badge.css +0 -1
- package/src/css/components/breadcrumb.css +74 -8
- package/src/css/components/drawer.css +23 -42
- package/src/css/components/flyout.css +0 -1
- package/src/css/components/join.css +2 -2
- package/src/css/components/list.css +10 -10
- package/src/css/components/modal.css +17 -10
- package/src/css/components/navbar.css +10 -8
- package/src/css/components/pagination.css +5 -0
- package/src/css/components/scrollspy.css +1 -1
- package/src/css/components/steps.css +66 -12
- package/src/css/components/tab.css +134 -4
- package/src/css/core/focus.css +8 -6
- package/src/css/core/theme.css +6 -1
- package/src/css/core/tokens.css +4 -2
- package/src/css/forms/choice-card.css +1 -1
- package/src/css/forms/choice.css +1 -1
- package/src/css/forms/control.css +1 -1
- package/src/css/forms/floating-field.css +20 -18
- package/src/css/forms/form-actions.css +5 -8
- package/src/css/forms/native.css +2 -2
- package/src/css/forms/otp.css +4 -5
- package/src/css/forms/switch.css +1 -1
- package/src/css/forms/validation.css +23 -30
- package/src/css/layout/center.css +2 -0
- package/src/css/layout/cluster.css +14 -0
- package/src/css/layout/grid.css +7 -0
- package/src/css/layout/scroller.css +19 -3
- package/src/css/layout/sidebar-layout.css +3 -0
- package/src/css/layout/switcher.css +3 -0
- package/src/css/utilities/extra.css +3 -3
- package/src/js/full.js +4 -0
- package/src/js/inline-visible.js +54 -0
- package/src/js/parsed.js +21 -0
- package/src/js/tab.js +33 -7
- package/src/tooling/design-export.js +1 -1
- package/src/tooling/design-tokens.js +44 -33
- package/src/tooling/theme-contrast.js +32 -24
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,55 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.13.0] - 2026-10-06
|
|
6
|
+
### Breaking changes
|
|
7
|
+
|
|
8
|
+
- `--cluster-justify`, `--cluster-align` and `--cluster-wrap` no longer inherit into nested `.cluster` rows; set them on the row itself or select nested rows.
|
|
9
|
+
- `--grid-columns` and `--grid-min` no longer inherit into a nested `.grid`.
|
|
10
|
+
- `.avatar-stack` no longer infers its size from child `.avatar.sm`/`.lg`; set `.sm`/`.lg` on the stack and omit size classes on its avatars.
|
|
11
|
+
- `--focus-outline` has no default value: it is a fallback-only hook that replaces the generic focus line; read `var(--focus-ring-width) solid var(--focus-outline-color)` instead.
|
|
12
|
+
- `data-enhance="tabs"` needs `role="tablist"` on the same element; without it the runtime warns and wires nothing.
|
|
13
|
+
- `.nav-link` shows its current state only for `aria-current="page"` or `"location"`, and `a.list-item` only for `"page"` or `"true"`; any other value, `"false"` included, is inert.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- `actual-css/js/full` now exposes `enhance`, `applyEnhancement`, and `registerEnhancement` from the same runtime that registers the built-ins.
|
|
18
|
+
- `--tab-flex` on `.tabs` sets each tab's flex; `1 1 0` gives equal-width tabs.
|
|
19
|
+
- In supporting browsers, an overflowing link `.tabs` strip or `.steps-horizontal` row starts scrolled to its `aria-current` item, with no runtime (`scroll-initial-target`).
|
|
20
|
+
- `--border-control` sets the resting edge of fields, choices, switches, OTP cells, choice cards, `.join-addon` and the color and file inputs; it defaults to `--border`, which keeps separating surfaces.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- `.steps-horizontal` fits short labels on a phone, wraps (and hyphenates) long names, and aligns its outer stacked steps with the row's edges at every width.
|
|
25
|
+
- `.steps-horizontal` `--step-min` defaults to the marker width and only sets a wider budget; `--step-gap` also separates adjacent steps.
|
|
26
|
+
- `forms/form-actions` no longer has to load after `layout/cluster`: `.form-actions` relays its hooks into the row's `--cluster-*`.
|
|
27
|
+
- An overflowing horizontal `.tabs` strip shows its selected tab in full, at connect and whenever selection changes, scrolling the strip only.
|
|
28
|
+
- `.floating-field` accepts its `.field-label` before or after the control; state is read through `:has()` on the cell.
|
|
29
|
+
- `.list-item` regions center on the row by default; add `.items-start` to the row or the `.list` for rows with long supporting text.
|
|
30
|
+
- A horizontal `.tabs` strip never wraps, nor do its labels: a strip that does not fit scrolls horizontally.
|
|
31
|
+
- `.breadcrumb` never wraps: a trail that does not fit truncates its labels with an ellipsis, ancestors before the current page.
|
|
32
|
+
- A navigation flyout `.tab` shows the current state with `aria-current="true"` while its panel holds the current page.
|
|
33
|
+
- `.breadcrumb` ancestor labels truncate on their `<a>` or `<span>`; the current page also truncates as bare text in an `<li aria-current="page">`.
|
|
34
|
+
- The current `.nav-list` link trait sits inside the row's inline padding with rounded ends, instead of flush on its rounded edge.
|
|
35
|
+
- A horizontal `.tabs` strip hides its scrollbar; selecting or focusing the clipped tab scrolls it into view.
|
|
36
|
+
- An overflowing horizontal `.tabs` strip fades the edges it can still scroll toward, where scroll-driven animations are supported.
|
|
37
|
+
- `.scroller` no longer styles the scrollbar on touch screens, where the native overlay scrollbar, hidden at rest, stays.
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- `actual-css contrast --theme FILE` and `actual-css design --theme FILE` accept a theme written on `:root` and measure its own values, not the default palette.
|
|
42
|
+
- A default `.btn.outline` in a field `.join` takes `--border-control` like the field, not `--border`.
|
|
43
|
+
- The scrolling body of a `dialog.modal.scrollable` and a `dialog.drawer` keeps the focus line of its first and last controls inside its clip.
|
|
44
|
+
- `actual-css contrast` and `actual-css design` detect a theme written `[data-theme = "brand"]` or `[data-theme=brand]`, and ignore selectors quoted in comments.
|
|
45
|
+
- `actual-css contrast` measures a theme whose name contains `&` or `<` under its own name, instead of an island the name had broken.
|
|
46
|
+
- `actual-css contrast` and `actual-css design` reject a `--name` the theme file does not declare as `[data-theme]`, instead of measuring the framework defaults.
|
|
47
|
+
- A bare heading in a `dialog.modal > header` drops its block margins, so the band no longer grows and the title centers on the close.
|
|
48
|
+
- A `<nav>` around `.breadcrumb` or `.tabs` shrinks inside a flex or grid row, so the trail truncates or the strip scrolls instead of the page.
|
|
49
|
+
- An enhanced tablist no longer operates the tabs of a nested `role="tablist"` that has no `data-enhance="tabs"`.
|
|
50
|
+
- A tablist with `data-enhance="tabs"` sets its roving tabindex when a classic script in `<head>` connects it before its tabs are parsed.
|
|
51
|
+
- The generic focus line of links, `summary` and nav items follows a `--focus-ring-width` set on a `[data-theme]` island or any region, like the `.btn` ring beside it.
|
|
52
|
+
- The focus reserve of a scrolling dialog or drawer body is `--focus-outline-offset` + `--focus-ring-width`, no longer widened by `2 × --border-width`.
|
|
53
|
+
|
|
5
54
|
## [0.12.0] - 2026-10-02
|
|
6
55
|
### Breaking changes
|
|
7
56
|
|
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ size is not worth optimizing:
|
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
```html
|
|
67
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/actual-css@0.
|
|
67
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/actual-css@0.13/dist/actual.full.min.css">
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
## Usage
|
|
@@ -137,7 +137,7 @@ registries:
|
|
|
137
137
|
* **Full runtime, zero-config** — every built-in enhancer, compiled:
|
|
138
138
|
|
|
139
139
|
```html
|
|
140
|
-
<script src="https://cdn.jsdelivr.net/npm/actual-css@0.
|
|
140
|
+
<script src="https://cdn.jsdelivr.net/npm/actual-css@0.13/dist/actual.full.js" type="module"></script>
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
* **Your own build** — copy the package's `src/js/full.js` as your entry,
|
|
@@ -174,14 +174,13 @@ For more conservative fallbacks, import and compose the source entrypoints direc
|
|
|
174
174
|
|
|
175
175
|
Actual CSS is before 1.0:
|
|
176
176
|
|
|
177
|
-
* A minor release (`0.
|
|
178
|
-
one
|
|
179
|
-
|
|
180
|
-
* A patch release (`0.11.0` → `0.11.1`) keeps every class and hook. It fixes
|
|
177
|
+
* A minor release (`0.12` → `0.13`) may remove or rename classes and hooks. Each
|
|
178
|
+
one adds a section to [Upgrading](docs/pages/guides/upgrading.md).
|
|
179
|
+
* A patch release (`0.12.0` → `0.12.1`) keeps every class and hook. It fixes
|
|
181
180
|
bugs and may add hooks, so a fix can still move a rendering by a few pixels.
|
|
182
181
|
|
|
183
|
-
The floating
|
|
184
|
-
version (`actual-css@0.
|
|
182
|
+
The floating `actual-css@0.13` CDN path takes patches automatically. Pin the exact
|
|
183
|
+
version (`actual-css@0.13.0`) when the rendering must not change without a
|
|
185
184
|
review.
|
|
186
185
|
|
|
187
186
|
## Browser support
|
package/components.json
CHANGED
|
@@ -74,13 +74,13 @@
|
|
|
74
74
|
"--avatar-size",
|
|
75
75
|
"--avatar-radius",
|
|
76
76
|
"--avatar-font-size",
|
|
77
|
+
"--avatar-bg",
|
|
77
78
|
"--avatar-stack-size",
|
|
78
79
|
"--avatar-stack-font-size",
|
|
79
80
|
"--avatar-stack-overlap",
|
|
80
81
|
"--avatar-stack-ring"
|
|
81
82
|
],
|
|
82
83
|
"internalHooks": [
|
|
83
|
-
"--avatar-bg",
|
|
84
84
|
"--avatar-fg",
|
|
85
85
|
"--avatar-status-translate-x"
|
|
86
86
|
],
|
|
@@ -284,7 +284,8 @@
|
|
|
284
284
|
"--drawer-closed-translate",
|
|
285
285
|
"--drawer-focus-bleed",
|
|
286
286
|
"--drawer-close-reserve",
|
|
287
|
-
"--drawer-motion-duration"
|
|
287
|
+
"--drawer-motion-duration",
|
|
288
|
+
"--drawer-motion-ease"
|
|
288
289
|
],
|
|
289
290
|
"states": [
|
|
290
291
|
"open"
|
|
@@ -637,8 +638,13 @@
|
|
|
637
638
|
"tabs"
|
|
638
639
|
],
|
|
639
640
|
"publicHooks": [
|
|
641
|
+
"--tab-flex",
|
|
640
642
|
"--tab-gap"
|
|
641
643
|
],
|
|
644
|
+
"internalHooks": [
|
|
645
|
+
"--tab-edge",
|
|
646
|
+
"--tab-fade-dir"
|
|
647
|
+
],
|
|
642
648
|
"states": [
|
|
643
649
|
"aria-current",
|
|
644
650
|
"aria-disabled",
|