@tensor_1/tokens 2.21.0 → 2.23.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/avatar.css +4 -0
- package/styles/components/brand-profiles.css +6 -3
- package/styles/components/metric-input.css +5 -4
- package/styles/components/relationship-graph.css +2 -1
- package/styles/components/stepper.css +1 -1
- package/styles/components/view-menu.css +22 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tensor_1/tokens",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.23.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": [
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
.uix-avatar img { width: 100%; height: 100%; object-fit: cover; }
|
|
9
9
|
.uix-avatar--sm { width: 24px; height: 24px; font-size: var(--uix-text-eyebrow); }
|
|
10
10
|
.uix-avatar--lg { width: 44px; height: 44px; }
|
|
11
|
+
.uix-avatar--xl { width: 64px; height: 64px; font-size: var(--uix-text-h3); }
|
|
12
|
+
.uix-avatar--2xl { width: 96px; height: 96px; font-size: var(--uix-text-h2); }
|
|
13
|
+
.uix-avatar--xl .uix-avatar__status { width: 14px; height: 14px; right: 1px; bottom: 1px; }
|
|
14
|
+
.uix-avatar--2xl .uix-avatar__status { width: 18px; height: 18px; border-width: 3px; right: 4px; bottom: 4px; }
|
|
11
15
|
.uix-avatar__status { position: absolute; right: -1px; bottom: -1px; width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--uix-surface); background: var(--uix-success); }
|
|
12
16
|
.uix-avatar-group { display: inline-flex; }
|
|
13
17
|
.uix-avatar-group .uix-avatar { box-shadow: 0 0 0 2px var(--uix-surface); margin-left: calc(-1 * var(--uix-space-2)); }
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
@layer uix.components {
|
|
2
2
|
.uix-brand-profiles { display:grid; grid-template-columns:minmax(16rem,.8fr) minmax(18rem,1.2fr); gap:var(--uix-space-5); color:var(--uix-text); }
|
|
3
|
-
.uix-brand-profiles__form { display:grid; align-content:start; gap:var(--uix-space-3); }
|
|
4
|
-
.uix-brand-profiles__form label { display:grid; gap:var(--uix-space-2); font-weight:600; }
|
|
5
|
-
.uix-brand-profiles__colors { display:grid; grid-template-columns:1fr
|
|
3
|
+
.uix-brand-profiles__form { display:grid; grid-template-columns:minmax(0,1fr); align-content:start; gap:var(--uix-space-3); min-width:0; }
|
|
4
|
+
.uix-brand-profiles__form label { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--uix-space-2); min-width:0; font-weight:600; }
|
|
5
|
+
.uix-brand-profiles__colors { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--uix-space-3); }
|
|
6
6
|
.uix-brand-profiles__upload { padding:var(--uix-space-3); border:1px dashed var(--uix-border-strong); border-radius:var(--uix-radius-md); background:var(--uix-bg-subtle); }
|
|
7
|
+
/* A native file input has a ~360px intrinsic width; let it shrink so it cannot push the form under the preview. */
|
|
8
|
+
.uix-brand-profiles__upload input { min-width:0; max-width:100%; }
|
|
9
|
+
.uix-brand-profiles__colors .uix-color-picker__trigger { max-width:100%; }
|
|
7
10
|
.uix-brand-profiles__preview { overflow:hidden; align-self:start; border:1px solid var(--uix-border); border-radius:var(--uix-radius-lg); background:var(--uix-surface); box-shadow:var(--uix-shadow-sm); font-family:var(--uix-font-sans); }
|
|
8
11
|
.uix-brand-profiles__preview-header { display:flex; align-items:center; gap:var(--uix-space-3); padding:var(--uix-space-4); background:var(--uix-accent); color:var(--uix-accent-fg); }
|
|
9
12
|
.uix-brand-profiles__preview-header img,.uix-brand-profiles__logo-placeholder { display:grid; place-items:center; width:3rem; height:3rem; border-radius:var(--uix-radius-md); background:var(--uix-surface); color:var(--uix-text); object-fit:contain; }
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
@layer uix.components {
|
|
2
2
|
.uix-metric-input { display:grid; gap:var(--uix-space-2); color:var(--uix-text); }
|
|
3
|
-
.uix-metric-input__control { position:relative; display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:stretch; max-width:22rem; }
|
|
4
|
-
|
|
3
|
+
.uix-metric-input__control { position:relative; display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:stretch; height:var(--uix-control-h); max-width:22rem; }
|
|
4
|
+
/* The row is pinned to the control height: the stacked steps split it (1fr each) instead of growing it past the input. */
|
|
5
|
+
.uix-metric-input__control .uix-input { height:100%; border-top-right-radius:0; border-bottom-right-radius:0; font-variant-numeric:tabular-nums; }
|
|
5
6
|
.uix-metric-input__unit { display:flex; align-items:center; padding-inline:var(--uix-space-3); border-block:1px solid var(--uix-border-strong); background:var(--uix-bg-subtle); color:var(--uix-text-muted); }
|
|
6
|
-
.uix-metric-input__steps { display:grid; width:2.5rem; }
|
|
7
|
-
.uix-metric-input__step { border:1px solid var(--uix-border-strong); background:var(--uix-surface); color:var(--uix-text); line-height:1; } .uix-metric-input__step:first-child { border-top-right-radius:var(--uix-radius-md); } .uix-metric-input__step:last-child { border-top:0; border-bottom-right-radius:var(--uix-radius-md); }
|
|
7
|
+
.uix-metric-input__steps { display:grid; grid-template-rows:1fr 1fr; width:2.5rem; min-height:0; }
|
|
8
|
+
.uix-metric-input__step { min-height:0; padding:0; border:1px solid var(--uix-border-strong); background:var(--uix-surface); color:var(--uix-text); line-height:1; } .uix-metric-input__step:first-child { border-top-right-radius:var(--uix-radius-md); } .uix-metric-input__step:last-child { border-top:0; border-bottom-right-radius:var(--uix-radius-md); }
|
|
8
9
|
.uix-metric-input__step:hover { background:var(--uix-bg-hover); } .uix-metric-input--invalid .uix-metric-input__control { color:var(--uix-danger-text); }
|
|
9
10
|
}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
.uix-relationship-graph__visual svg { display:block; width:100%; height:22rem; }
|
|
7
7
|
.uix-relationship-graph__edge { stroke:var(--uix-border-strong); stroke-width:2; } .uix-relationship-graph__edge[data-highlighted] { stroke:var(--uix-accent); stroke-width:4; } .uix-relationship-graph__edge[data-conflicted] { stroke:var(--uix-danger); stroke-dasharray:6 4; }
|
|
8
8
|
.uix-relationship-graph__node { cursor:pointer; } .uix-relationship-graph__node rect { fill:var(--uix-surface); stroke:var(--uix-border-strong); stroke-width:2; } .uix-relationship-graph__node text { fill:var(--uix-text); font-family:var(--uix-font-sans); font-size:var(--uix-text-meta); }
|
|
9
|
-
|
|
9
|
+
/* Node fills must be opaque: edges run to node centres, so a translucent tint lets them strike through the label. */
|
|
10
|
+
.uix-relationship-graph__node[data-selected] rect,.uix-relationship-graph__node[data-highlighted] rect { fill:color-mix(in srgb, var(--uix-accent) 16%, var(--uix-surface)); stroke:var(--uix-accent); stroke-width:3; } .uix-relationship-graph__node[data-conflicted] rect { fill:color-mix(in srgb, var(--uix-danger) 20%, var(--uix-surface)); stroke:var(--uix-danger); stroke-dasharray:4 2; }
|
|
10
11
|
.uix-relationship-graph__node:focus-visible rect { stroke:var(--uix-ring); stroke-width:4; }
|
|
11
12
|
.uix-relationship-graph__legend { display:flex; gap:var(--uix-space-4); flex-wrap:wrap; margin:0; padding:0; list-style:none; color:var(--uix-text-muted); font-size:var(--uix-text-meta); }
|
|
12
13
|
.uix-relationship-graph__legend li::before { content:""; display:inline-block; width:.8rem; height:.8rem; margin-right:var(--uix-space-1); border:2px solid var(--uix-graph-type-color, var(--uix-chart-1)); border-radius:var(--uix-radius-pill); vertical-align:middle; }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* uix number stepper — depends only on --uix-* tokens. */
|
|
2
2
|
@layer uix.components {
|
|
3
|
-
.uix-stepper { display: inline-flex; align-items: center; height: var(--uix-control-h); overflow: hidden;
|
|
3
|
+
.uix-stepper { display: inline-flex; align-items: center; width: fit-content; height: var(--uix-control-h); overflow: hidden;
|
|
4
4
|
border: 1px solid var(--uix-border); border-radius: var(--uix-radius-md); background: var(--uix-surface); }
|
|
5
5
|
.uix-stepper__btn { width: 32px; align-self: stretch; border: 0; background: transparent; color: var(--uix-text); cursor: pointer;
|
|
6
6
|
display: grid; place-items: center; transition: background-color var(--uix-dur-fast) var(--uix-ease-out); }
|
|
@@ -11,8 +11,29 @@
|
|
|
11
11
|
.uix-view-menu .uix-segmented__option { flex: 1; text-align: center; }
|
|
12
12
|
.uix-view-menu__cols { display: flex; flex-direction: column; gap: var(--uix-space-1); max-height: 180px; overflow: auto; }
|
|
13
13
|
.uix-view-menu__cols .uix-menu__item { font-size: var(--uix-text-meta); }
|
|
14
|
-
|
|
14
|
+
/* Saved views: optional titled sections in one scrolling menu; a row is grip · name · overflow.
|
|
15
|
+
Hover and selection paint the WHOLE row; the selected row is an accent tint, never a check glyph. */
|
|
16
|
+
.uix-saved-views { max-width: 400px; max-height: min(60vh, 440px); overflow-y: auto; overscroll-behavior: contain; }
|
|
17
|
+
.uix-saved-views__section + .uix-saved-views__section { margin-top: var(--uix-space-1); }
|
|
18
|
+
.uix-saved-views__section-label { position: sticky; top: calc(-1 * var(--uix-space-1)); z-index: var(--uix-z-raised); background: var(--uix-surface-2); }
|
|
19
|
+
.uix-saved-views__group { margin: 0; padding: 0; list-style: none; }
|
|
20
|
+
.uix-saved-views__row { display: flex; align-items: center; border-radius: var(--uix-radius-sm); }
|
|
21
|
+
.uix-saved-views__row:hover { background: var(--uix-bg-hover); }
|
|
22
|
+
.uix-saved-views__row[data-active] { background: var(--uix-brand-muted); }
|
|
23
|
+
.uix-saved-views__row[data-dragging] { opacity: .55; }
|
|
24
|
+
.uix-saved-views[data-dragging] { cursor: grabbing; user-select: none; }
|
|
15
25
|
.uix-saved-views__row > .uix-menu__item { min-width: 0; flex: 1; }
|
|
26
|
+
.uix-saved-views__row > .uix-menu__item:is(:hover, [data-active]) { background: transparent; }
|
|
27
|
+
.uix-saved-views__name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
28
|
+
.uix-saved-views__grip { display: grid; place-items: center; flex: none; width: 20px; height: 28px; padding: 0; border: 0; border-radius: var(--uix-radius-sm); background: transparent; color: var(--uix-text-muted); cursor: grab; touch-action: none; }
|
|
29
|
+
.uix-saved-views__grip svg { width: var(--uix-icon-sm); height: var(--uix-icon-sm); }
|
|
30
|
+
.uix-saved-views__actions { display: flex; flex: none; align-items: center; }
|
|
31
|
+
/* Quiet affordances: grip and overflow are dimmed on purpose until the row is hovered or holds focus,
|
|
32
|
+
the grip is in use, or the overflow menu is open. Idle is 75% (not lower): the muted grip on the
|
|
33
|
+
panel surface needs it to keep WCAG 1.4.11 3:1 non-text contrast at rest (3.19:1 light, 4.45:1 dark). */
|
|
34
|
+
:is(.uix-saved-views__grip, .uix-saved-views__actions) { opacity: .75; transition: opacity var(--uix-dur-fast) var(--uix-ease-out); }
|
|
35
|
+
.uix-saved-views__row:is(:hover, :focus-within, [data-dragging]) :is(.uix-saved-views__grip, .uix-saved-views__actions),
|
|
36
|
+
.uix-saved-views__actions:has([aria-expanded="true"]) { opacity: 1; }
|
|
16
37
|
.uix-saved-views__pin { display: grid; place-items: center; width: 28px; height: 28px; border: 0; border-radius: var(--uix-radius-sm); background: transparent; color: var(--uix-text-muted); cursor: pointer; }
|
|
17
38
|
.uix-saved-views__pin:is(:hover, :focus-visible), .uix-saved-views__pin[data-on] { color: var(--uix-warning-text); background: var(--uix-bg-hover); }
|
|
18
39
|
.uix-saved-views__footer { border-top: 1px solid var(--uix-border); margin-top: var(--uix-space-1); padding: var(--uix-space-2); }
|