@tensor_1/tokens 2.33.0 → 2.35.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tensor_1/tokens",
3
- "version": "2.33.0",
3
+ "version": "2.35.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": [
@@ -4,6 +4,9 @@
4
4
  .uix-list__item { 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); }
5
5
  .uix-list__item:last-child { border-bottom: 0; }
6
6
  .uix-list__item:hover { background: var(--uix-bg-hover); }
7
+ /* roving list: the items take focus one at a time; the ring is inset because the list clips */
8
+ .uix-list--roving > .uix-list__item:focus-visible { outline-offset: -2px; }
9
+ .uix-list--roving > .uix-list__item[tabindex] { cursor: default; }
7
10
  .uix-list__title { display: block; font-weight: 500; }
8
11
  .uix-list__meta { display: block; font-size: var(--uix-text-meta); color: var(--uix-text-muted); }
9
12
  .uix-list__trail { margin-left: auto; display: flex; align-items: center; gap: var(--uix-space-2); }
@@ -109,6 +109,24 @@
109
109
  :is(.uix-scheduling-calendar__entry,.uix-scheduling-calendar__swatch)[data-band="high"]:is([data-status="tentative"],[data-status="dead"],[data-status="done"]) { border-color:var(--calendar-band-high-text); }
110
110
  .uix-scheduling-calendar__entry[data-band="high"]:focus-visible { outline-color:var(--calendar-band-high-text); }
111
111
 
112
+ /* emphasis (HAR-1527): an item the consumer brings forward or sets back. Weight and
113
+ quietness only, and it leaves the other channels alone: a highlight is a heavier edge all
114
+ round in the text colour, also round the fill of the high band (a medium band keeps a
115
+ thicker leading edge still), a dimmed item is quieter text. The line style of the state
116
+ stays as it is: on the fill a dashed or dotted edge keeps the colour that shows on the fill.
117
+ A dimmed item of the filled band gives the fill up and keeps the band on its edge. */
118
+ .uix-scheduling-calendar__entry[data-highlight] { border-width:2px; border-color:var(--calendar-chrome-text); font-weight:600; }
119
+ .uix-scheduling-calendar__entry[data-highlight] .uix-scheduling-calendar__title { font-weight:600; }
120
+ .uix-scheduling-calendar__entry[data-band="medium"][data-highlight] { border-left-width:5px; }
121
+ .uix-scheduling-calendar__entry[data-dim] { color:var(--calendar-chrome-text-quiet); }
122
+ .uix-scheduling-calendar__entry[data-dim] .uix-scheduling-calendar__title { font-weight:400; }
123
+ .uix-scheduling-calendar__entry[data-band="high"][data-dim] { border-color:var(--calendar-band-high-fill); border-left-width:4px; background:var(--calendar-chrome-surface); color:var(--calendar-chrome-text-quiet); }
124
+ /* in the agendas the heavier edge is the leading one, drawn inside the row so nothing in it moves */
125
+ :is(.uix-scheduling-calendar__agenda-row,.uix-scheduling-calendar__agenda > ol > li > button)[data-highlight] { box-shadow:inset 3px 0 0 var(--calendar-chrome-text); font-weight:600; }
126
+ .uix-scheduling-calendar__agenda-row[data-highlight] .uix-scheduling-calendar__title { font-weight:600; }
127
+ :is(.uix-scheduling-calendar__agenda-row,.uix-scheduling-calendar__agenda > ol > li > button)[data-dim] { color:var(--calendar-chrome-text-quiet); }
128
+ .uix-scheduling-calendar__agenda-row[data-dim] .uix-scheduling-calendar__title,.uix-scheduling-calendar__agenda > ol > li > button[data-dim] strong { font-weight:400; }
129
+
112
130
  /* spans and windows: placed in the week row by the layout, one lane each */
113
131
  .uix-scheduling-calendar__span,.uix-scheduling-calendar__window,.uix-scheduling-calendar__rowmore { grid-row:1; align-self:start; height:calc(var(--calendar-lane) - var(--calendar-gap)); margin-top:calc(var(--calendar-pad) + var(--calendar-head) + var(--uix-scheduling-calendar-lane,0) * var(--calendar-lane)); margin-inline:var(--calendar-pad-inline); }
114
132
  :is(.uix-scheduling-calendar__span,.uix-scheduling-calendar__window)[data-continues-before] { margin-left:0; border-left-style:dashed; border-top-left-radius:0; border-bottom-left-radius:0; }
@@ -140,9 +158,9 @@
140
158
 
141
159
  .uix-scheduling-calendar__empty { grid-column:1 / -1; position:sticky; left:0; padding:var(--uix-space-3); border-right:1px solid var(--calendar-chrome-line); border-bottom:1px solid var(--calendar-chrome-line); background:var(--calendar-chrome-surface); color:var(--calendar-chrome-text-quiet); }
142
160
 
143
- .uix-scheduling-calendar__agenda ol { display:grid; gap:var(--uix-space-2); margin:0; padding:0; list-style:none; }
144
- .uix-scheduling-calendar__agenda li>button { width:100%; display:flex; align-items:center; justify-content:space-between; gap:var(--uix-space-3); padding:var(--uix-space-3); border:1px solid var(--calendar-chrome-line); border-radius:var(--uix-radius-md); background:var(--calendar-chrome-surface); color:var(--calendar-chrome-text); text-align:left; }
145
- .uix-scheduling-calendar__agenda li>button>span:first-child { flex:1 1 auto; display:grid; gap:var(--uix-space-1); min-width:0; } .uix-scheduling-calendar__agenda li>button>span:first-child>span { color:var(--calendar-chrome-text-quiet); font-size:var(--uix-text-meta); }
161
+ .uix-scheduling-calendar__agenda > ol { display:grid; gap:var(--uix-space-2); margin:0; padding:0; list-style:none; }
162
+ .uix-scheduling-calendar__agenda > ol > li > button { width:100%; display:flex; align-items:center; justify-content:space-between; gap:var(--uix-space-3); padding:var(--uix-space-3); border:1px solid var(--calendar-chrome-line); border-radius:var(--uix-radius-md); background:var(--calendar-chrome-surface); color:var(--calendar-chrome-text); text-align:left; }
163
+ .uix-scheduling-calendar__agenda > ol > li > button > span:first-child { flex:1 1 auto; display:grid; gap:var(--uix-space-1); min-width:0; } .uix-scheduling-calendar__agenda > ol > li > button > span:first-child > span { color:var(--calendar-chrome-text-quiet); font-size:var(--uix-text-meta); }
146
164
  .uix-scheduling-calendar__status { flex:none; color:var(--calendar-chrome-text-quiet); font-size:var(--uix-text-meta); }
147
165
 
148
166
  .uix-scheduling-calendar__legend { display:flex; flex-wrap:wrap; align-items:center; gap:var(--uix-space-2) var(--uix-space-3); font-size:var(--uix-text-meta); color:var(--calendar-chrome-text-quiet); }
@@ -156,6 +174,76 @@
156
174
  .uix-scheduling-calendar__legend > span[data-state="in-progress"]::before { border:0.1875rem solid var(--calendar-status-text); border-radius:50%; width:0; height:0; }
157
175
  .uix-scheduling-calendar__legend > span:is([data-state="conflicted"],[data-state="blackout-violation"])::before { border:0; border-radius:0; background:var(--calendar-marker-ink); clip-path:polygon(50% 0,100% 100%,0 100%); }
158
176
 
177
+ /* ── Agenda grouped by day (HAR-1520) ─────────────────────────────────────────────────────
178
+ The consumer builds the groups. A heading per day with its window notes, then the rows.
179
+ A long agenda is a flat run of fixed-height rows inside its own scroller. */
180
+ .uix-scheduling-calendar__agenda-group + .uix-scheduling-calendar__agenda-group { margin-top:var(--uix-space-4); }
181
+ .uix-scheduling-calendar__agenda-head { position:sticky; top:0; display:flex; flex-wrap:wrap; align-items:center; gap:var(--uix-space-1) var(--uix-space-3); padding:var(--uix-space-2); border-bottom:1px solid var(--calendar-chrome-line-strong); background:var(--calendar-chrome-surface-quiet); }
182
+ .uix-scheduling-calendar__agenda-heading { margin:0; font-size:var(--uix-text-meta); font-weight:600; }
183
+ .uix-scheduling-calendar__agenda-notes { display:flex; flex-wrap:wrap; gap:var(--uix-space-1); min-width:0; margin:0; padding:0; list-style:none; }
184
+ .uix-scheduling-calendar__agenda-notes > li { min-width:0; margin:0; }
185
+ /* a window note is the window's bar from the grids, at rest in a line of text */
186
+ .uix-scheduling-calendar__agenda-notes .uix-scheduling-calendar__window { height:var(--calendar-lane); max-width:100%; margin:0; }
187
+ .uix-scheduling-calendar__agenda-rows { margin:0; padding:0; list-style:none; }
188
+ .uix-scheduling-calendar__agenda-rows > li { margin:0; border-bottom:1px solid var(--calendar-chrome-line); }
189
+ /* a row scrolled to by the keyboard stops below the sticky heading, not behind it */
190
+ .uix-scheduling-calendar__agenda-group :is(.uix-scheduling-calendar__agenda-row,.uix-scheduling-calendar__agenda-more) { scroll-margin-top:var(--uix-scheduling-calendar-agenda-head,3rem); }
191
+ .uix-scheduling-calendar__agenda-row { display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--uix-space-1) var(--uix-space-2); width:100%; min-width:0; padding:var(--uix-space-2) var(--uix-space-1); border:0; border-radius:var(--uix-radius-xs); background:transparent; color:var(--calendar-chrome-text); text-align:left; cursor:pointer; outline-offset:-2px; }
192
+ .uix-scheduling-calendar__agenda-row:hover { background:var(--calendar-chrome-surface-quiet); }
193
+ .uix-scheduling-calendar__agenda-row > .uix-scheduling-calendar__swatch { align-self:center; }
194
+ .uix-scheduling-calendar__agenda-time { flex:none; min-width:6.25rem; color:var(--calendar-chrome-text-quiet); font-size:var(--uix-text-meta); font-variant-numeric:tabular-nums; }
195
+ /* the title takes the whole row before it wraps; it is never cut short of the row width */
196
+ .uix-scheduling-calendar__agenda-main { flex:1 1 12rem; display:grid; gap:var(--calendar-gap); min-width:0; overflow-wrap:anywhere; }
197
+ .uix-scheduling-calendar__agenda-meta { color:var(--calendar-chrome-text-quiet); font-size:var(--uix-text-meta); }
198
+ .uix-scheduling-calendar__agenda-row > .uix-scheduling-calendar__markers { flex:0 1 auto; flex-wrap:wrap; gap:var(--uix-space-1) var(--uix-space-2); font-size:var(--uix-text-meta); }
199
+ .uix-scheduling-calendar__agenda-more,.uix-scheduling-calendar__agenda-continues { margin:0; padding:var(--uix-space-2) var(--uix-space-1); color:var(--calendar-chrome-text-quiet); font-size:var(--uix-text-meta); }
200
+ button.uix-scheduling-calendar__agenda-more { display:block; border:0; border-radius:var(--uix-radius-xs); background:transparent; color:var(--calendar-chrome-text); font-weight:600; text-align:left; text-decoration:underline; cursor:pointer; }
201
+ button.uix-scheduling-calendar__agenda-more:hover { background:var(--calendar-chrome-surface-quiet); }
202
+ .uix-scheduling-calendar__agenda--virtual { container:uix-scheduling-agenda / inline-size; max-height:min(70vh,40rem); overflow-y:auto; border:1px solid var(--calendar-chrome-line); border-radius:var(--uix-radius-sm); }
203
+ /* the mounted rows; its padding stands in for the rows above and below them */
204
+ .uix-scheduling-calendar__agenda-window { box-sizing:content-box; min-width:0; }
205
+ .uix-scheduling-calendar__agenda-vrow { display:flex; align-items:center; height:44px; padding:0 var(--uix-space-2); border-bottom:1px solid var(--calendar-chrome-line); overflow:hidden; }
206
+ .uix-scheduling-calendar__agenda-vrow > * { flex:1 1 auto; min-width:0; }
207
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-head { position:static; padding:0; border:0; background:transparent; }
208
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-head { flex-wrap:nowrap; }
209
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-heading { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
210
+ /* a window note has a row of its own here: the bar from the grids, as wide as its words */
211
+ .uix-scheduling-calendar__agenda-vrow > .uix-scheduling-calendar__window { flex:0 1 auto; align-self:center; height:var(--calendar-lane); margin:0; }
212
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-row { flex-wrap:nowrap; align-items:center; padding:0; white-space:nowrap; }
213
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-time { flex:0 1 auto; overflow:hidden; text-overflow:ellipsis; }
214
+ /* the title keeps a readable width; the markers give way first, their labels cut with an ellipsis */
215
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-main { flex:1 1 10rem; display:block; min-width:10rem; overflow:hidden; text-overflow:ellipsis; overflow-wrap:normal; }
216
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-meta { margin-left:var(--uix-space-2); }
217
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-row > .uix-scheduling-calendar__markers { flex:0 1 auto; flex-wrap:nowrap; min-width:0; overflow:hidden; }
218
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-row > .uix-scheduling-calendar__markers > span { flex:0 1 auto; display:inline-flex; min-width:0.6875rem; overflow:hidden; }
219
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-row .uix-scheduling-calendar__marker { flex:0 1 auto; min-width:0; }
220
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-row .uix-scheduling-calendar__marker::before,.uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-row .uix-scheduling-calendar__marker-icon { flex:none; }
221
+ .uix-scheduling-calendar__agenda-vrow .uix-scheduling-calendar__agenda-row > .uix-scheduling-calendar__status { flex:none; }
222
+ /* a narrow long agenda (the component measures it): taller rows of three lines — the title, the time, then markers and status */
223
+ .uix-scheduling-calendar__agenda--virtual[data-narrow] .uix-scheduling-calendar__agenda-vrow { height:64px; }
224
+ .uix-scheduling-calendar__agenda--virtual[data-narrow] .uix-scheduling-calendar__agenda-row { display:grid; grid-template-columns:auto minmax(0,1fr) auto; grid-template-rows:auto auto auto; align-content:center; gap:0 var(--uix-space-2); }
225
+ .uix-scheduling-calendar__agenda--virtual[data-narrow] .uix-scheduling-calendar__agenda-row > .uix-scheduling-calendar__swatch { grid-row:1 / span 3; }
226
+ .uix-scheduling-calendar__agenda--virtual[data-narrow] .uix-scheduling-calendar__agenda-main { grid-column:2 / -1; grid-row:1; min-width:0; }
227
+ /* a time that names two days may not fit: each end keeps half the line and is cut on its own, so both stay in sight */
228
+ .uix-scheduling-calendar__agenda--virtual[data-narrow] .uix-scheduling-calendar__agenda-time { grid-column:2 / -1; grid-row:2; display:flex; min-width:0; overflow:visible; white-space:pre; }
229
+ .uix-scheduling-calendar__agenda--virtual[data-narrow] .uix-scheduling-calendar__agenda-time-part { flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; }
230
+ .uix-scheduling-calendar__agenda--virtual[data-narrow] .uix-scheduling-calendar__agenda-row > .uix-scheduling-calendar__markers { grid-column:2; grid-row:3; justify-self:start; max-width:100%; }
231
+ .uix-scheduling-calendar__agenda--virtual[data-narrow] .uix-scheduling-calendar__agenda-row > .uix-scheduling-calendar__status { grid-column:3; grid-row:3; max-width:50cqi; overflow:hidden; text-overflow:ellipsis; }
232
+ .uix-scheduling-calendar__agenda-vrow :is(.uix-scheduling-calendar__agenda-more,.uix-scheduling-calendar__agenda-continues) { padding:0; }
233
+
234
+ /* ── Month, counts only (HAR-1520): a narrow screen gets the day, its count and its markers ── */
235
+ /* the head of a cell is three lines here, the date over the count over the markers; the lanes and the cell height follow from it */
236
+ .uix-scheduling-calendar__grid[data-density="counts"] { --calendar-head:4rem; }
237
+ .uix-scheduling-calendar__grid[data-density="counts"],.uix-scheduling-calendar__grid[data-density="counts"] .uix-scheduling-calendar__week { grid-template-columns:repeat(7,minmax(2.75rem,1fr)); }
238
+ .uix-scheduling-calendar__grid[data-density="counts"] .uix-scheduling-calendar__dayhead { display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:1.5rem 1.25rem 1.25rem; align-items:center; gap:0 var(--calendar-gap); }
239
+ .uix-scheduling-calendar__grid[data-density="counts"] .uix-scheduling-calendar__dayhead > .uix-scheduling-calendar__date { grid-column:1 / -1; grid-row:1; width:100%; height:1.5rem; }
240
+ .uix-scheduling-calendar__grid[data-density="counts"] .uix-scheduling-calendar__day > .uix-scheduling-calendar__date { height:1.5rem; }
241
+ .uix-scheduling-calendar__grid[data-density="counts"] .uix-scheduling-calendar__dayhead > .uix-scheduling-calendar__badge { grid-column:1; grid-row:2; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
242
+ .uix-scheduling-calendar__grid[data-density="counts"] .uix-scheduling-calendar__dayhead > .uix-scheduling-calendar__count { grid-column:2; grid-row:2; display:inline-flex; align-items:center; }
243
+ /* a count of any length keeps its own line; the markers have the next one */
244
+ .uix-scheduling-calendar__grid[data-density="counts"] .uix-scheduling-calendar__dayhead > .uix-scheduling-calendar__markers { grid-column:1 / -1; grid-row:3; justify-self:end; max-width:100%; overflow:hidden; }
245
+ .uix-scheduling-calendar__grid[data-density="counts"] .uix-scheduling-calendar__weekday { padding-inline:var(--calendar-pad); overflow:hidden; }
246
+
159
247
  /* ── Week / Day time grid (HAR-1509) ─────────────────────────────────────────────────────────
160
248
  Four stacked rows share one column template: the day heads, the window strip, the top lane
161
249
  and the hours. A day column is as tall as its day: --uix-scheduling-calendar-hours is the