actual-css 0.4.2 → 0.6.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 +66 -3
- package/README.md +2 -2
- package/dist/actual.css +54 -14
- package/dist/actual.full.css +744 -185
- package/dist/actual.full.js +1 -1
- package/dist/actual.full.min.css +1 -1
- package/dist/actual.min.css +1 -1
- package/docs/design-notes/browser-support.md +14 -14
- package/docs/design-notes/enhancement-contract.md +30 -13
- package/docs/design-notes/forced-colors.md +11 -7
- package/docs/design-notes/grid.md +4 -4
- package/docs/design-notes/naming.md +15 -9
- package/docs/design-notes/platform-alignment.md +9 -0
- package/docs/design-notes/references.md +4 -0
- package/docs/design-notes/spacing-units.md +286 -0
- package/docs/design-notes/steps.md +748 -0
- package/docs/design-notes/widget-primitives.md +32 -15
- package/docs/navigation.json +2 -0
- package/docs/pages/components/alert.md +14 -9
- package/docs/pages/components/app-navigation.md +2 -0
- package/docs/pages/components/aura.md +102 -6
- package/docs/pages/components/avatar.md +9 -6
- package/docs/pages/components/badge.md +27 -9
- package/docs/pages/components/button.md +25 -18
- package/docs/pages/components/card.md +27 -7
- package/docs/pages/components/chat.md +1 -1
- package/docs/pages/components/data-list.md +72 -0
- package/docs/pages/components/dialog.md +12 -7
- package/docs/pages/components/drawer.md +3 -1
- package/docs/pages/components/fab.md +14 -10
- package/docs/pages/components/indicator.md +6 -6
- package/docs/pages/components/list.md +11 -2
- package/docs/pages/components/meter.md +56 -1
- package/docs/pages/components/navbar.md +1 -1
- package/docs/pages/components/pagination.md +1 -1
- package/docs/pages/components/progress.md +10 -0
- package/docs/pages/components/rating.md +4 -4
- package/docs/pages/components/skeleton.md +3 -1
- package/docs/pages/components/spinner.md +1 -1
- package/docs/pages/components/steps.md +379 -47
- package/docs/pages/components/table.md +6 -5
- package/docs/pages/enhancements/flyout.md +14 -10
- package/docs/pages/enhancements/overview.md +2 -2
- package/docs/pages/enhancements/scrollspy.md +1 -1
- package/docs/pages/enhancements/status-bar.md +10 -1
- package/docs/pages/enhancements/tabs.md +1 -1
- package/docs/pages/examples/overview.md +4 -1
- package/docs/pages/forms/choice-cards.md +4 -4
- package/docs/pages/forms/combobox.md +87 -0
- package/docs/pages/forms/floating-field.md +5 -3
- package/docs/pages/forms/joined-controls.md +6 -4
- package/docs/pages/forms/labels.md +8 -5
- package/docs/pages/forms/overview.md +26 -19
- package/docs/pages/forms/password.md +3 -2
- package/docs/pages/forms/range.md +15 -2
- package/docs/pages/forms/states-and-sizes.md +7 -5
- package/docs/pages/forms/validation.md +15 -9
- package/docs/pages/foundations/philosophy.md +11 -1
- package/docs/pages/foundations/tokens.md +16 -9
- package/docs/pages/foundations/typography.md +11 -3
- package/docs/pages/guides/bootstrap.md +3 -3
- package/docs/pages/guides/introduction.md +2 -2
- package/docs/pages/guides/modular-import.md +21 -10
- package/docs/pages/guides/progressive-enhancement.md +75 -54
- package/docs/pages/guides/tailwind.md +2 -2
- package/docs/pages/layout/app-shell.md +4 -4
- package/docs/pages/layout/choosing.md +10 -6
- package/docs/pages/layout/grid.md +11 -10
- package/docs/pages/layout/scroll-snap.md +2 -0
- package/docs/pages/layout/sidebar-layout.md +2 -0
- package/docs/pages/layout/stack.md +10 -6
- package/docs/pages/layout/topbar.md +2 -0
- package/docs/pages/patterns/structured-lists.md +7 -7
- package/docs/pages/utilities/accessibility.md +19 -1
- package/docs/pages/utilities/flex.md +20 -13
- package/docs/pages/utilities/links.md +1 -1
- package/docs/pages/utilities/list.md +1 -1
- package/docs/pages/utilities/overflow.md +14 -7
- package/docs/pages/utilities/overview.md +22 -0
- package/docs/pages/utilities/shape.md +1 -1
- package/docs/pages/utilities/sizing-wrapping.md +10 -8
- package/docs/pages/utilities/spacing.md +26 -19
- package/docs/pages/utilities/text.md +1 -1
- package/llms.txt +27 -4
- package/package.json +3 -2
- package/scripts/reserved-classes.json +8 -1
- package/src/css/components/data-list.css +27 -0
- package/src/css/components/drawer.css +30 -11
- package/src/css/components/fab.css +44 -8
- package/src/css/components/flyout.css +17 -12
- package/src/css/components/index.css +1 -0
- package/src/css/components/list.css +3 -1
- package/src/css/components/meter.css +28 -1
- package/src/css/components/modal.css +28 -11
- package/src/css/components/progress.css +5 -0
- package/src/css/components/status-bar.css +31 -15
- package/src/css/components/steps.css +289 -55
- package/src/css/components/surface.css +5 -3
- package/src/css/components/tooltip.css +5 -8
- package/src/css/core/base.css +7 -1
- package/src/css/core/intents.css +6 -0
- package/src/css/core/tokens.css +24 -9
- package/src/css/core/variants.css +17 -4
- package/src/css/effects/aura.css +101 -11
- package/src/css/forms/custom-select.css +1 -1
- package/src/css/forms/floating-field.css +8 -6
- package/src/css/forms/form.css +4 -4
- package/src/css/layout/container-query.css +37 -13
- package/src/css/layout/grid.css +7 -7
- package/src/css/layout/index.css +1 -1
- package/src/css/typography/prose.css +2 -3
- package/src/css/utilities/base.css +16 -0
- package/src/js/password.js +1 -1
- package/src/js/selectors.js +1 -0
- package/src/js/status.js +88 -7
- package/src/js/surface.js +2 -11
- package/src/js/transition.js +20 -0
|
@@ -4,21 +4,38 @@ The JS runtime doubles as a primitive kit for building custom widgets.
|
|
|
4
4
|
|
|
5
5
|
## Primitives
|
|
6
6
|
|
|
7
|
-
| Need
|
|
8
|
-
|
|
9
|
-
|
|
|
10
|
-
| Per-document LIFO Escape dismissal | `escape`
|
|
11
|
-
| Positioning, flip
|
|
12
|
-
| Open/close, sheet
|
|
13
|
-
| Directional item lookup
|
|
14
|
-
| Menu-item vocabulary
|
|
15
|
-
| Focusable lookup, visibility
|
|
16
|
-
| One remembered tab stop
|
|
17
|
-
| Caret-safe value rewriting
|
|
18
|
-
| Character policies
|
|
19
|
-
| Event namespace
|
|
20
|
-
| Declarative triggers
|
|
21
|
-
| State classes the runtime writes
|
|
7
|
+
| Need | Primitive | Import |
|
|
8
|
+
| ---------------------------------- | ------------- | --------------------------- |
|
|
9
|
+
| Discovery, lifecycle, cleanup | `enhance` | `actual-css/js/enhance` |
|
|
10
|
+
| Per-document LIFO Escape dismissal | `escape` | `actual-css/js/escape` |
|
|
11
|
+
| Positioning, flip and shift | `floating` | `actual-css/js/floating` |
|
|
12
|
+
| Open/close, sheet, backdrop, focus | `surface` | `actual-css/js/surface` |
|
|
13
|
+
| Directional item lookup | `keys` | `actual-css/js/keys` |
|
|
14
|
+
| Menu-item vocabulary | `menu` | `actual-css/js/menu` |
|
|
15
|
+
| Focusable lookup, visibility | `focus` | `actual-css/js/focus` |
|
|
16
|
+
| One remembered tab stop | `focus-group` | `actual-css/js/focus-group` |
|
|
17
|
+
| Caret-safe value rewriting | `input` | `actual-css/js/input` |
|
|
18
|
+
| Character policies | `filter` | `actual-css/js/filter` |
|
|
19
|
+
| Event namespace | `events` | `actual-css/js/events` |
|
|
20
|
+
| Declarative triggers | `command` | `actual-css/js/command` |
|
|
21
|
+
| State classes the runtime writes | `selectors` | `actual-css/js/selectors` |
|
|
22
|
+
|
|
23
|
+
The named exports each module carries:
|
|
24
|
+
|
|
25
|
+
- `enhance` — `enhance`, `registerEnhancement`
|
|
26
|
+
- `escape` — `registerEscapeDismissal`
|
|
27
|
+
- `floating` — `track`, `reposition`, `repositionAt`, plus
|
|
28
|
+
`--available-height` and `data-placement`
|
|
29
|
+
- `keys` — `itemForKey`, `firstItem`, `lastItem`, `nextItem`, with edge,
|
|
30
|
+
wrapping and RTL handling
|
|
31
|
+
- `focus-group` — `connectFocusGroup`
|
|
32
|
+
- `input` — `onTextInput`, `setCaret`, `dispatchInput`
|
|
33
|
+
- `events` — `EVENTS`, `ACTUAL_EVENT_PREFIX`
|
|
34
|
+
- `command` — `registerCommands`
|
|
35
|
+
- `selectors` — `CLASSES`
|
|
36
|
+
|
|
37
|
+
`surface` also owns outside-click and Escape dismissal, and focus restore.
|
|
38
|
+
`menu` filters to usable items.
|
|
22
39
|
|
|
23
40
|
## Focus group
|
|
24
41
|
|
package/docs/navigation.json
CHANGED
|
@@ -21,17 +21,20 @@ itself needs to change, not `.soft`.
|
|
|
21
21
|
|
|
22
22
|
## Class reference
|
|
23
23
|
|
|
24
|
-
| Class | Kind | Description
|
|
25
|
-
|
|
26
|
-
| `.alert` | Component | Inline status surface; soft by default.
|
|
27
|
-
| `.alert-icon` | Composition | Decorative leading icon
|
|
28
|
-
| `.alert-dismiss` | Modifier | Compact dismiss button
|
|
29
|
-
| `.callout` | Variant | Neutral panel
|
|
30
|
-
| `.admonition` | Variant |
|
|
24
|
+
| Class | Kind | Description |
|
|
25
|
+
| ---------------- | ----------- | --------------------------------------------- |
|
|
26
|
+
| `.alert` | Component | Inline status surface; soft by default. |
|
|
27
|
+
| `.alert-icon` | Composition | Decorative leading icon, in the first column. |
|
|
28
|
+
| `.alert-dismiss` | Modifier | Compact dismiss button. |
|
|
29
|
+
| `.callout` | Variant | Neutral panel, thick accent leading edge. |
|
|
30
|
+
| `.admonition` | Variant | Tinted title bar, body on the page surface. |
|
|
31
|
+
|
|
32
|
+
`.alert-dismiss` draws itself with the `--icon-close` mask and acts through the
|
|
33
|
+
`--dismiss` command.
|
|
31
34
|
| `.alert-title` | Composition | Admonition title bar; hosts the dismiss button. |
|
|
32
35
|
| `.alert-body` | Composition | Admonition body resting on the page surface. |
|
|
33
36
|
| Shared intents | Intent | `.primary`, `.secondary`, `.success`, `.warning`, `.danger`. |
|
|
34
|
-
| Shared variants | Variant | `.solid
|
|
37
|
+
| Shared variants | Variant | `.solid`, `.outline`, and `.surface` emphasis. |
|
|
35
38
|
| `.sm` / `.lg` | Size | Density; inline padding stays stable. |
|
|
36
39
|
|
|
37
40
|
## Basic usage
|
|
@@ -117,10 +120,12 @@ Use `.alert-dismiss` to let a user remove an inline alert. The button is transpa
|
|
|
117
120
|
```html demo
|
|
118
121
|
<div class="alert warning" id="warning-alert">
|
|
119
122
|
<i class="ti ti-alert-triangle alert-icon" aria-hidden="true"></i>
|
|
120
|
-
|
|
123
|
+
|
|
124
|
+
<div class="stack" style="--gap: var(--space-10)">
|
|
121
125
|
<strong>Warning</strong>
|
|
122
126
|
<p>Something needs your attention.</p>
|
|
123
127
|
</div>
|
|
128
|
+
|
|
124
129
|
<button
|
|
125
130
|
class="alert-dismiss"
|
|
126
131
|
type="button"
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
Use one `.app-nav` landmark for the application's primary destinations. Links
|
|
6
6
|
remain links, and `aria-current="page"` is the only current-page state.
|
|
7
7
|
|
|
8
|
+
**Related terms:** tab bar, bottom navigation, bottom nav, navigation rail, side navigation.
|
|
9
|
+
|
|
8
10
|
```html demo
|
|
9
11
|
<nav class="app-nav" aria-label="Primary">
|
|
10
12
|
<a href="#today" aria-current="page">
|
|
@@ -5,6 +5,32 @@
|
|
|
5
5
|
Aura adds a decorative intent-colored border and halo around one direct child.
|
|
6
6
|
It is visual emphasis only and does not change the child's semantics.
|
|
7
7
|
|
|
8
|
+
```html demo
|
|
9
|
+
<div class="cluster" style="gap: 2.5rem">
|
|
10
|
+
<span class="aura primary">
|
|
11
|
+
<article class="card" style="inline-size: 13rem">
|
|
12
|
+
<p><strong>Rotating arc</strong></p>
|
|
13
|
+
<p class="muted">One lit segment travels around the frame.</p>
|
|
14
|
+
</article>
|
|
15
|
+
</span>
|
|
16
|
+
|
|
17
|
+
<span class="aura aura-glow primary">
|
|
18
|
+
<article class="card" style="inline-size: 13rem">
|
|
19
|
+
<p><strong>Breathing glow</strong></p>
|
|
20
|
+
<p class="muted">The whole perimeter lights and breathes.</p>
|
|
21
|
+
</article>
|
|
22
|
+
</span>
|
|
23
|
+
</div>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`.aura` sends a short accent of light travelling around the frame, over a
|
|
27
|
+
permanent halo that keeps the object present between two passes. Add
|
|
28
|
+
`.aura-glow` to light the whole perimeter evenly instead, as a halo that
|
|
29
|
+
breathes slowly.
|
|
30
|
+
|
|
31
|
+
Aura reads best when it has enough perimeter to travel around, and is naturally
|
|
32
|
+
more pronounced on dark surfaces. It still composes on small shapes:
|
|
33
|
+
|
|
8
34
|
```html demo
|
|
9
35
|
<div class="cluster">
|
|
10
36
|
<span class="aura primary">
|
|
@@ -14,22 +40,92 @@ It is visual emphasis only and does not change the child's semantics.
|
|
|
14
40
|
<span class="aura aura-glow secondary">
|
|
15
41
|
<span class="badge">New</span>
|
|
16
42
|
</span>
|
|
43
|
+
|
|
44
|
+
<span class="aura aura-glow success">
|
|
45
|
+
<span class="badge success soft">Live</span>
|
|
46
|
+
</span>
|
|
47
|
+
|
|
48
|
+
<span class="aura danger">
|
|
49
|
+
<span class="badge danger solid" aria-label="12 unread notifications">12</span>
|
|
50
|
+
</span>
|
|
51
|
+
</div>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Note the intent on the wrapper, not on the child: `.aura` is an intent
|
|
55
|
+
boundary, so the badge or alert inside keeps its own color and the frame keeps
|
|
56
|
+
the one you gave the wrapper. Matching them reads as one object; deliberately
|
|
57
|
+
mismatching them reads as two.
|
|
58
|
+
|
|
59
|
+
```html demo
|
|
60
|
+
<div class="stack" style="max-inline-size: 28rem">
|
|
61
|
+
<span class="aura warning">
|
|
62
|
+
<div class="alert warning" role="alert">
|
|
63
|
+
<i class="ti ti-alert-triangle alert-icon" aria-hidden="true"></i>
|
|
64
|
+
<div>Your trial ends in three days.</div>
|
|
65
|
+
</div>
|
|
66
|
+
</span>
|
|
67
|
+
|
|
68
|
+
<span class="aura aura-glow danger">
|
|
69
|
+
<div class="alert danger" role="alert">
|
|
70
|
+
<i class="ti ti-credit-card-off alert-icon" aria-hidden="true"></i>
|
|
71
|
+
<div>Two payment methods failed. <a href="#">Review them</a>.</div>
|
|
72
|
+
</div>
|
|
73
|
+
</span>
|
|
17
74
|
</div>
|
|
18
75
|
```
|
|
19
76
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
77
|
+
Motion changes how the light lives, never whether the effect is there: when the
|
|
78
|
+
user has requested reduced motion, the travelling accent becomes two opposite
|
|
79
|
+
lit corners — a deliberate composition rather than a rotation frozen at an
|
|
80
|
+
arbitrary angle — and the glow stays a full, still halo.
|
|
81
|
+
|
|
82
|
+
The frame color comes from an intent such as `.primary`, `.success`, or
|
|
83
|
+
`.danger`; there are no separate aura color variants. The intent is sovereign:
|
|
84
|
+
a neutral intent produces a neutral aura. Use a chromatic intent when you want
|
|
85
|
+
a visibly luminous effect.
|
|
86
|
+
|
|
87
|
+
Two hooks tune how loud the effect is. `--aura-intensity` scales both halos at
|
|
88
|
+
once, resting and breathing alike, so the breath stays proportional at every
|
|
89
|
+
setting; `--aura-duration` sets one full rotation of the accent, or one breath
|
|
90
|
+
of the glow.
|
|
91
|
+
|
|
92
|
+
```html demo
|
|
93
|
+
<div class="cluster" style="gap: 2rem">
|
|
94
|
+
<span class="aura aura-glow primary" style="--aura-intensity: 0.4">
|
|
95
|
+
<span class="card" style="inline-size: 8rem">Muted</span>
|
|
96
|
+
</span>
|
|
97
|
+
|
|
98
|
+
<span class="aura aura-glow primary">
|
|
99
|
+
<span class="card" style="inline-size: 8rem">Default</span>
|
|
100
|
+
</span>
|
|
101
|
+
|
|
102
|
+
<span class="aura aura-glow primary" style="--aura-intensity: 2">
|
|
103
|
+
<span class="card" style="inline-size: 8rem">Loud</span>
|
|
104
|
+
</span>
|
|
105
|
+
|
|
106
|
+
<span class="aura primary" style="--aura-duration: 2s">
|
|
107
|
+
<span class="card" style="inline-size: 8rem">Fast accent</span>
|
|
108
|
+
</span>
|
|
109
|
+
</div>
|
|
110
|
+
```
|
|
24
111
|
|
|
25
112
|
Keep exactly one direct child and set `--aura-radius` when its shape differs
|
|
26
113
|
from the common button, card, alert, and badge shapes detected as a visual
|
|
27
114
|
enhancement.
|
|
28
115
|
|
|
116
|
+
The child must be opaque. The frame paints across the whole box and relies on
|
|
117
|
+
the child to cover all but its edge, so a transparent child — an `.outline`
|
|
118
|
+
alert, a `.ghost` button — is filled edge to edge with the frame color instead
|
|
119
|
+
of framed by it. Give such a child a surface, or move the aura to an opaque
|
|
120
|
+
wrapper around it.
|
|
121
|
+
|
|
29
122
|
## CSS hooks
|
|
30
123
|
|
|
31
124
|
- `--aura-color` — frame and halo color; follows the local intent.
|
|
32
125
|
- `--aura-width` — frame thickness.
|
|
33
|
-
- `--aura-blur` — halo blur
|
|
126
|
+
- `--aura-blur` — near halo blur; the far halo derives its own blur and its
|
|
127
|
+
spread beyond the frame from this value, so one hook scales both.
|
|
128
|
+
- `--aura-intensity` — multiplies both halo opacities, resting and breathing.
|
|
129
|
+
It does not touch the frame itself, which stays a crisp line at any setting.
|
|
34
130
|
- `--aura-radius` — child corner radius used to derive the outer radius.
|
|
35
|
-
- `--aura-duration` — rotation
|
|
131
|
+
- `--aura-duration` — one rotation of the accent, or one breath of the glow.
|
|
@@ -12,12 +12,15 @@
|
|
|
12
12
|
|
|
13
13
|
## Class reference
|
|
14
14
|
|
|
15
|
-
| Class
|
|
16
|
-
|
|
17
|
-
| `.avatar`
|
|
18
|
-
| `.avatar-stack`
|
|
19
|
-
| `.badge:empty`
|
|
20
|
-
| `.sm` / `.lg`
|
|
15
|
+
| Class | Kind | Description |
|
|
16
|
+
| --------------- | ----------- | --------------------------------------- |
|
|
17
|
+
| `.avatar` | Component | Initials or image in a circular box. |
|
|
18
|
+
| `.avatar-stack` | Composition | Overlapping avatar group. |
|
|
19
|
+
| `.badge:empty` | Composition | Status dot, at the bottom-end corner. |
|
|
20
|
+
| `.sm` / `.lg` | Size | Density; also rescales `.avatar-stack`. |
|
|
21
|
+
|
|
22
|
+
`.avatar` works on `div`, `a` and `button`. The status dot is an empty
|
|
23
|
+
`.badge` inside an `.avatar`, and needs an `aria-label` of its own.
|
|
21
24
|
|
|
22
25
|
## Basic usage
|
|
23
26
|
|
|
@@ -16,15 +16,21 @@ direct child of `.stack` (where flex children otherwise stretch). Use
|
|
|
16
16
|
`inline-size: 100%` — or the optional `.inline-size-full` utility — when a
|
|
17
17
|
full-width badge is intentional.
|
|
18
18
|
|
|
19
|
+
**Related terms:** chip, tag, pill, removable tag.
|
|
20
|
+
|
|
19
21
|
## Class reference
|
|
20
22
|
|
|
21
|
-
| Class | Kind | Description
|
|
22
|
-
|
|
23
|
-
| `.badge` | Component | Compact label; soft by default.
|
|
24
|
-
| `.badge:empty` | Composition | Truly-empty badge renders as a solid dot.
|
|
25
|
-
| Shared intents | Intent | `.primary`, `.secondary`, `.success`,
|
|
26
|
-
| Shared variants | Variant | `.solid
|
|
27
|
-
| `.sm` / `.lg` | Size | Compact density.
|
|
23
|
+
| Class | Kind | Description |
|
|
24
|
+
| --------------- | ----------- | ----------------------------------------- |
|
|
25
|
+
| `.badge` | Component | Compact label; soft by default. |
|
|
26
|
+
| `.badge:empty` | Composition | Truly-empty badge renders as a solid dot. |
|
|
27
|
+
| Shared intents | Intent | `.primary`, `.secondary`, `.success`, … |
|
|
28
|
+
| Shared variants | Variant | `.solid`, `.outline`, `.surface`. |
|
|
29
|
+
| `.sm` / `.lg` | Size | Compact density. |
|
|
30
|
+
|
|
31
|
+
The shared intents are `.primary`, `.secondary`, `.success`, `.warning` and
|
|
32
|
+
`.danger`. The variants set emphasis: `.solid` is filled, `.outline` bordered,
|
|
33
|
+
`.surface` untinted.
|
|
28
34
|
|
|
29
35
|
## Basic usage
|
|
30
36
|
|
|
@@ -58,13 +64,25 @@ full-width badge is intentional.
|
|
|
58
64
|
</button>
|
|
59
65
|
```
|
|
60
66
|
|
|
61
|
-
##
|
|
67
|
+
## Status dot
|
|
62
68
|
|
|
63
69
|
```html demo
|
|
64
70
|
<span class="badge success" aria-label="Online"></span>
|
|
65
71
|
```
|
|
66
72
|
|
|
67
|
-
|
|
73
|
+
An autonomous dot conveys state without visible text, so give it an accessible
|
|
74
|
+
name.
|
|
75
|
+
|
|
76
|
+
## Color marker
|
|
77
|
+
|
|
78
|
+
Use an empty badge as a compact intent-colored marker in legends and status
|
|
79
|
+
labels. When adjacent text carries the same information, keep the marker
|
|
80
|
+
decorative.
|
|
81
|
+
|
|
82
|
+
```html demo
|
|
83
|
+
<span class="badge primary" aria-hidden="true"></span>
|
|
84
|
+
Regular
|
|
85
|
+
```
|
|
68
86
|
|
|
69
87
|
## Size variants
|
|
70
88
|
|
|
@@ -4,22 +4,23 @@ Actions and navigation with shared intents, variants, sizes, and loading, presse
|
|
|
4
4
|
|
|
5
5
|
## Class reference
|
|
6
6
|
|
|
7
|
-
| Class | Kind | Description
|
|
8
|
-
|
|
9
|
-
| `.btn` | Component | Base button
|
|
10
|
-
| `.primary` | Intent | Primary action.
|
|
11
|
-
| `.secondary` | Intent | Secondary action.
|
|
12
|
-
| `.success` | Intent | Positive outcome.
|
|
13
|
-
| `.warning` | Intent | Caution.
|
|
14
|
-
| `.danger` | Intent | Destructive action.
|
|
15
|
-
| `.neutral` | Intent | Neutral tone (the `.btn` default).
|
|
16
|
-
| `.soft` | Variant | Muted intent-tinted surface.
|
|
17
|
-
| `.outline` | Variant | Transparent with an intent-colored border.
|
|
18
|
-
| `.solid` | Variant | Filled intent background — the `.btn` default.
|
|
19
|
-
| `.
|
|
20
|
-
| `.
|
|
21
|
-
| `.
|
|
22
|
-
| `.
|
|
7
|
+
| Class | Kind | Description |
|
|
8
|
+
| ------------- | --------- | -------------------------------------------------- |
|
|
9
|
+
| `.btn` | Component | Base button, solid by default. |
|
|
10
|
+
| `.primary` | Intent | Primary action. |
|
|
11
|
+
| `.secondary` | Intent | Secondary action. |
|
|
12
|
+
| `.success` | Intent | Positive outcome. |
|
|
13
|
+
| `.warning` | Intent | Caution. |
|
|
14
|
+
| `.danger` | Intent | Destructive action. |
|
|
15
|
+
| `.neutral` | Intent | Neutral tone (the `.btn` default). |
|
|
16
|
+
| `.soft` | Variant | Muted intent-tinted surface. |
|
|
17
|
+
| `.outline` | Variant | Transparent with an intent-colored border. |
|
|
18
|
+
| `.solid` | Variant | Filled intent background — the `.btn` default. |
|
|
19
|
+
| `.surface` | Variant | Page surface, neutral border, intent on the label. |
|
|
20
|
+
| `.ghost` | Variant | Borderless text button (button-only). |
|
|
21
|
+
| `.link` | Variant | Underlined text button (button-only). |
|
|
22
|
+
| `.sm` / `.lg` | Size | Compact or large control height. |
|
|
23
|
+
| `.icon-only` | Variant | Square icon button sized to the control height. |
|
|
23
24
|
|
|
24
25
|
## Basic usage
|
|
25
26
|
|
|
@@ -53,8 +54,12 @@ Shared intent classes set color meaning. They compose with every variant.
|
|
|
53
54
|
|
|
54
55
|
## Variants
|
|
55
56
|
|
|
56
|
-
`.ghost` and `.link` are button-only; `.soft`, `.outline`,
|
|
57
|
-
shared with other components.
|
|
57
|
+
`.ghost` and `.link` are button-only; `.soft`, `.outline`, `.solid`, and
|
|
58
|
+
`.surface` are shared with other components.
|
|
59
|
+
|
|
60
|
+
Reach for `.surface` when a secondary action must sit on an opaque, neutral
|
|
61
|
+
chip: `.outline` lets whatever is behind it show through, and `.soft` is the
|
|
62
|
+
intent-tinted treatment (its baseline fallback uses `--surface-subtle`).
|
|
58
63
|
|
|
59
64
|
Transparent treatments (`.outline`, `.ghost`, `.link`) follow the surrounding
|
|
60
65
|
foreground by default, including on a contrasting `.inverted` surface. A local
|
|
@@ -79,6 +84,8 @@ container. For a plain text link, use a bare `<a>` with no class.
|
|
|
79
84
|
<button class="btn danger outline" type="button">Danger outline</button>
|
|
80
85
|
<button class="btn soft" type="button">Soft</button>
|
|
81
86
|
<button class="btn danger soft" type="button">Danger soft</button>
|
|
87
|
+
<button class="btn surface" type="button">Surface</button>
|
|
88
|
+
<button class="btn danger surface" type="button">Danger surface</button>
|
|
82
89
|
<button class="btn ghost" type="button">Ghost</button>
|
|
83
90
|
<button class="btn link" type="button">Button as link</button>
|
|
84
91
|
</div>
|
|
@@ -4,13 +4,21 @@ Flexible content container with optional header, body, and footer regions, plus
|
|
|
4
4
|
|
|
5
5
|
## Class reference
|
|
6
6
|
|
|
7
|
-
| Class | Kind | Description
|
|
8
|
-
|
|
9
|
-
| `.card` | Component | Neutral raised surface for grouped content.
|
|
10
|
-
| `.raised` | Variant | Elevated surface with a soft shadow.
|
|
11
|
-
| `.subtle` | Variant | Lower contrast against the page surface.
|
|
12
|
-
| `.
|
|
13
|
-
| `.
|
|
7
|
+
| Class | Kind | Description |
|
|
8
|
+
| ----------- | ---------------- | ------------------------------------------- |
|
|
9
|
+
| `.card` | Component | Neutral raised surface for grouped content. |
|
|
10
|
+
| `.raised` | Variant | Elevated surface with a soft shadow. |
|
|
11
|
+
| `.subtle` | Variant | Lower contrast against the page surface. |
|
|
12
|
+
| `.surface` | Variant | The page surface; intent in the text only. |
|
|
13
|
+
| `.inverted` | Surface modifier | Inverse surface treatment. |
|
|
14
|
+
| `.compact` | Variant | Tighter padding for dense contexts. |
|
|
15
|
+
|
|
16
|
+
`.surface` is a shared variant: it paints the page surface instead of
|
|
17
|
+
`--surface-raised` and leaves the intent to the text.
|
|
18
|
+
|
|
19
|
+
`.inverted` paints `--surface-solid` and swaps the foreground to `--surface`,
|
|
20
|
+
so it inverts in dark themes instead of always reading as dark. Write it as
|
|
21
|
+
`class="card inverted"`, or on any block.
|
|
14
22
|
|
|
15
23
|
## Basic usage
|
|
16
24
|
|
|
@@ -162,6 +170,11 @@ the surface tokens, so `.card.subtle.inverted` renders a subtle background with
|
|
|
162
170
|
inverted foreground. Treat them as mutually exclusive, like two competing
|
|
163
171
|
variants.
|
|
164
172
|
|
|
173
|
+
`.surface` is the shared variant on a card: it drops the card to the page
|
|
174
|
+
surface instead of `--surface-raised`, keeps the theme border, and lets an
|
|
175
|
+
intent class color the text only. `.raised` and `.subtle` are the card-local
|
|
176
|
+
treatments on either side of it.
|
|
177
|
+
|
|
165
178
|
```html demo
|
|
166
179
|
<section class="grid">
|
|
167
180
|
<article class="card raised">
|
|
@@ -178,6 +191,13 @@ variants.
|
|
|
178
191
|
</hgroup>
|
|
179
192
|
</article>
|
|
180
193
|
|
|
194
|
+
<article class="card surface">
|
|
195
|
+
<hgroup>
|
|
196
|
+
<h3>Surface</h3>
|
|
197
|
+
<p class="muted">The page surface with the theme border.</p>
|
|
198
|
+
</hgroup>
|
|
199
|
+
</article>
|
|
200
|
+
|
|
181
201
|
<article class="card inverted stack">
|
|
182
202
|
<hgroup>
|
|
183
203
|
<h3>Inverted</h3>
|
|
@@ -37,7 +37,7 @@ put `role="log"` on individual messages.
|
|
|
37
37
|
## Class reference
|
|
38
38
|
|
|
39
39
|
| Class | Description |
|
|
40
|
-
|
|
40
|
+
| ------------------------------- | -------------------------------------------- |
|
|
41
41
|
| `.chat` | Message row grid. |
|
|
42
42
|
| `.chat-start` / `.chat-end` | Logical inline placement. |
|
|
43
43
|
| `.chat-avatar` | Avatar grid slot; compose it with `.avatar`. |
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Data list
|
|
2
|
+
|
|
3
|
+
> A compact key/value layout for object properties.
|
|
4
|
+
|
|
5
|
+
Use `.data-list` to present the properties of a single object as simple
|
|
6
|
+
term–value pairs on a `<dl>`. It expects alternating `<dt>` and `<dd>` children
|
|
7
|
+
— one term, one value per property. Use a plain description list for
|
|
8
|
+
relationships that involve multiple terms or descriptions, and a `<table>` to
|
|
9
|
+
compare the same property across several objects.
|
|
10
|
+
|
|
11
|
+
```html demo
|
|
12
|
+
<dl class="data-list">
|
|
13
|
+
<dt>Name</dt>
|
|
14
|
+
<dd>Alice Martin</dd>
|
|
15
|
+
|
|
16
|
+
<dt>Email</dt>
|
|
17
|
+
<dd>alice@example.com</dd>
|
|
18
|
+
|
|
19
|
+
<dt>Role</dt>
|
|
20
|
+
<dd>Administrator</dd>
|
|
21
|
+
</dl>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Rich values
|
|
25
|
+
|
|
26
|
+
Values accept inline content such as badges, links, dates, or a `.cluster` of
|
|
27
|
+
related items. Terms and values remain baseline-aligned.
|
|
28
|
+
|
|
29
|
+
```html demo
|
|
30
|
+
<dl class="data-list">
|
|
31
|
+
<dt>Status</dt>
|
|
32
|
+
<dd><span class="badge success">Active</span></dd>
|
|
33
|
+
|
|
34
|
+
<dt>Plan</dt>
|
|
35
|
+
<dd>Professional</dd>
|
|
36
|
+
|
|
37
|
+
<dt>Renewal</dt>
|
|
38
|
+
<dd><time datetime="2026-09-14">14 Sep 2026</time></dd>
|
|
39
|
+
</dl>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## In a card
|
|
43
|
+
|
|
44
|
+
`.data-list` composes with `.card` and other layout primitives for business
|
|
45
|
+
metadata.
|
|
46
|
+
|
|
47
|
+
```html demo
|
|
48
|
+
<article class="card stack">
|
|
49
|
+
<h3>Storage details</h3>
|
|
50
|
+
|
|
51
|
+
<dl class="data-list">
|
|
52
|
+
<dt>Used</dt>
|
|
53
|
+
<dd>6.7 GB</dd>
|
|
54
|
+
|
|
55
|
+
<dt>Available</dt>
|
|
56
|
+
<dd>1.3 GB</dd>
|
|
57
|
+
|
|
58
|
+
<dt>Files</dt>
|
|
59
|
+
<dd>12,492</dd>
|
|
60
|
+
</dl>
|
|
61
|
+
</article>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Contract
|
|
65
|
+
|
|
66
|
+
`.data-list` styles one `<dt>` followed by one `<dd>` per property. A valid
|
|
67
|
+
`<dl>` may group several terms with one description or the reverse, but that
|
|
68
|
+
markup does not belong in `.data-list` — use a plain description list instead,
|
|
69
|
+
where `.prose` already covers the editorial cases.
|
|
70
|
+
|
|
71
|
+
Use `.data-list` for the properties of a single object. Use a `<table>` when
|
|
72
|
+
comparing the same properties across multiple objects.
|
|
@@ -2,15 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
> Centered modal overlay for focused tasks, confirmations, or forms, built on the native `<dialog>` element.
|
|
4
4
|
|
|
5
|
+
**Related terms:** modal, alert dialog, confirmation dialog.
|
|
6
|
+
|
|
5
7
|
## Class reference
|
|
6
8
|
|
|
7
|
-
| Class | Kind | Description
|
|
8
|
-
|
|
9
|
-
| `.modal` | Component | Centered
|
|
10
|
-
| `.scrollable` | Variant |
|
|
11
|
-
| `.dialog-confirmation` | Variant |
|
|
12
|
-
| `.dialog-icon` | Component | Circular intent-aware icon well
|
|
13
|
-
| `.dialog-close` | Component | Icon-only close button
|
|
9
|
+
| Class | Kind | Description |
|
|
10
|
+
| ---------------------- | --------- | ---------------------------------------------- |
|
|
11
|
+
| `.modal` | Component | Centered surface on the native `<dialog>`. |
|
|
12
|
+
| `.scrollable` | Variant | Header and footer stay while the body scrolls. |
|
|
13
|
+
| `.dialog-confirmation` | Variant | Message above a full-width action band. |
|
|
14
|
+
| `.dialog-icon` | Component | Circular intent-aware icon well. |
|
|
15
|
+
| `.dialog-close` | Component | Icon-only close button, at the top end. |
|
|
16
|
+
|
|
17
|
+
`.dialog-close` sits outside the content flow, so it does not take part in the
|
|
18
|
+
dialog's own layout.
|
|
14
19
|
|
|
15
20
|
## Usage
|
|
16
21
|
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
> Modal side-sheet that overlays the page for navigation or filters.
|
|
4
4
|
|
|
5
|
+
**Related terms:** off-canvas, side panel, side sheet, navigation drawer.
|
|
6
|
+
|
|
5
7
|
## Class reference
|
|
6
8
|
|
|
7
9
|
| Class | Kind | Description |
|
|
8
|
-
|
|
10
|
+
| --------------- | --------- | ---------------------------------------------------------- |
|
|
9
11
|
| `.drawer` | Component | Modal side-sheet built on the native `<dialog>` element. |
|
|
10
12
|
| `.drawer-close` | Component | Icon-only close button that sits inside the drawer header. |
|
|
11
13
|
|