@umriss-ui/schedule 0.7.0 → 0.34.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/CHANGELOG.md +31 -2
- package/README.md +15 -7
- package/dist/index.d.ts +22 -20
- package/dist/schedule.css +1 -1
- package/dist/schedule.js +964 -971
- package/docs/llms-full.md +62 -64
- package/package.json +8 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
# Changes to `@umriss-ui/schedule`
|
|
2
2
|
|
|
3
3
|
This document describes what changes for **callers** of the package: exports,
|
|
4
|
-
props, behaviour.
|
|
5
|
-
repository's journal (`docs/journal.md`) and in the specs under `.scratch/`.
|
|
4
|
+
props, behaviour.
|
|
6
5
|
|
|
7
6
|
**The numbers.** The middle digit rises when something is added; the last one
|
|
8
7
|
when something is repaired. As long as the first digit is `0`, no number
|
|
9
8
|
promises compatibility — which is why whatever changes existing behaviour stands
|
|
10
9
|
under a heading "Changed" of its own, no matter which digit rose.
|
|
11
10
|
|
|
11
|
+
From 0.34.0 all five packages share one number: they are released together, and a package without a change of its own still gets a heading for it.
|
|
12
|
+
|
|
12
13
|
**Release candidates.** The package started as a release candidate under the
|
|
13
14
|
tag `next`. With `0.1.0` it is released: the tag is gone, and the interface
|
|
14
15
|
moves from here under the rule above.
|
|
15
16
|
|
|
16
17
|
---
|
|
17
18
|
|
|
19
|
+
## 0.34.0 – A view is set, not handed back (Oct. 2026)
|
|
20
|
+
|
|
21
|
+
From this version all five packages carry one number and are released
|
|
22
|
+
together. Needs `@umriss-ui/core` and `@umriss-ui/charts` 0.34; the peer ranges
|
|
23
|
+
are `^0.34.0`.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- **`initialView` is read once, and `setView` is new.** A different `initialView` on a later render is now ignored, as React ignores a changed `defaultValue`; it used to be applied whenever its content differed from the last one handed in. To go to a view later, call the new `setView(view)` that `useSchedule` returns: it applies a whole view, and what the view leaves out goes back to its default. `setView` is not reported through `onViewChange`, which reports what the planner did, so two schedules kept in step by `onViewChange: (v) => other.setView(v)` in both directions do not answer each other. A caller that kept the reported view in state and handed it back as `initialView` writes `setView` instead: restoring a kept view is `setView(kept)`, and the state that mirrors the schedule's view becomes `view` from the hook.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 0.7.1 – Core 0.33.0, charts 0.16.0 (Oct. 2026)
|
|
32
|
+
|
|
33
|
+
Needs `@umriss-ui/core` 0.33 and `@umriss-ui/charts` 0.16; the peer ranges move to `^0.33.0` and `^0.16.0`.
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
|
|
37
|
+
- **The unit tests run against React 18.3.1 and 19 in CI**, and a schedule is rendered to a string with no `window` in a test (`tests-unit/ssr.test.tsx`): its labelled frame and empty canvases.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- **Every entry begins with `"use client";`.** The built file `dist/schedule.js` starts with the directive, then the stylesheet import, so a bundler that splits server from client code takes each as client code. The directive is written to the built entries only; the sources are unchanged.
|
|
42
|
+
|
|
43
|
+
- **Every export is a client component.** A hook called in a Server Component now fails with React's message about a client reference, not one about `useState`.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
18
47
|
## 0.7.0 – The summary counts the milestones (Oct. 2026)
|
|
19
48
|
|
|
20
49
|
Needs `@umriss-ui/core` 0.32; the peer range moves to `^0.32.0`.
|
package/README.md
CHANGED
|
@@ -19,7 +19,14 @@ Both `@umriss-ui/core` and `@umriss-ui/charts` are **peer dependencies**
|
|
|
19
19
|
(ADR-0022): the schedule takes its styling regime, provider, formats and
|
|
20
20
|
wording from core, and its time arithmetic — the affine scale, the time steps,
|
|
21
21
|
the working calendar, the canvas colour resolution — from charts. React 18 or
|
|
22
|
-
19 as a peer as well.
|
|
22
|
+
19 as a peer as well; the unit tests run against 18.3 and 19 in CI.
|
|
23
|
+
|
|
24
|
+
Every entry begins with `"use client"`, the directive a framework
|
|
25
|
+
with Server Components reads to treat a module as client code. No test runs
|
|
26
|
+
inside such a framework: the
|
|
27
|
+
schedule is rendered to a string in a test. On a server it gives its labelled
|
|
28
|
+
frame and empty canvases; the lanes, subtasks and the summary's counts arrive
|
|
29
|
+
on the client after mount.
|
|
23
30
|
|
|
24
31
|
## The smallest schedule that runs
|
|
25
32
|
|
|
@@ -133,11 +140,11 @@ time and a lane and back.
|
|
|
133
140
|
## The view
|
|
134
141
|
|
|
135
142
|
The schedule holds its own view (ADR-0047): the span in view and the folded
|
|
136
|
-
groups. `useSchedule({ initialView, onViewChange })` takes a start and
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
`view`, `setDomain`, `toggleGroup`, `foldAll` and `unfoldAll` stand on what the
|
|
143
|
+
groups. `useSchedule({ initialView, onViewChange })` takes a start, read once, and
|
|
144
|
+
reports what the planner does, always the whole view; two schedules keep in
|
|
145
|
+
step by sending each other what they report through `setView`, which is not
|
|
146
|
+
reported in turn. Without a span the schedule shows the extent of its subtasks.
|
|
147
|
+
`view`, `setView`, `setDomain`, `toggleGroup`, `foldAll` and `unfoldAll` stand on what the
|
|
141
148
|
hook hands back.
|
|
142
149
|
|
|
143
150
|
## Blocked time
|
|
@@ -161,7 +168,8 @@ label and time.
|
|
|
161
168
|
## Not yet
|
|
162
169
|
|
|
163
170
|
What the schedule does not do today, and waits for a caller who needs it (what
|
|
164
|
-
it never does stands in ADR-0032):
|
|
171
|
+
it never does stands in ADR-0032): umriss shows the reader's time, and a
|
|
172
|
+
plant's zone is not yet offered (ADR-0060).
|
|
165
173
|
|
|
166
174
|
* **Stacked overlap** — overlapping subtasks packed into sub-lanes on request;
|
|
167
175
|
today an overlap is always drawn offset, as the finding it is.
|
package/dist/index.d.ts
CHANGED
|
@@ -277,7 +277,7 @@ export declare interface Overlap {
|
|
|
277
277
|
export declare function overlaps(subtasks: readonly Subtask[]): Overlap[];
|
|
278
278
|
|
|
279
279
|
/** Put work on the plan that was not on it: the answer to a drag from outside
|
|
280
|
-
the schedule
|
|
280
|
+
the schedule. It carries no subtask id - there is
|
|
281
281
|
no subtask yet; the caller creates one, with its own identity, from
|
|
282
282
|
`subtaskFromPlace`. */
|
|
283
283
|
export declare interface PlaceIntent {
|
|
@@ -298,9 +298,9 @@ export declare interface PlaceIntent {
|
|
|
298
298
|
readonly leadOut?: number;
|
|
299
299
|
}
|
|
300
300
|
|
|
301
|
-
/** What the application says it is dragging in, while it drags it
|
|
302
|
-
|
|
303
|
-
the drop
|
|
301
|
+
/** What the application says it is dragging in, while it drags it: the
|
|
302
|
+
browser hands over the dragged data only on the drop, so the ghost before
|
|
303
|
+
the drop can only come from the caller. */
|
|
304
304
|
export declare interface PlacingItem {
|
|
305
305
|
/** The caller's key for the dragged item; it comes back in the intent. */
|
|
306
306
|
readonly item: string;
|
|
@@ -322,17 +322,15 @@ export declare function resolveAppearance(appearance: readonly SubtaskAppearance
|
|
|
322
322
|
|
|
323
323
|
/** What the drawing needs to know, with the contradiction already settled.
|
|
324
324
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
now named after a drawing they no longer use, and the channel each one
|
|
328
|
-
really owns stands beside it. */
|
|
325
|
+
Two of the field names (`dashed`, `hatched`) are older than the drawing;
|
|
326
|
+
the channel each one owns stands beside it. */
|
|
329
327
|
export declare interface ResolvedAppearance {
|
|
330
328
|
/** `provisional`: the FILL - none at all, so the surface shows through, with
|
|
331
329
|
a dashed outline in the task colour. Planned, not released. */
|
|
332
330
|
readonly dashed: boolean;
|
|
333
|
-
/** `fixed`: the ENDS - a cap at each end of the main time. Not a hatch
|
|
334
|
-
|
|
335
|
-
|
|
331
|
+
/** `fixed`: the ENDS - a cap at each end of the main time. Not a hatch: a
|
|
332
|
+
hatch says "not available" of a refused lane. The field keeps the name
|
|
333
|
+
`hatched`. */
|
|
336
334
|
readonly hatched: boolean;
|
|
337
335
|
/** `muted`: the SATURATION - the task colour mixed half into the surface,
|
|
338
336
|
opaque and at full height. Another team's, another crew's. */
|
|
@@ -404,16 +402,15 @@ export declare interface ScheduleInteraction {
|
|
|
404
402
|
/** What `useSchedule` takes: the view to start from and the handler that
|
|
405
403
|
hears every change of it. */
|
|
406
404
|
export declare interface ScheduleOptions {
|
|
407
|
-
/** The view to start from,
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
back late, is its own state coming back and not gone to. The schedule
|
|
405
|
+
/** The view to start from, read once when the hook first runs; a different
|
|
406
|
+
value on a later render is ignored, as React ignores a changed
|
|
407
|
+
`defaultValue`. To go to a view later, call `setView`. The schedule
|
|
411
408
|
remembers none: where a view is kept is the application's decision. */
|
|
412
409
|
initialView?: ScheduleView;
|
|
413
|
-
/** Every change
|
|
414
|
-
or to hand another schedule
|
|
415
|
-
|
|
416
|
-
|
|
410
|
+
/** Every change the planner makes, once, always the whole view - the one to
|
|
411
|
+
keep, or to hand another schedule's `setView`. A pan or zoom is reported
|
|
412
|
+
at most once per frame. Not called for the view the schedule starts
|
|
413
|
+
with, nor for one `setView` applies. */
|
|
417
414
|
onViewChange?: (view: ScheduleView) => void;
|
|
418
415
|
}
|
|
419
416
|
|
|
@@ -430,6 +427,11 @@ export declare interface ScheduleParts {
|
|
|
430
427
|
Milestones: typeof Milestones;
|
|
431
428
|
/** How the planner is looking at the plan: the span and the folded groups. */
|
|
432
429
|
view: ScheduleView;
|
|
430
|
+
/** Goes to a whole view; what it leaves out is shown whole again. Not
|
|
431
|
+
reported through `onViewChange`: two schedules kept in step by
|
|
432
|
+
`onViewChange: (v) => other.setView(v)` in both directions do not answer
|
|
433
|
+
each other. A view with the content already shown changes nothing. */
|
|
434
|
+
setView: (view: ScheduleView) => void;
|
|
433
435
|
/** Puts a span of two wall-clock instants in view; `null` shows the
|
|
434
436
|
subtasks' extent. */
|
|
435
437
|
setDomain: (span: readonly [number, number] | null) => void;
|
|
@@ -692,7 +694,7 @@ export declare interface Task {
|
|
|
692
694
|
|
|
693
695
|
/** Declares a schedule: hands back `Schedule` and the parts declared inside it
|
|
694
696
|
- `Lane`, `LaneGroup`, `Subtasks`, `Dependencies`, `BlockedTimes`, `Milestones` -, its
|
|
695
|
-
`view` and the setters `setDomain`, `toggleGroup`, `foldAll` and
|
|
697
|
+
`view` and the setters `setView`, `setDomain`, `toggleGroup`, `foldAll` and
|
|
696
698
|
`unfoldAll`. A ref on `Schedule` still gives the `ScheduleHandle`. */
|
|
697
699
|
export declare function useSchedule(options?: ScheduleOptions): ScheduleParts;
|
|
698
700
|
|
package/dist/schedule.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer umriss.tokens,umriss.base,umriss.components;@layer umriss.base{.
|
|
1
|
+
@layer umriss.tokens,umriss.base,umriss.components;@layer umriss.base{._text_18806_22{font-family:var(--u-font-sans);font-size:var(--u-text-md);line-height:var(--u-leading-normal);color:var(--u-color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}@media(pointer:fine){._dense_18806_38{--u-control-height-sm: var(--u-control-height-xs)}}._ink_18806_49{--u-color-text: var(--u-color-bg);--u-color-text-secondary: color-mix(in srgb, var(--u-color-bg) 75%, transparent);--u-color-text-muted: color-mix(in srgb, var(--u-color-bg) 60%, transparent)}._extent_18806_75{--_chars: 20;--_extra: 0;--_tracking: 0px;--_chrome: 0px;min-inline-size:0;max-inline-size:100%;contain:inline-size;contain-intrinsic-inline-size:calc((var(--_chars) + var(--_extra)) * (1ch + var(--_tracking)) + var(--_chrome))}._field_18806_90{caret-color:var(--u-color-accent)}._scroll_18806_96{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--u-color-text) 25%,transparent) transparent}._scroll_18806_96::-webkit-scrollbar{width:10px;height:10px}._scroll_18806_96::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--u-color-text) 22%,transparent);border-radius:var(--u-radius-full);border:3px solid transparent;background-clip:content-box}._scroll_18806_96::-webkit-scrollbar-track{background:transparent}}@layer umriss.components{._ring_18806_125:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}@media(pointer:coarse){._field_18806_90._field_18806_90,._fieldRoot_18806_145._fieldRoot_18806_145{font-size:16px}}._field_18806_90:-webkit-autofill,._field_18806_90:-webkit-autofill:hover,._field_18806_90:-webkit-autofill:focus{-webkit-box-shadow:inset 0 0 0 1000px var(--u-color-surface),0 0 0 1px var(--u-edge-color-strong);-webkit-text-fill-color:var(--u-color-text);caret-color:var(--u-color-accent)}}@layer umriss.components{._root_1g7hg_4,._root_1g7hg_4:before,._root_1g7hg_4:after{box-sizing:border-box}._corner_1g7hg_19,._corner_1g7hg_19:before,._corner_1g7hg_19:after{box-sizing:border-box}._dayBand_1g7hg_23,._dayBand_1g7hg_23:before,._dayBand_1g7hg_23:after{box-sizing:border-box}._tickBand_1g7hg_24,._tickBand_1g7hg_24:before,._tickBand_1g7hg_24:after{box-sizing:border-box}._day_1g7hg_23,._day_1g7hg_23:before,._day_1g7hg_23:after{box-sizing:border-box}._dayLabel_1g7hg_50,._dayLabel_1g7hg_50:before,._dayLabel_1g7hg_50:after{box-sizing:border-box}._tick_1g7hg_24,._tick_1g7hg_24:before,._tick_1g7hg_24:after{box-sizing:border-box}._tickLabel_1g7hg_71,._tickLabel_1g7hg_71:before,._tickLabel_1g7hg_71:after{box-sizing:border-box}._headers_1g7hg_79,._headers_1g7hg_79:before,._headers_1g7hg_79:after{box-sizing:border-box}._header_1g7hg_79,._header_1g7hg_79:before,._header_1g7hg_79:after{box-sizing:border-box}._headerLabel_1g7hg_97,._headerLabel_1g7hg_97:before,._headerLabel_1g7hg_97:after{box-sizing:border-box}._headerCount_1g7hg_133,._headerCount_1g7hg_133:before,._headerCount_1g7hg_133:after{box-sizing:border-box}._chevron_1g7hg_142,._chevron_1g7hg_142:before,._chevron_1g7hg_142:after{box-sizing:border-box}._plot_1g7hg_197,._plot_1g7hg_197:before,._plot_1g7hg_197:after{box-sizing:border-box}._focusRing_1g7hg_204,._focusRing_1g7hg_204:before,._focusRing_1g7hg_204:after{box-sizing:border-box}._layer_1g7hg_222,._layer_1g7hg_222:before,._layer_1g7hg_222:after{box-sizing:border-box}._grip_1g7hg_231,._grip_1g7hg_231:before,._grip_1g7hg_231:after{box-sizing:border-box}._ghostLabel_1g7hg_241,._ghostLabel_1g7hg_241:before,._ghostLabel_1g7hg_241:after{box-sizing:border-box}._finding_1g7hg_254,._finding_1g7hg_254:before,._finding_1g7hg_254:after{box-sizing:border-box}._refusal_1g7hg_262,._refusal_1g7hg_262:before,._refusal_1g7hg_262:after{box-sizing:border-box}._tooltip_1g7hg_266,._tooltip_1g7hg_266:before,._tooltip_1g7hg_266:after{box-sizing:border-box}._tooltipHead_1g7hg_285,._tooltipHead_1g7hg_285:before,._tooltipHead_1g7hg_285:after{box-sizing:border-box}._tooltipTimes_1g7hg_290,._tooltipTimes_1g7hg_290:before,._tooltipTimes_1g7hg_290:after{box-sizing:border-box}._now_1g7hg_299,._now_1g7hg_299:before,._now_1g7hg_299:after{box-sizing:border-box}._barLabel_1g7hg_313,._barLabel_1g7hg_313:before,._barLabel_1g7hg_313:after{box-sizing:border-box}._barLabelText_1g7hg_326,._barLabelText_1g7hg_326:before,._barLabelText_1g7hg_326:after{box-sizing:border-box}._root_1g7hg_4{display:grid;grid-template-rows:28px minmax(0,1fr) 28px;width:100%;font-size:var(--u-text-sm);background:var(--u-color-surface);outline:1px solid transparent;box-shadow:var(--u-edge);border-radius:var(--u-radius-md);corner-shape:squircle;overflow:hidden;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}._corner_1g7hg_19{background:var(--u-color-surface)}._dayBand_1g7hg_23,._tickBand_1g7hg_24{position:relative;overflow:hidden;color:var(--u-color-text-muted);font-size:var(--u-text-xs)}._dayBand_1g7hg_23{border-bottom:1px solid var(--u-hairline-strong)}._tickBand_1g7hg_24{border-top:1px solid var(--u-hairline-strong)}._day_1g7hg_23{position:absolute;top:0;bottom:0;border-left:1px solid var(--u-hairline-strong);overflow:hidden}._dayLabel_1g7hg_50{position:absolute;z-index:1;left:var(--u-space-1);padding:0 var(--u-space-1);background:var(--u-color-surface);top:50%;transform:translateY(-50%);white-space:nowrap;color:var(--u-color-text);font-weight:var(--u-weight-medium)}._tick_1g7hg_24{position:absolute;top:0;bottom:0;width:1px;background:var(--u-hairline)}._tickLabel_1g7hg_71{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);white-space:nowrap}._headers_1g7hg_79{position:relative;overflow:hidden;border-right:1px solid var(--u-hairline-strong)}._header_1g7hg_79{display:flex;align-items:center;gap:var(--u-space-2);padding-right:var(--u-space-3);border-bottom:1px solid var(--u-hairline);overflow:hidden;white-space:nowrap}._headerLabel_1g7hg_97{min-width:0;overflow:hidden;text-overflow:ellipsis}._header_1g7hg_79[data-row=lane],._header_1g7hg_79[data-row=miniature]{container:lane-header / size}@container lane-header (height >= 2.5rem){._headerLabel_1g7hg_97:not(:has(*)){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;white-space:normal;text-wrap:balance}}._header_1g7hg_79[data-row=groupHead],._header_1g7hg_79[data-row=miniature]{font-weight:var(--u-weight-medium)}._headerCount_1g7hg_133{flex:none;color:var(--u-color-text-muted);font-size:var(--u-text-xs);font-variant-numeric:tabular-nums}._chevron_1g7hg_142{flex:none;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;border-radius:var(--u-radius-xs);corner-shape:squircle;background:transparent;color:var(--u-color-text-secondary);cursor:pointer;transition:background-color var(--u-transition),color var(--u-transition)}._chevron_1g7hg_142:hover{background:var(--u-color-surface-sunken);color:var(--u-color-text)}._chevron_1g7hg_142:active{background:var(--u-color-surface-pressed)}._chevron_1g7hg_142:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._chevron_1g7hg_142 svg{box-sizing:border-box}._chevron_1g7hg_142 svg{transition:transform var(--u-transition-path)}._chevron_1g7hg_142 svg[data-open]{box-sizing:border-box}._chevron_1g7hg_142 svg[data-open]{transform:rotate(90deg)}@media(prefers-reduced-motion:reduce){._chevron_1g7hg_142 svg{transition:none}}._header_1g7hg_79[data-refused]{color:var(--u-color-text-muted)}._plot_1g7hg_197{position:relative;overflow:hidden;touch-action:none}._plot_1g7hg_197:focus{outline:none}._focusRing_1g7hg_204{position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:var(--u-radius-md);corner-shape:squircle;pointer-events:none}._plot_1g7hg_197:focus-visible>._focusRing_1g7hg_204{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._layer_1g7hg_222{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;pointer-events:none}._grip_1g7hg_231{position:absolute;width:9px;margin-left:-4px;border-radius:var(--u-radius-xs);corner-shape:squircle;background:var(--u-color-surface);box-shadow:inset 0 0 0 1.5px var(--u-color-text);cursor:ew-resize}._ghostLabel_1g7hg_241{position:absolute;display:inline-flex;gap:var(--u-space-2);padding:1px var(--u-space-2);border-radius:var(--u-radius-sm);corner-shape:squircle;background:var(--u-color-text);color:var(--u-color-surface);font-size:var(--u-text-xs);white-space:nowrap;pointer-events:none}._finding_1g7hg_254{font-weight:var(--u-weight-semibold);color:var(--u-color-danger-subtle)}._refusal_1g7hg_262{font-weight:var(--u-weight-semibold)}._tooltip_1g7hg_266{position:absolute;z-index:1;display:flex;flex-direction:column;gap:1px;max-width:260px;padding:var(--u-space-2) var(--u-space-3);border-radius:var(--u-radius-sm);corner-shape:squircle;background:var(--u-color-surface);outline:1px solid transparent;box-shadow:var(--u-shadow-overlay);color:var(--u-color-text-secondary);font-size:var(--u-text-xs);line-height:var(--u-leading-tight);pointer-events:none;white-space:nowrap}._tooltipHead_1g7hg_285{color:var(--u-color-text);font-weight:var(--u-weight-semibold)}._tooltipTimes_1g7hg_290{color:var(--u-color-text)}._tooltip_1g7hg_266 ._finding_1g7hg_254{color:var(--u-color-danger-text)}._now_1g7hg_299{position:absolute;top:0;width:0;height:0;margin-left:-4px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--u-color-accent)}._barLabel_1g7hg_313{position:absolute;display:flex;align-items:center;padding:0 var(--u-space-1);overflow:hidden;font-size:var(--u-text-xs);line-height:var(--u-leading-tight);pointer-events:none}._barLabelText_1g7hg_326{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}._barLabel_1g7hg_313[data-on=dark]{color:var(--u-color-on-accent)}._barLabel_1g7hg_313[data-on=light]{color:var(--u-color-text)}@media(forced-colors:active){._grip_1g7hg_231{outline:2px solid CanvasText;outline-offset:-2px}._ghostLabel_1g7hg_241{outline:1px solid CanvasText}}}
|