@tensor_1/tokens 2.36.0 → 2.37.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/build/css/tokens.css +6 -0
- package/build/tailwind/preset.cjs +6 -0
- package/build/tailwind/theme.css +6 -0
- package/build/ts/tokens.d.ts +1 -1
- package/build/ts/tokens.js +12 -0
- package/package.json +1 -1
- package/styles/components/scheduling-calendar.css +114 -0
- package/styles/components/scheduling-timeline.css +74 -0
- package/tokens/base/color.json +8 -1
package/build/css/tokens.css
CHANGED
|
@@ -96,6 +96,12 @@
|
|
|
96
96
|
--uix-scrollbar-track: transparent;
|
|
97
97
|
--uix-scrim: rgba(0,0,0,.5);
|
|
98
98
|
--uix-scrim-strong: rgba(0,0,0,.7);
|
|
99
|
+
--uix-print-ink: #0A0A0A;
|
|
100
|
+
--uix-print-ink-quiet: #525252;
|
|
101
|
+
--uix-print-paper: #FFFFFF;
|
|
102
|
+
--uix-print-paper-quiet: #F0F0F0;
|
|
103
|
+
--uix-print-line: #8A8A8A;
|
|
104
|
+
--uix-print-danger: #C40012;
|
|
99
105
|
--uix-shadow-sm: 0 1px 2px rgba(0,0,0,.06);
|
|
100
106
|
--uix-shadow-md: 0 4px 12px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.05);
|
|
101
107
|
--uix-shadow-popover: 0 8px 24px rgba(0,0,0,.10),0 1px 2px rgba(0,0,0,.05);
|
|
@@ -97,6 +97,12 @@ module.exports = {
|
|
|
97
97
|
"uix-scrollbar-track": "var(--uix-scrollbar-track)",
|
|
98
98
|
"uix-scrim": "var(--uix-scrim)",
|
|
99
99
|
"uix-scrim-strong": "var(--uix-scrim-strong)",
|
|
100
|
+
"uix-print-ink": "var(--uix-print-ink)",
|
|
101
|
+
"uix-print-ink-quiet": "var(--uix-print-ink-quiet)",
|
|
102
|
+
"uix-print-paper": "var(--uix-print-paper)",
|
|
103
|
+
"uix-print-paper-quiet": "var(--uix-print-paper-quiet)",
|
|
104
|
+
"uix-print-line": "var(--uix-print-line)",
|
|
105
|
+
"uix-print-danger": "var(--uix-print-danger)",
|
|
100
106
|
},
|
|
101
107
|
borderRadius: {
|
|
102
108
|
"uix-xs": "var(--uix-radius-xs)",
|
package/build/tailwind/theme.css
CHANGED
|
@@ -94,6 +94,12 @@
|
|
|
94
94
|
--color-uix-scrollbar-track: var(--uix-scrollbar-track);
|
|
95
95
|
--color-uix-scrim: var(--uix-scrim);
|
|
96
96
|
--color-uix-scrim-strong: var(--uix-scrim-strong);
|
|
97
|
+
--color-uix-print-ink: var(--uix-print-ink);
|
|
98
|
+
--color-uix-print-ink-quiet: var(--uix-print-ink-quiet);
|
|
99
|
+
--color-uix-print-paper: var(--uix-print-paper);
|
|
100
|
+
--color-uix-print-paper-quiet: var(--uix-print-paper-quiet);
|
|
101
|
+
--color-uix-print-line: var(--uix-print-line);
|
|
102
|
+
--color-uix-print-danger: var(--uix-print-danger);
|
|
97
103
|
|
|
98
104
|
--radius-uix-xs: var(--uix-radius-xs);
|
|
99
105
|
--radius-uix-sm: var(--uix-radius-sm);
|
package/build/ts/tokens.d.ts
CHANGED
|
@@ -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" | "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" | "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" | "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";
|
|
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>>;
|
package/build/ts/tokens.js
CHANGED
|
@@ -97,6 +97,12 @@ export const cssVar = {
|
|
|
97
97
|
"scrollbar-track": "var(--uix-scrollbar-track)",
|
|
98
98
|
"scrim": "var(--uix-scrim)",
|
|
99
99
|
"scrim-strong": "var(--uix-scrim-strong)",
|
|
100
|
+
"print-ink": "var(--uix-print-ink)",
|
|
101
|
+
"print-ink-quiet": "var(--uix-print-ink-quiet)",
|
|
102
|
+
"print-paper": "var(--uix-print-paper)",
|
|
103
|
+
"print-paper-quiet": "var(--uix-print-paper-quiet)",
|
|
104
|
+
"print-line": "var(--uix-print-line)",
|
|
105
|
+
"print-danger": "var(--uix-print-danger)",
|
|
100
106
|
"shadow-sm": "var(--uix-shadow-sm)",
|
|
101
107
|
"shadow-md": "var(--uix-shadow-md)",
|
|
102
108
|
"shadow-popover": "var(--uix-shadow-popover)",
|
|
@@ -270,6 +276,12 @@ export const light = {
|
|
|
270
276
|
"scrollbar-track": "transparent",
|
|
271
277
|
"scrim": "rgba(0,0,0,.5)",
|
|
272
278
|
"scrim-strong": "rgba(0,0,0,.7)",
|
|
279
|
+
"print-ink": "#0A0A0A",
|
|
280
|
+
"print-ink-quiet": "#525252",
|
|
281
|
+
"print-paper": "#FFFFFF",
|
|
282
|
+
"print-paper-quiet": "#F0F0F0",
|
|
283
|
+
"print-line": "#8A8A8A",
|
|
284
|
+
"print-danger": "#C40012",
|
|
273
285
|
"shadow-sm": "0 1px 2px rgba(0,0,0,.06)",
|
|
274
286
|
"shadow-md": "0 4px 12px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.05)",
|
|
275
287
|
"shadow-popover": "0 8px 24px rgba(0,0,0,.10),0 1px 2px rgba(0,0,0,.05)",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tensor_1/tokens",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.37.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": [
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
--calendar-status-text-dim: var(--uix-text-muted);
|
|
25
25
|
--calendar-band-medium-edge: var(--uix-neutral-solid);
|
|
26
26
|
--calendar-band-high-fill: var(--uix-danger);
|
|
27
|
+
--calendar-band-high-edge: var(--uix-danger); /* read on paper only, where the fill is the paper's */
|
|
27
28
|
--calendar-band-high-text: var(--uix-danger-fg);
|
|
28
29
|
--calendar-window-surface: var(--uix-neutral-bg);
|
|
29
30
|
--calendar-window-ink: var(--uix-neutral-solid);
|
|
@@ -280,6 +281,8 @@
|
|
|
280
281
|
.uix-scheduling-calendar__tg-item > .uix-scheduling-calendar__entry-text { white-space:normal; overflow-wrap:anywhere; max-height:100%; }
|
|
281
282
|
.uix-scheduling-calendar__tg-item[data-lines="1"] > .uix-scheduling-calendar__entry-text { white-space:nowrap; overflow-wrap:normal; }
|
|
282
283
|
.uix-scheduling-calendar__tg-item > .uix-scheduling-calendar__markers { height:1rem; }
|
|
284
|
+
/* an item too short for a line shows its markers only; its words are in the markup for paper (HAR-1541) */
|
|
285
|
+
.uix-scheduling-calendar__tg-item > [data-room="none"] { display:none; }
|
|
283
286
|
.uix-scheduling-calendar__tg-from { flex:1 1 auto; min-width:0; overflow:hidden; white-space:nowrap; font-style:italic; }
|
|
284
287
|
/* an item that crosses midnight: two parts with the shared edge left open */
|
|
285
288
|
.uix-scheduling-calendar__tg-item[data-part="start"] { border-bottom-style:dashed; border-bottom-left-radius:0; border-bottom-right-radius:0; }
|
|
@@ -298,4 +301,115 @@
|
|
|
298
301
|
.uix-scheduling-calendar__tg-probe { position:absolute; left:0; top:0; height:0; padding:0 0.125rem; border:0 solid transparent; border-width:0 1px; visibility:hidden; overflow:hidden; white-space:nowrap; font-size:var(--uix-text-meta); pointer-events:none; }
|
|
299
302
|
|
|
300
303
|
.uix-scheduling-calendar__state { padding:var(--uix-space-8); border:1px dashed var(--calendar-chrome-line-strong); border-radius:var(--uix-radius-lg); text-align:center; }
|
|
304
|
+
/* ── Print (HAR-1541) ────────────────────────────────────────────────────────────────────────
|
|
305
|
+
The same markup on paper. Nothing scrolls or is cut, and the colours are the paper's (light,
|
|
306
|
+
whatever theme the screen has). The calendar asks the browser to print its surfaces as they
|
|
307
|
+
are; a browser may refuse, so no meaning rests on a fill or a pattern: each is an edge too.
|
|
308
|
+
The first rule is the colour map again. */
|
|
309
|
+
@media print {
|
|
310
|
+
.uix-scheduling-calendar {
|
|
311
|
+
--calendar-chrome-text: var(--uix-print-ink);
|
|
312
|
+
--calendar-chrome-text-quiet: var(--uix-print-ink-quiet);
|
|
313
|
+
--calendar-chrome-surface: var(--uix-print-paper);
|
|
314
|
+
--calendar-chrome-surface-quiet: var(--uix-print-paper-quiet);
|
|
315
|
+
--calendar-chrome-line: var(--uix-print-line);
|
|
316
|
+
--calendar-chrome-line-strong: var(--uix-print-ink-quiet);
|
|
317
|
+
--calendar-status-surface: var(--uix-print-paper);
|
|
318
|
+
--calendar-status-surface-quiet: var(--uix-print-paper-quiet);
|
|
319
|
+
--calendar-status-edge: var(--uix-print-line);
|
|
320
|
+
--calendar-status-edge-strong: var(--uix-print-ink-quiet);
|
|
321
|
+
--calendar-status-text: var(--uix-print-ink);
|
|
322
|
+
--calendar-status-text-dim: var(--uix-print-ink-quiet);
|
|
323
|
+
--calendar-band-medium-edge: var(--uix-print-ink-quiet);
|
|
324
|
+
--calendar-band-high-fill: var(--uix-print-paper);
|
|
325
|
+
--calendar-band-high-edge: var(--uix-print-danger);
|
|
326
|
+
--calendar-band-high-text: var(--uix-print-ink);
|
|
327
|
+
--calendar-window-surface: var(--uix-print-paper);
|
|
328
|
+
--calendar-window-ink: var(--uix-print-ink);
|
|
329
|
+
--calendar-window-edge: var(--uix-print-ink-quiet);
|
|
330
|
+
--calendar-window-text: var(--uix-print-ink);
|
|
331
|
+
--calendar-marker-ink: var(--uix-print-ink);
|
|
332
|
+
--calendar-chrome-now: var(--uix-print-ink);
|
|
333
|
+
--calendar-chrome-ghost: var(--uix-print-line);
|
|
334
|
+
--calendar-chrome-ghost-surface: var(--uix-print-paper);
|
|
335
|
+
}
|
|
336
|
+
/* The calendar brings its own paper and asks for its surfaces to be printed as they are, so
|
|
337
|
+
an item covers what is behind it whether or not the reader prints background graphics. */
|
|
338
|
+
:where(.uix-scheduling-calendar) { background:var(--calendar-chrome-surface); -webkit-print-color-adjust:exact; print-color-adjust:exact; }
|
|
339
|
+
/* a focus ring belongs to the screen */
|
|
340
|
+
.uix-scheduling-calendar :focus-visible { outline:none; }
|
|
341
|
+
/* nothing scrolls on paper: a grid is as wide as the page and as tall as what it holds */
|
|
342
|
+
.uix-scheduling-calendar__grid,.uix-scheduling-calendar__timegrid,.uix-scheduling-calendar__agenda--virtual { overflow:visible; max-height:none; }
|
|
343
|
+
.uix-scheduling-calendar__grid,.uix-scheduling-calendar__week { grid-template-columns:repeat(7,minmax(0,1fr)); }
|
|
344
|
+
.uix-scheduling-calendar__tg-head,.uix-scheduling-calendar__tg-strip,.uix-scheduling-calendar__tg-body { grid-template-columns:var(--calendar-gutter) repeat(var(--uix-scheduling-calendar-days,7),minmax(0,1fr)); min-width:0; }
|
|
345
|
+
/* controls do nothing on paper; the period title, the zone label and the legend stay */
|
|
346
|
+
.uix-scheduling-calendar__header :is(button,.uix-segmented) { display:none; }
|
|
347
|
+
/* the line for "now" and a move not yet sent belong to the moment, not to the page */
|
|
348
|
+
.uix-scheduling-calendar__tg-now,.uix-scheduling-calendar__tg-ghost { display:none; }
|
|
349
|
+
/* a week row, an agenda row, the legend, and a time grid that fits a page stay on one page;
|
|
350
|
+
a heading stays with what it heads */
|
|
351
|
+
.uix-scheduling-calendar__week,.uix-scheduling-calendar__agenda-rows > li,.uix-scheduling-calendar__agenda-vrow,.uix-scheduling-calendar__tg-head,.uix-scheduling-calendar__tg-strip,.uix-scheduling-calendar__timegrid,.uix-scheduling-calendar__legend { break-inside:avoid; }
|
|
352
|
+
.uix-scheduling-calendar__header,.uix-scheduling-calendar__agenda-vrow[data-kind="heading"] { break-after:avoid; }
|
|
353
|
+
.uix-scheduling-calendar__agenda-head { position:static; break-after:avoid; }
|
|
354
|
+
.uix-scheduling-calendar__empty { position:static; }
|
|
355
|
+
|
|
356
|
+
/* Month: a week is as tall as the page allows for six of them, and grows with what it holds */
|
|
357
|
+
.uix-scheduling-calendar__day { min-height:clamp(4.5rem,calc((100vh - 10rem) / 6),8rem); }
|
|
358
|
+
.uix-scheduling-calendar__grid[data-fixed] .uix-scheduling-calendar__week { height:auto; }
|
|
359
|
+
.uix-scheduling-calendar__grid[data-fixed] .uix-scheduling-calendar__day { overflow:visible; }
|
|
360
|
+
/* a chip holds its whole title, and a day badge its whole text */
|
|
361
|
+
.uix-scheduling-calendar__entries > .uix-scheduling-calendar__entry { height:auto; min-height:var(--calendar-chip); white-space:normal; overflow:visible; }
|
|
362
|
+
.uix-scheduling-calendar__entries > .uix-scheduling-calendar__entry > .uix-scheduling-calendar__entry-text { overflow:visible; overflow-wrap:anywhere; }
|
|
363
|
+
.uix-scheduling-calendar__badge { overflow:visible; white-space:normal; }
|
|
364
|
+
|
|
365
|
+
/* Time grid: an hour is as tall as the page allows for the whole day, between a readable
|
|
366
|
+
hour and the hour of the screen. Every position is counted in hours, so the items follow. */
|
|
367
|
+
.uix-scheduling-calendar__timegrid { --calendar-hour:clamp(1.25rem,calc((100vh - 21rem) / var(--uix-scheduling-calendar-hours,24)),3rem); margin-bottom:var(--uix-space-8); }
|
|
368
|
+
.uix-scheduling-calendar__tg-dayhead,.uix-scheduling-calendar__tg-dayhead > .uix-scheduling-calendar__markers { overflow:visible; flex-wrap:wrap; }
|
|
369
|
+
/* the lanes over the days grow with the words of a window or of an item with no time of day */
|
|
370
|
+
.uix-scheduling-calendar__tg-strip { grid-auto-rows:minmax(var(--calendar-lane),auto); }
|
|
371
|
+
.uix-scheduling-calendar__tg-strip > :is(.uix-scheduling-calendar__window,.uix-scheduling-calendar__tg-span),.uix-scheduling-calendar__agenda-notes .uix-scheduling-calendar__window,.uix-scheduling-calendar__agenda-vrow > .uix-scheduling-calendar__window { height:auto; min-height:calc(var(--calendar-lane) - var(--calendar-gap)); white-space:normal; overflow:visible; }
|
|
372
|
+
:is(.uix-scheduling-calendar__tg-strip,.uix-scheduling-calendar__agenda-notes,.uix-scheduling-calendar__agenda-vrow) :is(.uix-scheduling-calendar__window-text,.uix-scheduling-calendar__window-name,.uix-scheduling-calendar__window-scope,.uix-scheduling-calendar__entry-text) { flex-wrap:wrap; overflow:visible; overflow-wrap:anywhere; }
|
|
373
|
+
/* the hour lines are a background: on paper each hour label draws its own line across the days */
|
|
374
|
+
.uix-scheduling-calendar__tg-column { background:none; }
|
|
375
|
+
.uix-scheduling-calendar__tg-gutter { position:static; }
|
|
376
|
+
.uix-scheduling-calendar__tg-gutter > .uix-scheduling-calendar__tg-hour { left:0; right:0; padding-right:calc(100% - var(--calendar-gutter) + var(--uix-space-1)); }
|
|
377
|
+
.uix-scheduling-calendar__tg-gutter > .uix-scheduling-calendar__tg-hour::after { content:""; position:absolute; top:0; left:var(--calendar-gutter); right:0; border-top:1px dotted var(--calendar-chrome-line); }
|
|
378
|
+
/* the hours of a window for everything: a quiet tint under the hour lines, and an edge of its own inside the
|
|
379
|
+
day. Its clip makes it a layer of its own, painted in the order of the grid: `order` puts it before the
|
|
380
|
+
hours, so their lines are drawn over it and the items over both. */
|
|
381
|
+
.uix-scheduling-calendar__tg-shade[data-pattern] { order:-1; margin-inline:var(--uix-space-1); border-inline:1px dashed var(--calendar-window-edge); background-color:var(--calendar-chrome-surface-quiet); opacity:1; }
|
|
382
|
+
/* an item is at least as tall as its time and grows to hold its words; one that starts later lies over the end of it */
|
|
383
|
+
.uix-scheduling-calendar__tg-item { height:auto; min-height:max(calc(var(--uix-scheduling-calendar-length,1) * var(--calendar-hour) - 1px),0.875rem); overflow:visible; }
|
|
384
|
+
.uix-scheduling-calendar__tg-item[data-lines] > :is(.uix-scheduling-calendar__entry-text,.uix-scheduling-calendar__tg-from) { display:block; max-height:none; overflow:visible; white-space:normal; overflow-wrap:anywhere; }
|
|
385
|
+
|
|
386
|
+
/* Agenda: the long form mounts every row while the page prints, each as tall as its text */
|
|
387
|
+
.uix-scheduling-calendar__agenda-window { padding:0 !important; }
|
|
388
|
+
.uix-scheduling-calendar__agenda--virtual .uix-scheduling-calendar__agenda-vrow,.uix-scheduling-calendar__agenda--virtual[data-narrow] .uix-scheduling-calendar__agenda-vrow { height:auto; min-height:44px; overflow:visible; }
|
|
389
|
+
.uix-scheduling-calendar__agenda--virtual .uix-scheduling-calendar__agenda-vrow :is(.uix-scheduling-calendar__agenda-row,.uix-scheduling-calendar__agenda-main,.uix-scheduling-calendar__agenda-time,.uix-scheduling-calendar__agenda-heading,.uix-scheduling-calendar__markers,.uix-scheduling-calendar__markers > span,.uix-scheduling-calendar__marker) { flex-wrap:wrap; overflow:visible; white-space:normal; }
|
|
390
|
+
|
|
391
|
+
/* Paper has no fill to rely on: the high band is the heaviest edge, in the one signal colour, in every
|
|
392
|
+
state. Its fill is the paper's on paper (the map above), so it still covers what is behind it, and its
|
|
393
|
+
edge has a name of its own there. */
|
|
394
|
+
:is(.uix-scheduling-calendar__entry,.uix-scheduling-calendar__swatch)[data-band="high"] { border-width:3px; border-color:var(--calendar-band-high-edge); }
|
|
395
|
+
: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-edge); }
|
|
396
|
+
.uix-scheduling-calendar__entry[data-band="high"][data-dim] { border-color:var(--calendar-band-high-edge); }
|
|
397
|
+
/* a highlight is a heavier edge, which does not show beside the edge of the high band, and in
|
|
398
|
+
the agendas a shadow, which may not print: on paper its title is underlined as well */
|
|
399
|
+
.uix-scheduling-calendar__entry[data-highlight] .uix-scheduling-calendar__title,:is(.uix-scheduling-calendar__agenda-row,.uix-scheduling-calendar__agenda > ol > li > button)[data-highlight] :is(.uix-scheduling-calendar__title,strong) { text-decoration:underline; }
|
|
400
|
+
/* a window's pattern is a background and may not print: its edge says the same */
|
|
401
|
+
:is(.uix-scheduling-calendar__window,.uix-scheduling-calendar__swatch)[data-pattern="diagonal"] { border-style:dashed; }
|
|
402
|
+
:is(.uix-scheduling-calendar__window,.uix-scheduling-calendar__swatch)[data-pattern="cross"] { border-style:double; border-width:3px; }
|
|
403
|
+
:is(.uix-scheduling-calendar__window,.uix-scheduling-calendar__swatch)[data-pattern="dotted"] { border-style:dotted; border-width:2px; }
|
|
404
|
+
/* a window for everything keeps its heavier edge in each pattern */
|
|
405
|
+
.uix-scheduling-calendar__window[data-global][data-pattern="diagonal"] { border-width:2px; }
|
|
406
|
+
.uix-scheduling-calendar__window[data-global][data-pattern="cross"] { border-width:4px; }
|
|
407
|
+
.uix-scheduling-calendar__window[data-global][data-pattern="dotted"] { border-width:3px; }
|
|
408
|
+
/* a window that goes on past the row is open at that end, whatever its pattern */
|
|
409
|
+
.uix-scheduling-calendar__window[data-continues-before] { border-left-style:none; }
|
|
410
|
+
.uix-scheduling-calendar__window[data-continues-after] { border-right-style:none; }
|
|
411
|
+
/* a bar too short for all its words gives up the scope first and keeps the name */
|
|
412
|
+
.uix-scheduling-calendar__window-name { flex-shrink:0; }
|
|
413
|
+
.uix-scheduling-calendar__window-scope { flex-shrink:1; }
|
|
414
|
+
}
|
|
301
415
|
}
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
--timeline-status-text-dim: var(--uix-text-muted);
|
|
30
30
|
--timeline-band-medium-edge: var(--uix-neutral-solid);
|
|
31
31
|
--timeline-band-high-fill: var(--uix-danger);
|
|
32
|
+
--timeline-band-high-edge: var(--uix-danger); /* read on paper only, where the fill is the paper's */
|
|
32
33
|
--timeline-band-high-text: var(--uix-danger-fg);
|
|
33
34
|
--timeline-window-surface: var(--uix-neutral-bg);
|
|
34
35
|
--timeline-window-ink: var(--uix-neutral-solid);
|
|
@@ -229,4 +230,77 @@
|
|
|
229
230
|
|
|
230
231
|
.uix-scheduling-timeline__empty { margin: 0; color: var(--timeline-chrome-text-quiet); font-size: var(--uix-text-meta); }
|
|
231
232
|
.uix-scheduling-timeline__state { padding: var(--uix-space-8); border: 1px dashed var(--timeline-chrome-line-strong); border-radius: var(--uix-radius-lg); text-align: center; }
|
|
233
|
+
/* ── Print (HAR-1541) ────────────────────────────────────────────────────────────────────────
|
|
234
|
+
The same markup on paper: nothing scrolls or sticks, the axis is as wide as the page, the
|
|
235
|
+
colours are the paper's (light, whatever theme the screen has), and nothing depends on a
|
|
236
|
+
background, which a browser drops unless the reader asks for background graphics. The first
|
|
237
|
+
rule is the colour map again. */
|
|
238
|
+
@media print {
|
|
239
|
+
.uix-scheduling-timeline {
|
|
240
|
+
--timeline-chrome-text: var(--uix-print-ink);
|
|
241
|
+
--timeline-chrome-text-quiet: var(--uix-print-ink-quiet);
|
|
242
|
+
--timeline-chrome-surface: var(--uix-print-paper);
|
|
243
|
+
--timeline-chrome-surface-quiet: var(--uix-print-paper-quiet);
|
|
244
|
+
--timeline-chrome-line: var(--uix-print-line);
|
|
245
|
+
--timeline-chrome-line-strong: var(--uix-print-ink-quiet);
|
|
246
|
+
--timeline-chrome-now: var(--uix-print-ink);
|
|
247
|
+
--timeline-chrome-now-text: var(--uix-print-paper);
|
|
248
|
+
--timeline-chrome-ghost: var(--uix-print-ink-quiet);
|
|
249
|
+
--timeline-chrome-ghost-halo: var(--uix-print-paper);
|
|
250
|
+
--timeline-status-surface: var(--uix-print-paper);
|
|
251
|
+
--timeline-status-surface-quiet: var(--uix-print-paper-quiet);
|
|
252
|
+
--timeline-status-edge: var(--uix-print-line);
|
|
253
|
+
--timeline-status-edge-strong: var(--uix-print-ink-quiet);
|
|
254
|
+
--timeline-status-text: var(--uix-print-ink);
|
|
255
|
+
--timeline-status-text-dim: var(--uix-print-ink-quiet);
|
|
256
|
+
--timeline-band-medium-edge: var(--uix-print-ink-quiet);
|
|
257
|
+
--timeline-band-high-fill: var(--uix-print-paper);
|
|
258
|
+
--timeline-band-high-edge: var(--uix-print-danger);
|
|
259
|
+
--timeline-band-high-text: var(--uix-print-ink);
|
|
260
|
+
--timeline-window-surface: var(--uix-print-paper);
|
|
261
|
+
--timeline-window-ink: var(--uix-print-ink-quiet);
|
|
262
|
+
--timeline-window-edge: var(--uix-print-ink-quiet);
|
|
263
|
+
--timeline-window-text: var(--uix-print-ink);
|
|
264
|
+
--timeline-marker-ink: var(--uix-print-ink);
|
|
265
|
+
--timeline-marker-line: var(--uix-print-ink-quiet);
|
|
266
|
+
}
|
|
267
|
+
/* The timeline brings its own paper and asks for its surfaces to be printed as they are, so a bar
|
|
268
|
+
covers the window and the grid lines behind it whether or not the reader prints background graphics. */
|
|
269
|
+
:where(.uix-scheduling-timeline) { background: var(--timeline-chrome-surface); -webkit-print-color-adjust: exact; print-color-adjust: exact; }
|
|
270
|
+
/* nothing scrolls on paper: the lanes are as wide as the page (every position is a share of
|
|
271
|
+
the axis, so the bars follow) and as tall as their rows. `!important` answers the sizes
|
|
272
|
+
the component writes on the elements themselves. */
|
|
273
|
+
.uix-scheduling-timeline__scroller { overflow: visible !important; max-height: none !important; }
|
|
274
|
+
.uix-scheduling-timeline__grid { width: 100%; min-width: 0; }
|
|
275
|
+
.uix-scheduling-timeline__track { flex: 1 1 0; min-width: 0 !important; }
|
|
276
|
+
/* nothing sticks: the axis, the lane names and the group heads stay where they are in the flow */
|
|
277
|
+
.uix-scheduling-timeline__row--axis,.uix-scheduling-timeline__lane-label,.uix-scheduling-timeline__group-label,.uix-scheduling-timeline__now-label { position: static; }
|
|
278
|
+
/* a lane and a group head stay on one page; a group head stays with its first lane */
|
|
279
|
+
.uix-scheduling-timeline__row { break-inside: avoid; }
|
|
280
|
+
.uix-scheduling-timeline__row--group,.uix-scheduling-timeline__row--axis { break-after: avoid; }
|
|
281
|
+
/* the line for "now" and a move not yet sent belong to the moment, not to the page */
|
|
282
|
+
.uix-scheduling-timeline__now,.uix-scheduling-timeline__ghost { display: none; }
|
|
283
|
+
/* the grid lines are backgrounds: on paper each is an edge */
|
|
284
|
+
.uix-scheduling-timeline__gridline { width: 0; background: none; border-left: 1px solid var(--timeline-chrome-line); }
|
|
285
|
+
.uix-scheduling-timeline__gridline[data-major] { background: none; border-left-color: var(--timeline-chrome-line-strong); }
|
|
286
|
+
.uix-scheduling-timeline__gridline[data-minor] { background: none; border-left-style: dashed; }
|
|
287
|
+
/* paper has no fill to rely on: the high band is a heavy edge in the one signal colour, in every state.
|
|
288
|
+
Its fill is the paper's on paper (the map above), so it still covers what is behind it, and its edge
|
|
289
|
+
has a name of its own there. */
|
|
290
|
+
.uix-scheduling-timeline__item[data-band="high"] { border-width: 2px; border-color: var(--timeline-band-high-edge); }
|
|
291
|
+
.uix-scheduling-timeline__item[data-band="high"]:is([data-status="tentative"], [data-status="dead"], [data-status="done"]) { border-color: var(--timeline-band-high-edge); }
|
|
292
|
+
/* done on the high band is a line painted inside the fill on a screen: on paper it is the cue of every
|
|
293
|
+
done bar, the bottom edge alone */
|
|
294
|
+
.uix-scheduling-timeline__item[data-band="high"][data-status="done"] { border-style: none none solid; background-image: none; }
|
|
295
|
+
/* a window's pattern is a background and may not print: its edges say the same */
|
|
296
|
+
.uix-scheduling-timeline__overlay[data-pattern="diagonal"] { border-style: none dashed; }
|
|
297
|
+
.uix-scheduling-timeline__overlay[data-pattern="cross"] { border-style: none double; border-width: 0 3px; }
|
|
298
|
+
.uix-scheduling-timeline__overlay[data-pattern="dotted"] { border-style: none dotted; border-width: 0 2px; }
|
|
299
|
+
/* a note on the column of a day is not cut at the column: on a narrow page a day is narrower than its note */
|
|
300
|
+
.uix-scheduling-timeline__column-note { overflow: visible; }
|
|
301
|
+
/* a bar too short for all the words of a window gives up the scope first and keeps the name */
|
|
302
|
+
.uix-scheduling-timeline__overlay-name { flex-shrink: 0; }
|
|
303
|
+
/* painted shapes ask to be printed even without background graphics: a marker's glyph and the hatch of bars that share time */
|
|
304
|
+
.uix-scheduling-timeline__item-marker[data-glyph]::before,.uix-scheduling-timeline__item[data-conflict]::after { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
|
|
305
|
+
}
|
|
232
306
|
}
|
package/tokens/base/color.json
CHANGED
|
@@ -103,5 +103,12 @@
|
|
|
103
103
|
"scrollbar-track": { "$type": "color", "$value": "transparent" },
|
|
104
104
|
|
|
105
105
|
"scrim": { "$type": "color", "$value": "rgba(0,0,0,.5)", "$description": "Backdrop behind modal / drawer / side-peek overlays and the avatar edit-overlay — dims the content beneath. Theme-invariant: a black scrim reads on light and dark alike (no dark override)." },
|
|
106
|
-
"scrim-strong": { "$type": "color", "$value": "rgba(0,0,0,.7)", "$description": "Heavier scrim for media-focus surfaces (lightbox), where the backdrop should recede fully behind the image." }
|
|
106
|
+
"scrim-strong": { "$type": "color", "$value": "rgba(0,0,0,.7)", "$description": "Heavier scrim for media-focus surfaces (lightbox), where the backdrop should recede fully behind the image." },
|
|
107
|
+
|
|
108
|
+
"print-ink": { "$type": "color", "$value": "#0A0A0A", "$description": "Text and strong lines on paper. Theme-invariant (no dark override): paper is light whatever theme the screen has. Read only inside @media print, by components that print (HAR-1541)." },
|
|
109
|
+
"print-ink-quiet": { "$type": "color", "$value": "#525252", "$description": "Secondary text on paper: times, counts, dimmed items. 7.8:1 on print-paper." },
|
|
110
|
+
"print-paper": { "$type": "color", "$value": "#FFFFFF", "$description": "The page. Used where a printed component must cover what is under it." },
|
|
111
|
+
"print-paper-quiet": { "$type": "color", "$value": "#F0F0F0", "$description": "A quiet tint for headers when the reader prints background graphics. Nothing may depend on it: it is dropped when they do not." },
|
|
112
|
+
"print-line": { "$type": "color", "$value": "#8A8A8A", "$description": "Cell and row lines on paper. 3.4:1 on print-paper." },
|
|
113
|
+
"print-danger": { "$type": "color", "$value": "#C40012", "$description": "The one signal colour on paper (a heavy edge, never a fill, so it survives printing without background graphics). 6.2:1 on print-paper." }
|
|
107
114
|
}
|