@tensor_1/tokens 2.26.2 → 2.27.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/build/css/components.css +1 -1
- package/build/css/styles.css +1 -1
- package/package.json +1 -1
- package/styles/components/button.css +4 -0
- package/styles/components/description-list.css +2 -1
- package/styles/components/drawer.css +12 -0
- package/styles/components/kbd.css +6 -0
- package/styles/components/menu.css +12 -0
- package/styles/components/modal.css +10 -0
- package/styles/components/pagination.css +5 -2
- package/styles/components/popover.css +18 -3
- package/styles/components/reactions.css +9 -3
- package/styles/components/rich-text.css +5 -7
- package/styles/components/scheduling-calendar.css +6 -0
- package/styles/components/sidebar.css +12 -5
- package/styles/components/stat-tile.css +4 -0
- package/styles/components/steps.css +28 -0
- package/styles/components/table-toolbar.css +30 -1
- package/styles/components/tooltip.css +3 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tensor_1/tokens",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.27.0",
|
|
4
4
|
"description": "UIx v2 design tokens — the --uix-* contract for house products (Tensor, POSx, SHOPx). One DTCG source -> CSS variables, Tailwind theme, and typed TS constants.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -28,9 +28,13 @@
|
|
|
28
28
|
.uix-btn--link { background: transparent; color: var(--uix-link); height: auto; padding: 0; }
|
|
29
29
|
.uix-btn--link:hover { text-decoration: underline; }
|
|
30
30
|
|
|
31
|
+
/* xs: the 24 px floor of WCAG 2.5.8, for dense tool rows (HAR-1348). */
|
|
32
|
+
.uix-btn--xs { height: 24px; padding: 0 var(--uix-space-2); gap: .25em; border-radius: var(--uix-radius-sm); font-size: var(--uix-text-meta); }
|
|
33
|
+
.uix-btn--xs svg { width: var(--uix-icon-sm); height: var(--uix-icon-sm); }
|
|
31
34
|
.uix-btn--sm { height: 28px; padding: 0 var(--uix-space-3); font-size: var(--uix-text-meta); }
|
|
32
35
|
.uix-btn--lg { height: 44px; padding: 0 var(--uix-space-5); }
|
|
33
36
|
.uix-btn--icon { width: var(--uix-control-h); padding: 0; }
|
|
37
|
+
.uix-btn--icon.uix-btn--xs { width: 24px; }
|
|
34
38
|
.uix-btn--icon.uix-btn--sm { width: 28px; }
|
|
35
39
|
.uix-btn--icon.uix-btn--lg { width: 44px; }
|
|
36
40
|
|
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
@layer uix.components {
|
|
3
3
|
.uix-dl { display: grid; grid-template-columns: max-content 1fr; gap: var(--uix-space-3) var(--uix-space-6); }
|
|
4
4
|
.uix-dl dt { color: var(--uix-text-muted); font-size: var(--uix-text-meta); }
|
|
5
|
-
|
|
5
|
+
/* min-width:0 + anywhere: a long unbroken value (URL, id, hash) wraps instead of widening the grid (HAR-1353) */
|
|
6
|
+
.uix-dl dd { color: var(--uix-text); font-size: var(--uix-text-body); margin: 0; min-width: 0; overflow-wrap: anywhere; }
|
|
6
7
|
}
|
|
@@ -18,6 +18,18 @@
|
|
|
18
18
|
}
|
|
19
19
|
.uix-drawer[open]::backdrop { opacity: 1; }
|
|
20
20
|
@starting-style { .uix-drawer[open]::backdrop { opacity: 0; } }
|
|
21
|
+
/* side="start" — the phone navigation drawer, from the left edge (HAR-1351) */
|
|
22
|
+
.uix-drawer--start { margin: 0 auto 0 0; border-left: 0; border-right: 1px solid var(--uix-border); transform: translateX(-100%); }
|
|
23
|
+
.uix-drawer--start[open] { transform: none; }
|
|
24
|
+
@starting-style { .uix-drawer--start[open] { transform: translateX(-100%); } }
|
|
25
|
+
/* side="bottom" — a bottom sheet: full width, content height, capped at 85% of the viewport */
|
|
26
|
+
.uix-drawer--bottom {
|
|
27
|
+
margin: auto 0 0 0; width: 100%; max-width: 100%; height: fit-content; max-height: 85dvh;
|
|
28
|
+
border-left: 0; border-top: 1px solid var(--uix-border); border-radius: var(--uix-radius-lg) var(--uix-radius-lg) 0 0;
|
|
29
|
+
padding-bottom: env(safe-area-inset-bottom); transform: translateY(100%);
|
|
30
|
+
}
|
|
31
|
+
.uix-drawer--bottom[open] { transform: none; }
|
|
32
|
+
@starting-style { .uix-drawer--bottom[open] { transform: translateY(100%); } }
|
|
21
33
|
.uix-drawer__header { display: flex; align-items: center; gap: var(--uix-space-3); padding: var(--uix-space-4) var(--uix-space-5); border-bottom: 1px solid var(--uix-border); }
|
|
22
34
|
.uix-drawer__body { padding: var(--uix-space-5); overflow-y: auto; flex: 1; }
|
|
23
35
|
.uix-drawer__footer { display: flex; gap: var(--uix-space-2); padding: var(--uix-space-4) var(--uix-space-5); border-top: 1px solid var(--uix-border); }
|
|
@@ -6,3 +6,9 @@
|
|
|
6
6
|
background: var(--uix-bg-subtle); border: 1px solid var(--uix-border); border-bottom-width: 2px; border-radius: var(--uix-radius-xs);
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
/* A shortcut of several keys (React `KbdCombo`, HAR-1361) */
|
|
11
|
+
@layer uix.components {
|
|
12
|
+
.uix-kbd-combo { display: inline-flex; align-items: center; }
|
|
13
|
+
.uix-kbd-combo__keys { display: inline-flex; align-items: center; gap: var(--uix-space-1); }
|
|
14
|
+
}
|
|
@@ -13,3 +13,15 @@
|
|
|
13
13
|
.uix-menu__sep { height: 1px; background: var(--uix-border); margin: var(--uix-space-1) 0; }
|
|
14
14
|
.uix-menu__label { font-size: var(--uix-text-eyebrow); letter-spacing: var(--uix-tracking-eyebrow); text-transform: uppercase; color: var(--uix-text-muted); padding: var(--uix-space-2) var(--uix-space-3) var(--uix-space-1); }
|
|
15
15
|
}
|
|
16
|
+
|
|
17
|
+
/* React `Menu` row parts (HAR-1359) */
|
|
18
|
+
@layer uix.components {
|
|
19
|
+
.uix-menu__icon { display: inline-flex; flex: none; color: var(--uix-text-muted); }
|
|
20
|
+
.uix-menu__item--danger .uix-menu__icon { color: var(--uix-danger-text); }
|
|
21
|
+
.uix-menu__text { flex: 1; min-width: 0; }
|
|
22
|
+
.uix-menu__shortcut { margin-left: auto; padding-left: var(--uix-space-4); color: var(--uix-text-muted); font-size: var(--uix-text-meta); }
|
|
23
|
+
a.uix-menu__item { text-decoration: none; }
|
|
24
|
+
.uix-menu__item:focus-visible { outline: 2px solid var(--uix-ring); outline-offset: -2px; background: var(--uix-bg-hover); }
|
|
25
|
+
.uix-menu__item[aria-disabled="true"] { opacity: .5; cursor: default; }
|
|
26
|
+
.uix-menu__item[aria-disabled="true"]:hover { background: transparent; }
|
|
27
|
+
}
|
|
@@ -37,3 +37,13 @@
|
|
|
37
37
|
.uix-prompt { display: grid; gap: var(--uix-space-3); }
|
|
38
38
|
.uix-prompt__actions { margin: var(--uix-space-3) calc(var(--uix-space-5) * -1) calc(var(--uix-space-5) * -1); }
|
|
39
39
|
}
|
|
40
|
+
|
|
41
|
+
/* ConfirmDialog body, compensation, type-to-confirm and error (HAR-1356) */
|
|
42
|
+
@layer uix.components {
|
|
43
|
+
.uix-confirm { display: grid; gap: var(--uix-space-4); }
|
|
44
|
+
.uix-confirm__body { display: grid; gap: var(--uix-space-3); }
|
|
45
|
+
.uix-confirm__compensation { display: grid; gap: var(--uix-space-1); padding: var(--uix-space-3); border-radius: var(--uix-radius-sm); background: var(--uix-bg-subtle); color: var(--uix-text); font-size: var(--uix-text-meta); }
|
|
46
|
+
.uix-confirm__compensation-title { font-weight: 600; }
|
|
47
|
+
.uix-confirm__error { padding: var(--uix-space-2) var(--uix-space-3); border-radius: var(--uix-radius-sm); background: var(--uix-danger-bg); color: var(--uix-danger-text); font-size: var(--uix-text-meta); }
|
|
48
|
+
.uix-dialog__footer .uix-confirm__tertiary { margin-inline-end: auto; }
|
|
49
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* uix pagination — depends only on --uix-* tokens. */
|
|
2
2
|
@layer uix.components {
|
|
3
|
-
.uix-pagination { display: inline-flex; align-items: center; gap: var(--uix-space-1); }
|
|
3
|
+
.uix-pagination { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--uix-space-1); }
|
|
4
4
|
.uix-pagination__btn {
|
|
5
5
|
min-width: 32px; height: 32px; padding: 0 var(--uix-space-2); display: inline-flex; align-items: center; justify-content: center;
|
|
6
6
|
border: 1px solid var(--uix-border); border-radius: var(--uix-radius-sm); background: var(--uix-surface);
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
}
|
|
10
10
|
.uix-pagination__btn:hover { background: var(--uix-bg-hover); }
|
|
11
11
|
.uix-pagination__btn[aria-current="page"] { background: var(--uix-accent); border-color: var(--uix-accent); color: var(--uix-accent-fg); }
|
|
12
|
-
.uix-pagination__btn:disabled { opacity: .45; pointer-events: none; }
|
|
12
|
+
.uix-pagination__btn:disabled, .uix-pagination__btn[aria-disabled="true"] { opacity: .45; pointer-events: none; }
|
|
13
|
+
/* link pager (HAR-1357): anchors look like the buttons */
|
|
14
|
+
a.uix-pagination__btn { text-decoration: none; }
|
|
15
|
+
.uix-pagination__summary { padding: 0 var(--uix-space-2); color: var(--uix-text-muted); font-size: var(--uix-text-meta); font-variant-numeric: tabular-nums; }
|
|
13
16
|
.uix-pagination__ellipsis { padding: 0 var(--uix-space-1); color: var(--uix-text-muted); }
|
|
14
17
|
}
|
|
@@ -1,11 +1,26 @@
|
|
|
1
|
-
/* uix popover — generic anchored surface via the native Popover API; animated with @starting-style.
|
|
1
|
+
/* uix popover — generic anchored surface via the native Popover API; animated with @starting-style.
|
|
2
|
+
Enter/exit: fade + --uix-lift slide, always away from the anchor (the React Popover sets
|
|
3
|
+
data-placement, and data-uix-placing holds the first frame until it is placed). */
|
|
2
4
|
@layer uix.components {
|
|
3
5
|
.uix-popover { margin: 0; padding: var(--uix-space-2); background: var(--uix-surface-2); border: 1px solid var(--uix-border); border-radius: var(--uix-radius-md); box-shadow: var(--uix-shadow-popover); color: var(--uix-text); }
|
|
4
6
|
[popover].uix-popover {
|
|
5
|
-
|
|
7
|
+
--popover-from: translateY(calc(-1 * var(--uix-lift)));
|
|
8
|
+
opacity: 0; transform: var(--popover-from);
|
|
6
9
|
transition: opacity var(--uix-dur-fast) var(--uix-ease-out), transform var(--uix-dur-fast) var(--uix-ease-out),
|
|
7
10
|
overlay var(--uix-dur-fast) allow-discrete, display var(--uix-dur-fast) allow-discrete;
|
|
8
11
|
}
|
|
12
|
+
[popover].uix-popover[data-placement^="top"] { --popover-from: translateY(var(--uix-lift)); }
|
|
13
|
+
[popover].uix-popover[data-placement^="left"] { --popover-from: translateX(var(--uix-lift)); }
|
|
14
|
+
[popover].uix-popover[data-placement^="right"] { --popover-from: translateX(calc(-1 * var(--uix-lift))); }
|
|
9
15
|
[popover].uix-popover:popover-open { opacity: 1; transform: none; }
|
|
10
|
-
@starting-style { [popover].uix-popover:popover-open { opacity: 0; transform:
|
|
16
|
+
@starting-style { [popover].uix-popover:popover-open { opacity: 0; transform: var(--popover-from); } }
|
|
17
|
+
[popover].uix-popover[data-uix-placing]:popover-open { opacity: 0; transform: var(--popover-from); transition: none; }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Popconfirm — the anchored single-step confirmation (HAR-1356) */
|
|
21
|
+
@layer uix.components {
|
|
22
|
+
.uix-popconfirm { display: grid; gap: var(--uix-space-2); width: max-content; max-width: min(20rem, calc(100vw - 2 * var(--uix-space-4))); padding: var(--uix-space-3); }
|
|
23
|
+
.uix-popconfirm__title { font-weight: 600; color: var(--uix-text); }
|
|
24
|
+
.uix-popconfirm__body { display: grid; gap: var(--uix-space-2); color: var(--uix-text-hushed); font-size: var(--uix-text-meta); }
|
|
25
|
+
.uix-popconfirm__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--uix-space-2); margin-top: var(--uix-space-1); }
|
|
11
26
|
}
|
|
@@ -24,18 +24,19 @@
|
|
|
24
24
|
.uix-reaction:disabled, .uix-reaction-add:disabled { opacity: .55; cursor: not-allowed; }
|
|
25
25
|
.uix-reaction > span[aria-hidden] { line-height: inherit; }
|
|
26
26
|
|
|
27
|
-
/* full picker (EmojiPicker, RTE-01): search, category jump bar, sectioned 8-column grid
|
|
27
|
+
/* full picker (EmojiPicker, RTE-01): search, category jump bar, sectioned 8-column grid.
|
|
28
|
+
Fixed-height rows: one size loading, loaded, searching or failed, so it never re-places. */
|
|
28
29
|
.uix-emoji-picker__anchor { display: inline-flex; }
|
|
29
30
|
.uix-emoji-picker-popover { padding: var(--uix-space-2); }
|
|
30
31
|
.uix-emoji-picker--full { display: flex; flex-direction: column; flex-wrap: nowrap; gap: var(--uix-space-2); width: 324px; max-width: calc(100vw - 32px); }
|
|
31
|
-
.uix-emoji-picker__nav { display: flex; gap: var(--uix-space-0); overflow-x: auto; scrollbar-width: none; }
|
|
32
|
+
.uix-emoji-picker__nav { display: flex; flex: none; gap: var(--uix-space-0); height: 28px; overflow-x: auto; scrollbar-width: none; }
|
|
32
33
|
.uix-emoji-picker__nav-btn {
|
|
33
34
|
flex: none; width: 32px; height: 28px; padding: 0; border: 0; border-radius: var(--uix-radius-sm);
|
|
34
35
|
background: transparent; font-size: var(--uix-text-body); cursor: pointer;
|
|
35
36
|
}
|
|
36
37
|
.uix-emoji-picker__nav-btn:hover { background: var(--uix-bg-hover); }
|
|
37
38
|
.uix-emoji-picker__nav-btn:focus-visible { outline: 2px solid var(--uix-ring); outline-offset: -2px; }
|
|
38
|
-
.uix-emoji-picker__grid { height: 264px; overflow-y: auto; overscroll-behavior: contain; scroll-padding-top: var(--uix-space-6); }
|
|
39
|
+
.uix-emoji-picker__grid { flex: none; height: 264px; overflow-y: auto; overscroll-behavior: contain; scroll-padding-top: var(--uix-space-6); }
|
|
39
40
|
.uix-emoji-picker__section { content-visibility: auto; contain-intrinsic-size: auto 15rem; }
|
|
40
41
|
.uix-emoji-picker__heading {
|
|
41
42
|
position: sticky; top: 0; z-index: var(--uix-z-raised); padding: var(--uix-space-1) var(--uix-space-1);
|
|
@@ -48,4 +49,9 @@
|
|
|
48
49
|
.uix-emoji-img { display: inline-block; width: 1.2em; height: 1.2em; vertical-align: -.2em; object-fit: contain; }
|
|
49
50
|
.uix-emoji-picker__status { font-size: var(--uix-text-meta); color: var(--uix-text-muted); }
|
|
50
51
|
.uix-emoji-picker__status:empty { display: none; }
|
|
52
|
+
/* inside the grid (React): adds no height, stays visible at the bottom */
|
|
53
|
+
.uix-emoji-picker__grid > .uix-emoji-picker__status {
|
|
54
|
+
position: sticky; bottom: 0; z-index: var(--uix-z-raised); margin: 0;
|
|
55
|
+
padding: var(--uix-space-2) var(--uix-space-1); background: var(--uix-surface-2);
|
|
56
|
+
}
|
|
51
57
|
}
|
|
@@ -123,17 +123,15 @@
|
|
|
123
123
|
/* composer variant — the composer draws the box; the toolbar joins the action bar */
|
|
124
124
|
.uix-rich-text--composer { border-radius: var(--uix-radius-md); }
|
|
125
125
|
.uix-rich-text--composer.uix-rich-text:focus-within { box-shadow: 0 0 0 3px var(--uix-brand-muted); }
|
|
126
|
-
/*
|
|
127
|
-
|
|
128
|
-
.uix-rich-text--composer .uix-rich-
|
|
126
|
+
/* the tool row scrolls and keeps five tools; the counter and toolbarEnd wrap below it first (a
|
|
127
|
+
toggle + submit on one row left the tools 0 px on a phone, TENSOR HAR-1125) */
|
|
128
|
+
.uix-rich-text--composer .uix-rich-text__bar { flex-wrap: wrap; align-items: center; justify-content: flex-start; min-width: 0; }
|
|
129
|
+
.uix-rich-text--composer .uix-rich-text__toolbar { flex: 1 1 0; min-width: min(5 * 32px, 100%); padding: 0; border-bottom: 0; }
|
|
129
130
|
.uix-rich-text--composer .uix-rich-text__group--end { margin-left: 0; }
|
|
130
131
|
.uix-rich-text--composer .uix-rich-text__counter,
|
|
131
132
|
.uix-rich-text--composer .uix-rich-text__status { flex: none; margin-right: 0; }
|
|
132
133
|
.uix-rich-text--composer .uix-rich-text__bar > :last-child:not(.uix-rich-text__toolbar) { margin-left: auto; }
|
|
133
|
-
/* a status message (uploading, failed, images off) takes its own row
|
|
134
|
-
long message squeezed the toolbar to a sliver on a 320 px phone (TENSOR HAR-749) */
|
|
135
|
-
.uix-rich-text--composer .uix-rich-text__bar:has(> .uix-rich-text__status:not(:empty)) { flex-wrap: wrap; }
|
|
136
|
-
.uix-rich-text--composer .uix-rich-text__bar:has(> .uix-rich-text__status:not(:empty)) > .uix-rich-text__toolbar { flex-basis: 0; }
|
|
134
|
+
/* a status message (uploading, failed, images off) takes its own row (HAR-749) */
|
|
137
135
|
.uix-rich-text--composer .uix-rich-text__status:not(:empty) { order: 1; flex: 1 0 100%; }
|
|
138
136
|
.uix-rich-text--composer .uix-rich-text__source.uix-textarea { border: 0; box-shadow: none; }
|
|
139
137
|
|
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
.uix-scheduling-calendar__grid { display:grid; grid-template-columns:repeat(7,minmax(6.5rem,1fr)); border-top:1px solid var(--uix-border); border-left:1px solid var(--uix-border); overflow:auto; }
|
|
5
5
|
.uix-scheduling-calendar__day { min-height:8rem; padding:var(--uix-space-2); border-right:1px solid var(--uix-border); border-bottom:1px solid var(--uix-border); background:var(--uix-surface); }
|
|
6
6
|
.uix-scheduling-calendar__day[data-outside] { background:var(--uix-bg-subtle); color:var(--uix-text-muted); }
|
|
7
|
+
.uix-scheduling-calendar__weekday { padding:var(--uix-space-1) var(--uix-space-2); border-right:1px solid var(--uix-border); border-bottom:1px solid var(--uix-border); background:var(--uix-bg-subtle); color:var(--uix-text-muted); font-size:var(--uix-text-meta); font-weight:600; text-align:right; }
|
|
8
|
+
.uix-scheduling-calendar__dayhead { display:flex; align-items:center; gap:var(--uix-space-1); min-width:0; }
|
|
9
|
+
.uix-scheduling-calendar__dayhead > .uix-scheduling-calendar__date { flex:1 1 auto; width:auto; }
|
|
10
|
+
.uix-scheduling-calendar__badge { display:inline-flex; align-items:center; min-width:0; overflow:hidden; white-space:nowrap; font-size:var(--uix-text-meta); }
|
|
11
|
+
.uix-scheduling-calendar__more { justify-self:start; padding:var(--uix-space-1) var(--uix-space-2); border:0; border-radius:var(--uix-radius-sm); background:transparent; color:var(--uix-link); font-size:var(--uix-text-meta); font-weight:600; text-align:left; cursor:pointer; }
|
|
12
|
+
.uix-scheduling-calendar__more:hover { background:var(--uix-bg-subtle); }
|
|
7
13
|
.uix-scheduling-calendar__date { display:block; width:100%; border:0; background:transparent; color:inherit; text-align:right; font-size:var(--uix-text-meta); }
|
|
8
14
|
.uix-scheduling-calendar__overlay { display:block; margin-block:var(--uix-space-1); padding:var(--uix-space-1) var(--uix-space-2); border-radius:var(--uix-radius-sm); background:var(--uix-info-bg); color:var(--uix-info-text); font-size:var(--uix-text-meta); }
|
|
9
15
|
.uix-scheduling-calendar__overlay[data-kind="blackout"] { background:var(--uix-danger-bg); color:var(--uix-danger-text); }
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
.uix-sidebar__toggle svg { width: 18px; height: 18px; }
|
|
19
19
|
|
|
20
20
|
.uix-navitem {
|
|
21
|
-
display: flex; align-items: center; gap: var(--uix-space-3); height: 36px; padding: 0 var(--uix-space-3);
|
|
21
|
+
display: flex; align-items: center; gap: var(--uix-space-3); min-height: 36px; padding: 0 var(--uix-space-3);
|
|
22
22
|
border-radius: var(--uix-radius-sm); color: var(--uix-text-hushed); cursor: pointer; text-decoration: none;
|
|
23
23
|
border: 0; background: transparent; font: inherit; font-size: var(--uix-text-body); width: 100%; text-align: left;
|
|
24
24
|
transition: background-color var(--uix-dur-fast) var(--uix-ease-out), color var(--uix-dur-fast) var(--uix-ease-out);
|
|
@@ -30,6 +30,11 @@
|
|
|
30
30
|
.uix-navitem__icon { width: var(--uix-icon-md); height: var(--uix-icon-md); flex: none; }
|
|
31
31
|
.uix-navitem__label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
32
32
|
.uix-navitem__badge { font-size: var(--uix-text-meta); color: var(--uix-text-muted); }
|
|
33
|
+
/* two-line row: a label plus a wrapping second line (HAR-1355). min-height above lets it grow. */
|
|
34
|
+
.uix-navitem[data-multiline] { align-items: flex-start; padding-block: var(--uix-space-2); }
|
|
35
|
+
.uix-navitem__text { flex: 1; min-width: 0; display: grid; }
|
|
36
|
+
.uix-navitem__desc { font-size: var(--uix-text-meta); line-height: 1.35; color: var(--uix-text-muted); overflow-wrap: anywhere; white-space: normal; font-weight: 400; }
|
|
37
|
+
.uix-navitem[aria-current="page"] .uix-navitem__desc { color: var(--uix-text-hushed); }
|
|
33
38
|
/* on the active tint, muted badge dips below AA — hushed composites darker on the tint */
|
|
34
39
|
.uix-navitem[aria-current="page"] .uix-navitem__badge { color: var(--uix-text-hushed); }
|
|
35
40
|
.uix-navitem__star { position: relative; display: grid; place-items: center; width: 22px; height: 22px; border: 0; background: transparent; color: var(--uix-text-muted); cursor: pointer; border-radius: var(--uix-radius-xs); opacity: 0; transition: opacity var(--uix-dur-fast) var(--uix-ease-out); }
|
|
@@ -100,13 +105,15 @@
|
|
|
100
105
|
.uix-sidebar[data-collapsed] .uix-sidebar__eyebrow,
|
|
101
106
|
.uix-sidebar[data-collapsed] .uix-sidebar__brand,
|
|
102
107
|
.uix-sidebar[data-collapsed] .uix-navgroup__chevron,
|
|
103
|
-
.uix-sidebar[data-collapsed] .uix-navgroup__panel
|
|
108
|
+
.uix-sidebar[data-collapsed] .uix-navgroup__panel,
|
|
109
|
+
.uix-sidebar[data-collapsed] .uix-navitem__desc { display: none; }
|
|
104
110
|
.uix-sidebar[data-nav="rail"] .uix-navitem__badge,
|
|
105
111
|
.uix-sidebar[data-nav="rail"] .uix-navitem__star,
|
|
106
112
|
.uix-sidebar[data-nav="rail"] .uix-sidebar__eyebrow,
|
|
107
113
|
.uix-sidebar[data-nav="rail"] .uix-sidebar__brand,
|
|
108
114
|
.uix-sidebar[data-nav="rail"] .uix-navgroup__chevron,
|
|
109
|
-
.uix-sidebar[data-nav="rail"] .uix-navgroup__panel
|
|
115
|
+
.uix-sidebar[data-nav="rail"] .uix-navgroup__panel,
|
|
116
|
+
.uix-sidebar[data-nav="rail"] .uix-navitem__desc { display: none; }
|
|
110
117
|
/* rail labels stay in the accessibility tree — clip pattern (mirrors .uix-visually-hidden),
|
|
111
118
|
not display:none, so icon-only nav items keep their names (UIX-A11Y-2). position:absolute
|
|
112
119
|
removes the label from the flex row, so the centered rail layout is unaffected. */
|
|
@@ -119,8 +126,8 @@
|
|
|
119
126
|
white-space: nowrap; border: 0;
|
|
120
127
|
}
|
|
121
128
|
/* center the icon-only rail; head keeps just the toggle, centered */
|
|
122
|
-
.uix-sidebar[data-collapsed] .uix-navitem { justify-content: center; padding: 0; gap: 0; }
|
|
129
|
+
.uix-sidebar[data-collapsed] .uix-navitem { justify-content: center; align-items: center; padding: 0; gap: 0; }
|
|
123
130
|
.uix-sidebar[data-collapsed] .uix-sidebar__head { justify-content: center; padding-inline: 0; }
|
|
124
|
-
.uix-sidebar[data-nav="rail"] .uix-navitem { justify-content: center; padding: 0; gap: 0; }
|
|
131
|
+
.uix-sidebar[data-nav="rail"] .uix-navitem { justify-content: center; align-items: center; padding: 0; gap: 0; }
|
|
125
132
|
.uix-sidebar[data-nav="rail"] .uix-sidebar__head { justify-content: center; padding-inline: 0; }
|
|
126
133
|
}
|
|
@@ -36,5 +36,9 @@
|
|
|
36
36
|
.uix-stat__chevron { display: inline-flex; flex: none; margin-inline-start: auto; color: var(--uix-text-muted); }
|
|
37
37
|
.uix-stat__label .uix-stat__chevron svg { width: var(--uix-icon-sm); height: var(--uix-icon-sm); transition: transform var(--uix-dur-fast) var(--uix-ease-out); }
|
|
38
38
|
.uix-stat--interactive[aria-expanded="true"] .uix-stat__chevron svg { transform: rotate(180deg); }
|
|
39
|
+
/* link — the whole tile is an <a> to a filtered list or a record (HAR-1350) */
|
|
40
|
+
.uix-stat--link { text-decoration: none; }
|
|
41
|
+
/* current: the ring outline only; a brand tint would drop the muted label below AA */
|
|
42
|
+
.uix-stat--link[aria-current="page"] { border-color: var(--uix-ring); box-shadow: inset 0 0 0 1px var(--uix-ring); }
|
|
39
43
|
@media (prefers-reduced-motion: reduce) { .uix-stat--interactive, .uix-stat__label .uix-stat__chevron svg { transition: none; } }
|
|
40
44
|
}
|
|
@@ -16,3 +16,31 @@
|
|
|
16
16
|
.uix-step[data-state="done"] + .uix-step__connector,
|
|
17
17
|
.uix-step__connector[data-done] { background: var(--uix-accent); }
|
|
18
18
|
}
|
|
19
|
+
|
|
20
|
+
/* React `Steps` (HAR-1362): an <ol>, each <li> = marker · title/description · connector */
|
|
21
|
+
@layer uix.components {
|
|
22
|
+
.uix-steps--list { margin: 0; padding: 0; list-style: none; align-items: flex-start; }
|
|
23
|
+
.uix-steps--list > .uix-step { align-items: flex-start; min-width: 0; }
|
|
24
|
+
.uix-steps--list > .uix-step:not(:last-child) { flex: 1; }
|
|
25
|
+
.uix-step__text { display: grid; min-width: 0; padding-top: var(--uix-space-1); }
|
|
26
|
+
.uix-step__title { font-size: var(--uix-text-meta); font-weight: 500; }
|
|
27
|
+
.uix-step__desc { font-size: var(--uix-text-meta); color: var(--uix-text-muted); overflow-wrap: anywhere; }
|
|
28
|
+
.uix-step__action { color: inherit; text-decoration: none; padding: 0; border: 0; background: transparent; font: inherit; text-align: start; }
|
|
29
|
+
a.uix-step__action, button.uix-step__action { cursor: pointer; text-decoration: underline; text-underline-offset: .15em; }
|
|
30
|
+
.uix-steps--list .uix-step__connector { align-self: center; margin-top: 0; }
|
|
31
|
+
.uix-steps--horizontal > .uix-step > .uix-step__connector { align-self: flex-start; margin-top: 13px; }
|
|
32
|
+
.uix-steps--horizontal > .uix-step > .uix-step__text { flex: 0 0 auto; max-width: 12rem; }
|
|
33
|
+
.uix-step[data-state="waiting"] .uix-step__marker { border-style: dashed; border-color: var(--uix-warning-border); color: var(--uix-warning-text); }
|
|
34
|
+
.uix-step[data-state="error"] { color: var(--uix-text); }
|
|
35
|
+
.uix-step[data-state="error"] .uix-step__marker { background: var(--uix-danger-bg); border-color: var(--uix-danger-border); color: var(--uix-danger-text); }
|
|
36
|
+
/* vertical (and horizontal below 40rem): a column, the connector a line under the marker */
|
|
37
|
+
.uix-steps--vertical { flex-direction: column; gap: 0; }
|
|
38
|
+
.uix-steps--vertical > .uix-step { position: relative; padding-bottom: var(--uix-space-4); }
|
|
39
|
+
.uix-steps--vertical > .uix-step > .uix-step__connector { position: absolute; left: 13px; top: 30px; bottom: 4px; width: 1px; height: auto; min-width: 0; margin: 0; }
|
|
40
|
+
@media (max-width: 40rem) {
|
|
41
|
+
.uix-steps--horizontal { flex-direction: column; gap: 0; }
|
|
42
|
+
.uix-steps--horizontal > .uix-step { position: relative; padding-bottom: var(--uix-space-4); }
|
|
43
|
+
.uix-steps--horizontal > .uix-step > .uix-step__text { flex: 1 1 auto; max-width: none; }
|
|
44
|
+
.uix-steps--horizontal > .uix-step > .uix-step__connector { position: absolute; left: 13px; top: 30px; bottom: 4px; width: 1px; height: auto; min-width: 0; margin: 0; }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -17,8 +17,37 @@
|
|
|
17
17
|
.uix-chip:hover { border-color: var(--uix-border-strong); color: var(--uix-text); }
|
|
18
18
|
.uix-chip[data-on] { background: var(--uix-brand-muted); border-color: var(--uix-accent); color: var(--uix-accent-text); }
|
|
19
19
|
.uix-chip:focus-visible { outline: 2px solid var(--uix-ring); outline-offset: 2px; }
|
|
20
|
-
|
|
20
|
+
/* muted text, not opacity: .7 opacity on hushed text fell below AA (HAR-1360) */
|
|
21
|
+
.uix-chip__count { font-variant-numeric: tabular-nums; color: var(--uix-text-muted); }
|
|
22
|
+
.uix-chip[data-on] .uix-chip__count { color: inherit; }
|
|
21
23
|
.uix-filter-popover { display: grid; gap: var(--uix-space-4); min-width: 260px; padding: var(--uix-space-4); }
|
|
22
24
|
.uix-filter-popover .uix-label { display: grid; gap: var(--uix-space-2); }
|
|
23
25
|
.uix-filter-popover__actions { display: flex; justify-content: flex-end; gap: var(--uix-space-2); }
|
|
24
26
|
}
|
|
27
|
+
|
|
28
|
+
/* Chip (React `Chip`, HAR-1360): removable, toggle, link, static and "+ add" chips, and the group */
|
|
29
|
+
@layer uix.components {
|
|
30
|
+
a.uix-chip, .uix-chip__main { text-decoration: none; }
|
|
31
|
+
.uix-chip--static, .uix-chip--removable { cursor: default; }
|
|
32
|
+
.uix-chip--add { border-style: dashed; }
|
|
33
|
+
.uix-chip:disabled, .uix-chip[aria-disabled="true"] { opacity: .5; pointer-events: none; }
|
|
34
|
+
.uix-chip__icon { display: inline-flex; flex: none; }
|
|
35
|
+
.uix-chip__label { min-width: 0; overflow-wrap: anywhere; }
|
|
36
|
+
.uix-chip__icon svg { width: var(--uix-icon-sm); height: var(--uix-icon-sm); }
|
|
37
|
+
.uix-chip--removable { padding-inline-end: var(--uix-space-1); }
|
|
38
|
+
.uix-chip__main {
|
|
39
|
+
display: inline-flex; align-items: center; gap: var(--uix-space-2); padding: 0; border: 0;
|
|
40
|
+
background: transparent; color: inherit; font: inherit; border-radius: var(--uix-radius-pill);
|
|
41
|
+
}
|
|
42
|
+
button.uix-chip__main, a.uix-chip__main { cursor: pointer; }
|
|
43
|
+
.uix-chip__main:focus-visible { outline: 2px solid var(--uix-ring); outline-offset: 2px; }
|
|
44
|
+
/* 24 px hit area (WCAG 2.5.8) without growing the chip: the negative block margin eats the overhang */
|
|
45
|
+
.uix-chip__remove {
|
|
46
|
+
display: inline-grid; place-items: center; width: 24px; height: 24px; margin-block: calc(-1 * var(--uix-space-1)); padding: 0; flex: none;
|
|
47
|
+
border: 0; border-radius: var(--uix-radius-pill); background: transparent; color: inherit; cursor: pointer;
|
|
48
|
+
}
|
|
49
|
+
.uix-chip__remove svg { width: 12px; height: 12px; }
|
|
50
|
+
.uix-chip__remove:hover { background: var(--uix-bg-hover); color: var(--uix-text); }
|
|
51
|
+
.uix-chip__remove:focus-visible { outline: 2px solid var(--uix-ring); outline-offset: 1px; }
|
|
52
|
+
.uix-chip-group { display: flex; flex-wrap: wrap; align-items: center; gap: var(--uix-space-2); }
|
|
53
|
+
}
|
|
@@ -17,6 +17,9 @@
|
|
|
17
17
|
box-shadow: var(--uix-shadow-popover); white-space: normal;
|
|
18
18
|
opacity: 0; transition: opacity var(--uix-dur-fast) var(--uix-ease-out);
|
|
19
19
|
}
|
|
20
|
+
/* rich content (HAR-1349): a short list or a few lines, never interactive */
|
|
21
|
+
.uix-tooltip__bubble :is(ul, ol) { margin: 0; padding-left: 1.1em; }
|
|
22
|
+
.uix-tooltip__bubble :is(p, ul, ol) + :is(p, ul, ol) { margin-top: var(--uix-space-1); }
|
|
20
23
|
.uix-tooltip__bubble:popover-open { opacity: 1; }
|
|
21
24
|
@starting-style { .uix-tooltip__bubble:popover-open { opacity: 0; } }
|
|
22
25
|
|