@setsquare/ui 0.9.1 → 0.11.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.
Files changed (62) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/README.md +5 -2
  3. package/dist/index.d.ts +6 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +4 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/cn.d.ts.map +1 -1
  8. package/dist/lib/cn.js +1 -0
  9. package/dist/lib/cn.js.map +1 -1
  10. package/dist/lib/english.d.ts.map +1 -1
  11. package/dist/lib/english.js +2 -0
  12. package/dist/lib/english.js.map +1 -1
  13. package/dist/lib/locale.d.ts +3 -0
  14. package/dist/lib/locale.d.ts.map +1 -1
  15. package/dist/lib/locale.js.map +1 -1
  16. package/dist/lib/timeline-scale.d.ts +106 -0
  17. package/dist/lib/timeline-scale.d.ts.map +1 -0
  18. package/dist/lib/timeline-scale.js +221 -0
  19. package/dist/lib/timeline-scale.js.map +1 -0
  20. package/dist/lib/use-scroll-tab-stop.d.ts +9 -0
  21. package/dist/lib/use-scroll-tab-stop.d.ts.map +1 -0
  22. package/dist/lib/use-scroll-tab-stop.js +46 -0
  23. package/dist/lib/use-scroll-tab-stop.js.map +1 -0
  24. package/dist/shell/dashboard-shell.d.ts +1 -0
  25. package/dist/shell/dashboard-shell.d.ts.map +1 -1
  26. package/dist/shell/dashboard-shell.js +2 -34
  27. package/dist/shell/dashboard-shell.js.map +1 -1
  28. package/dist/shell/page-header.d.ts +7 -1
  29. package/dist/shell/page-header.d.ts.map +1 -1
  30. package/dist/shell/page-header.js +3 -2
  31. package/dist/shell/page-header.js.map +1 -1
  32. package/dist/shell/right-panel.d.ts +29 -1
  33. package/dist/shell/right-panel.d.ts.map +1 -1
  34. package/dist/shell/right-panel.js +14 -5
  35. package/dist/shell/right-panel.js.map +1 -1
  36. package/dist/styles/theme.css +16 -0
  37. package/dist/styles/tokens.css +23 -0
  38. package/dist/tokens.json +95 -0
  39. package/dist/ui/button.d.ts +2 -1
  40. package/dist/ui/button.d.ts.map +1 -1
  41. package/dist/ui/button.js +9 -3
  42. package/dist/ui/button.js.map +1 -1
  43. package/dist/ui/dialog.d.ts +14 -2
  44. package/dist/ui/dialog.d.ts.map +1 -1
  45. package/dist/ui/dialog.js +19 -4
  46. package/dist/ui/dialog.js.map +1 -1
  47. package/dist/ui/disabled-reason.d.ts +36 -0
  48. package/dist/ui/disabled-reason.d.ts.map +1 -0
  49. package/dist/ui/disabled-reason.js +27 -0
  50. package/dist/ui/disabled-reason.js.map +1 -0
  51. package/dist/ui/icon-button.d.ts.map +1 -1
  52. package/dist/ui/icon-button.js +10 -6
  53. package/dist/ui/icon-button.js.map +1 -1
  54. package/dist/ui/menu.d.ts +9 -3
  55. package/dist/ui/menu.d.ts.map +1 -1
  56. package/dist/ui/menu.js +22 -4
  57. package/dist/ui/menu.js.map +1 -1
  58. package/dist/ui/timeline.d.ts +231 -0
  59. package/dist/ui/timeline.d.ts.map +1 -0
  60. package/dist/ui/timeline.js +539 -0
  61. package/dist/ui/timeline.js.map +1 -0
  62. package/package.json +2 -2
@@ -0,0 +1,231 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type Key, type TreeProps as RACTreeProps } from 'react-aria-components';
3
+ import { type SnapPoint, type TimeFormat } from '../lib/timeline-scale.js';
4
+ import type { StatusTone } from './badge.js';
5
+ export type { SnapPoint, TimeFormat } from '../lib/timeline-scale.js';
6
+ /** A timeline's words, for the `labels` prop. Times inside them are said in words already ("1 minute, 4 seconds"). */
7
+ export interface TimelineLabels {
8
+ /** The playhead's name. */
9
+ playhead: string;
10
+ /** A count of frames, said after the seconds of a timecode. */
11
+ frames: string;
12
+ /** A frame number, said for a `frames` timeline. */
13
+ frame: string;
14
+ /** A span's times: "{start} to {end}". */
15
+ span: string;
16
+ /** An item's name, its label and its time: "{label}, {time}". */
17
+ item: string;
18
+ /** Said when something being moved snaps to a point: "Snapped to {point}". */
19
+ snapped: string;
20
+ /** Said and shown when a marker is pressed without being dragged. */
21
+ picked: string;
22
+ /** Said and shown when a picked-up marker is put down. */
23
+ placed: string;
24
+ /** Said and shown when Escape puts a picked-up marker back. */
25
+ cancelled: string;
26
+ /** Every marker's description: the ways to move it. */
27
+ markerHint: string;
28
+ }
29
+ export declare const timelineLabels: TimelineLabels;
30
+ /** The part of the timeline in view, for a slot to draw: times, and the scale between time and px. */
31
+ export interface TimelineView {
32
+ /** The timeline's first and last time. */
33
+ start: number;
34
+ end: number;
35
+ /** The first and last time in view (the slot's own band of it). */
36
+ visibleStart: number;
37
+ visibleEnd: number;
38
+ pxPerSecond: number;
39
+ /** The track's whole width in px: draw `width` wide, or only the visible part. */
40
+ width: number;
41
+ /** A time's x in the track, in px. */
42
+ toX: (time: number) => number;
43
+ }
44
+ type TimelineName = {
45
+ 'aria-label': string;
46
+ } | {
47
+ 'aria-labelledby': string;
48
+ };
49
+ export type TimelineProps = TimelineName & {
50
+ /** How long the timeline runs, in seconds. */
51
+ duration: number;
52
+ /** Its first time, in seconds: 0 for media, the first moment of a schedule (seconds since the epoch) for dates. */
53
+ start?: number;
54
+ /** How times are shown and said. Default `seconds`. */
55
+ format?: TimeFormat;
56
+ /** Frames per second, for `frames` and `timecode`. Default 25. */
57
+ fps?: number;
58
+ /** For `date`: the time zone the schedule is in. Default the reader's. */
59
+ timeZone?: string;
60
+ /** The zoom: px per second. Default 100. The ruler's labels and ticks adapt to it. */
61
+ pxPerSecond?: number;
62
+ /**
63
+ * What an arrow key moves the playhead and markers by, and what a pointer rounds to: one frame by default for
64
+ * `frames` and `timecode`, a tenth of a second for `seconds`, 15 minutes for `date`. Shift moves ten steps.
65
+ */
66
+ step?: number;
67
+ /** The playhead's time. Leave both out for a timeline without one. */
68
+ time?: number;
69
+ defaultTime?: number;
70
+ onTimeChange?: (time: number) => void;
71
+ /** Points markers snap to: frames are the step, so these are beats, downbeats, cuts. Each says its own name. */
72
+ snapPoints?: readonly SnapPoint[];
73
+ /** The id of the selected span or point. */
74
+ selectedItem?: string | null;
75
+ defaultSelectedItem?: string | null;
76
+ onSelectedItemChange?: (id: string | null) => void;
77
+ /** The label column's width in px. Default 160. Lane labels that don't fit are cut short. */
78
+ labelWidth?: number;
79
+ /** The most the timeline is tall, in px or any CSS length: past it, its rows scroll under the ruler. */
80
+ maxHeight?: number | string;
81
+ /** Scroll to keep the playhead in view as its time changes. Default true. Instant under reduced motion and at AAA. */
82
+ followPlayhead?: boolean;
83
+ labels?: Partial<TimelineLabels>;
84
+ className?: string;
85
+ children?: ReactNode;
86
+ };
87
+ /**
88
+ * Things over time, and the work on them: a ruler whose ticks and labels adapt to the zoom, a playhead to scrub,
89
+ * lanes of spans and points, markers people move, and slots for a product's own drawing (a waveform, thumbnails).
90
+ * One scroll container: the ruler stays at the top and the label column at the start while the rest scrolls both
91
+ * ways, and focus scrolls clear of both. Put `TimeRuler`, `TimelineSlot`, `TimelineMarkers` and `TimelineLanes`
92
+ * inside, in the order they stack.
93
+ *
94
+ * The playhead's line crosses every row. Times are seconds throughout; for `date`, seconds since the epoch. The
95
+ * axis runs left to right; right-to-left layouts aren't supported yet. Under it, a line says what moving a marker
96
+ * did (snapped, picked up, put down), and is read out as it changes.
97
+ */
98
+ export declare function Timeline({ duration, start, format, fps, timeZone, pxPerSecond: pps, step: givenStep, time: givenTime, defaultTime, onTimeChange, snapPoints, selectedItem: givenItem, defaultSelectedItem, onSelectedItemChange, labelWidth, maxHeight, followPlayhead, labels, className, children, ...name }: TimelineProps): import("react").JSX.Element;
99
+ export interface TimeRulerProps {
100
+ /** What the corner over the label column shows. Default the playhead's time, or nothing. */
101
+ corner?: ReactNode;
102
+ className?: string;
103
+ }
104
+ /**
105
+ * Ticks and labels along the top, which stay as the rows scroll. They adapt to the zoom: labels as close as they
106
+ * fit and no closer, at steps a reader expects (1, 2, 5, 10, 15, 30 seconds; frames; hours; days), with unlabelled
107
+ * ticks between. It is where the playhead lives: press anywhere on it to seek, drag to scrub.
108
+ *
109
+ * The playhead is a slider named "Playhead", its value said as a time ("1 minute, 4 seconds"), not a number. ← →
110
+ * move it a step (a frame), Shift ten, Page Up and Page Down a tenth of the timeline, Home and End to the ends.
111
+ * While a marker is picked up, pressing the ruler puts the marker there instead, and the playhead stays.
112
+ */
113
+ export declare function TimeRuler({ corner, className }: TimeRulerProps): import("react").JSX.Element;
114
+ export interface TimelineSlotProps {
115
+ /** Shown in the label column. */
116
+ label?: ReactNode;
117
+ /** The band's height in px. Default 48. */
118
+ height?: number;
119
+ /**
120
+ * Names the drawing for a screen reader (`role="img"`). Without it the drawing is hidden from them: a picture
121
+ * of the signal, which the lanes and the playhead's time already say.
122
+ */
123
+ 'aria-label'?: string;
124
+ /** Draws the band, given the part in view. Draw `view.width` wide, or only `visibleStart` to `visibleEnd`. */
125
+ children: (view: TimelineView) => ReactNode;
126
+ className?: string;
127
+ }
128
+ /**
129
+ * A band across the timeline for the product's own drawing: a waveform canvas, a strip of thumbnails, a grid. It
130
+ * scrolls with the track; the playhead's line crosses it. Not a target: pointers pass through to nothing.
131
+ */
132
+ export declare function TimelineSlot({ label, height, 'aria-label': named, children, className, }: TimelineSlotProps): import("react").JSX.Element;
133
+ type LanesName = {
134
+ 'aria-label': string;
135
+ } | {
136
+ 'aria-labelledby': string;
137
+ };
138
+ export type TimelineLanesProps = Omit<RACTreeProps<object>, 'className' | 'aria-label' | 'aria-labelledby' | 'children' | 'style'> & LanesName & {
139
+ className?: string;
140
+ children?: ReactNode;
141
+ };
142
+ /**
143
+ * The rows: React Aria's Tree, a `treegrid` and one tab stop. ↑ ↓ move between lanes, → opens a group and ← closes
144
+ * it, and typing jumps to a lane by name. → on a lane moves into its items, in time order; ← → move between them
145
+ * and back to the lane. Pressing a lane selects it (one at a time by default). Each lane is `--lane-height` tall:
146
+ * 32px, 24px in compact density, 44px at AAA, so its items are targets at least `--target-min` tall.
147
+ */
148
+ export declare function TimelineLanes({ className, children, ...props }: TimelineLanesProps): import("react").JSX.Element;
149
+ export interface TimelineLaneProps {
150
+ id: Key;
151
+ /** The lane's name, in the label column. Also how typing finds it and what a screen reader says. */
152
+ label: string;
153
+ /** Its spans and points, in any order: they're laid out, and reached by keyboard, in time order. */
154
+ items?: ReactNode;
155
+ /** The lanes inside this one, for a group that opens. */
156
+ children?: ReactNode;
157
+ className?: string;
158
+ }
159
+ /**
160
+ * One lane: its name in the label column, its items on the track. A lane with lanes inside it is a group, with a
161
+ * chevron to open it. Selected, it takes the `brand-subtle` ground and, in forced colours, a Highlight bar.
162
+ */
163
+ export declare function TimelineLane({ id, label, items, children, className }: TimelineLaneProps): import("react").JSX.Element;
164
+ export type TimelineTone = StatusTone;
165
+ interface ItemBase {
166
+ id: string;
167
+ /** What it is: shown on a span when it fits, and always in its tooltip and its name. */
168
+ label: string;
169
+ tone?: TimelineTone;
170
+ /** More in its tooltip, under the label and time. */
171
+ details?: ReactNode;
172
+ className?: string;
173
+ }
174
+ export interface TimelineSpanProps extends ItemBase {
175
+ start: number;
176
+ end: number;
177
+ }
178
+ export interface TimelinePointProps extends ItemBase {
179
+ at: number;
180
+ }
181
+ /**
182
+ * Something that lasts, from `start` to `end`: a tween, a booking, a deploy. A bar in its tone; its target is the
183
+ * whole bar, as tall as the lane. Selecting it (pressing it, or Enter or Space on it) marks it with a ring; its
184
+ * label, times and `details` show on hover and focus.
185
+ *
186
+ * A bar is as wide as its time, however narrow that is: two moments close in time are close on screen. That rests
187
+ * on 2.5.8's Essential exception for the time axis; keyboard focus reaches every item, in time order, whatever its
188
+ * width. Items in a lane shouldn't overlap in time: put overlapping things in lanes of their own.
189
+ */
190
+ export declare function TimelineSpan({ id, label, start, end, tone, details, className, }: TimelineSpanProps): import("react").JSX.Element;
191
+ /**
192
+ * Something that happens at an instant, `at`: a cue, an error, a release. A diamond in its tone. Its target is
193
+ * `--target-min` wide, centred on its time, or narrower where a neighbour is closer than that, so targets never
194
+ * overlap; the narrow case rests on 2.5.8's Essential exception, as a span's does.
195
+ */
196
+ export declare function TimelinePoint({ id, label, at, tone, details, className, }: TimelinePointProps): import("react").JSX.Element;
197
+ export interface TimelineMarker {
198
+ id: string;
199
+ time: number;
200
+ /** A short name, shown on its flag: "Beat 3", "Chorus", "Cut". */
201
+ label: string;
202
+ }
203
+ export interface TimelineMarkersProps {
204
+ /** Shown in the label column, and names the group of markers. */
205
+ label: string;
206
+ markers: readonly TimelineMarker[];
207
+ /**
208
+ * Called as a marker moves, with where it is now (snapped, unless Alt or Option is held). Leave it out for
209
+ * markers that can't move: they are still focusable, and say their time.
210
+ */
211
+ onMove?: (id: string, time: number) => void;
212
+ /**
213
+ * Points to snap to, instead of the Timeline's `snapPoints`. A marker never snaps to a point with its own label
214
+ * at its own time, so a band's markers can be among its snap points.
215
+ */
216
+ snapPoints?: readonly SnapPoint[];
217
+ className?: string;
218
+ }
219
+ /**
220
+ * Flags at times, each with a short label, on a band of their own: under the ruler for markers and cue points, or
221
+ * beside the lanes for beats. Flags that would overlap stack into tiers, each a `--lane-height` row.
222
+ *
223
+ * Each flag is a slider (its value said as a time) and its own tab stop. People move one by:
224
+ * - dragging it, snapping to the snap points within 8px and otherwise to the step (a frame); Alt or Option moves it
225
+ * freely. The point it snaps to is said, once each time it snaps.
226
+ * - the arrow keys: a step, Shift ten, caught by any snap point on the way; Alt or Option without snapping.
227
+ * - without dragging (2.5.7): click it to pick it up, then click the ruler or this band where it should go. Escape
228
+ * puts it back. What happened shows, and is said, in the line under the timeline.
229
+ */
230
+ export declare function TimelineMarkers({ label, markers, onMove, snapPoints, className, }: TimelineMarkersProps): import("react").JSX.Element;
231
+ //# sourceMappingURL=timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/ui/timeline.tsx"],"names":[],"mappings":"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"}