@hanzo/ui 8.0.77 → 8.0.82

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.
@@ -45,7 +45,7 @@ export function Palette({ open, onOpenChange, ops, onRun, active, onActive, sear
45
45
  onSearch?.(s);
46
46
  };
47
47
  const groups = useMemo(() => survivors(ops, search, limit), [ops, search, limit]);
48
- return (_jsxs(CommandDialog, { open: open, onOpenChange: onOpenChange, title: title, description: placeholder, value: active, onValueChange: onActive, shouldFilter: false, children: [_jsx(CommandInput, { value: search, onValueChange: setSearch, placeholder: placeholder, color: "$color", placeholderTextColor: "$color11" }), _jsxs(XStack, { minH: height, children: [_jsxs(CommandList, { maxH: height, width: children ? "50%" : "100%", borderRightWidth: children ? 1 : 0, borderColor: "$borderColor", py: "$1", children: [groups.length === 0 && (_jsx(CommandEmpty, { children: _jsx(SizableText, { color: "$color11", children: empty }) })), groups.map(([group, items]) => (_jsx(CommandGroup, { heading: group, children: items.map((op) => (_jsxs(CommandItem, { value: op.id, onSelect: () => onRun(op), gap: "$2", children: [op.icon, _jsxs(XStack, { flex: 1, items: "center", gap: "$2", overflow: "hidden", children: [_jsx(SizableText, { numberOfLines: 1, shrink: 0, children: op.label }), op.hint ? (_jsx(SizableText, { numberOfLines: 1, flex: 1, fontSize: "$1", color: "$color11", children: op.hint })) : null] }), _jsx(Method, { of: op }), op.end] }, op.id))) }, group)))] }), children ? _jsx(YStack, { width: "50%", children: children }) : null] }), footer ? (_jsx(XStack, { items: "center", gap: "$4", borderTopWidth: 1, borderColor: "$borderColor", px: "$3", py: "$2", children: footer })) : null] }));
48
+ return (_jsxs(CommandDialog, { open: open, onOpenChange: onOpenChange, title: title, description: placeholder, value: active, onValueChange: onActive, shouldFilter: false, children: [_jsx(CommandInput, { value: search, onValueChange: setSearch, placeholder: placeholder, color: "$color", placeholderTextColor: "$color11" }), _jsxs(XStack, { minH: height, children: [_jsxs(CommandList, { maxH: height, width: children ? "50%" : "100%", borderRightWidth: children ? 1 : 0, borderColor: "$borderColor", pt: "$1", pb: "$4", children: [groups.length === 0 && (_jsx(CommandEmpty, { children: _jsx(SizableText, { color: "$color11", children: empty }) })), groups.map(([group, items]) => (_jsx(CommandGroup, { heading: group, children: items.map((op) => (_jsxs(CommandItem, { value: op.id, onSelect: () => onRun(op), gap: "$2", children: [op.icon, _jsxs(XStack, { flex: 1, items: "center", gap: "$2", overflow: "hidden", children: [_jsx(SizableText, { numberOfLines: 1, shrink: 0, children: op.label }), op.hint ? (_jsx(SizableText, { numberOfLines: 1, flex: 1, fontSize: "$1", color: "$color11", children: op.hint })) : null] }), _jsx(Method, { of: op }), op.end] }, op.id))) }, group)))] }), children ? _jsx(YStack, { width: "50%", children: children }) : null] }), footer ? (_jsx(XStack, { items: "center", gap: "$4", borderTopWidth: 1, borderColor: "$borderColor", px: "$3", py: "$2", children: footer })) : null] }));
49
49
  }
50
50
  /**
51
51
  * The method, at the end of the row, for route commands only.
@@ -1 +1 @@
1
- {"version":3,"file":"Palette.js","sourceRoot":"","sources":["../../src/product/Palette.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Palette.js","sourceRoot":"","sources":["../../src/product/Palette.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Dock = Dock;
5
+ exports.Workbench = Workbench;
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ /**
8
+ * Workbench — the shell a Hanzo surface runs inside: a center view with a dock
9
+ * on the left, the right and the bottom.
10
+ *
11
+ * A dock is a strip of tabs over one visible pane. The three sides differ only
12
+ * in where the strip sits and which edge drags, so they are ONE component given
13
+ * a side; a second implementation is how two docks drift apart.
14
+ *
15
+ * Tabs are data. A side chat, a browser and the developer console are all Tab
16
+ * values, so a surface adds one by pushing to an array rather than by teaching
17
+ * the shell a new kind. What a tab renders is the surface's business — the
18
+ * shell owns placement, activation and size, and nothing else.
19
+ *
20
+ * PAPER, NOT BOXES. Depth carries state: the workspace is the base sheet, a
21
+ * dock is a sheet raised above it, and the active tab is raised again. Light
22
+ * falls from the top, so every shadow points the same way and elevation reads
23
+ * as a stack rather than as decoration. Outlines appear only where two sheets
24
+ * meet edge-on — a hairline, never a border around a thing.
25
+ *
26
+ * The rungs come from `sheet()` (../glass), which reads @hanzo/design's
27
+ * `--sheet-*` / `--shadow-sheet-*`. gui's own `elevation` prop is a DIFFERENT
28
+ * idea wearing the same word: it synthesises a shadow from a number, carries no
29
+ * lit edge, and answers to nothing — so a dock lit that way and a menu lit by
30
+ * the ladder stand in two different rooms.
31
+ */
32
+ const react_1 = require("react");
33
+ const gui_1 = require("@hanzo/gui");
34
+ const glass_1 = require("../glass.cjs");
35
+ const DEFAULT_SIZE = { left: 260, right: 380, bottom: 220 };
36
+ /** The edge facing the center carries the drag handle. */
37
+ const HANDLE_FIRST = { left: false, right: true, bottom: true };
38
+ function Dock({ side, tabs, activeId, defaultActiveId, onActivate, onClose, actions, size, onResize, minSize = 160, maxSize = 900, }) {
39
+ const [active, setActive] = (0, gui_1.useControllableState)({
40
+ prop: activeId,
41
+ defaultProp: defaultActiveId ?? tabs[0]?.id,
42
+ // A tab id is always a string when one activates; the hook's own
43
+ // signature admits undefined, so narrow rather than cast.
44
+ onChange: (id) => { if (id)
45
+ onActivate?.(id); },
46
+ });
47
+ const [extent, setExtent] = (0, gui_1.useControllableState)({
48
+ prop: size,
49
+ defaultProp: DEFAULT_SIZE[side],
50
+ onChange: onResize,
51
+ });
52
+ const horizontal = side !== 'bottom';
53
+ const origin = (0, react_1.useRef)(0);
54
+ const originExtent = (0, react_1.useRef)(0);
55
+ // Pointer capture, so a drag that leaves the handle still tracks.
56
+ const onDown = (0, react_1.useCallback)((e) => {
57
+ origin.current = horizontal ? e.clientX : e.clientY;
58
+ originExtent.current = extent ?? DEFAULT_SIZE[side];
59
+ e.currentTarget?.setPointerCapture?.(e.pointerId);
60
+ }, [horizontal, extent, side]);
61
+ const onMove = (0, react_1.useCallback)((e) => {
62
+ if (!e.currentTarget?.hasPointerCapture?.(e.pointerId))
63
+ return;
64
+ const delta = (horizontal ? e.clientX : e.clientY) - origin.current;
65
+ // Left grows rightward; right and bottom grow the other way.
66
+ const signed = side === 'left' ? delta : -delta;
67
+ setExtent(Math.min(maxSize, Math.max(minSize, originExtent.current + signed)));
68
+ }, [horizontal, side, minSize, maxSize, setExtent]);
69
+ if (!tabs.length)
70
+ return null;
71
+ const current = tabs.find((t) => t.id === active) ?? tabs[0];
72
+ // The seam between two sheets, and where the dock is resized.
73
+ const seam = ((0, jsx_runtime_1.jsx)(gui_1.YStack, { onPointerDown: onDown, onPointerMove: onMove, cursor: horizontal ? 'col-resize' : 'row-resize', width: horizontal ? 5 : undefined, height: horizontal ? undefined : 5, hoverStyle: { bg: '$color6' } }));
74
+ const dock = ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { overflow: "hidden", ...(0, glass_1.sheet)(1), ...(horizontal ? { width: extent } : { height: extent }), children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1", px: "$2", pt: "$1.5", children: [tabs.map((t) => {
75
+ const on = t.id === current.id;
76
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1.5", px: "$2.5", py: "$1.5", cursor: "pointer",
77
+ // The active tab is a raised sheet whose bottom corners stay
78
+ // square, so it reads as continuous with the pane beneath it —
79
+ // which is why both stand on rung 2 rather than merely looking
80
+ // similar. An inactive tab is not a sheet at all; it is the
81
+ // dock's own surface showing through.
82
+ rounded: "$3", ...(on ? (0, glass_1.sheet)(2) : { backgroundColor: 'transparent' }), hoverStyle: { bg: on ? undefined : '$color2' }, children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { onPress: () => setActive(t.id), children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1.5", children: [t.icon, (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", numberOfLines: 1, opacity: on ? 1 : 0.7, children: t.title })] }) }), t.closable === false ? null : ((0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$1", chromeless: true, circular: true, "aria-label": `Close ${t.title}`, onPress: () => onClose?.(t.id), children: "\u00D7" }))] }, t.id));
83
+ }), actions] }), (0, jsx_runtime_1.jsx)(gui_1.Separator, { opacity: 0.4 }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { flex: 1, overflow: "hidden", ...(0, glass_1.sheet)(2), children: current.content })] }));
84
+ // Named rather than an array: a list of children needs keys, and two siblings
85
+ // that are not a list should not have to invent identities to sit beside
86
+ // each other.
87
+ const [first, second] = HANDLE_FIRST[side] ? [seam, dock] : [dock, seam];
88
+ const Row = horizontal ? gui_1.XStack : gui_1.YStack;
89
+ return ((0, jsx_runtime_1.jsxs)(Row, { children: [first, second] }));
90
+ }
91
+ /**
92
+ * Left and right run the full height; the bottom spans the center column, so a
93
+ * console sits under the work and not under the navigation.
94
+ */
95
+ function Workbench({ left, right, bottom, children }) {
96
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { flex: 1, overflow: "hidden", bg: "$color1", children: [left ? (0, jsx_runtime_1.jsx)(Dock, { side: "left", ...left }) : null, (0, jsx_runtime_1.jsxs)(gui_1.YStack, { flex: 1, overflow: "hidden", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { flex: 1, overflow: "hidden", children: children }), bottom ? (0, jsx_runtime_1.jsx)(Dock, { side: "bottom", ...bottom }) : null] }), right ? (0, jsx_runtime_1.jsx)(Dock, { side: "right", ...right }) : null] }));
97
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Workbench — the shell a Hanzo surface runs inside: a center view with a dock
3
+ * on the left, the right and the bottom.
4
+ *
5
+ * A dock is a strip of tabs over one visible pane. The three sides differ only
6
+ * in where the strip sits and which edge drags, so they are ONE component given
7
+ * a side; a second implementation is how two docks drift apart.
8
+ *
9
+ * Tabs are data. A side chat, a browser and the developer console are all Tab
10
+ * values, so a surface adds one by pushing to an array rather than by teaching
11
+ * the shell a new kind. What a tab renders is the surface's business — the
12
+ * shell owns placement, activation and size, and nothing else.
13
+ *
14
+ * PAPER, NOT BOXES. Depth carries state: the workspace is the base sheet, a
15
+ * dock is a sheet raised above it, and the active tab is raised again. Light
16
+ * falls from the top, so every shadow points the same way and elevation reads
17
+ * as a stack rather than as decoration. Outlines appear only where two sheets
18
+ * meet edge-on — a hairline, never a border around a thing.
19
+ *
20
+ * The rungs come from `sheet()` (../glass), which reads @hanzo/design's
21
+ * `--sheet-*` / `--shadow-sheet-*`. gui's own `elevation` prop is a DIFFERENT
22
+ * idea wearing the same word: it synthesises a shadow from a number, carries no
23
+ * lit edge, and answers to nothing — so a dock lit that way and a menu lit by
24
+ * the ladder stand in two different rooms.
25
+ */
26
+ import { type ReactNode } from 'react';
27
+ export type Side = 'left' | 'right' | 'bottom';
28
+ export type Tab = {
29
+ id: string;
30
+ title: string;
31
+ icon?: ReactNode;
32
+ content: ReactNode;
33
+ /** Closable unless a surface says otherwise; the console usually is not. */
34
+ closable?: boolean;
35
+ };
36
+ export type DockProps = {
37
+ side: Side;
38
+ tabs: Tab[];
39
+ /** Controlled active tab; omit and the dock keeps its own. */
40
+ activeId?: string;
41
+ defaultActiveId?: string;
42
+ onActivate?: (id: string) => void;
43
+ onClose?: (id: string) => void;
44
+ /** End of the strip — the surface's own control, e.g. a new-tab menu. */
45
+ actions?: ReactNode;
46
+ /** Extent across the docked edge: width for left/right, height for bottom. */
47
+ size?: number;
48
+ onResize?: (size: number) => void;
49
+ minSize?: number;
50
+ maxSize?: number;
51
+ };
52
+ export declare function Dock({ side, tabs, activeId, defaultActiveId, onActivate, onClose, actions, size, onResize, minSize, maxSize, }: DockProps): import("react/jsx-runtime").JSX.Element | null;
53
+ export type WorkbenchProps = {
54
+ left?: Omit<DockProps, 'side'>;
55
+ right?: Omit<DockProps, 'side'>;
56
+ bottom?: Omit<DockProps, 'side'>;
57
+ /** The center view — the work itself, and the lowest sheet. */
58
+ children: ReactNode;
59
+ };
60
+ /**
61
+ * Left and right run the full height; the bottom spans the center column, so a
62
+ * console sits under the work and not under the navigation.
63
+ */
64
+ export declare function Workbench({ left, right, bottom, children }: WorkbenchProps): import("react/jsx-runtime").JSX.Element;
65
+ //# sourceMappingURL=Workbench.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Workbench.d.ts","sourceRoot":"","sources":["../../src/product/Workbench.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK3D,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE9C,MAAM,MAAM,GAAG,GAAG;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,SAAS,CAAA;IAClB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,yEAAyE;IACzE,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAOD,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,UAAU,EACV,OAAO,EACP,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,OAAa,EACb,OAAa,GACd,EAAE,SAAS,kDA8HX;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC/B,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAChC,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAa1E"}
@@ -0,0 +1,94 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Workbench — the shell a Hanzo surface runs inside: a center view with a dock
5
+ * on the left, the right and the bottom.
6
+ *
7
+ * A dock is a strip of tabs over one visible pane. The three sides differ only
8
+ * in where the strip sits and which edge drags, so they are ONE component given
9
+ * a side; a second implementation is how two docks drift apart.
10
+ *
11
+ * Tabs are data. A side chat, a browser and the developer console are all Tab
12
+ * values, so a surface adds one by pushing to an array rather than by teaching
13
+ * the shell a new kind. What a tab renders is the surface's business — the
14
+ * shell owns placement, activation and size, and nothing else.
15
+ *
16
+ * PAPER, NOT BOXES. Depth carries state: the workspace is the base sheet, a
17
+ * dock is a sheet raised above it, and the active tab is raised again. Light
18
+ * falls from the top, so every shadow points the same way and elevation reads
19
+ * as a stack rather than as decoration. Outlines appear only where two sheets
20
+ * meet edge-on — a hairline, never a border around a thing.
21
+ *
22
+ * The rungs come from `sheet()` (../glass), which reads @hanzo/design's
23
+ * `--sheet-*` / `--shadow-sheet-*`. gui's own `elevation` prop is a DIFFERENT
24
+ * idea wearing the same word: it synthesises a shadow from a number, carries no
25
+ * lit edge, and answers to nothing — so a dock lit that way and a menu lit by
26
+ * the ladder stand in two different rooms.
27
+ */
28
+ import { useCallback, useRef } from 'react';
29
+ import { Button, Separator, Text, XStack, YStack, useControllableState } from '@hanzo/gui';
30
+ import { sheet } from '../glass.js';
31
+ const DEFAULT_SIZE = { left: 260, right: 380, bottom: 220 };
32
+ /** The edge facing the center carries the drag handle. */
33
+ const HANDLE_FIRST = { left: false, right: true, bottom: true };
34
+ export function Dock({ side, tabs, activeId, defaultActiveId, onActivate, onClose, actions, size, onResize, minSize = 160, maxSize = 900, }) {
35
+ const [active, setActive] = useControllableState({
36
+ prop: activeId,
37
+ defaultProp: defaultActiveId ?? tabs[0]?.id,
38
+ // A tab id is always a string when one activates; the hook's own
39
+ // signature admits undefined, so narrow rather than cast.
40
+ onChange: (id) => { if (id)
41
+ onActivate?.(id); },
42
+ });
43
+ const [extent, setExtent] = useControllableState({
44
+ prop: size,
45
+ defaultProp: DEFAULT_SIZE[side],
46
+ onChange: onResize,
47
+ });
48
+ const horizontal = side !== 'bottom';
49
+ const origin = useRef(0);
50
+ const originExtent = useRef(0);
51
+ // Pointer capture, so a drag that leaves the handle still tracks.
52
+ const onDown = useCallback((e) => {
53
+ origin.current = horizontal ? e.clientX : e.clientY;
54
+ originExtent.current = extent ?? DEFAULT_SIZE[side];
55
+ e.currentTarget?.setPointerCapture?.(e.pointerId);
56
+ }, [horizontal, extent, side]);
57
+ const onMove = useCallback((e) => {
58
+ if (!e.currentTarget?.hasPointerCapture?.(e.pointerId))
59
+ return;
60
+ const delta = (horizontal ? e.clientX : e.clientY) - origin.current;
61
+ // Left grows rightward; right and bottom grow the other way.
62
+ const signed = side === 'left' ? delta : -delta;
63
+ setExtent(Math.min(maxSize, Math.max(minSize, originExtent.current + signed)));
64
+ }, [horizontal, side, minSize, maxSize, setExtent]);
65
+ if (!tabs.length)
66
+ return null;
67
+ const current = tabs.find((t) => t.id === active) ?? tabs[0];
68
+ // The seam between two sheets, and where the dock is resized.
69
+ const seam = (_jsx(YStack, { onPointerDown: onDown, onPointerMove: onMove, cursor: horizontal ? 'col-resize' : 'row-resize', width: horizontal ? 5 : undefined, height: horizontal ? undefined : 5, hoverStyle: { bg: '$color6' } }));
70
+ const dock = (_jsxs(YStack, { overflow: "hidden", ...sheet(1), ...(horizontal ? { width: extent } : { height: extent }), children: [_jsxs(XStack, { items: "center", gap: "$1", px: "$2", pt: "$1.5", children: [tabs.map((t) => {
71
+ const on = t.id === current.id;
72
+ return (_jsxs(XStack, { items: "center", gap: "$1.5", px: "$2.5", py: "$1.5", cursor: "pointer",
73
+ // The active tab is a raised sheet whose bottom corners stay
74
+ // square, so it reads as continuous with the pane beneath it —
75
+ // which is why both stand on rung 2 rather than merely looking
76
+ // similar. An inactive tab is not a sheet at all; it is the
77
+ // dock's own surface showing through.
78
+ rounded: "$3", ...(on ? sheet(2) : { backgroundColor: 'transparent' }), hoverStyle: { bg: on ? undefined : '$color2' }, children: [_jsx(YStack, { onPress: () => setActive(t.id), children: _jsxs(XStack, { items: "center", gap: "$1.5", children: [t.icon, _jsx(Text, { fontSize: "$2", numberOfLines: 1, opacity: on ? 1 : 0.7, children: t.title })] }) }), t.closable === false ? null : (_jsx(Button, { size: "$1", chromeless: true, circular: true, "aria-label": `Close ${t.title}`, onPress: () => onClose?.(t.id), children: "\u00D7" }))] }, t.id));
79
+ }), actions] }), _jsx(Separator, { opacity: 0.4 }), _jsx(YStack, { flex: 1, overflow: "hidden", ...sheet(2), children: current.content })] }));
80
+ // Named rather than an array: a list of children needs keys, and two siblings
81
+ // that are not a list should not have to invent identities to sit beside
82
+ // each other.
83
+ const [first, second] = HANDLE_FIRST[side] ? [seam, dock] : [dock, seam];
84
+ const Row = horizontal ? XStack : YStack;
85
+ return (_jsxs(Row, { children: [first, second] }));
86
+ }
87
+ /**
88
+ * Left and right run the full height; the bottom spans the center column, so a
89
+ * console sits under the work and not under the navigation.
90
+ */
91
+ export function Workbench({ left, right, bottom, children }) {
92
+ return (_jsxs(XStack, { flex: 1, overflow: "hidden", bg: "$color1", children: [left ? _jsx(Dock, { side: "left", ...left }) : null, _jsxs(YStack, { flex: 1, overflow: "hidden", children: [_jsx(YStack, { flex: 1, overflow: "hidden", children: children }), bottom ? _jsx(Dock, { side: "bottom", ...bottom }) : null] }), right ? _jsx(Dock, { side: "right", ...right }) : null] }));
93
+ }
94
+ //# sourceMappingURL=Workbench.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Workbench.js","sourceRoot":"","sources":["../../src/product/Workbench.tsx"],"names":[],"mappings":"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"}
@@ -106,6 +106,7 @@ __exportStar(require("./Pagination.cjs"), exports);
106
106
  __exportStar(require("./AnimatedLogo.cjs"), exports);
107
107
  __exportStar(require("./brand.cjs"), exports);
108
108
  __exportStar(require("./DataTable.cjs"), exports);
109
+ __exportStar(require("./Workbench.cjs"), exports);
109
110
  __exportStar(require("./EmptyState.cjs"), exports);
110
111
  __exportStar(require("./FadeIn.cjs"), exports);
111
112
  __exportStar(require("./Field.cjs"), exports);
@@ -26,6 +26,7 @@ export * from './Pagination.js';
26
26
  export * from './AnimatedLogo.js';
27
27
  export * from './brand.js';
28
28
  export * from './DataTable.js';
29
+ export * from './Workbench.js';
29
30
  export * from './EmptyState.js';
30
31
  export * from './FadeIn.js';
31
32
  export * from './Field.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAaA,cAAc,UAAU,CAAA;AAKxB,OAAO,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,SAAS,IAAI,eAAe,EAC5B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAK/D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,cAAc,mBAAmB,CAAA;AASjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAKvB,cAAc,QAAQ,CAAA;AAKtB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAK5B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AAOzB,cAAc,cAAc,CAAA;AAK5B,cAAc,YAAY,CAAA;AAO1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAI7B,cAAc,cAAc,CAAA;AAG5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAM5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAc7B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AASvB,cAAc,UAAU,CAAA;AAKxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAaA,cAAc,UAAU,CAAA;AAKxB,OAAO,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,SAAS,IAAI,eAAe,EAC5B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAK/D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,cAAc,mBAAmB,CAAA;AASjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAKvB,cAAc,QAAQ,CAAA;AAKtB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAK5B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AAOzB,cAAc,cAAc,CAAA;AAK5B,cAAc,YAAY,CAAA;AAO1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAI7B,cAAc,cAAc,CAAA;AAG5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAM5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAc7B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AASvB,cAAc,UAAU,CAAA;AAKxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA"}
@@ -77,6 +77,7 @@ export * from './Pagination.js';
77
77
  export * from './AnimatedLogo.js';
78
78
  export * from './brand.js';
79
79
  export * from './DataTable.js';
80
+ export * from './Workbench.js';
80
81
  export * from './EmptyState.js';
81
82
  export * from './FadeIn.js';
82
83
  export * from './Field.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAChF,wEAAwE;AACxE,EAAE;AACF,kFAAkF;AAClF,6EAA6E;AAE7E,kFAAkF;AAClF,gEAAgE;AAChE,cAAc,UAAU,CAAA;AAExB,2EAA2E;AAC3E,+EAA+E;AAC/E,4CAA4C;AAC5C,OAAO,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,SAAS,IAAI,eAAe,EAC5B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,UAAU,CAAA;AAEjB,6EAA6E;AAC7E,OAAO,EAAE,KAAK,IAAI,SAAS,EAAqB,MAAM,SAAS,CAAA;AAE/D,+EAA+E;AAC/E,8EAA8E;AAC9E,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,cAAc,mBAAmB,CAAA;AAEjC,gFAAgF;AAChF,6EAA6E;AAC7E,mFAAmF;AACnF,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,8DAA8D;AAC9D,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAEvB,mFAAmF;AACnF,qFAAqF;AACrF,qFAAqF;AACrF,cAAc,QAAQ,CAAA;AAEtB,iFAAiF;AACjF,2EAA2E;AAC3E,8EAA8E;AAC9E,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAE5B,6EAA6E;AAC7E,yEAAyE;AACzE,qFAAqF;AACrF,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AAEzB,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,mDAAmD;AACnD,cAAc,cAAc,CAAA;AAE5B,gFAAgF;AAChF,iFAAiF;AACjF,2EAA2E;AAC3E,cAAc,YAAY,CAAA;AAE1B,kFAAkF;AAClF,mFAAmF;AACnF,gFAAgF;AAChF,kFAAkF;AAClF,oBAAoB;AACpB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAE7B,8EAA8E;AAC9E,sBAAsB;AACtB,cAAc,cAAc,CAAA;AAE5B,mEAAmE;AACnE,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAE5B,gFAAgF;AAChF,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAE7B,+EAA+E;AAC/E,2EAA2E;AAC3E,iFAAiF;AACjF,0EAA0E;AAC1E,8EAA8E;AAC9E,iFAAiF;AACjF,0BAA0B;AAC1B,EAAE;AACF,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,kEAAkE;AAClE,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,mFAAmF;AACnF,qFAAqF;AACrF,uEAAuE;AAEvE,iFAAiF;AACjF,kFAAkF;AAClF,kEAAkE;AAClE,cAAc,UAAU,CAAA;AAExB,sEAAsE;AACtE,+EAA+E;AAC/E,8EAA8E;AAC9E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAgB,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"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"}