@tensor_1/tokens 2.50.0 → 2.51.1

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.
@@ -147,6 +147,7 @@
147
147
  --uix-radius-pill: 999px;
148
148
  --uix-row-h: 56px;
149
149
  --uix-row-h-compact: 44px;
150
+ --uix-row-h-standard: 56px;
150
151
  --uix-row-h-comfortable: 68px;
151
152
  --uix-control-h: 36px;
152
153
  --uix-sidebar-w: 248px;
@@ -1,5 +1,5 @@
1
1
  /* GENERATED — do not edit. */
2
- export type UixTokenName = "bg-app" | "bg-subtle" | "bg-hover" | "bg-active" | "surface" | "surface-2" | "surface-3" | "border" | "border-strong" | "text" | "text-hushed" | "text-muted" | "text-reverse" | "text-hushed-reverse" | "accent" | "accent-dark" | "accent-light" | "accent-hover" | "accent-fg" | "link" | "accent-text" | "ring" | "brand-muted" | "success" | "success-fg" | "success-bg" | "success-text" | "warning" | "warning-fg" | "warning-bg" | "warning-text" | "warning-border" | "info" | "info-fg" | "info-bg" | "info-text" | "danger" | "danger-fg" | "danger-bg" | "danger-border" | "danger-text" | "amber" | "amber-text" | "amber-bg" | "attention" | "attention-bg" | "attention-text" | "attention-solid" | "overdue" | "overdue-bg" | "overdue-text" | "overdue-solid" | "sev-4" | "sev-4-bg" | "sev-4-text" | "sev-5" | "sev-5-bg" | "sev-5-text" | "success-solid" | "warning-solid" | "info-solid" | "danger-solid" | "neutral-solid" | "neutral-text" | "neutral-bg" | "neutral-border" | "chart-1" | "chart-2" | "chart-3" | "chart-4" | "chart-5" | "chart-6" | "chart-7" | "chart-8" | "chart-neutral" | "chart-grid" | "chart-axis" | "chart-reference" | "chart-zone-warning" | "chart-zone-danger" | "chart-forecast-band" | "chart-event" | "chart-partial" | "chart-comparison" | "row" | "row-alt" | "row-pinned-bg" | "row-selected-bg" | "scrollbar-thumb" | "scrollbar-thumb-hover" | "scrollbar-track" | "scrim" | "scrim-strong" | "print-ink" | "print-ink-quiet" | "print-paper" | "print-paper-quiet" | "print-line" | "print-danger" | "shadow-sm" | "shadow-md" | "shadow-popover" | "shadow-overlay" | "highlight-top" | "ease-out" | "ease-out-strong" | "ease-in" | "ease-in-out" | "ease-spring" | "dur-fast" | "dur" | "dur-slow" | "dur-slower" | "dur-exit-fast" | "dur-exit" | "dur-exit-slow" | "dur-highlight" | "dur-change" | "delay-pending" | "hold-pending" | "hold-result" | "delay-tooltip" | "delay-tooltip-skip" | "loop-spin" | "loop-progress" | "loop-shimmer" | "loop-ping" | "loop-blink" | "loop-pulse" | "lift" | "z-raised" | "z-sticky" | "z-dropdown" | "z-overlay" | "z-tooltip" | "z-toast" | "radius-xs" | "radius-sm" | "radius-md" | "radius-lg" | "radius-xl" | "radius-pill" | "row-h" | "row-h-compact" | "row-h-comfortable" | "control-h" | "sidebar-w" | "sidebar-w-rail" | "topbar-h" | "scrollbar-size" | "icon-sm" | "icon-md" | "icon-lg" | "peek-w" | "col-w-xs" | "col-w-sm" | "col-w-md" | "col-w-lg" | "col-w-xl" | "col-title-min" | "space-0" | "space-1" | "space-2" | "space-3" | "space-4" | "space-5" | "space-6" | "space-7" | "space-8" | "space-9" | "space-10" | "space-11" | "space-12" | "font-sans" | "font-heading" | "font-mono" | "text-display" | "leading-display" | "text-data-hero" | "leading-data-hero" | "text-h2" | "leading-h2" | "text-h3" | "leading-h3" | "text-body" | "leading-body" | "text-meta" | "leading-meta" | "text-eyebrow" | "leading-eyebrow" | "tracking-tight" | "tracking-eyebrow";
2
+ export type UixTokenName = "bg-app" | "bg-subtle" | "bg-hover" | "bg-active" | "surface" | "surface-2" | "surface-3" | "border" | "border-strong" | "text" | "text-hushed" | "text-muted" | "text-reverse" | "text-hushed-reverse" | "accent" | "accent-dark" | "accent-light" | "accent-hover" | "accent-fg" | "link" | "accent-text" | "ring" | "brand-muted" | "success" | "success-fg" | "success-bg" | "success-text" | "warning" | "warning-fg" | "warning-bg" | "warning-text" | "warning-border" | "info" | "info-fg" | "info-bg" | "info-text" | "danger" | "danger-fg" | "danger-bg" | "danger-border" | "danger-text" | "amber" | "amber-text" | "amber-bg" | "attention" | "attention-bg" | "attention-text" | "attention-solid" | "overdue" | "overdue-bg" | "overdue-text" | "overdue-solid" | "sev-4" | "sev-4-bg" | "sev-4-text" | "sev-5" | "sev-5-bg" | "sev-5-text" | "success-solid" | "warning-solid" | "info-solid" | "danger-solid" | "neutral-solid" | "neutral-text" | "neutral-bg" | "neutral-border" | "chart-1" | "chart-2" | "chart-3" | "chart-4" | "chart-5" | "chart-6" | "chart-7" | "chart-8" | "chart-neutral" | "chart-grid" | "chart-axis" | "chart-reference" | "chart-zone-warning" | "chart-zone-danger" | "chart-forecast-band" | "chart-event" | "chart-partial" | "chart-comparison" | "row" | "row-alt" | "row-pinned-bg" | "row-selected-bg" | "scrollbar-thumb" | "scrollbar-thumb-hover" | "scrollbar-track" | "scrim" | "scrim-strong" | "print-ink" | "print-ink-quiet" | "print-paper" | "print-paper-quiet" | "print-line" | "print-danger" | "shadow-sm" | "shadow-md" | "shadow-popover" | "shadow-overlay" | "highlight-top" | "ease-out" | "ease-out-strong" | "ease-in" | "ease-in-out" | "ease-spring" | "dur-fast" | "dur" | "dur-slow" | "dur-slower" | "dur-exit-fast" | "dur-exit" | "dur-exit-slow" | "dur-highlight" | "dur-change" | "delay-pending" | "hold-pending" | "hold-result" | "delay-tooltip" | "delay-tooltip-skip" | "loop-spin" | "loop-progress" | "loop-shimmer" | "loop-ping" | "loop-blink" | "loop-pulse" | "lift" | "z-raised" | "z-sticky" | "z-dropdown" | "z-overlay" | "z-tooltip" | "z-toast" | "radius-xs" | "radius-sm" | "radius-md" | "radius-lg" | "radius-xl" | "radius-pill" | "row-h" | "row-h-compact" | "row-h-standard" | "row-h-comfortable" | "control-h" | "sidebar-w" | "sidebar-w-rail" | "topbar-h" | "scrollbar-size" | "icon-sm" | "icon-md" | "icon-lg" | "peek-w" | "col-w-xs" | "col-w-sm" | "col-w-md" | "col-w-lg" | "col-w-xl" | "col-title-min" | "space-0" | "space-1" | "space-2" | "space-3" | "space-4" | "space-5" | "space-6" | "space-7" | "space-8" | "space-9" | "space-10" | "space-11" | "space-12" | "font-sans" | "font-heading" | "font-mono" | "text-display" | "leading-display" | "text-data-hero" | "leading-data-hero" | "text-h2" | "leading-h2" | "text-h3" | "leading-h3" | "text-body" | "leading-body" | "text-meta" | "leading-meta" | "text-eyebrow" | "leading-eyebrow" | "tracking-tight" | "tracking-eyebrow";
3
3
  export declare const cssVar: Record<UixTokenName, string>;
4
4
  export declare const light: Record<UixTokenName, string>;
5
5
  export declare const dark: Partial<Record<UixTokenName, string>>;
@@ -148,6 +148,7 @@ export const cssVar = {
148
148
  "radius-pill": "var(--uix-radius-pill)",
149
149
  "row-h": "var(--uix-row-h)",
150
150
  "row-h-compact": "var(--uix-row-h-compact)",
151
+ "row-h-standard": "var(--uix-row-h-standard)",
151
152
  "row-h-comfortable": "var(--uix-row-h-comfortable)",
152
153
  "control-h": "var(--uix-control-h)",
153
154
  "sidebar-w": "var(--uix-sidebar-w)",
@@ -343,6 +344,7 @@ export const light = {
343
344
  "radius-pill": "999px",
344
345
  "row-h": "56px",
345
346
  "row-h-compact": "44px",
347
+ "row-h-standard": "56px",
346
348
  "row-h-comfortable": "68px",
347
349
  "control-h": "36px",
348
350
  "sidebar-w": "248px",
@@ -487,6 +489,7 @@ export const num = {
487
489
  "radius-pill": 999,
488
490
  "row-h": 56,
489
491
  "row-h-compact": 44,
492
+ "row-h-standard": 56,
490
493
  "row-h-comfortable": 68,
491
494
  "control-h": 36,
492
495
  "sidebar-w": 248,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tensor_1/tokens",
3
- "version": "2.50.0",
3
+ "version": "2.51.1",
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": [
@@ -54,6 +54,11 @@
54
54
  .uix-data-workspace__id-text { display: inline-flex; flex-direction: column; align-items: flex-start; min-inline-size: 0; text-align: start; }
55
55
  .uix-data-workspace__id-text > * { max-inline-size: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
56
56
  .uix-data-workspace__id-link { color: var(--uix-text); text-decoration: none; }
57
+ /* in a fixed layout the id column has a width: a long id ends in an ellipsis there, not drawn
58
+ over the next column (an auto layout grows the column instead) */
59
+ .uix-data-workspace .uix-table--fixed td.uix-id-cell { overflow: hidden; }
60
+ .uix-data-workspace__id .uix-id-cell__btn { min-inline-size: 0; max-inline-size: 100%; }
61
+ .uix-data-workspace__id-label { min-inline-size: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
57
62
 
58
63
  /* row groups: each group is a tbody under its header row. The zebra restarts under every header
59
64
  with a plain row: the group swaps the two row colours its rows read (no selector here outranks
@@ -65,6 +70,9 @@
65
70
  height: auto; padding-block: var(--uix-space-2); border-bottom: 1px solid var(--uix-border);
66
71
  background: linear-gradient(var(--uix-row-bg), var(--uix-row-bg)), var(--uix-surface);
67
72
  }
73
+ /* a group header is as tall as its content at every density: the density heights on the table
74
+ (0,3,1) outrank the rule above, so this one names the header row at a higher weight */
75
+ .uix-data-workspace .uix-table tbody tr.uix-data-workspace__group-head > :is(th, td) { height: auto; }
68
76
  .uix-data-workspace__group-label { font-weight: 400; text-align: start; }
69
77
  /* the label spans several columns: its words stay in view while the table scrolls sideways,
70
78
  the cell itself does not stick (it would slide over the aggregates) */
@@ -125,7 +133,7 @@
125
133
  .uix-data-workspace .uix-table--cards td[data-col="actions"] .uix-rowact { opacity: 1; }
126
134
  /* the id's words wrap in a card rather than run under the actions */
127
135
  .uix-data-workspace .uix-table--cards .uix-data-workspace__id, .uix-data-workspace .uix-table--cards .uix-id-cell__btn { white-space: normal; text-align: start; }
128
- .uix-data-workspace .uix-table--cards .uix-data-workspace__id-text > * { white-space: normal; overflow-wrap: anywhere; }
136
+ .uix-data-workspace .uix-table--cards .uix-data-workspace__id-text > *, .uix-data-workspace .uix-table--cards .uix-data-workspace__id-label { white-space: normal; overflow-wrap: anywhere; }
129
137
  /* a group's header in cards: one line above its cards (checkbox, toggle, name, count, then the aggregates) */
130
138
  .uix-data-workspace .uix-table--cards tbody tr.uix-data-workspace__group-head {
131
139
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--uix-space-1) var(--uix-space-3);
@@ -48,6 +48,8 @@
48
48
  font-size: 10pt;
49
49
  line-height: 1.45;
50
50
  --uix-row-h: var(--uix-row-h-compact);
51
+ /* the paper's rows are compact, also in a table that names standard (HAR-2631) */
52
+ --uix-row-h-standard: var(--uix-row-h-compact);
51
53
  background: var(--uix-print-paper);
52
54
  color: var(--uix-print-ink);
53
55
  box-shadow: var(--uix-shadow-md);
@@ -5,7 +5,11 @@
5
5
  /* TENSOR RX-125 (UIX-07): no height cap by default — a nested scroller hid rows
6
6
  below 460px on every table. Opt in with .uix-table-wrap--scroll or set
7
7
  --uix-table-max-height. */
8
- .uix-table-wrap { overflow: auto; border: 1px solid var(--uix-border); border-radius: var(--uix-radius-lg); background: var(--uix-surface); }
8
+ /* position: relative (HAR-2632): the wrap is the frame for anything absolute in a cell (a
9
+ visually hidden label), which otherwise sat at its place in the scrolled table, outside the
10
+ wrap, and widened the page (TENSOR: 1377 px of content in a 1032 px main). Sticky headers and
11
+ frozen cells, the sticky busy bar and the top-layer menus and popovers do not depend on it. */
12
+ .uix-table-wrap { position: relative; overflow: auto; border: 1px solid var(--uix-border); border-radius: var(--uix-radius-lg); background: var(--uix-surface); }
9
13
  .uix-table-wrap--scroll { max-height: var(--uix-table-max-height, 460px); }
10
14
  .uix-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--uix-text-body); }
11
15
 
@@ -53,13 +57,24 @@
53
57
  .uix-table--no-zebra tbody tr:where(:nth-child(even)) { --uix-row-bg: var(--uix-row); }
54
58
  .uix-table tbody tr:where([data-pinned]) { --uix-row-bg: var(--uix-row-pinned-bg); }
55
59
  .uix-table tbody tr:where([data-selected]) { --uix-row-bg: var(--uix-row-selected-bg); }
60
+ /* Muted text in a selected row reads on the selection tint at AA (HAR-2635: 4.36:1 before). It is
61
+ derived, not a fixed colour: the table keeps the muted colour of its scope (a theme, more
62
+ contrast, print), and a selected row moves it 30 % toward that scope's text, so any scope that
63
+ sets --uix-text-muted gets a darker (light) or lighter (dark) muted on its selection, never a
64
+ weaker one. */
65
+ .uix-table { --uix-table-muted: var(--uix-text-muted); }
66
+ .uix-table tbody tr:where([data-selected], [aria-selected="true"]) { --uix-text-muted: color-mix(in srgb, var(--uix-table-muted) 70%, var(--uix-text)); }
56
67
  @media (hover: hover) { .uix-table tbody tr:where(:hover) { --uix-row-bg: var(--uix-bg-hover); } }
57
68
  /* Row links stay calm on hover/focus: the row tint is the affordance, so neither the base
58
69
  layer's `a:hover` underline nor link.css reaches them. `:not(.uix-btn)` keeps buttons
59
70
  styled; the global :focus-visible ring still marks keyboard focus. */
60
71
  .uix-table tbody a:not(.uix-btn):is(:hover, :focus-visible) { color: var(--uix-text); text-decoration: none; }
61
- .uix-table[data-density="compact"] td, .uix-table--compact td { height: var(--uix-row-h-compact); }
62
- .uix-table[data-density="comfortable"] td { height: var(--uix-row-h-comfortable); }
72
+ /* not in cards: a card's cells are as tall as their content (HAR-2631 item 3, the density rules
73
+ outranked the cards reset and a two-line id ran over the card's top border) */
74
+ .uix-table:not(.uix-table--cards)[data-density="compact"] td, .uix-table--compact:not(.uix-table--cards) td { height: var(--uix-row-h-compact); }
75
+ .uix-table:not(.uix-table--cards)[data-density="comfortable"] td { height: var(--uix-row-h-comfortable); }
76
+ /* a table that asks for standard keeps it under a page-wide --uix-row-h re-point (HAR-2631) */
77
+ .uix-table:not(.uix-table--cards)[data-density="standard"] td { height: var(--uix-row-h-standard); }
63
78
 
64
79
  .uix-table__pin { border: 0; background: transparent; color: var(--uix-text-muted); cursor: pointer; padding: var(--uix-space-1); border-radius: var(--uix-radius-xs); transition: opacity var(--uix-dur-fast) var(--uix-ease-out); }
65
80
  /* Hidden until hover only where hover exists; a touch screen always shows the pin. The
@@ -165,6 +180,9 @@
165
180
 
166
181
  /* ── row hover actions + kebab ─────────────────────────────────────────────────── */
167
182
  .uix-table__actions { width: 84px; text-align: right; white-space: nowrap; }
183
+ /* the controls share one centre line: an icon-only button has no text baseline, so on the
184
+ baseline it sat a few px above the word buttons beside it */
185
+ .uix-table__actions :is(.uix-btn, .uix-rowact) { vertical-align: middle; }
168
186
  .uix-rowact { border: 0; background: transparent; color: var(--uix-text-muted); cursor: pointer; padding: var(--uix-space-1); border-radius: var(--uix-radius-sm); transition: opacity var(--uix-dur-fast) var(--uix-ease-out), background-color var(--uix-dur-fast) var(--uix-ease-out); }
169
187
  .uix-rowact svg { width: 16px; height: 16px; display: block; }
170
188
  /* Row actions hide until hover only where hover exists: on a touch screen they stay visible, so
@@ -8,6 +8,7 @@
8
8
 
9
9
  "row-h": { "$type": "dimension", "$value": "56px" },
10
10
  "row-h-compact": { "$type": "dimension", "$value": "44px" },
11
+ "row-h-standard": { "$type": "dimension", "$value": "56px", "$description": "The standard row height, held by a table that asks for it (Table density=\"standard\", HAR-2631): a page-wide re-point of --uix-row-h (a density or spacing preference) does not reach it. A table that names no density follows --uix-row-h." },
11
12
  "row-h-comfortable": { "$type": "dimension", "$value": "68px" },
12
13
  "control-h": { "$type": "dimension", "$value": "36px" },
13
14
  "sidebar-w": { "$type": "dimension", "$value": "248px" },