@apliteni/apliteni-ui 0.94.0 → 0.95.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/guidelines/accessibility-floor.md +3 -3
- package/guidelines/state-set.md +3 -3
- package/package.json +1 -1
- package/react/dist/index.css +19 -12
- package/src/styles/back.css +2 -2
- package/src/styles/badge.css +11 -11
- package/src/styles/base.css +6 -6
- package/src/styles/button.css +16 -13
- package/src/styles/callout.css +11 -11
- package/src/styles/card.css +5 -5
- package/src/styles/code.css +15 -26
- package/src/styles/command-palette.css +13 -10
- package/src/styles/confirm.css +5 -5
- package/src/styles/drawer.css +6 -7
- package/src/styles/dropdown.css +29 -19
- package/src/styles/feedback.css +11 -11
- package/src/styles/file-drop.css +2 -2
- package/src/styles/filter-bar.css +10 -8
- package/src/styles/footer.css +12 -7
- package/src/styles/input.css +20 -12
- package/src/styles/layout.css +20 -20
- package/src/styles/loading.css +1 -1
- package/src/styles/motion.css +1 -1
- package/src/styles/nav.css +18 -18
- package/src/styles/pagination.css +6 -1
- package/src/styles/segmented.css +26 -18
- package/src/styles/success.css +4 -4
- package/src/styles/table.css +10 -10
- package/src/styles/tabs.css +2 -2
- package/src/styles/tooltip.css +1 -1
- package/src/styles/topbar.css +29 -21
- package/src/tokens/tokens.css +23 -31
package/src/styles/confirm.css
CHANGED
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
flex-direction: column;
|
|
62
62
|
gap: var(--space-2);
|
|
63
63
|
padding: var(--space-5);
|
|
64
|
-
background: var(--confirm-surface);
|
|
64
|
+
background: var(--confirm-surface);
|
|
65
65
|
/* The two-step edge and the drop, through the level's own names: in DARK that is
|
|
66
66
|
--border-strong outside and --border one pixel inside it, then the drop; in LIGHT
|
|
67
67
|
both lines are transparent and the drop carries the whole separation.
|
|
@@ -76,11 +76,11 @@
|
|
|
76
76
|
transform var(--dur-med) var(--ease);
|
|
77
77
|
}
|
|
78
78
|
.ui-confirm.is-open .ui-confirm__panel { opacity: 1; transform: none; }
|
|
79
|
-
/* The ring
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
/* The ring leaves the panel's own elevation alone: it is an outline since #578, so
|
|
80
|
+
it no longer has to be composed into the box-shadow list that carries the edge and
|
|
81
|
+
the drop — and the list no longer has to be restated here to survive focus.
|
|
82
82
|
why: docs/foundations.md#elevation */
|
|
83
|
-
.ui-confirm__panel:focus-visible { outline:
|
|
83
|
+
.ui-confirm__panel:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
84
84
|
|
|
85
85
|
/* -- Slots ----------------------------------------------------------------- */
|
|
86
86
|
/* The question and the answers keep their size; the consequence between them is
|
package/src/styles/drawer.css
CHANGED
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
position: absolute;
|
|
58
58
|
display: flex;
|
|
59
59
|
flex-direction: column;
|
|
60
|
-
background: var(--drawer-surface);
|
|
60
|
+
background: var(--drawer-surface);
|
|
61
61
|
/* A drawer is flush to a screen edge, so it has one edge rather than four and the
|
|
62
62
|
two-step edge runs along that one: --border-strong on the edge rule below, the
|
|
63
63
|
inner line one pixel inside it. This is the one floating surface that writes no
|
|
@@ -111,11 +111,10 @@
|
|
|
111
111
|
transform: translateY(100%);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
/* The ring
|
|
115
|
-
|
|
116
|
-
take the drawer's edge and its drop off for as long as it held focus.
|
|
114
|
+
/* The ring leaves the drawer's own elevation alone: it is an outline since #578, so
|
|
115
|
+
the edge and the drop no longer have to be restated here to survive focus.
|
|
117
116
|
why: docs/foundations.md#elevation */
|
|
118
|
-
.ui-drawer__panel:focus-visible { outline:
|
|
117
|
+
.ui-drawer__panel:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
119
118
|
|
|
120
119
|
/* -- Sizes ----------------------------------------------------------------- */
|
|
121
120
|
/* left|right → width; top|bottom → height. Same names, axis chosen by side. */
|
|
@@ -166,8 +165,8 @@
|
|
|
166
165
|
background var(--dur-fast) var(--ease),
|
|
167
166
|
border-color var(--dur-fast) var(--ease);
|
|
168
167
|
}
|
|
169
|
-
.ui-drawer__close:hover { color: var(--strong); background: var(--surface-3); /*
|
|
170
|
-
.ui-drawer__close:focus-visible { outline:
|
|
168
|
+
.ui-drawer__close:hover { color: var(--strong); background: var(--surface-3); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ }
|
|
169
|
+
.ui-drawer__close:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
171
170
|
.ui-drawer__close svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 2.1; }
|
|
172
171
|
|
|
173
172
|
.ui-drawer__body {
|
package/src/styles/dropdown.css
CHANGED
|
@@ -17,14 +17,18 @@
|
|
|
17
17
|
font-size: calc(var(--text-sm) - 0.5px);
|
|
18
18
|
font-weight: 500;
|
|
19
19
|
color: var(--text);
|
|
20
|
-
background: var(--surface); /*
|
|
20
|
+
background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
|
|
21
21
|
border: 1px solid var(--border);
|
|
22
22
|
border-radius: var(--radius-pill);
|
|
23
23
|
padding: 7px 11px 7px 13px;
|
|
24
24
|
transition: border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
/* The hover edge steps aside under the band: an accent edge one pixel inside an
|
|
27
|
+
accent band is the second band #578 round r34 took off the focus rules, and a
|
|
28
|
+
pointer resting on a focused control would put it back. One indicator, which is
|
|
29
|
+
what the kit's rows already chose. why: docs/foundations.md#the-focus-ring */
|
|
30
|
+
.ui-dropdown__trigger:hover:not(:focus-visible) { border-color: var(--accent); }
|
|
31
|
+
.ui-dropdown__trigger:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
28
32
|
.ui-dropdown__pre { color: var(--text); }
|
|
29
33
|
.ui-dropdown__value { color: var(--strong); font-weight: 600; letter-spacing: 0.01em; }
|
|
30
34
|
|
|
@@ -70,7 +74,7 @@
|
|
|
70
74
|
min-width: 240px;
|
|
71
75
|
/* The floating step, not the sunken one — a panel held open over a card cannot be
|
|
72
76
|
painted the colour of an inset. why: docs/foundations.md#elevation */
|
|
73
|
-
background: var(--bg-elevated);
|
|
77
|
+
background: var(--bg-elevated);
|
|
74
78
|
/* The two-step edge and the drop, through the level's own names: in DARK that is
|
|
75
79
|
--border-strong outside and --border one pixel inside it, then the drop; in LIGHT
|
|
76
80
|
both lines are transparent and the drop carries the whole separation.
|
|
@@ -101,10 +105,10 @@
|
|
|
101
105
|
author rule — so `.is-scroll` took the browser's outline, black in light mode.
|
|
102
106
|
#457 refused that, and #487's review measured it here. Written for every panel
|
|
103
107
|
rather than the scrolling one, as the palette and the drawer write it, because
|
|
104
|
-
a panel that takes focus any other way has the same claim on the ring. The
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
.ui-dropdown__panel:focus-visible { outline:
|
|
108
|
+
a panel that takes focus any other way has the same claim on the ring. The ring
|
|
109
|
+
is an outline since #578, so it leaves the box-shadow list that carries the panel's
|
|
110
|
+
edge and its drop standing. why: docs/foundations.md#elevation */
|
|
111
|
+
.ui-dropdown__panel:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
108
112
|
|
|
109
113
|
/* Opening upward. The kit releases its own `top` here so that nothing outside
|
|
110
114
|
the kit has to: an absolute box with both edges pinned is stretched between
|
|
@@ -172,9 +176,12 @@
|
|
|
172
176
|
color: var(--text);
|
|
173
177
|
transition: background var(--dur-fast) var(--ease);
|
|
174
178
|
}
|
|
175
|
-
/* Rows keep a reading surface; hover adds an edge.
|
|
176
|
-
|
|
177
|
-
|
|
179
|
+
/* Rows keep a reading surface; hover adds an edge. A row that is hovered AND focused
|
|
180
|
+
draws the ring and not the hover edge — both are outlines now, and the focus rule
|
|
181
|
+
comes later — which is one indicator rather than two.
|
|
182
|
+
why: docs/foundations.md#elevation */
|
|
183
|
+
.ui-dropdown__item:hover { outline: 1px solid var(--control-edge); outline-offset: -1px; background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ }
|
|
184
|
+
.ui-dropdown__item:focus-visible { background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
178
185
|
.ui-dropdown__main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
|
|
179
186
|
.ui-dropdown__label { font-family: var(--font-sans); font-size: calc(var(--text-sm) - 0.5px); color: var(--strong); font-weight: 600; letter-spacing: 0.01em; }
|
|
180
187
|
.ui-dropdown__desc { font-size: var(--text-xs); color: var(--text); line-height: 1.35; }
|
|
@@ -200,11 +207,11 @@
|
|
|
200
207
|
margin-left: auto;
|
|
201
208
|
flex: none;
|
|
202
209
|
color: var(--text);
|
|
203
|
-
background: color-mix(in srgb, var(--muted) 12%, transparent); /*
|
|
210
|
+
background: color-mix(in srgb, var(--muted) 12%, transparent); /* code-bg: inherit — decorative or text-only paint; nothing nested reads a ground from it. */
|
|
204
211
|
}
|
|
205
|
-
.ui-dropdown__badge.is-live { color: var(--chip-success-ink); background: var(--chip-success-fill); /*
|
|
212
|
+
.ui-dropdown__badge.is-live { color: var(--chip-success-ink); background: var(--chip-success-fill); /* code-bg: inherit — decorative or text-only paint; nothing nested reads a ground from it. */ }
|
|
206
213
|
:root[data-theme="light"] .ui-dropdown__badge:not(.is-live) {
|
|
207
|
-
background: color-mix(in srgb, var(--muted) 15%, transparent); /*
|
|
214
|
+
background: color-mix(in srgb, var(--muted) 15%, transparent); /* code-bg: inherit — decorative or text-only paint; nothing nested reads a ground from it. */
|
|
208
215
|
}
|
|
209
216
|
|
|
210
217
|
/* Disabled + danger rows */
|
|
@@ -276,7 +283,7 @@
|
|
|
276
283
|
font-size: calc(var(--text-sm) - 0.5px);
|
|
277
284
|
color: var(--strong);
|
|
278
285
|
/* The ground and line .ui-input takes. why: docs/foundations.md#elevation */
|
|
279
|
-
background: var(--field-bg); /*
|
|
286
|
+
background: var(--field-bg); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
|
|
280
287
|
border: 1px solid var(--field-edge);
|
|
281
288
|
border-radius: var(--radius-sm);
|
|
282
289
|
padding: 8px 12px 8px 34px;
|
|
@@ -291,7 +298,7 @@
|
|
|
291
298
|
|
|
292
299
|
.ui-dropdown__search-input::placeholder { /* muted-ink: placeholder — empty search field */ color: var(--muted); }
|
|
293
300
|
.ui-dropdown__search-input:hover { border-color: var(--field-edge-hover); }
|
|
294
|
-
.ui-dropdown__search-input:focus-visible { outline:
|
|
301
|
+
.ui-dropdown__search-input:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
295
302
|
|
|
296
303
|
.ui-dropdown__list { max-height: 300px; overflow-y: auto; }
|
|
297
304
|
/* Rows are `role="option" tabindex="-1"`, so the LIST takes the keyboard stop and
|
|
@@ -304,9 +311,12 @@
|
|
|
304
311
|
query hides is put away here. */
|
|
305
312
|
.ui-dropdown__list [hidden] { display: none; } /* motion: still — a row the query no longer matches is gone on the next keystroke */
|
|
306
313
|
|
|
307
|
-
/* The row Enter would pick. Focus stays in the field, which carries the ring,
|
|
308
|
-
|
|
309
|
-
|
|
314
|
+
/* The row Enter would pick. Focus stays in the field, which carries the ring, so this
|
|
315
|
+
row is marked by its fill alone — the inset accent bar beside it was an edge on a
|
|
316
|
+
selected row, which #578 round r34 took off every selected state. --surface-2, not
|
|
317
|
+
--surface: the panel is --bg-elevated, which --surface matches exactly in light, so
|
|
318
|
+
the bar had been the whole mark there. 1.183:1 in light, 1.234:1 in dark. */
|
|
319
|
+
.ui-dropdown__item.is-active { background: var(--surface-2); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ }
|
|
310
320
|
|
|
311
321
|
/* No match — a nudge and no action, per Guidelines / Microcopy. Empty while
|
|
312
322
|
anything matches, so it takes no room. */
|
package/src/styles/feedback.css
CHANGED
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
/* The composer panel (bottom-centre) */
|
|
67
67
|
.ui-fbcomposer {
|
|
68
68
|
position: fixed; z-index: 71; left: 50%; bottom: 26px; transform: translateX(-50%) translateY(14px);
|
|
69
|
-
width: min(520px, calc(100vw - 32px)); background: var(--bg-elevated);
|
|
69
|
+
width: min(520px, calc(100vw - 32px)); background: var(--bg-elevated); border-radius: 18px;
|
|
70
70
|
/* The shadow was its only edge until #295, which replaced it with the hairline; since
|
|
71
71
|
#490 light is back on the drop and dark keeps the line.
|
|
72
72
|
why: docs/foundations.md#elevation */
|
|
@@ -80,31 +80,31 @@
|
|
|
80
80
|
.ui-fbc__head { display: flex; align-items: center; gap: 12px; padding: 17px 20px 0; }
|
|
81
81
|
.ui-fbc__chip { display: inline-flex; align-items: center; gap: 8px; color: var(--accent); font-size: var(--text-sm); font-weight: var(--weight-semibold); letter-spacing: .01em; white-space: nowrap; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
|
|
82
82
|
.ui-fbc__chip svg { width: 14px; height: 14px; flex: none; opacity: .85; stroke-width: 2.7; }
|
|
83
|
-
.ui-fbc__x { margin-left: auto; background: var(--surface); /*
|
|
83
|
+
.ui-fbc__x { margin-left: auto; background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ /* muted-ink: glyph — dismiss icon */ color: var(--dim); border: 0; width: 28px; height: 28px; border-radius: 8px; cursor: pointer; display: grid; place-items: center; flex: none; font: inherit; }
|
|
84
84
|
.ui-fbc__x:hover { color: var(--strong); }
|
|
85
|
-
.ui-fbc__x:focus-visible { outline:
|
|
85
|
+
.ui-fbc__x:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
86
86
|
.ui-fbc__x svg { width: 14px; height: 14px; stroke-width: 2.7; }
|
|
87
|
-
.ui-fbc__quote { margin: 14px 20px 0; background: var(--surface); /*
|
|
87
|
+
.ui-fbc__quote { margin: 14px 20px 0; background: var(--surface); /* code-bg: inherit — decorative or text-only paint; nothing nested reads a ground from it. */ border-radius: 12px; padding: 12px 15px; display: flex; gap: 11px; }
|
|
88
88
|
.ui-fbc__qm { color: var(--accent); font-size: var(--text-xl); font-weight: var(--weight-bold); line-height: .9; flex: none; opacity: .55; }
|
|
89
89
|
.ui-fbc__quote q { quotes: none; color: var(--text); font-style: italic; font-size: calc(var(--text-sm) + 0.5px); line-height: 1.55; }
|
|
90
90
|
.ui-fbc__body { padding: 14px 20px 0; }
|
|
91
91
|
.ui-fbcomposer textarea {
|
|
92
92
|
width: 100%; min-height: 96px; resize: vertical; font-family: var(--font-sans); font-size: var(--text-base); line-height: 1.55;
|
|
93
|
-
color: var(--strong); background: var(--surface); /*
|
|
93
|
+
color: var(--strong); background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ border: 1px solid var(--field-edge); border-radius: 12px; padding: 13px 15px; transition: box-shadow var(--dur-fast) var(--ease);
|
|
94
94
|
}
|
|
95
95
|
.ui-fbcomposer textarea::placeholder { /* muted-ink: placeholder — empty feedback field */ color: var(--muted); }
|
|
96
|
-
.ui-fbcomposer textarea:focus-visible { outline:
|
|
96
|
+
.ui-fbcomposer textarea:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
97
97
|
.ui-fbc__foot { display: flex; align-items: center; justify-content: flex-end; gap: 12px; padding: 16px 20px 18px; }
|
|
98
98
|
|
|
99
99
|
.ui-fbbtn { font-family: var(--font-sans); font-size: calc(var(--text-sm) + 0.5px); font-weight: var(--weight-semibold); border-radius: 10px; padding: 9px 17px; cursor: pointer; border: 0; transition: filter var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease); }
|
|
100
100
|
.ui-fbbtn.ghost { background: transparent; color: var(--text); }
|
|
101
|
-
.ui-fbbtn.ghost:hover { color: var(--strong); background: var(--surface); /*
|
|
102
|
-
.ui-fbbtn:focus-visible { outline:
|
|
101
|
+
.ui-fbbtn.ghost:hover { color: var(--strong); background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ }
|
|
102
|
+
.ui-fbbtn:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
103
103
|
.ui-fbbtn.primary { background: var(--accent-strong); color: var(--accent-contrast); display: inline-flex; align-items: center; gap: 9px; }
|
|
104
104
|
.ui-fbbtn.primary:hover { filter: brightness(1.08); }
|
|
105
105
|
/* Same flat pair as .ui-btn:disabled, for the same reason (#220). */
|
|
106
106
|
.ui-fbbtn.primary:disabled {
|
|
107
|
-
background: var(--disabled-surface); /*
|
|
107
|
+
background: var(--disabled-surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
|
|
108
108
|
/* muted-ink: state — unavailable control */ color: var(--disabled-ink);
|
|
109
109
|
cursor: default;
|
|
110
110
|
filter: none;
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
@keyframes uiFbSpin { to { transform: rotate(360deg); } }
|
|
115
115
|
|
|
116
116
|
/* Success state */
|
|
117
|
-
.ui-fbc__done { padding: 30px 26px 24px; text-align: center; background: radial-gradient(112% 60% at 50% 0%, var(--glow-green), transparent 62%); /*
|
|
117
|
+
.ui-fbc__done { padding: 30px 26px 24px; text-align: center; background: radial-gradient(112% 60% at 50% 0%, var(--glow-green), transparent 62%); /* code-bg: inherit — a wash paints over a ground and behind a chip, so the opaque ground below it is the step. */ }
|
|
118
118
|
.ui-fbc__ck { width: 88px; height: 88px; margin: 0 auto 13px; display: grid; place-items: center; }
|
|
119
119
|
.ui-fbck { width: 88px; height: 88px; overflow: visible; display: block; transform-origin: center; animation: uiFbCkSpring 1s cubic-bezier(.22,1,.3,1) both; } /* motion: choreographed — the frame the mark and the comet are timed against */
|
|
120
120
|
.ui-fbck-t { fill: none; stroke: var(--surface); stroke-width: 9; stroke-linecap: round; stroke-linejoin: round; }
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
@keyframes uiFbCkSpring { 0% { transform: scale(1.32); } 62% { transform: scale(.965); } 82% { transform: scale(1.02); } 100% { transform: scale(1); } }
|
|
130
130
|
|
|
131
131
|
/* Error banner */
|
|
132
|
-
.ui-fbc__err { margin: 14px 20px 0; background: color-mix(in srgb, var(--pink) 14%, transparent); /*
|
|
132
|
+
.ui-fbc__err { margin: 14px 20px 0; background: color-mix(in srgb, var(--pink) 14%, transparent); /* code-bg: inherit — text-only validation message has no nested focus target. */ color: var(--pink); font-size: var(--text-sm); padding: 11px 15px; border-radius: 11px; display: none; }
|
|
133
133
|
.ui-fbc__err.show { display: block; }
|
|
134
134
|
/* A failed send's line fades in; wireFeedback() adds the class as it shows it. */
|
|
135
135
|
.ui-fbc__err.is-entering { animation: m-fade var(--dur-fast) var(--ease-out) both; }
|
package/src/styles/file-drop.css
CHANGED
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
width: 100%;
|
|
59
59
|
height: 6px;
|
|
60
60
|
border-radius: var(--radius-pill);
|
|
61
|
-
background: var(--surface-2); /*
|
|
61
|
+
background: var(--surface-2); /* code-bg: inherit — a progress track holds no focus target. */
|
|
62
62
|
overflow: hidden;
|
|
63
63
|
}
|
|
64
64
|
.ui-drop__bar span { display: block; height: 100%; background: var(--accent); }
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
padding: var(--space-3);
|
|
74
74
|
border: 1px dashed var(--accent);
|
|
75
75
|
border-radius: var(--radius-md);
|
|
76
|
-
background: var(--surface); /*
|
|
76
|
+
background: var(--surface); /* code-bg: inherit — the target is painted while a file is over the region and holds no focus target. */
|
|
77
77
|
color: var(--strong);
|
|
78
78
|
font-size: var(--text-sm);
|
|
79
79
|
text-align: center;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.ui-filter-bar__chip .ui-dropdown__trigger { border: 0; background: transparent; padding: var(--space-1) var(--space-2); }
|
|
5
5
|
.ui-filter-bar__remove { border: 0; background: transparent; color: var(--text); font: inherit; text-align: center; font-size: var(--text-lg); padding: 0; min-width: 24px; min-height: 24px; border-radius: var(--radius-xs); cursor: pointer; }
|
|
6
6
|
.ui-filter-bar__remove:focus-visible,
|
|
7
|
-
.ui-filter-bar:focus-visible { outline:
|
|
7
|
+
.ui-filter-bar:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
8
8
|
.ui-filter-bar button:disabled { /* muted-ink: state — disabled filters */ color: var(--disabled-ink); cursor: not-allowed; }
|
|
9
9
|
|
|
10
10
|
.ui-filter-bar .ui-dropdown__value { color: inherit; }
|
|
@@ -69,18 +69,20 @@
|
|
|
69
69
|
check is what identifies the state under WCAG 1.4.1; Apple, Material, Carbon,
|
|
70
70
|
Primer and Radix all tick a chosen menu row. #549
|
|
71
71
|
why: docs/components.md#a-filter-row-holds-its-panels */
|
|
72
|
-
.ui-filter-bar .ui-dropdown__item.is-selected { background: var(--glow-purple); /*
|
|
72
|
+
.ui-filter-bar .ui-dropdown__item.is-selected { background: var(--glow-purple); /* code-bg: inherit — a translucent wash moves the ground, not the chip on it. */ }
|
|
73
73
|
/* Kit-wide a chosen label steps down to --text, which left the row in force the
|
|
74
74
|
faintest in the panel. Under the wash it holds --strong. */
|
|
75
75
|
.ui-filter-bar .ui-dropdown__item.is-selected .ui-dropdown__label { color: var(--strong); }
|
|
76
|
-
/*
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
/* Focus sets an opaque --surface, which would take the wash off; restated here so
|
|
77
|
+
the guarantee is one declaration a reader and filter-selected-mark.test.js can
|
|
78
|
+
both find. Focus still reads by its own paint — the kit's band, which #578 made a
|
|
79
|
+
real outline a pixel off the row.
|
|
79
80
|
why: guidelines/accessibility-floor.md#measurable-pairs */
|
|
80
|
-
.ui-filter-bar .ui-dropdown__item.is-selected:focus-visible,
|
|
81
|
-
.ui-filter-bar .ui-dropdown__item.is-selected.is-active { background: var(--glow-purple); /* ring-gap: inherit — translucent wash retains the opaque containing gap. */ }
|
|
81
|
+
.ui-filter-bar .ui-dropdown__item.is-selected:focus-visible { background: var(--glow-purple); /* code-bg: inherit — a translucent wash moves the ground, not the chip on it. */ }
|
|
82
82
|
/* Hover's other paint is a 1px edge, 1.06:1 on the wash, which left the row in force
|
|
83
83
|
the one row a pointer got no answer from. Selection is a background highlight, so
|
|
84
84
|
hover deepens it: 9% more accent, the step .ui-table--zebra gives a hovered row.
|
|
85
|
+
The arrow keys need nothing here: ddSetActive() writes no .is-active without a search
|
|
86
|
+
field and filterBar() builds none, so an arrow key moves real focus instead. #578
|
|
85
87
|
why: docs/components.md#a-filter-row-holds-its-panels */
|
|
86
|
-
.ui-filter-bar .ui-dropdown__item.is-selected:hover { background: color-mix(in srgb, var(--glow-purple), var(--accent) 9%); /*
|
|
88
|
+
.ui-filter-bar .ui-dropdown__item.is-selected:hover { background: color-mix(in srgb, var(--glow-purple), var(--accent) 9%); /* code-bg: inherit — a translucent wash moves the ground, not the chip on it. */ }
|
package/src/styles/footer.css
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
--footer-title: var(--strong);
|
|
15
15
|
--footer-text: var(--text);
|
|
16
16
|
|
|
17
|
-
background: var(--footer-surface); /*
|
|
17
|
+
background: var(--footer-surface); /* code-bg: inherit — transparent footer inherits; the app variant composes its opaque surface. */
|
|
18
18
|
border-top: 1px solid var(--footer-border);
|
|
19
19
|
color: var(--footer-text);
|
|
20
20
|
font-family: var(--font-sans);
|
|
@@ -55,14 +55,19 @@
|
|
|
55
55
|
border-radius: 10px;
|
|
56
56
|
border: 1px solid var(--footer-border);
|
|
57
57
|
color: var(--footer-link);
|
|
58
|
-
background: var(--surface); /*
|
|
58
|
+
background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
|
|
59
59
|
transition:
|
|
60
60
|
color var(--dur-fast) var(--ease),
|
|
61
61
|
border-color var(--dur-fast) var(--ease),
|
|
62
62
|
transform var(--dur-fast) var(--ease);
|
|
63
63
|
}
|
|
64
|
-
.ui-footer__social:hover { color: var(--accent);
|
|
65
|
-
|
|
64
|
+
.ui-footer__social:hover { color: var(--accent); transform: translateY(-1px); }
|
|
65
|
+
/* The hover edge steps aside under the band: an accent edge one pixel inside an
|
|
66
|
+
accent band is the second band #578 round r34 took off the focus rules, and a
|
|
67
|
+
pointer resting on a focused control would put it back. One indicator, which is
|
|
68
|
+
what the kit's rows already chose. why: docs/foundations.md#the-focus-ring */
|
|
69
|
+
.ui-footer__social:hover:not(:focus-visible) { border-color: var(--accent); }
|
|
70
|
+
.ui-footer__social:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
66
71
|
.ui-footer__social svg { width: 17px; height: 17px; display: block; }
|
|
67
72
|
|
|
68
73
|
/* Link columns */
|
|
@@ -86,7 +91,7 @@
|
|
|
86
91
|
transition: color var(--dur-fast) var(--ease);
|
|
87
92
|
}
|
|
88
93
|
.ui-footer__links a:hover { color: var(--footer-link-hover); }
|
|
89
|
-
.ui-footer__links a:focus-visible { outline:
|
|
94
|
+
.ui-footer__links a:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); border-radius: var(--radius-xs); }
|
|
90
95
|
|
|
91
96
|
/* Legal bar — shared by every variant */
|
|
92
97
|
.ui-footer__bar {
|
|
@@ -104,7 +109,7 @@
|
|
|
104
109
|
.ui-footer__legal-links { display: flex; gap: 22px; flex-wrap: wrap; }
|
|
105
110
|
.ui-footer__legal-links a { color: var(--footer-link); text-decoration: none; transition: color var(--dur-fast) var(--ease); }
|
|
106
111
|
.ui-footer__legal-links a:hover { color: var(--footer-link-hover); }
|
|
107
|
-
.ui-footer__legal-links a:focus-visible { outline:
|
|
112
|
+
.ui-footer__legal-links a:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); border-radius: var(--radius-xs); }
|
|
108
113
|
.ui-footer__switcher { display: inline-flex; align-items: center; gap: 12px; margin-left: auto; }
|
|
109
114
|
|
|
110
115
|
/* slim — a single legal row, no divider above it. */
|
|
@@ -113,7 +118,7 @@
|
|
|
113
118
|
|
|
114
119
|
/* app — compact, in-product: surface background + tighter padding. */
|
|
115
120
|
.ui-footer--app {
|
|
116
|
-
--footer-surface: var(--surface);
|
|
121
|
+
--footer-surface: var(--surface);
|
|
117
122
|
border-top: 1px solid var(--footer-border);
|
|
118
123
|
}
|
|
119
124
|
.ui-footer--app .ui-footer__in { max-width: none; padding: 12px clamp(14px, 2.4vw, 22px); }
|
package/src/styles/input.css
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
color: var(--strong);
|
|
26
26
|
/* Fields use the card surface and an edge in both themes.
|
|
27
27
|
why: docs/foundations.md#elevation */
|
|
28
|
-
background: var(--field-bg); /*
|
|
28
|
+
background: var(--field-bg); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
|
|
29
29
|
border: 1px solid var(--field-edge);
|
|
30
30
|
border-radius: var(--radius-md);
|
|
31
31
|
padding: 12px 15px;
|
|
@@ -38,12 +38,16 @@
|
|
|
38
38
|
.ui-textarea:hover,
|
|
39
39
|
.ui-select:hover { border-color: var(--field-edge-hover); }
|
|
40
40
|
|
|
41
|
+
/* The band and nothing beside it. Recolouring the field's own 1px edge to the
|
|
42
|
+
accent drew a SECOND accent band one pixel inside the first, and the unpainted
|
|
43
|
+
pixel between them read as a halo on the light ground — which is the glow Artur
|
|
44
|
+
rejected on #578 round r34. The edge keeps its resting ink.
|
|
45
|
+
why: docs/foundations.md#the-focus-ring */
|
|
41
46
|
.ui-input:focus-visible,
|
|
42
47
|
.ui-textarea:focus-visible,
|
|
43
48
|
.ui-select:focus-visible {
|
|
44
|
-
outline:
|
|
45
|
-
|
|
46
|
-
box-shadow: var(--ring);
|
|
49
|
+
outline: var(--ring);
|
|
50
|
+
outline-offset: var(--ring-offset);
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
.ui-input::placeholder,
|
|
@@ -62,7 +66,7 @@
|
|
|
62
66
|
.ui-input:disabled,
|
|
63
67
|
.ui-select:disabled,
|
|
64
68
|
.ui-textarea:disabled {
|
|
65
|
-
background-color: var(--disabled-surface); /*
|
|
69
|
+
background-color: var(--disabled-surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
|
|
66
70
|
border-color: var(--disabled-border);
|
|
67
71
|
/* muted-ink: state — unavailable control */ color: var(--disabled-ink);
|
|
68
72
|
opacity: 1; /* fade-reset: the UA's select:disabled grey-out. #564 */
|
|
@@ -137,7 +141,7 @@
|
|
|
137
141
|
margin-top: 1px;
|
|
138
142
|
border: 1.5px solid var(--border-strong);
|
|
139
143
|
border-radius: var(--radius-xs);
|
|
140
|
-
background: var(--surface-2); /*
|
|
144
|
+
background: var(--surface-2); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
|
|
141
145
|
cursor: pointer;
|
|
142
146
|
transition: border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
|
|
143
147
|
position: relative;
|
|
@@ -163,7 +167,11 @@
|
|
|
163
167
|
.ui-check input[type="radio"] { border-radius: 50%; }
|
|
164
168
|
/* :enabled, or the accent lights the border of a box that cannot be clicked —
|
|
165
169
|
the same "press me" a disabled control has to stop making. #429 */
|
|
166
|
-
|
|
170
|
+
/* The hover edge steps aside under the band: an accent edge one pixel inside an
|
|
171
|
+
accent band is the second band #578 round r34 took off the focus rules, and a
|
|
172
|
+
pointer resting on a focused control would put it back. One indicator, which is
|
|
173
|
+
what the kit's rows already chose. why: docs/foundations.md#the-focus-ring */
|
|
174
|
+
.ui-check input:enabled:hover:not(:focus-visible) { border-color: var(--accent); }
|
|
167
175
|
.ui-check input:checked { background: var(--accent); border-color: var(--accent); }
|
|
168
176
|
.ui-check input[type="checkbox"]:checked::after {
|
|
169
177
|
content: "";
|
|
@@ -181,7 +189,7 @@
|
|
|
181
189
|
border-radius: 50%;
|
|
182
190
|
background: var(--accent-contrast);
|
|
183
191
|
}
|
|
184
|
-
.ui-check input:focus-visible { outline:
|
|
192
|
+
.ui-check input:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
185
193
|
|
|
186
194
|
/* Off. `.ui-check` had no disabled rule at all until #429 put a disabled checkbox
|
|
187
195
|
on screen: the box kept --surface-2 and --border-strong, its words kept --text,
|
|
@@ -192,13 +200,13 @@
|
|
|
192
200
|
button does: the accent IS the "press me". Its mark inverts to --disabled-surface,
|
|
193
201
|
so the tick and the dot keep the measured --disabled-ink pair in both themes. */
|
|
194
202
|
.ui-check input:disabled {
|
|
195
|
-
background: var(--disabled-surface); /*
|
|
203
|
+
background: var(--disabled-surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
|
|
196
204
|
border-color: var(--disabled-border);
|
|
197
205
|
cursor: not-allowed;
|
|
198
206
|
}
|
|
199
207
|
.ui-check input:disabled:checked { background: var(--disabled-ink); border-color: var(--disabled-ink); }
|
|
200
208
|
.ui-check input[type="checkbox"]:disabled:checked::after { border-color: var(--disabled-surface); }
|
|
201
|
-
.ui-check input[type="radio"]:disabled:checked::after { background: var(--disabled-surface); /*
|
|
209
|
+
.ui-check input[type="radio"]:disabled:checked::after { background: var(--disabled-surface); /* code-bg: inherit — the mark inside the box; the box carries the focus indicator. */ }
|
|
202
210
|
/* The label is the click target, so the cursor belongs on it, and the words it
|
|
203
211
|
holds go quiet with the box beside them. */
|
|
204
212
|
.ui-check:has(input:disabled) { /* muted-ink: state — unavailable control */ color: var(--disabled-ink); cursor: not-allowed; }
|
|
@@ -217,7 +225,7 @@
|
|
|
217
225
|
.ui-switch__track {
|
|
218
226
|
position: absolute;
|
|
219
227
|
inset: 0;
|
|
220
|
-
background: var(--surface-3); /*
|
|
228
|
+
background: var(--surface-3); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
|
|
221
229
|
border-radius: var(--radius-pill);
|
|
222
230
|
cursor: pointer;
|
|
223
231
|
transition: background var(--dur-med) var(--ease);
|
|
@@ -243,5 +251,5 @@
|
|
|
243
251
|
.ui-switch input:checked + .ui-switch__track::before {
|
|
244
252
|
transform: translateX(calc(var(--sw-w) - var(--sw-h)));
|
|
245
253
|
}
|
|
246
|
-
.ui-switch input:focus-visible + .ui-switch__track { outline:
|
|
254
|
+
.ui-switch input:focus-visible + .ui-switch__track { outline: var(--ring); outline-offset: var(--ring-offset); }
|
|
247
255
|
.ui-switch input:disabled + .ui-switch__track { opacity: 0.5; cursor: not-allowed; }
|