@tensor_1/tokens 2.26.3 → 2.28.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 +8 -0
- 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/toast.css +16 -0
- 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.28.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
|
}
|
|
@@ -16,3 +16,11 @@
|
|
|
16
16
|
@starting-style { [popover].uix-popover:popover-open { opacity: 0; transform: var(--popover-from); } }
|
|
17
17
|
[popover].uix-popover[data-uix-placing]:popover-open { opacity: 0; transform: var(--popover-from); transition: none; }
|
|
18
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); }
|
|
26
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -19,3 +19,19 @@
|
|
|
19
19
|
.uix-toast--danger .uix-toast__icon { color: var(--uix-danger); }
|
|
20
20
|
.uix-toast--info .uix-toast__icon { color: var(--uix-info); }
|
|
21
21
|
}
|
|
22
|
+
|
|
23
|
+
/* Imperative toasts (React `toast()` + `Toaster`, HAR-1363): warning tone, action, loading, positions */
|
|
24
|
+
@layer uix.components {
|
|
25
|
+
.uix-toast--warning .uix-toast__icon { color: var(--uix-warning-text); }
|
|
26
|
+
.uix-toast__action-slot { flex: none; align-self: center; }
|
|
27
|
+
.uix-toast__action {
|
|
28
|
+
border: 0; background: transparent; padding: var(--uix-space-1) var(--uix-space-2); border-radius: var(--uix-radius-xs);
|
|
29
|
+
color: var(--uix-link); font: inherit; font-size: var(--uix-text-meta); font-weight: 600; cursor: pointer; white-space: nowrap;
|
|
30
|
+
}
|
|
31
|
+
.uix-toast__action:hover { background: var(--uix-bg-hover); }
|
|
32
|
+
.uix-toast__action:focus-visible, .uix-toast__close:focus-visible { outline: 2px solid var(--uix-ring); outline-offset: 1px; }
|
|
33
|
+
.uix-toast__spinner { width: var(--uix-icon-md); height: var(--uix-icon-md); }
|
|
34
|
+
.uix-toaster[data-position^="top"] { top: var(--uix-space-4); bottom: auto; }
|
|
35
|
+
.uix-toaster[data-position$="start"] { left: var(--uix-space-4); right: auto; }
|
|
36
|
+
.uix-toaster[data-position$="center"] { left: 50%; right: auto; transform: translateX(-50%); }
|
|
37
|
+
}
|
|
@@ -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
|
|