@liberation-data/desk 0.2.0 → 0.4.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/README.md +39 -0
- package/dist/desk.css +125 -0
- package/dist/react/Desktop.d.ts +7 -1
- package/dist/react/Desktop.d.ts.map +1 -1
- package/dist/react/Desktop.js +5 -4
- package/dist/react/Desktop.js.map +1 -1
- package/dist/react/index.d.ts +4 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/infoTip.d.ts +11 -0
- package/dist/react/infoTip.d.ts.map +1 -0
- package/dist/react/infoTip.js +8 -0
- package/dist/react/infoTip.js.map +1 -0
- package/dist/react/pane.d.ts +28 -0
- package/dist/react/pane.d.ts.map +1 -0
- package/dist/react/pane.js +9 -0
- package/dist/react/pane.js.map +1 -0
- package/llms.txt +14 -0
- package/package.json +1 -1
- package/src/desk.css +125 -0
- package/src/react/Desktop.tsx +20 -2
- package/src/react/index.ts +4 -0
- package/src/react/infoTip.tsx +48 -0
- package/src/react/pane.tsx +65 -0
package/README.md
CHANGED
|
@@ -80,6 +80,11 @@ when focus moves, so scroll positions, carets and iframes survive.
|
|
|
80
80
|
/>
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
+
`info` puts an (i) at the end of the title bar, holding what this window is. Every window that has one
|
|
84
|
+
keeps it in the same place, so somebody who wonders what they are looking at always knows where to ask;
|
|
85
|
+
a window with nothing to explain has none. Explanation only, as with `InfoTip` — a warning belongs in the
|
|
86
|
+
window itself.
|
|
87
|
+
|
|
83
88
|
`note` puts a quiet line on the trailing side of a window's title bar: the request behind it, the file being
|
|
84
89
|
edited, how many rows were found. It is text, not a control — the title names the window, the note says what
|
|
85
90
|
this one is looking at, and in a narrow window the note is cut before the title is. Return null for a window
|
|
@@ -144,6 +149,40 @@ item it goes in front of that one, and the fixed items are never split. A `movab
|
|
|
144
149
|
the dock to a new place. `contextMenu` gives any item a right-click menu; an item that is `disabled` but has
|
|
145
150
|
a menu stays reachable, so something that can no longer open can still be removed.
|
|
146
151
|
|
|
152
|
+
## Inside a window: a pane
|
|
153
|
+
|
|
154
|
+
```tsx
|
|
155
|
+
import { Button, InfoTip, Pane, Toolbar } from '@liberation-data/desk/react'
|
|
156
|
+
|
|
157
|
+
<Pane
|
|
158
|
+
label="Log"
|
|
159
|
+
header={
|
|
160
|
+
<Toolbar
|
|
161
|
+
label="Log controls"
|
|
162
|
+
trailing={<><Button onClick={pause}>Pause</Button><Button onClick={load}>Refresh</Button></>}
|
|
163
|
+
>
|
|
164
|
+
<TextField className="desk-grow" label="Filter" value={filter} onChange={…} />
|
|
165
|
+
<InfoTip label="About these logs">This process only, and nothing that survives a restart.</InfoTip>
|
|
166
|
+
</Toolbar>
|
|
167
|
+
}
|
|
168
|
+
footer={<p>{lines.length} lines</p>}
|
|
169
|
+
>
|
|
170
|
+
{lines.map(line => <LogLine key={line.id} line={line} />)}
|
|
171
|
+
</Pane>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
A window is a fixed height, so something inside it has to give. A pane fills the window and scrolls only
|
|
175
|
+
its middle: the toolbar and the footer stay where the pointer left them, and the window itself never
|
|
176
|
+
scrolls. Name the pane and the scrolling part can be reached and scrolled from the keyboard. `bodyRef` and `onScroll`
|
|
177
|
+
hand over the scrolling element itself, for a view that follows its own tail.
|
|
178
|
+
|
|
179
|
+
`Toolbar` is one aligned row — every control on the same centre line whatever its own height, `trailing`
|
|
180
|
+
pushed to the end, and `className="desk-grow"` on the one item that should take the spare room.
|
|
181
|
+
|
|
182
|
+
`InfoTip` is an (i) holding what the view would explain if asked, so a window does not open with a
|
|
183
|
+
paragraph everyone reads once. Explanation only: a warning belongs in front of people, not behind a
|
|
184
|
+
disclosure.
|
|
185
|
+
|
|
147
186
|
## Controls
|
|
148
187
|
|
|
149
188
|
```tsx
|
package/dist/desk.css
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
--desk-accent: #5b57f5;
|
|
13
13
|
--desk-close: #ef6b63;
|
|
14
14
|
--desk-mode: #34c47a;
|
|
15
|
+
--desk-info: #34c47a;
|
|
15
16
|
--desk-radius: 12px;
|
|
16
17
|
--desk-gap: 12px;
|
|
17
18
|
--desk-padding: 12px;
|
|
@@ -62,6 +63,7 @@
|
|
|
62
63
|
--desk-dock-glass: rgb(11 18 32 / 62%);
|
|
63
64
|
--desk-dock-icon: linear-gradient(160deg, #1a2338, #0e1526);
|
|
64
65
|
--desk-ok: #3ecf8e;
|
|
66
|
+
--desk-info: #3ecf8e;
|
|
65
67
|
--desk-warn: #fbbf24;
|
|
66
68
|
--desk-bad: #f87171;
|
|
67
69
|
--desk-field-bg: rgb(0 0 0 / 35%);
|
|
@@ -80,6 +82,7 @@
|
|
|
80
82
|
--desk-dock-glass: rgb(11 18 32 / 62%);
|
|
81
83
|
--desk-dock-icon: linear-gradient(160deg, #1a2338, #0e1526);
|
|
82
84
|
--desk-ok: #3ecf8e;
|
|
85
|
+
--desk-info: #3ecf8e;
|
|
83
86
|
--desk-warn: #fbbf24;
|
|
84
87
|
--desk-bad: #f87171;
|
|
85
88
|
--desk-field-bg: rgb(0 0 0 / 35%);
|
|
@@ -229,6 +232,20 @@
|
|
|
229
232
|
color: var(--desk-muted);
|
|
230
233
|
}
|
|
231
234
|
|
|
235
|
+
/* The note gives up the spare room; the (i) keeps its place at the end of the bar. */
|
|
236
|
+
.desk-window-note + .desk-window-info {
|
|
237
|
+
margin-left: var(--desk-space-2);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.desk-window-info {
|
|
241
|
+
margin-left: auto;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.desk-window-note ~ .desk-window-info {
|
|
245
|
+
margin-left: var(--desk-space-2);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.desk-window-info + .desk-window-actions,
|
|
232
249
|
.desk-window-note + .desk-window-actions {
|
|
233
250
|
margin-left: var(--desk-space-1);
|
|
234
251
|
}
|
|
@@ -2693,3 +2710,111 @@
|
|
|
2693
2710
|
.desk-dock-item[data-desk-drop][data-over] {
|
|
2694
2711
|
box-shadow: -6px 0 0 -2px var(--desk-accent);
|
|
2695
2712
|
}
|
|
2713
|
+
|
|
2714
|
+
/* ── The inside of a window: controls that stay, content that scrolls ── */
|
|
2715
|
+
|
|
2716
|
+
.desk-pane {
|
|
2717
|
+
display: flex;
|
|
2718
|
+
flex-direction: column;
|
|
2719
|
+
height: 100%;
|
|
2720
|
+
min-height: 0;
|
|
2721
|
+
}
|
|
2722
|
+
|
|
2723
|
+
.desk-pane-header,
|
|
2724
|
+
.desk-pane-footer {
|
|
2725
|
+
flex: none;
|
|
2726
|
+
}
|
|
2727
|
+
|
|
2728
|
+
/* The only part that scrolls, so the toolbar never leaves with the content. */
|
|
2729
|
+
.desk-pane-body {
|
|
2730
|
+
flex: 1;
|
|
2731
|
+
min-height: 0;
|
|
2732
|
+
overflow: auto;
|
|
2733
|
+
}
|
|
2734
|
+
|
|
2735
|
+
.desk-pane-body:focus-visible {
|
|
2736
|
+
outline: 2px solid var(--desk-accent);
|
|
2737
|
+
outline-offset: -2px;
|
|
2738
|
+
}
|
|
2739
|
+
|
|
2740
|
+
/* A window whose whole content is a pane does not scroll itself: the pane's middle does. */
|
|
2741
|
+
.desk-body:has(> .desk-pane) {
|
|
2742
|
+
overflow: hidden;
|
|
2743
|
+
}
|
|
2744
|
+
|
|
2745
|
+
.desk-toolbar {
|
|
2746
|
+
display: flex;
|
|
2747
|
+
align-items: center;
|
|
2748
|
+
flex-wrap: wrap;
|
|
2749
|
+
gap: var(--desk-space-2);
|
|
2750
|
+
/* One centre line for everything in the row, whatever each control's own height is. */
|
|
2751
|
+
min-height: calc(var(--desk-control-height) + var(--desk-space-2) * 2);
|
|
2752
|
+
padding: var(--desk-space-2) var(--desk-space-3);
|
|
2753
|
+
border-bottom: 1px solid var(--desk-rule);
|
|
2754
|
+
}
|
|
2755
|
+
|
|
2756
|
+
.desk-toolbar > *,
|
|
2757
|
+
.desk-toolbar-trailing > * {
|
|
2758
|
+
flex: none;
|
|
2759
|
+
}
|
|
2760
|
+
|
|
2761
|
+
.desk-toolbar .desk-grow {
|
|
2762
|
+
flex: 1 1 140px;
|
|
2763
|
+
min-width: 0;
|
|
2764
|
+
}
|
|
2765
|
+
|
|
2766
|
+
.desk-toolbar-trailing {
|
|
2767
|
+
margin-left: auto;
|
|
2768
|
+
display: flex;
|
|
2769
|
+
align-items: center;
|
|
2770
|
+
gap: var(--desk-space-2);
|
|
2771
|
+
}
|
|
2772
|
+
|
|
2773
|
+
/* ── An (i): what a view would explain if asked ── */
|
|
2774
|
+
|
|
2775
|
+
.desk-infotip {
|
|
2776
|
+
flex: none;
|
|
2777
|
+
display: inline-grid;
|
|
2778
|
+
place-items: center;
|
|
2779
|
+
width: 18px;
|
|
2780
|
+
height: 18px;
|
|
2781
|
+
padding: 0;
|
|
2782
|
+
/* The title bar's own green, the one the zoom control wears: a muted grey (i) sat in a muted
|
|
2783
|
+
trailing edge and went unseen, which defeats the point of having one place to ask. */
|
|
2784
|
+
border: 1px solid color-mix(in srgb, var(--desk-info) 55%, transparent);
|
|
2785
|
+
border-radius: 50%;
|
|
2786
|
+
background: color-mix(in srgb, var(--desk-info) 14%, transparent);
|
|
2787
|
+
color: var(--desk-info);
|
|
2788
|
+
font-family: var(--desk-font);
|
|
2789
|
+
font-size: 11px;
|
|
2790
|
+
font-style: italic;
|
|
2791
|
+
font-weight: 700;
|
|
2792
|
+
line-height: 1;
|
|
2793
|
+
cursor: pointer;
|
|
2794
|
+
}
|
|
2795
|
+
|
|
2796
|
+
.desk-infotip:hover,
|
|
2797
|
+
.desk-infotip[data-open] {
|
|
2798
|
+
border-color: var(--desk-info);
|
|
2799
|
+
background: color-mix(in srgb, var(--desk-info) 26%, transparent);
|
|
2800
|
+
}
|
|
2801
|
+
|
|
2802
|
+
.desk-infotip:focus-visible {
|
|
2803
|
+
outline: 2px solid var(--desk-info);
|
|
2804
|
+
outline-offset: 2px;
|
|
2805
|
+
}
|
|
2806
|
+
|
|
2807
|
+
.desk-infotip-body {
|
|
2808
|
+
max-width: 34ch;
|
|
2809
|
+
font-size: 12.5px;
|
|
2810
|
+
line-height: 1.45;
|
|
2811
|
+
color: var(--desk-muted);
|
|
2812
|
+
}
|
|
2813
|
+
|
|
2814
|
+
.desk-infotip-body > :first-child {
|
|
2815
|
+
margin-top: 0;
|
|
2816
|
+
}
|
|
2817
|
+
|
|
2818
|
+
.desk-infotip-body > :last-child {
|
|
2819
|
+
margin-bottom: 0;
|
|
2820
|
+
}
|
package/dist/react/Desktop.d.ts
CHANGED
|
@@ -11,6 +11,12 @@ export interface DesktopProps {
|
|
|
11
11
|
* gives way to the actions and disappears before the title does when the window is narrow.
|
|
12
12
|
*/
|
|
13
13
|
readonly note?: (id: WindowId) => ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* What this window is, behind an (i) at the end of its title bar — the same place in every window,
|
|
16
|
+
* so a person who wonders what they are looking at always knows where to ask. Explanation only: a
|
|
17
|
+
* warning, or anything that changes what someone is about to do, belongs in the window itself.
|
|
18
|
+
*/
|
|
19
|
+
readonly info?: (id: WindowId) => ReactNode;
|
|
14
20
|
/** Window-wide controls on the trailing side of the title bar. One or two; more belongs in a toolbar. */
|
|
15
21
|
readonly actions?: (id: WindowId) => ReactNode;
|
|
16
22
|
/** Shown when no window is open. */
|
|
@@ -26,5 +32,5 @@ export interface DesktopProps {
|
|
|
26
32
|
readonly layout?: DeskLayout | 'auto';
|
|
27
33
|
readonly className?: string;
|
|
28
34
|
}
|
|
29
|
-
export declare function Desktop({ renderWindow, title, note, actions, empty, loading, failed, layout, className }: DesktopProps): import("react").JSX.Element;
|
|
35
|
+
export declare function Desktop({ renderWindow, title, note, info, actions, empty, loading, failed, layout, className }: DesktopProps): import("react").JSX.Element;
|
|
30
36
|
//# sourceMappingURL=Desktop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Desktop.d.ts","sourceRoot":"","sources":["../../src/react/Desktop.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoD,SAAS,EAAE,MAAM,OAAO,CAAA;AAGxF,OAAO,KAAK,EAAqB,QAAQ,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"Desktop.d.ts","sourceRoot":"","sources":["../../src/react/Desktop.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoD,SAAS,EAAE,MAAM,OAAO,CAAA;AAGxF,OAAO,KAAK,EAAqB,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAKnE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEtE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,CAAA;AAEjD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,SAAS,CAAA;IAClD,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,SAAS,CAAA;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,SAAS,CAAA;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,SAAS,CAAA;IAC3C,yGAAyG;IACzG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,SAAS,CAAA;IAC9C,oCAAoC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAA;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AA2CD,wBAAgB,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAe,EAAE,SAAS,EAAE,EAAE,YAAY,+BA2FrI"}
|
package/dist/react/Desktop.js
CHANGED
|
@@ -3,6 +3,7 @@ import { memo, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useStat
|
|
|
3
3
|
import { addCommandHandler, addDeskCommands, DeskCommands, STAGE_ATTRIBUTE, WINDOW_ATTRIBUTE, windowElement } from '../core/commands.js';
|
|
4
4
|
import { focusedId } from '../core/desk.js';
|
|
5
5
|
import { arrangement } from './arrange.js';
|
|
6
|
+
import { InfoTip } from './infoTip.js';
|
|
6
7
|
import { useDesk, useDeskState, WindowContext } from './context.js';
|
|
7
8
|
import { WindowBoundary } from './windowBoundary.js';
|
|
8
9
|
/** Touch-first: a coarse pointer that cannot hover. A tablet with a trackpad reports otherwise. */
|
|
@@ -34,7 +35,7 @@ const halfFrame = (stage, side) => {
|
|
|
34
35
|
const width = (area.width - area.gap) / 2;
|
|
35
36
|
return { x: side === 'start' ? area.x : area.x + width + area.gap, y: area.y, width, height: area.height };
|
|
36
37
|
};
|
|
37
|
-
export function Desktop({ renderWindow, title, note, actions, empty, loading, failed, layout = 'auto', className }) {
|
|
38
|
+
export function Desktop({ renderWindow, title, note, info, actions, empty, loading, failed, layout = 'auto', className }) {
|
|
38
39
|
const desk = useDesk();
|
|
39
40
|
const state = useDeskState();
|
|
40
41
|
const stage = useRef(null);
|
|
@@ -87,7 +88,7 @@ export function Desktop({ renderWindow, title, note, actions, empty, loading, fa
|
|
|
87
88
|
}, [focused]);
|
|
88
89
|
return (_jsxs("div", { ref: stage, className: ['desk-stage', className].filter(Boolean).join(' '), "data-layout": mode, [STAGE_ATTRIBUTE]: '', children: [state.windows.length === 0 && empty, state.windows.map(window => (_jsx(WindowView, { window: window, layout: mode, depth: state.stack.indexOf(window.id), focused: window.id === focused,
|
|
89
90
|
// One window at a time: the rest stay mounted, keeping their state, and simply wait offstage.
|
|
90
|
-
hidden: mode === 'fullscreen' && window.id !== focused, title: title(window.id), note: note?.(window.id), actions: actions?.(window.id), children: _jsx(WindowContent, { id: window.id, render: renderWindow, loading: loading, failed: failed }) }, window.id)))] }));
|
|
91
|
+
hidden: mode === 'fullscreen' && window.id !== focused, title: title(window.id), note: note?.(window.id), info: info?.(window.id), actions: actions?.(window.id), children: _jsx(WindowContent, { id: window.id, render: renderWindow, loading: loading, failed: failed }) }, window.id)))] }));
|
|
91
92
|
}
|
|
92
93
|
// Each window loads and fails on its own: one fetching its code, or throwing, never blanks another.
|
|
93
94
|
const WindowContent = memo(function WindowContent({ id, render, loading, failed }) {
|
|
@@ -111,7 +112,7 @@ function reshape(gesture, origin, dx, dy) {
|
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
114
|
}
|
|
114
|
-
function WindowView({ window, layout, hidden, depth, focused, title, note, actions, children }) {
|
|
115
|
+
function WindowView({ window, layout, hidden, depth, focused, title, note, info, actions, children }) {
|
|
115
116
|
const desk = useDesk();
|
|
116
117
|
// While dragging, the frame lives here and commits once on release, so a drag
|
|
117
118
|
// re-renders one window rather than notifying every subscriber per pixel.
|
|
@@ -207,6 +208,6 @@ function WindowView({ window, layout, hidden, depth, focused, title, note, actio
|
|
|
207
208
|
}, children: [_jsxs("header", { className: "desk-titlebar", onPointerDown: startGesture('move'), onDoubleClick: event => {
|
|
208
209
|
if (!event.target.closest('button'))
|
|
209
210
|
zoom();
|
|
210
|
-
}, "data-draggable": layout === 'desktop' || undefined, children: [_jsxs("div", { className: "desk-controls", children: [_jsx("button", { type: "button", className: "desk-control", "data-control": "close", "aria-label": "Close", onClick: () => desk.close(window.id) }), layout === 'desktop' && (_jsx("button", { type: "button", className: "desk-control", "data-control": "mode", "aria-label": "Zoom", onClick: zoom }))] }), _jsx("h2", { id: titleId, className: "desk-title", children: title }), note != null && note !== false && _jsx("p", { className: "desk-window-note", children: note }), actions && _jsx("div", { className: "desk-window-actions", children: actions })] }), _jsx("div", { className: "desk-body", children: children }), layout === 'desktop' && (_jsxs(_Fragment, { children: [_jsx("div", { className: "desk-edge", "data-edge": "left", "aria-hidden": "true", onPointerDown: startGesture('left') }), _jsx("div", { className: "desk-edge", "data-edge": "right", "aria-hidden": "true", onPointerDown: startGesture('right') }), _jsx("div", { className: "desk-edge", "data-edge": "bottom", "aria-hidden": "true", onPointerDown: startGesture('bottom') }), _jsx("div", { className: "desk-grip", "aria-hidden": "true", onPointerDown: startGesture('resize') })] }))] }) }));
|
|
211
|
+
}, "data-draggable": layout === 'desktop' || undefined, children: [_jsxs("div", { className: "desk-controls", children: [_jsx("button", { type: "button", className: "desk-control", "data-control": "close", "aria-label": "Close", onClick: () => desk.close(window.id) }), layout === 'desktop' && (_jsx("button", { type: "button", className: "desk-control", "data-control": "mode", "aria-label": "Zoom", onClick: zoom }))] }), _jsx("h2", { id: titleId, className: "desk-title", children: title }), note != null && note !== false && _jsx("p", { className: "desk-window-note", children: note }), info != null && info !== false && (_jsx(InfoTip, { className: "desk-window-info", label: typeof title === 'string' ? `About ${title}` : 'About this window', align: "end", children: info })), actions && _jsx("div", { className: "desk-window-actions", children: actions })] }), _jsx("div", { className: "desk-body", children: children }), layout === 'desktop' && (_jsxs(_Fragment, { children: [_jsx("div", { className: "desk-edge", "data-edge": "left", "aria-hidden": "true", onPointerDown: startGesture('left') }), _jsx("div", { className: "desk-edge", "data-edge": "right", "aria-hidden": "true", onPointerDown: startGesture('right') }), _jsx("div", { className: "desk-edge", "data-edge": "bottom", "aria-hidden": "true", onPointerDown: startGesture('bottom') }), _jsx("div", { className: "desk-grip", "aria-hidden": "true", onPointerDown: startGesture('resize') })] }))] }) }));
|
|
211
212
|
}
|
|
212
213
|
//# sourceMappingURL=Desktop.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Desktop.js","sourceRoot":"","sources":["../../src/react/Desktop.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Desktop.js","sourceRoot":"","sources":["../../src/react/Desktop.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAEtH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxI,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAoCpD,mGAAmG;AACnG,MAAM,KAAK,GAAG,qCAAqC,CAAA;AAEnD,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,QAAoB,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC1C,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC5D,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAA;IACD,OAAO,oBAAoB,CACzB,SAAS,EACT,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,KAAK,EACrD,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,GAAG,CAAA;AACrB,MAAM,UAAU,GAAG,GAAG,CAAA;AACtB,mFAAmF;AACnF,MAAM,WAAW,GAAG,EAAE,CAAA;AAEtB,uFAAuF;AACvF,SAAS,eAAe,CAAC,KAAkB;IACzC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACjD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACnD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC5C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,GAAG,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,CAAA;AACrH,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,KAAkB,EAAE,IAAqB,EAAS,EAAE;IACrE,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACnC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACzC,OAAO,EAAE,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;AAC5G,CAAC,CAAA;AAED,MAAM,UAAU,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAgB;IACpI,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,YAAY,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,IAAI,GAAe,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAExF,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,IAAI,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA;IAClH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAE3F,6FAA6F;IAC7F,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;QAC7B,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QACpD,OAAO,iBAAiB,CACtB,OAAO,EACP,YAAY,CAAC,OAAO,EACpB,GAAG,EAAE;YACH,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC1C,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,OAAO;oBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC/B,OAAM;YACR,CAAC;YACD,MAAM,MAAM,GAAG,WAAW,CACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACtB,OAAO,IAAI,IAAI,EACf,QAAQ,IAAI,IAAI,EAChB,eAAe,CAAC,OAAO,CAAC,EACxB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAC/C,CAAA;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACrB,8GAA8G;YAC9G,IAAI,QAAQ;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAClC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/E,IAAI,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAClC,CAAC,EACD;YACE,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACnC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YACvE,CAAC;SACF,CACF,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAEhB,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAEhC,wGAAwG;IACxG,mGAAmG;IACnG,MAAM,aAAa,GAAG,MAAM,CAA8B,SAAS,CAAC,CAAA;IACpE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAA;QACpC,aAAa,CAAC,OAAO,GAAG,OAAO,CAAA;QAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAM;QACpF,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACrD,IAAI,OAAO,YAAY,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IACzH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,OAAO,CACL,eACE,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBACjD,IAAI,EACX,CAAC,eAAe,CAAC,EAAE,EAAE,aAE1B,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,EACnC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAC3B,KAAC,UAAU,IAET,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EACrC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,OAAO;gBAC9B,8FAA8F;gBAC9F,MAAM,EAAE,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,EACtD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EACvB,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EACvB,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EACvB,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,YAI7B,KAAC,aAAa,IAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAI,IAdnF,MAAM,CAAC,EAAE,CAeH,CACd,CAAC,IACE,CACP,CAAA;AACH,CAAC;AASD,oGAAoG;AACpG,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAsB;IACnG,OAAO,CACL,KAAC,cAAc,IAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YACrD,MAAM,CAAC,EAAE,CAAC,GACI,CAClB,CAAA;AACH,CAAC,CAAC,CAAA;AAkBF,oFAAoF;AACpF,SAAS,OAAO,CAAC,OAAgB,EAAE,MAAa,EAAE,EAAU,EAAE,EAAU;IACtE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAA;QACvE,KAAK,QAAQ;YACX,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAA;QACvH,KAAK,OAAO;YACV,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAA;QACrE,KAAK,QAAQ;YACX,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAA;QACxE,KAAK,MAAM,EAAE,CAAC;YACZ,gEAAgE;YAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,CAAA;YACpD,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,CAAA;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAmB;IACnH,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,8EAA8E;IAC9E,0EAA0E;IAC1E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAA;IACpD,MAAM,OAAO,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IACxE,MAAM,OAAO,GAAG,cAAc,MAAM,CAAC,EAAE,EAAE,CAAA;IAEzC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,KAAqC,EAAE,EAAE;QACnF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,YAAY;YAAE,OAAM;QACzD,IAAI,OAAO,KAAK,MAAM,IAAK,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAM;QACjF,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAc,IAAI,eAAe,GAAG,CAAC,EAAE,qBAAqB,EAAE,CAAA;QAC1G,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAc,IAAI,gBAAgB,GAAG,CAAC,EAAE,qBAAqB,EAAE,CAAA;QAC5G,iGAAiG;QACjG,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,KAAK,UAAU;YACxB,CAAC,CAAC,MAAM,CAAC,KAAK;YACd,CAAC,CAAC;gBACE,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;gBACjD,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC/C,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,GAAG;gBAC9B,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,GAAG;aACjC,CAAA;QACP,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,UAAU,CAAA;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAA;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAA;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAA;QAClC,MAAM,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAc,IAAI,eAAe,GAAG,CAAC,CAAA;QACjE,IAAI,MAAM,GAAG,MAAM,CAAA;QACnB,IAAI,IAAI,GAA2B,IAAI,CAAA;QAEvC,qEAAqE;QACrE,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE;YACjC,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAA;YAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAA;YACzC,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,WAAW;gBAAE,OAAO,OAAgB,CAAA;YAC7D,IAAI,GAAG,CAAC,KAAK,GAAG,OAAO,GAAG,WAAW;gBAAE,OAAO,KAAc,CAAA;YAC5D,OAAO,IAAI,CAAA;QACb,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,CAAC,IAAkB,EAAE,EAAE;YACpC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;YAChC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;YAChC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,SAAS,GAAG,IAAI,CAAA;gBAChB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;oBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YAC7D,CAAC;YACD,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YACzC,OAAO,CAAC,MAAM,CAAC,CAAA;YACf,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC3B,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,IAAI;oBAAE,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;;oBAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA;YAChC,CAAC;QACH,CAAC,CAAA;QACD,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;YACjD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;YAC7C,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;YACjD,OAAO,CAAC,IAAI,CAAC,CAAA;YACb,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA;YACpC,oFAAoF;YACpF,IAAI,IAAI,IAAI,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;iBAC3D,IAAI,SAAS,IAAI,MAAM,KAAK,MAAM;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACxE,CAAC,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QAC9C,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;IAChD,CAAC,CAAA;IAED,4GAA4G;IAC5G,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACtD,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACxG,MAAM,KAAK,GACT,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,KAAK;YACL,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE;YAC/F,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,CAAA;IAE9B,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACpC,mBACE,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,CAAC,CAAC,EACN,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,EAAE,EACnC,SAAS,EAAC,aAAa,eACZ,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,iBACtE,MAAM,IAAI,SAAS,EAChC,KAAK,EAAE,MAAM,IAAI,SAAS,kBACZ,OAAO,IAAI,SAAS,mBACnB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,qBACrB,OAAO,EACxB,KAAK,EAAE,KAAK,EACZ,oBAAoB,EAAE,GAAG,EAAE;gBACzB,IAAI,CAAC,OAAO;oBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACrC,CAAC,aAEC,kBACA,SAAS,EAAC,eAAe,EACzB,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,EACnC,aAAa,EAAE,KAAK,CAAC,EAAE;wBACrB,IAAI,CAAE,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC;4BAAE,IAAI,EAAE,CAAA;oBAC9D,CAAC,oBACe,MAAM,KAAK,SAAS,IAAI,SAAS,aAEjD,eAAK,SAAS,EAAC,eAAe,aAC5B,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,cAAc,kBAAc,OAAO,gBAAY,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAI,EAC9H,MAAM,KAAK,SAAS,IAAI,CACvB,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,cAAc,kBAAc,MAAM,gBAAY,MAAM,EAAC,OAAO,EAAE,IAAI,GAAI,CACvG,IACG,EACN,aAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,YAAY,YACpC,KAAK,GACH,EACJ,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,YAAG,SAAS,EAAC,kBAAkB,YAAE,IAAI,GAAK,EAC5E,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,CACjC,KAAC,OAAO,IACN,SAAS,EAAC,kBAAkB,EAC5B,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,mBAAmB,EACzE,KAAK,EAAC,KAAK,YAEV,IAAI,GACG,CACX,EACA,OAAO,IAAI,cAAK,SAAS,EAAC,qBAAqB,YAAE,OAAO,GAAO,IACzD,EACT,cAAK,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAO,EAC1C,MAAM,KAAK,SAAS,IAAI,CACvB,8BAEE,cAAK,SAAS,EAAC,WAAW,eAAW,MAAM,iBAAa,MAAM,EAAC,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,GAAI,EACtG,cAAK,SAAS,EAAC,WAAW,eAAW,OAAO,iBAAa,MAAM,EAAC,aAAa,EAAE,YAAY,CAAC,OAAO,CAAC,GAAI,EACxG,cAAK,SAAS,EAAC,WAAW,eAAW,QAAQ,iBAAa,MAAM,EAAC,aAAa,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAI,EAC1G,cAAK,SAAS,EAAC,WAAW,iBAAa,MAAM,EAAC,aAAa,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAI,IACtF,CACJ,IACO,GACa,CAC1B,CAAA;AACH,CAAC"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ export { lazyWindow } from './windowBoundary.js';
|
|
|
14
14
|
export type { WindowFailed, WindowLoading } from './windowBoundary.js';
|
|
15
15
|
export { Button, Checkbox, ChoiceGroup, RadioGroup, SegmentedControl, Slider, TextField, Toggle } from './controls.js';
|
|
16
16
|
export type { ButtonIntent, ButtonProps, CheckboxProps, ChoiceGroupProps, ChoiceOption, RadioGroupProps, RadioOption, SegmentedControlProps, SegmentedOption, SliderProps, TextFieldProps, ToggleProps, } from './controls.js';
|
|
17
|
+
export { Pane, Toolbar } from './pane.js';
|
|
18
|
+
export type { PaneProps, ToolbarProps } from './pane.js';
|
|
19
|
+
export { InfoTip } from './infoTip.js';
|
|
20
|
+
export type { InfoTipProps } from './infoTip.js';
|
|
17
21
|
export { Checklist, useTasks } from './tasks.js';
|
|
18
22
|
export { localSetupStore, useSetupProgress } from './setupProgress.js';
|
|
19
23
|
export type { SetupProgress, SetupProgressOptions, SetupRecord, SetupStore } from './setupProgress.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.js
CHANGED
|
@@ -6,6 +6,8 @@ export { useCanPerform, useCommand, usePerform, useShortcuts } from './commands.
|
|
|
6
6
|
export { Desktop } from './Desktop.js';
|
|
7
7
|
export { lazyWindow } from './windowBoundary.js';
|
|
8
8
|
export { Button, Checkbox, ChoiceGroup, RadioGroup, SegmentedControl, Slider, TextField, Toggle } from './controls.js';
|
|
9
|
+
export { Pane, Toolbar } from './pane.js';
|
|
10
|
+
export { InfoTip } from './infoTip.js';
|
|
9
11
|
export { Checklist, useTasks } from './tasks.js';
|
|
10
12
|
export { localSetupStore, useSetupProgress } from './setupProgress.js';
|
|
11
13
|
export { PopUpButton } from './popup.js';
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE1E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAWhG,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAetH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEzE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAErG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE9E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE1E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAWhG,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAetH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEzE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAErG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE9E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface InfoTipProps {
|
|
3
|
+
/** What it explains, e.g. "About these logs" — the button's name and the popover's. */
|
|
4
|
+
readonly label: string;
|
|
5
|
+
readonly children: ReactNode;
|
|
6
|
+
readonly placement?: 'below' | 'above';
|
|
7
|
+
readonly align?: 'start' | 'end';
|
|
8
|
+
readonly className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function InfoTip({ label, children, placement, align, className }: InfoTipProps): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=infoTip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infoTip.d.ts","sourceRoot":"","sources":["../../src/react/infoTip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAYtC,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAmB,EAAE,KAAe,EAAE,SAAS,EAAE,EAAE,YAAY,+BAyBzG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Popover } from './overlays.js';
|
|
4
|
+
export function InfoTip({ label, children, placement = 'below', align = 'start', className }) {
|
|
5
|
+
const [open, setOpen] = useState(false);
|
|
6
|
+
return (_jsx(Popover, { open: open, onOpenChange: setOpen, label: label, placement: placement, align: align, trigger: props => (_jsx("button", { ...props, ref: props.ref, type: "button", className: ['desk-infotip', className].filter(Boolean).join(' '), "aria-label": label, "data-open": open || undefined, children: _jsx("span", { "aria-hidden": "true", children: "i" }) })), children: _jsx("div", { className: "desk-infotip-body", children: children }) }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=infoTip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infoTip.js","sourceRoot":"","sources":["../../src/react/infoTip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAoBvC,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,SAAS,EAAgB;IACxG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,OAAO,CACL,KAAC,OAAO,IACN,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,OAAO,EACrB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAChB,oBACM,KAAK,EACT,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBACpD,KAAK,eACN,IAAI,IAAI,SAAS,YAE5B,8BAAkB,MAAM,kBAAS,GAC1B,CACV,YAED,cAAK,SAAS,EAAC,mBAAmB,YAAE,QAAQ,GAAO,GAC3C,CACX,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Ref, UIEvent, ReactNode } from 'react';
|
|
2
|
+
export interface ToolbarProps {
|
|
3
|
+
/** Controls, in reading order. Anything given `className="desk-grow"` takes the spare room. */
|
|
4
|
+
readonly children: ReactNode;
|
|
5
|
+
/** Pushed to the trailing end: what acts on everything here, or the state of it. */
|
|
6
|
+
readonly trailing?: ReactNode;
|
|
7
|
+
/** Names the row for assistive technology when it holds more than one thing: "Log controls". */
|
|
8
|
+
readonly label?: string;
|
|
9
|
+
readonly className?: string;
|
|
10
|
+
}
|
|
11
|
+
/** One aligned row of controls. Every item sits on the same centre line, whatever its height. */
|
|
12
|
+
export declare function Toolbar({ children, trailing, label, className }: ToolbarProps): import("react").JSX.Element;
|
|
13
|
+
export interface PaneProps {
|
|
14
|
+
/** Stays put at the top: a Toolbar, usually. */
|
|
15
|
+
readonly header?: ReactNode;
|
|
16
|
+
/** Stays put at the bottom: a count, a status line, the buttons of a form. */
|
|
17
|
+
readonly footer?: ReactNode;
|
|
18
|
+
/** Fills what is left and scrolls, on its own. */
|
|
19
|
+
readonly children: ReactNode;
|
|
20
|
+
/** The scrolling part is the thing being read, so it can be named and reached by the keyboard. */
|
|
21
|
+
readonly label?: string;
|
|
22
|
+
/** The scrolling element itself: for reading where it sits, or sending it to the bottom. */
|
|
23
|
+
readonly bodyRef?: Ref<HTMLDivElement>;
|
|
24
|
+
readonly onScroll?: (event: UIEvent<HTMLDivElement>) => void;
|
|
25
|
+
readonly className?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function Pane({ header, footer, children, label, bodyRef, onScroll, className }: PaneProps): import("react").JSX.Element;
|
|
28
|
+
//# sourceMappingURL=pane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pane.d.ts","sourceRoot":"","sources":["../../src/react/pane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAWpD,MAAM,WAAW,YAAY;IAC3B,+FAA+F;IAC/F,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,gGAAgG;IAChG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,iGAAiG;AACjG,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,YAAY,+BAU7E;AAED,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,kGAAkG;IAClG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,wBAAgB,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,SAAS,+BAehG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/** One aligned row of controls. Every item sits on the same centre line, whatever its height. */
|
|
3
|
+
export function Toolbar({ children, trailing, label, className }) {
|
|
4
|
+
return (_jsxs("div", { ...(label ? { role: 'group', 'aria-label': label } : {}), className: ['desk-toolbar', className].filter(Boolean).join(' '), children: [children, trailing != null && _jsx("div", { className: "desk-toolbar-trailing", children: trailing })] }));
|
|
5
|
+
}
|
|
6
|
+
export function Pane({ header, footer, children, label, bodyRef, onScroll, className }) {
|
|
7
|
+
return (_jsxs("div", { className: ['desk-pane', className].filter(Boolean).join(' '), children: [header != null && _jsx("div", { className: "desk-pane-header", children: header }), _jsx("div", { ref: bodyRef, className: "desk-pane-body", onScroll: onScroll, ...(label ? { role: 'region', 'aria-label': label, tabIndex: 0 } : {}), children: children }), footer != null && _jsx("div", { className: "desk-pane-footer", children: footer })] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=pane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pane.js","sourceRoot":"","sources":["../../src/react/pane.tsx"],"names":[],"mappings":";AAqBA,iGAAiG;AACjG,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAgB;IAC5E,OAAO,CACL,kBACM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACzD,SAAS,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAE/D,QAAQ,EACR,QAAQ,IAAI,IAAI,IAAI,cAAK,SAAS,EAAC,uBAAuB,YAAE,QAAQ,GAAO,IACxE,CACP,CAAA;AACH,CAAC;AAiBD,MAAM,UAAU,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAa;IAC/F,OAAO,CACL,eAAK,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAC/D,MAAM,IAAI,IAAI,IAAI,cAAK,SAAS,EAAC,kBAAkB,YAAE,MAAM,GAAO,EACnE,cACE,GAAG,EAAE,OAAO,EACZ,SAAS,EAAC,gBAAgB,EAC1B,QAAQ,EAAE,QAAQ,KACd,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAEtE,QAAQ,GACL,EACL,MAAM,IAAI,IAAI,IAAI,cAAK,SAAS,EAAC,kBAAkB,YAAE,MAAM,GAAO,IAC/D,CACP,CAAA;AACH,CAAC"}
|
package/llms.txt
CHANGED
|
@@ -183,6 +183,7 @@ useWindowId(): string | null // inside a window's content
|
|
|
183
183
|
renderWindow={(id) => ReactNode} // memoised: chrome re-renders, content does not
|
|
184
184
|
title={(id) => ReactNode}
|
|
185
185
|
note?={(id) => ReactNode} // quiet text in the title bar: what this window is looking at
|
|
186
|
+
info?={(id) => ReactNode} // an (i) at the end of the title bar: what this window IS
|
|
186
187
|
actions?={(id) => ReactNode} // window-wide controls in the title bar
|
|
187
188
|
loading?={(id) => ReactNode} // inside a window while its code loads
|
|
188
189
|
failed?={(id, error, reload) => ReactNode} // inside a window that could not open
|
|
@@ -202,6 +203,19 @@ Every window has its own Suspense and error boundary: one window loading or thro
|
|
|
202
203
|
the menu bar or the dock. A failure is logged with `console.error` and shows Reload, which remounts the
|
|
203
204
|
window; `lazyWindow` retries its import on reload, unlike `React.lazy`, which caches a failed import.
|
|
204
205
|
|
|
206
|
+
### Inside a window
|
|
207
|
+
|
|
208
|
+
```tsx
|
|
209
|
+
<Pane label?={string} header?={ReactNode} footer?={ReactNode} bodyRef?={Ref} onScroll?={fn}>{scrolling content}</Pane>
|
|
210
|
+
<Toolbar label?={string} trailing?={ReactNode}>{controls}</Toolbar> // className="desk-grow" takes spare room
|
|
211
|
+
<InfoTip label={string} placement?={'below'|'above'} align?={'start'|'end'}>{explanation}</InfoTip>
|
|
212
|
+
// the (i) wears --desk-info (the title bar's green) so it is seen; retint it there, not in the selector.
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
A pane fills its window and scrolls only its middle, so the window never scrolls and the toolbar stays put.
|
|
216
|
+
A named pane is a focusable region, so it scrolls from the keyboard. InfoTip is an (i) popover for
|
|
217
|
+
explanation only — never a warning, which belongs in front of people.
|
|
218
|
+
|
|
205
219
|
### Dock
|
|
206
220
|
|
|
207
221
|
```tsx
|
package/package.json
CHANGED
package/src/desk.css
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
--desk-accent: #5b57f5;
|
|
13
13
|
--desk-close: #ef6b63;
|
|
14
14
|
--desk-mode: #34c47a;
|
|
15
|
+
--desk-info: #34c47a;
|
|
15
16
|
--desk-radius: 12px;
|
|
16
17
|
--desk-gap: 12px;
|
|
17
18
|
--desk-padding: 12px;
|
|
@@ -62,6 +63,7 @@
|
|
|
62
63
|
--desk-dock-glass: rgb(11 18 32 / 62%);
|
|
63
64
|
--desk-dock-icon: linear-gradient(160deg, #1a2338, #0e1526);
|
|
64
65
|
--desk-ok: #3ecf8e;
|
|
66
|
+
--desk-info: #3ecf8e;
|
|
65
67
|
--desk-warn: #fbbf24;
|
|
66
68
|
--desk-bad: #f87171;
|
|
67
69
|
--desk-field-bg: rgb(0 0 0 / 35%);
|
|
@@ -80,6 +82,7 @@
|
|
|
80
82
|
--desk-dock-glass: rgb(11 18 32 / 62%);
|
|
81
83
|
--desk-dock-icon: linear-gradient(160deg, #1a2338, #0e1526);
|
|
82
84
|
--desk-ok: #3ecf8e;
|
|
85
|
+
--desk-info: #3ecf8e;
|
|
83
86
|
--desk-warn: #fbbf24;
|
|
84
87
|
--desk-bad: #f87171;
|
|
85
88
|
--desk-field-bg: rgb(0 0 0 / 35%);
|
|
@@ -229,6 +232,20 @@
|
|
|
229
232
|
color: var(--desk-muted);
|
|
230
233
|
}
|
|
231
234
|
|
|
235
|
+
/* The note gives up the spare room; the (i) keeps its place at the end of the bar. */
|
|
236
|
+
.desk-window-note + .desk-window-info {
|
|
237
|
+
margin-left: var(--desk-space-2);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.desk-window-info {
|
|
241
|
+
margin-left: auto;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.desk-window-note ~ .desk-window-info {
|
|
245
|
+
margin-left: var(--desk-space-2);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.desk-window-info + .desk-window-actions,
|
|
232
249
|
.desk-window-note + .desk-window-actions {
|
|
233
250
|
margin-left: var(--desk-space-1);
|
|
234
251
|
}
|
|
@@ -2693,3 +2710,111 @@
|
|
|
2693
2710
|
.desk-dock-item[data-desk-drop][data-over] {
|
|
2694
2711
|
box-shadow: -6px 0 0 -2px var(--desk-accent);
|
|
2695
2712
|
}
|
|
2713
|
+
|
|
2714
|
+
/* ── The inside of a window: controls that stay, content that scrolls ── */
|
|
2715
|
+
|
|
2716
|
+
.desk-pane {
|
|
2717
|
+
display: flex;
|
|
2718
|
+
flex-direction: column;
|
|
2719
|
+
height: 100%;
|
|
2720
|
+
min-height: 0;
|
|
2721
|
+
}
|
|
2722
|
+
|
|
2723
|
+
.desk-pane-header,
|
|
2724
|
+
.desk-pane-footer {
|
|
2725
|
+
flex: none;
|
|
2726
|
+
}
|
|
2727
|
+
|
|
2728
|
+
/* The only part that scrolls, so the toolbar never leaves with the content. */
|
|
2729
|
+
.desk-pane-body {
|
|
2730
|
+
flex: 1;
|
|
2731
|
+
min-height: 0;
|
|
2732
|
+
overflow: auto;
|
|
2733
|
+
}
|
|
2734
|
+
|
|
2735
|
+
.desk-pane-body:focus-visible {
|
|
2736
|
+
outline: 2px solid var(--desk-accent);
|
|
2737
|
+
outline-offset: -2px;
|
|
2738
|
+
}
|
|
2739
|
+
|
|
2740
|
+
/* A window whose whole content is a pane does not scroll itself: the pane's middle does. */
|
|
2741
|
+
.desk-body:has(> .desk-pane) {
|
|
2742
|
+
overflow: hidden;
|
|
2743
|
+
}
|
|
2744
|
+
|
|
2745
|
+
.desk-toolbar {
|
|
2746
|
+
display: flex;
|
|
2747
|
+
align-items: center;
|
|
2748
|
+
flex-wrap: wrap;
|
|
2749
|
+
gap: var(--desk-space-2);
|
|
2750
|
+
/* One centre line for everything in the row, whatever each control's own height is. */
|
|
2751
|
+
min-height: calc(var(--desk-control-height) + var(--desk-space-2) * 2);
|
|
2752
|
+
padding: var(--desk-space-2) var(--desk-space-3);
|
|
2753
|
+
border-bottom: 1px solid var(--desk-rule);
|
|
2754
|
+
}
|
|
2755
|
+
|
|
2756
|
+
.desk-toolbar > *,
|
|
2757
|
+
.desk-toolbar-trailing > * {
|
|
2758
|
+
flex: none;
|
|
2759
|
+
}
|
|
2760
|
+
|
|
2761
|
+
.desk-toolbar .desk-grow {
|
|
2762
|
+
flex: 1 1 140px;
|
|
2763
|
+
min-width: 0;
|
|
2764
|
+
}
|
|
2765
|
+
|
|
2766
|
+
.desk-toolbar-trailing {
|
|
2767
|
+
margin-left: auto;
|
|
2768
|
+
display: flex;
|
|
2769
|
+
align-items: center;
|
|
2770
|
+
gap: var(--desk-space-2);
|
|
2771
|
+
}
|
|
2772
|
+
|
|
2773
|
+
/* ── An (i): what a view would explain if asked ── */
|
|
2774
|
+
|
|
2775
|
+
.desk-infotip {
|
|
2776
|
+
flex: none;
|
|
2777
|
+
display: inline-grid;
|
|
2778
|
+
place-items: center;
|
|
2779
|
+
width: 18px;
|
|
2780
|
+
height: 18px;
|
|
2781
|
+
padding: 0;
|
|
2782
|
+
/* The title bar's own green, the one the zoom control wears: a muted grey (i) sat in a muted
|
|
2783
|
+
trailing edge and went unseen, which defeats the point of having one place to ask. */
|
|
2784
|
+
border: 1px solid color-mix(in srgb, var(--desk-info) 55%, transparent);
|
|
2785
|
+
border-radius: 50%;
|
|
2786
|
+
background: color-mix(in srgb, var(--desk-info) 14%, transparent);
|
|
2787
|
+
color: var(--desk-info);
|
|
2788
|
+
font-family: var(--desk-font);
|
|
2789
|
+
font-size: 11px;
|
|
2790
|
+
font-style: italic;
|
|
2791
|
+
font-weight: 700;
|
|
2792
|
+
line-height: 1;
|
|
2793
|
+
cursor: pointer;
|
|
2794
|
+
}
|
|
2795
|
+
|
|
2796
|
+
.desk-infotip:hover,
|
|
2797
|
+
.desk-infotip[data-open] {
|
|
2798
|
+
border-color: var(--desk-info);
|
|
2799
|
+
background: color-mix(in srgb, var(--desk-info) 26%, transparent);
|
|
2800
|
+
}
|
|
2801
|
+
|
|
2802
|
+
.desk-infotip:focus-visible {
|
|
2803
|
+
outline: 2px solid var(--desk-info);
|
|
2804
|
+
outline-offset: 2px;
|
|
2805
|
+
}
|
|
2806
|
+
|
|
2807
|
+
.desk-infotip-body {
|
|
2808
|
+
max-width: 34ch;
|
|
2809
|
+
font-size: 12.5px;
|
|
2810
|
+
line-height: 1.45;
|
|
2811
|
+
color: var(--desk-muted);
|
|
2812
|
+
}
|
|
2813
|
+
|
|
2814
|
+
.desk-infotip-body > :first-child {
|
|
2815
|
+
margin-top: 0;
|
|
2816
|
+
}
|
|
2817
|
+
|
|
2818
|
+
.desk-infotip-body > :last-child {
|
|
2819
|
+
margin-bottom: 0;
|
|
2820
|
+
}
|
package/src/react/Desktop.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import { addCommandHandler, addDeskCommands, DeskCommands, STAGE_ATTRIBUTE, WIND
|
|
|
4
4
|
import { focusedId } from '../core/desk.js'
|
|
5
5
|
import type { DeskWindow, Frame, WindowId } from '../core/types.js'
|
|
6
6
|
import { arrangement } from './arrange.js'
|
|
7
|
+
import { InfoTip } from './infoTip.js'
|
|
7
8
|
import { useDesk, useDeskState, WindowContext } from './context.js'
|
|
8
9
|
import { WindowBoundary } from './windowBoundary.js'
|
|
9
10
|
import type { WindowFailed, WindowLoading } from './windowBoundary.js'
|
|
@@ -19,6 +20,12 @@ export interface DesktopProps {
|
|
|
19
20
|
* gives way to the actions and disappears before the title does when the window is narrow.
|
|
20
21
|
*/
|
|
21
22
|
readonly note?: (id: WindowId) => ReactNode
|
|
23
|
+
/**
|
|
24
|
+
* What this window is, behind an (i) at the end of its title bar — the same place in every window,
|
|
25
|
+
* so a person who wonders what they are looking at always knows where to ask. Explanation only: a
|
|
26
|
+
* warning, or anything that changes what someone is about to do, belongs in the window itself.
|
|
27
|
+
*/
|
|
28
|
+
readonly info?: (id: WindowId) => ReactNode
|
|
22
29
|
/** Window-wide controls on the trailing side of the title bar. One or two; more belongs in a toolbar. */
|
|
23
30
|
readonly actions?: (id: WindowId) => ReactNode
|
|
24
31
|
/** Shown when no window is open. */
|
|
@@ -76,7 +83,7 @@ const halfFrame = (stage: HTMLElement, side: 'start' | 'end'): Frame => {
|
|
|
76
83
|
return { x: side === 'start' ? area.x : area.x + width + area.gap, y: area.y, width, height: area.height }
|
|
77
84
|
}
|
|
78
85
|
|
|
79
|
-
export function Desktop({ renderWindow, title, note, actions, empty, loading, failed, layout = 'auto', className }: DesktopProps) {
|
|
86
|
+
export function Desktop({ renderWindow, title, note, info, actions, empty, loading, failed, layout = 'auto', className }: DesktopProps) {
|
|
80
87
|
const desk = useDesk()
|
|
81
88
|
const state = useDeskState()
|
|
82
89
|
const stage = useRef<HTMLDivElement>(null)
|
|
@@ -157,6 +164,7 @@ export function Desktop({ renderWindow, title, note, actions, empty, loading, fa
|
|
|
157
164
|
hidden={mode === 'fullscreen' && window.id !== focused}
|
|
158
165
|
title={title(window.id)}
|
|
159
166
|
note={note?.(window.id)}
|
|
167
|
+
info={info?.(window.id)}
|
|
160
168
|
actions={actions?.(window.id)}
|
|
161
169
|
>
|
|
162
170
|
{/* Memoised on the id and the render function: moving or focusing a window
|
|
@@ -192,6 +200,7 @@ interface WindowViewProps {
|
|
|
192
200
|
readonly focused: boolean
|
|
193
201
|
readonly title: ReactNode
|
|
194
202
|
readonly note?: ReactNode
|
|
203
|
+
readonly info?: ReactNode
|
|
195
204
|
readonly actions?: ReactNode
|
|
196
205
|
readonly children: ReactNode
|
|
197
206
|
}
|
|
@@ -218,7 +227,7 @@ function reshape(gesture: Gesture, origin: Frame, dx: number, dy: number): Frame
|
|
|
218
227
|
}
|
|
219
228
|
}
|
|
220
229
|
|
|
221
|
-
function WindowView({ window, layout, hidden, depth, focused, title, note, actions, children }: WindowViewProps) {
|
|
230
|
+
function WindowView({ window, layout, hidden, depth, focused, title, note, info, actions, children }: WindowViewProps) {
|
|
222
231
|
const desk = useDesk()
|
|
223
232
|
// While dragging, the frame lives here and commits once on release, so a drag
|
|
224
233
|
// re-renders one window rather than notifying every subscriber per pixel.
|
|
@@ -340,6 +349,15 @@ function WindowView({ window, layout, hidden, depth, focused, title, note, actio
|
|
|
340
349
|
{title}
|
|
341
350
|
</h2>
|
|
342
351
|
{note != null && note !== false && <p className="desk-window-note">{note}</p>}
|
|
352
|
+
{info != null && info !== false && (
|
|
353
|
+
<InfoTip
|
|
354
|
+
className="desk-window-info"
|
|
355
|
+
label={typeof title === 'string' ? `About ${title}` : 'About this window'}
|
|
356
|
+
align="end"
|
|
357
|
+
>
|
|
358
|
+
{info}
|
|
359
|
+
</InfoTip>
|
|
360
|
+
)}
|
|
343
361
|
{actions && <div className="desk-window-actions">{actions}</div>}
|
|
344
362
|
</header>
|
|
345
363
|
<div className="desk-body">{children}</div>
|
package/src/react/index.ts
CHANGED
|
@@ -36,6 +36,10 @@ export type {
|
|
|
36
36
|
TextFieldProps,
|
|
37
37
|
ToggleProps,
|
|
38
38
|
} from './controls.js'
|
|
39
|
+
export { Pane, Toolbar } from './pane.js'
|
|
40
|
+
export type { PaneProps, ToolbarProps } from './pane.js'
|
|
41
|
+
export { InfoTip } from './infoTip.js'
|
|
42
|
+
export type { InfoTipProps } from './infoTip.js'
|
|
39
43
|
export { Checklist, useTasks } from './tasks.js'
|
|
40
44
|
export { localSetupStore, useSetupProgress } from './setupProgress.js'
|
|
41
45
|
export type { SetupProgress, SetupProgressOptions, SetupRecord, SetupStore } from './setupProgress.js'
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { useState } from 'react'
|
|
2
|
+
import type { ReactNode } from 'react'
|
|
3
|
+
import { Popover } from './overlays.js'
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* What a view would explain if asked. A window that opens with a paragraph makes everyone read it
|
|
7
|
+
* every time to reach the thing they came for; the same words behind an (i) are there for whoever
|
|
8
|
+
* has the question, once.
|
|
9
|
+
*
|
|
10
|
+
* Only for explanation. A warning, or anything that changes what someone is about to do, belongs
|
|
11
|
+
* in front of them — hiding that behind a disclosure is how it goes unread.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export interface InfoTipProps {
|
|
15
|
+
/** What it explains, e.g. "About these logs" — the button's name and the popover's. */
|
|
16
|
+
readonly label: string
|
|
17
|
+
readonly children: ReactNode
|
|
18
|
+
readonly placement?: 'below' | 'above'
|
|
19
|
+
readonly align?: 'start' | 'end'
|
|
20
|
+
readonly className?: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function InfoTip({ label, children, placement = 'below', align = 'start', className }: InfoTipProps) {
|
|
24
|
+
const [open, setOpen] = useState(false)
|
|
25
|
+
return (
|
|
26
|
+
<Popover
|
|
27
|
+
open={open}
|
|
28
|
+
onOpenChange={setOpen}
|
|
29
|
+
label={label}
|
|
30
|
+
placement={placement}
|
|
31
|
+
align={align}
|
|
32
|
+
trigger={props => (
|
|
33
|
+
<button
|
|
34
|
+
{...props}
|
|
35
|
+
ref={props.ref}
|
|
36
|
+
type="button"
|
|
37
|
+
className={['desk-infotip', className].filter(Boolean).join(' ')}
|
|
38
|
+
aria-label={label}
|
|
39
|
+
data-open={open || undefined}
|
|
40
|
+
>
|
|
41
|
+
<span aria-hidden="true">i</span>
|
|
42
|
+
</button>
|
|
43
|
+
)}
|
|
44
|
+
>
|
|
45
|
+
<div className="desk-infotip-body">{children}</div>
|
|
46
|
+
</Popover>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { Ref, UIEvent, ReactNode } from 'react'
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* The inside of a window: a row of controls that stays put, and content that scrolls under it.
|
|
5
|
+
*
|
|
6
|
+
* A window is a fixed height, so something inside it has to give. When the content simply grows,
|
|
7
|
+
* the window grows with it and the whole thing scrolls — the toolbar leaves with it, and a log or a
|
|
8
|
+
* table has to be scrolled past to reach anything below. A pane fills the window instead and scrolls
|
|
9
|
+
* only its middle, so the controls stay where the pointer left them.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export interface ToolbarProps {
|
|
13
|
+
/** Controls, in reading order. Anything given `className="desk-grow"` takes the spare room. */
|
|
14
|
+
readonly children: ReactNode
|
|
15
|
+
/** Pushed to the trailing end: what acts on everything here, or the state of it. */
|
|
16
|
+
readonly trailing?: ReactNode
|
|
17
|
+
/** Names the row for assistive technology when it holds more than one thing: "Log controls". */
|
|
18
|
+
readonly label?: string
|
|
19
|
+
readonly className?: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** One aligned row of controls. Every item sits on the same centre line, whatever its height. */
|
|
23
|
+
export function Toolbar({ children, trailing, label, className }: ToolbarProps) {
|
|
24
|
+
return (
|
|
25
|
+
<div
|
|
26
|
+
{...(label ? { role: 'group', 'aria-label': label } : {})}
|
|
27
|
+
className={['desk-toolbar', className].filter(Boolean).join(' ')}
|
|
28
|
+
>
|
|
29
|
+
{children}
|
|
30
|
+
{trailing != null && <div className="desk-toolbar-trailing">{trailing}</div>}
|
|
31
|
+
</div>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface PaneProps {
|
|
36
|
+
/** Stays put at the top: a Toolbar, usually. */
|
|
37
|
+
readonly header?: ReactNode
|
|
38
|
+
/** Stays put at the bottom: a count, a status line, the buttons of a form. */
|
|
39
|
+
readonly footer?: ReactNode
|
|
40
|
+
/** Fills what is left and scrolls, on its own. */
|
|
41
|
+
readonly children: ReactNode
|
|
42
|
+
/** The scrolling part is the thing being read, so it can be named and reached by the keyboard. */
|
|
43
|
+
readonly label?: string
|
|
44
|
+
/** The scrolling element itself: for reading where it sits, or sending it to the bottom. */
|
|
45
|
+
readonly bodyRef?: Ref<HTMLDivElement>
|
|
46
|
+
readonly onScroll?: (event: UIEvent<HTMLDivElement>) => void
|
|
47
|
+
readonly className?: string
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function Pane({ header, footer, children, label, bodyRef, onScroll, className }: PaneProps) {
|
|
51
|
+
return (
|
|
52
|
+
<div className={['desk-pane', className].filter(Boolean).join(' ')}>
|
|
53
|
+
{header != null && <div className="desk-pane-header">{header}</div>}
|
|
54
|
+
<div
|
|
55
|
+
ref={bodyRef}
|
|
56
|
+
className="desk-pane-body"
|
|
57
|
+
onScroll={onScroll}
|
|
58
|
+
{...(label ? { role: 'region', 'aria-label': label, tabIndex: 0 } : {})}
|
|
59
|
+
>
|
|
60
|
+
{children}
|
|
61
|
+
</div>
|
|
62
|
+
{footer != null && <div className="desk-pane-footer">{footer}</div>}
|
|
63
|
+
</div>
|
|
64
|
+
)
|
|
65
|
+
}
|