@apliteni/apliteni-ui 0.35.0 → 0.37.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/README.md +7 -0
- package/package.json +1 -1
- package/react/README.md +5 -0
- package/react/dist/index.css +4 -2
- package/react/dist/index.js +2 -1
- package/src/components/dropdown.js +2 -1
- package/src/styles/back.css +3 -3
- package/src/styles/badge.css +16 -16
- package/src/styles/base.css +6 -6
- package/src/styles/button.css +13 -13
- package/src/styles/callout.css +22 -22
- package/src/styles/card.css +6 -6
- package/src/styles/code.css +6 -6
- package/src/styles/command-palette.css +22 -22
- package/src/styles/confirm.css +3 -3
- package/src/styles/drawer.css +7 -7
- package/src/styles/dropdown.css +25 -23
- package/src/styles/empty.css +2 -2
- package/src/styles/feedback.css +14 -14
- package/src/styles/footer.css +5 -5
- package/src/styles/input.css +15 -15
- package/src/styles/layout.css +27 -27
- package/src/styles/loading.css +3 -3
- package/src/styles/motion.css +1 -1
- package/src/styles/nav.css +28 -28
- package/src/styles/pagination.css +6 -6
- package/src/styles/segmented.css +4 -4
- package/src/styles/stat.css +6 -6
- package/src/styles/success.css +7 -7
- package/src/styles/table.css +7 -7
- package/src/styles/tabs.css +4 -4
- package/src/styles/tooltip.css +3 -3
- package/src/styles/topbar.css +17 -17
- package/src/tokens/tokens.css +49 -7
package/src/styles/tabs.css
CHANGED
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
border: 0;
|
|
15
15
|
cursor: pointer;
|
|
16
16
|
font: 600 calc(var(--text-base) - 0.5px)/1 var(--font-sans);
|
|
17
|
-
color: var(--
|
|
17
|
+
color: var(--text);
|
|
18
18
|
padding: 11px 14px;
|
|
19
19
|
border-bottom: 2px solid transparent;
|
|
20
20
|
margin-bottom: -1px;
|
|
21
21
|
transition: color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
|
|
22
22
|
}
|
|
23
|
-
.ui-tabs__tab:hover { color: var(--
|
|
23
|
+
.ui-tabs__tab:hover { color: var(--strong); }
|
|
24
24
|
.ui-tabs__tab.is-active { color: var(--strong); border-bottom-color: var(--accent); }
|
|
25
|
-
.ui-tabs__tab:focus-visible { outline: 2px solid
|
|
25
|
+
.ui-tabs__tab:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); border-radius: 7px 7px 0 0; }
|
|
26
26
|
|
|
27
27
|
.ui-tabs__panels { padding-top: 20px; }
|
|
28
28
|
.ui-tabs__panel[hidden] { display: none; }
|
|
@@ -31,4 +31,4 @@
|
|
|
31
31
|
.ui-tabs__panel.is-entering { animation: m-fade var(--dur-fast) var(--ease-out) both; }
|
|
32
32
|
/* The panel is focusable (tabindex="0", see tabs.js) so a keyboard user can
|
|
33
33
|
reach text-only content. Show the ring when they land on it. */
|
|
34
|
-
.ui-tabs__panel:focus-visible { outline: 2px solid
|
|
34
|
+
.ui-tabs__panel:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); border-radius: 8px; }
|
package/src/styles/tooltip.css
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
width: max-content;
|
|
26
26
|
max-width: var(--prose-caption);
|
|
27
27
|
padding: var(--space-2) var(--space-3);
|
|
28
|
-
background: var(--ui-tip-bg);
|
|
28
|
+
background: var(--ui-tip-bg); /* ring-gap: inherit — decorative or text-only surface has no nested focus target. */
|
|
29
29
|
/* The two-step edge and the drop: --border-strong outside, --border one pixel
|
|
30
30
|
inside it, then the broad faint drop. why: docs/specification.md#elevation */
|
|
31
31
|
border: 1px solid var(--border-strong);
|
|
@@ -57,11 +57,11 @@
|
|
|
57
57
|
|
|
58
58
|
.ui-tip.is-open { opacity: 1; visibility: visible; }
|
|
59
59
|
|
|
60
|
-
.ui-tip__label { color: var(--
|
|
60
|
+
.ui-tip__label { color: var(--text); }
|
|
61
61
|
.ui-tip__value {
|
|
62
62
|
font-size: var(--text-sm);
|
|
63
63
|
font-weight: var(--weight-semibold);
|
|
64
64
|
color: var(--strong);
|
|
65
65
|
font-variant-numeric: tabular-nums;
|
|
66
66
|
}
|
|
67
|
-
.ui-tip__detail { color: var(--
|
|
67
|
+
.ui-tip__detail { color: var(--text); font-variant-numeric: tabular-nums; }
|
package/src/styles/topbar.css
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
height: 52px;
|
|
10
10
|
display: flex;
|
|
11
11
|
align-items: center;
|
|
12
|
-
background: var(--bg);
|
|
12
|
+
background: var(--bg); /* ring-gap: inherit — page background inherits root overrides. */
|
|
13
13
|
border-bottom: 1px solid var(--border);
|
|
14
14
|
}
|
|
15
15
|
.topbar__in {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
display: none;
|
|
49
49
|
align-items: center;
|
|
50
50
|
gap: 2px;
|
|
51
|
-
background: var(--surface-2);
|
|
51
|
+
background: var(--surface-2); --ring-gap: var(--surface-2);
|
|
52
52
|
border: 1px solid var(--border);
|
|
53
53
|
border-radius: 24px;
|
|
54
54
|
padding: 3px;
|
|
@@ -60,13 +60,13 @@
|
|
|
60
60
|
font-size: calc(var(--text-xs) + 1px);
|
|
61
61
|
font-weight: 600;
|
|
62
62
|
letter-spacing: 0.04em;
|
|
63
|
-
color: var(--
|
|
63
|
+
color: var(--text);
|
|
64
64
|
padding: 4px 13px;
|
|
65
65
|
border-radius: 24px;
|
|
66
66
|
transition: color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
|
|
67
67
|
}
|
|
68
|
-
.dtsw a:hover { color: var(--
|
|
69
|
-
.dtsw a.cur { color: var(--strong); background: var(--surface); }
|
|
68
|
+
.dtsw a:hover { color: var(--strong); }
|
|
69
|
+
.dtsw a.cur { color: var(--strong); background: var(--surface); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */ }
|
|
70
70
|
|
|
71
71
|
/* Theme toggle — a single icon-only switch (no label). */
|
|
72
72
|
.toggle {
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
width: 34px;
|
|
76
76
|
height: 34px;
|
|
77
77
|
cursor: pointer;
|
|
78
|
-
background: var(--surface);
|
|
78
|
+
background: var(--surface); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */
|
|
79
79
|
color: var(--text);
|
|
80
80
|
border: 1px solid var(--border);
|
|
81
81
|
border-radius: 10px;
|
|
@@ -100,14 +100,14 @@
|
|
|
100
100
|
font-size: calc(var(--text-sm) - 0.5px);
|
|
101
101
|
font-weight: 500;
|
|
102
102
|
color: var(--text);
|
|
103
|
-
background: var(--surface);
|
|
103
|
+
background: var(--surface); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */
|
|
104
104
|
border: 1px solid var(--border);
|
|
105
105
|
border-radius: 24px;
|
|
106
106
|
padding: 7px 11px 7px 13px;
|
|
107
107
|
transition: border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
|
|
108
108
|
}
|
|
109
109
|
.vsw__btn:hover { border-color: var(--accent); }
|
|
110
|
-
.vsw__btn .lbl { color: var(--
|
|
110
|
+
.vsw__btn .lbl { color: var(--text); }
|
|
111
111
|
.vsw__btn .cur { color: var(--strong); font-weight: 600; letter-spacing: 0.01em; }
|
|
112
112
|
.vsw__btn .car {
|
|
113
113
|
width: 8px; height: 8px;
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
top: calc(100% + 9px);
|
|
123
123
|
left: 0;
|
|
124
124
|
min-width: 266px;
|
|
125
|
-
background: var(--bg-elevated); /* the floating step — see dropdown.css. #295 */
|
|
125
|
+
background: var(--bg-elevated); --ring-gap: var(--bg-elevated); /* the floating step — see dropdown.css. #295 */
|
|
126
126
|
/* The two-step edge and the drop: --border-strong outside, --border one pixel
|
|
127
127
|
inside it, then the broad faint drop. why: docs/specification.md#elevation */
|
|
128
128
|
border: 1px solid var(--border-strong);
|
|
@@ -182,9 +182,9 @@
|
|
|
182
182
|
/* The menu is raised, so a hovered row takes the step ABOVE it — see
|
|
183
183
|
src/styles/dropdown.css:155 `.ui-dropdown__item:hover`.
|
|
184
184
|
why: docs/specification.md#elevation */
|
|
185
|
-
.vopt:hover { background: var(--surface-3); }
|
|
185
|
+
.vopt:hover { background: var(--surface-3); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */ }
|
|
186
186
|
.vopt .vname { font-family: var(--font-sans); font-size: calc(var(--text-sm) - 0.5px); color: var(--strong); font-weight: 600; letter-spacing: 0.01em; }
|
|
187
|
-
.vopt .vmeta { font-size: var(--text-xs); color: var(--
|
|
187
|
+
.vopt .vmeta { font-size: var(--text-xs); color: var(--text); margin-top: 2px; }
|
|
188
188
|
.vopt .vbadge {
|
|
189
189
|
/* rank: chip */
|
|
190
190
|
font-size: var(--text-xs);
|
|
@@ -195,8 +195,8 @@
|
|
|
195
195
|
flex: none;
|
|
196
196
|
margin-top: 1px;
|
|
197
197
|
}
|
|
198
|
-
.vbadge.live { color: var(--chip-success-ink); background: var(--chip-success-fill); }
|
|
199
|
-
.vbadge.arch { color: var(--muted); background: var(--surface-3); }
|
|
198
|
+
.vbadge.live { color: var(--chip-success-ink); background: var(--chip-success-fill); /* ring-gap: inherit — decorative or text-only surface has no nested focus target. */ }
|
|
199
|
+
.vbadge.arch { /* muted-ink: state — archived version */ color: var(--muted); background: var(--surface-3); /* ring-gap: inherit — decorative or text-only surface has no nested focus target. */ }
|
|
200
200
|
/* The switcher keeps its glyph and drops its label where the shell folds — the
|
|
201
201
|
same step the rail folds at: docs/specification.md#breakpoints. */
|
|
202
202
|
@media (max-width: 720px) { .vsw__btn .lbl { display: none; } }
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
position: absolute;
|
|
226
226
|
right: 0; top: 44px;
|
|
227
227
|
width: 252px;
|
|
228
|
-
background: var(--bg-elevated); /* the floating step — see dropdown.css. #295 */
|
|
228
|
+
background: var(--bg-elevated); --ring-gap: var(--bg-elevated); /* the floating step — see dropdown.css. #295 */
|
|
229
229
|
/* The two-step edge and the drop: --border-strong outside, --border one pixel
|
|
230
230
|
inside it, then the broad faint drop. why: docs/specification.md#elevation */
|
|
231
231
|
border: 1px solid var(--border-strong);
|
|
@@ -256,11 +256,11 @@
|
|
|
256
256
|
.amenu .ahead .avatar { cursor: default; }
|
|
257
257
|
.amenu .ahead .aw { min-width: 0; display: flex; flex-direction: column; gap: 1px; line-height: 1.35; }
|
|
258
258
|
.amenu .ahead .anm { color: var(--strong); font-size: var(--text-sm); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
259
|
-
.amenu .ahead .aem { color: var(--
|
|
259
|
+
.amenu .ahead .aem { color: var(--text); font-size: calc(var(--text-xs) + 0.5px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
260
260
|
.amenu a { display: flex; align-items: center; gap: 11px; padding: 10px 15px; color: var(--text); text-decoration: none; font-family: var(--font-sans); font-size: var(--text-sm); cursor: pointer; }
|
|
261
|
-
.amenu a:hover { background: var(--surface-3); }
|
|
261
|
+
.amenu a:hover { background: var(--surface-3); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */ }
|
|
262
262
|
.amenu a.cur { color: var(--accent); }
|
|
263
263
|
.amenu a svg { width: 19px; height: 19px; flex: none; stroke: currentColor; fill: none; stroke-width: 2; opacity: 0.85; }
|
|
264
264
|
.amenu .asep { height: 1px; background: var(--border); margin: 5px 0; }
|
|
265
|
-
.amenu a.aout { color: var(--
|
|
265
|
+
.amenu a.aout { color: var(--text); }
|
|
266
266
|
.amenu a.aout:hover { color: var(--pink); }
|
package/src/tokens/tokens.css
CHANGED
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
--disabled-ink-bare: #a39eb7;
|
|
173
173
|
|
|
174
174
|
/* Lifted from #9b5dff, which cleared the flat surfaces and failed on its own wash over
|
|
175
|
-
a card; the value was already in the ramp. --ring is var(--accent) and follows by
|
|
175
|
+
a card; the value was already in the ramp. --ring-color is var(--accent) and follows by
|
|
176
176
|
reference. Held by stories/accent-contrast.test.js. #157.
|
|
177
177
|
why: docs/specification.md#colour-and-contrast */
|
|
178
178
|
--accent: #b479ff;
|
|
@@ -229,12 +229,12 @@
|
|
|
229
229
|
--shadow-lg: 0 0 #0000;
|
|
230
230
|
--shadow-seg: 0 0 #0000;
|
|
231
231
|
--shadow-card: 0 0 #0000;
|
|
232
|
-
/*
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
--ring: 0 0 0
|
|
232
|
+
/* G2: the band carries contrast; the halo decorates it. why: docs/specification.md#the-focus-ring */
|
|
233
|
+
--ring-width: 2px;
|
|
234
|
+
--ring-color: var(--accent);
|
|
235
|
+
--ring-gap-width: 1px;
|
|
236
|
+
--ring-gap: var(--bg);
|
|
237
|
+
--ring: 0 0 0 var(--ring-gap-width) var(--ring-gap), 0 0 0 calc(var(--ring-gap-width) + var(--ring-width)) var(--ring-color), 0 0 12px 2px color-mix(in srgb, var(--ring-color) 45%, transparent);
|
|
238
238
|
|
|
239
239
|
/* The ink a cast shadow is made of, and the specular white that reads as gloss on a
|
|
240
240
|
raised surface. Effects mix these instead of writing rgba(). */
|
|
@@ -405,3 +405,45 @@
|
|
|
405
405
|
--prose-body: 62ch;
|
|
406
406
|
--prose-dense: 72ch;
|
|
407
407
|
}
|
|
408
|
+
|
|
409
|
+
/* Recompose only at painted containers; controls inherit the outside gap.
|
|
410
|
+
* One recipe keeps surface propagation cheap and consistent.
|
|
411
|
+
* why: docs/specification.md#the-focus-ring */
|
|
412
|
+
.amenu,
|
|
413
|
+
.dtsw,
|
|
414
|
+
.rx-modal,
|
|
415
|
+
.ui-app__rail,
|
|
416
|
+
.ui-auth__card,
|
|
417
|
+
.ui-callout,
|
|
418
|
+
.ui-card,
|
|
419
|
+
.ui-card--accent,
|
|
420
|
+
.ui-card--live,
|
|
421
|
+
.ui-cmdk__panel,
|
|
422
|
+
.ui-code,
|
|
423
|
+
.ui-confirm__panel,
|
|
424
|
+
.ui-drawer__footer,
|
|
425
|
+
.ui-drawer__panel,
|
|
426
|
+
.ui-dropdown__panel,
|
|
427
|
+
.ui-fbcomposer,
|
|
428
|
+
.ui-footer--app,
|
|
429
|
+
.ui-seg,
|
|
430
|
+
.ui-snippet,
|
|
431
|
+
.ui-snippet--reveal,
|
|
432
|
+
.ui-sx,
|
|
433
|
+
.ui-table--hover:not(.ui-table--zebra) tbody tr:hover td,
|
|
434
|
+
.ui-table--zebra tbody tr:nth-child(even) td,
|
|
435
|
+
.ui-table--zebra tbody tr:hover td,
|
|
436
|
+
.ui-table--zebra.ui-table--hover tbody tr:hover td,
|
|
437
|
+
.ui-toast--outline,
|
|
438
|
+
.ui-toast--solid,
|
|
439
|
+
.vsw__menu {
|
|
440
|
+
--ring: 0 0 0 var(--ring-gap-width) var(--ring-gap), 0 0 0 calc(var(--ring-gap-width) + var(--ring-width)) var(--ring-color), 0 0 12px 2px color-mix(in srgb, var(--ring-color) 45%, transparent);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/* A container focused itself paints outside its own surface; descendants only
|
|
444
|
+
* inherit its inside gap again after focus moves to them. */
|
|
445
|
+
.ui-card:focus-visible,
|
|
446
|
+
.ui-cmdk__panel:focus-visible,
|
|
447
|
+
.ui-confirm__panel:focus-visible,
|
|
448
|
+
.ui-drawer__panel:focus-visible,
|
|
449
|
+
.rx-modal:focus-visible { --ring-gap: inherit; }
|