@hanzo/ui 8.15.0 → 8.16.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/dist/gallery.cjs +4 -1
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.html +95 -3
- package/dist/gallery.js +4 -1
- package/dist/gallery.js.map +1 -1
- package/dist/product/ConnectionBadge.cjs +21 -0
- package/dist/product/ConnectionBadge.d.ts +14 -0
- package/dist/product/ConnectionBadge.d.ts.map +1 -0
- package/dist/product/ConnectionBadge.js +19 -0
- package/dist/product/ConnectionBadge.js.map +1 -0
- package/dist/product/ProjectThumb.cjs +123 -0
- package/dist/product/ProjectThumb.d.ts +27 -0
- package/dist/product/ProjectThumb.d.ts.map +1 -0
- package/dist/product/ProjectThumb.js +120 -0
- package/dist/product/ProjectThumb.js.map +1 -0
- package/dist/product/Split.cjs +73 -0
- package/dist/product/Split.d.ts +14 -0
- package/dist/product/Split.d.ts.map +1 -0
- package/dist/product/Split.js +71 -0
- package/dist/product/Split.js.map +1 -0
- package/dist/product/index.cjs +3 -0
- package/dist/product/index.d.ts +3 -0
- package/dist/product/index.d.ts.map +1 -1
- package/dist/product/index.js +3 -0
- package/dist/product/index.js.map +1 -1
- package/dist/styles.css +92 -0
- package/package.json +1 -1
package/dist/gallery.js
CHANGED
|
@@ -3,6 +3,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { Box } from './box.js';
|
|
4
4
|
import { Workbench } from './product/Workbench.js';
|
|
5
5
|
import { Skeleton } from './product/Skeleton.js';
|
|
6
|
+
import { ConnectionBadge } from './product/ConnectionBadge.js';
|
|
7
|
+
import { ProjectThumb } from './product/ProjectThumb.js';
|
|
8
|
+
import { Split } from './product/Split.js';
|
|
6
9
|
import { TooltipAnchor } from './product/TooltipAnchor.js';
|
|
7
10
|
import { DialogTemplate } from './product/DialogTemplate.js';
|
|
8
11
|
import { Aside, AsideToggle, Code, Chat, Composer, Failure, Header as ChatHeader, Message, ShareButton, Step, Sidebar, SidebarFolder, SidebarHeader, SidebarItem, SidebarNewChat, SidebarScroll, SidebarSection, SidebarUser, Sources, Thread, } from './chat/index.js';
|
|
@@ -68,7 +71,7 @@ const Section = ({ name, children }) => (_jsx("section", { "data-gallery": name,
|
|
|
68
71
|
* Every component, once. `data-gallery` names each section so a browser test can
|
|
69
72
|
* scope its assertions without depending on document order.
|
|
70
73
|
*/
|
|
71
|
-
export const Gallery = () => (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 28, padding: 24, maxWidth: 928 }, children: [_jsx(Section, { name: "type", children: _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, width: '100%' }, children: [11, 10, 9, 7, 6, 4, 3, 2, 1].map((rung) => (_jsx(Text, { fontSize: `$${rung}`, lineHeight: `$${rung}`, letterSpacing: `$${rung}`, children: "Hanzo \u2014 the Open AI Cloud" }, rung))) }) }), _jsxs(Section, { name: "button", children: [BUTTON_VARIANTS.map((variant) => (_jsx(Button, { variant: variant, children: variant }, variant))), BUTTON_SIZES.map((size) => (_jsx(Button, { size: size, children: size }, size))), _jsx(Button, { disabled: true, children: "disabled" }), _jsx(Button, { isLoading: true, children: "loading" })] }), _jsx(Section, { name: "badge", children: BADGE_VARIANTS.map((variant) => (_jsx(Badge, { variant: variant, children: variant }, variant))) }), _jsx(Section, { name: "card", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Card title" }), _jsx(CardDescription, { children: "Card description" }), _jsx(CardAction, { children: _jsx(Button, { size: "sm", variant: "ghost", children: "action" }) })] }), _jsx(CardContent, { children: "Card content" }), _jsx(CardFooter, { children: "Card footer" })] }) }), _jsxs(Section, { name: "form", children: [_jsx(Label, { children: "Label" }), _jsx(Input, { placeholder: "Input" }), _jsx(Input, { placeholder: "Password", type: "password" }), _jsx(Textarea, { placeholder: "Textarea" }), _jsx(Checkbox, {}), _jsx(Checkbox, { checked: true }), _jsx(Switch, {}), _jsx(Switch, { checked: true }), _jsx(Slider, { defaultValue: [40] }), _jsx(Progress, { value: 40 }), _jsxs(RadioGroup, { defaultValue: "a", children: [_jsx(RadioGroupItem, { value: "a" }), _jsx(RadioGroupItem, { value: "b" }), _jsx(RadioGroupItem, { value: "c", disabled: true })] }), _jsxs(RadioGroup, { orientation: "horizontal", defaultValue: "a", children: [_jsx(RadioGroupItem, { value: "a" }), _jsx(RadioGroupItem, { value: "b" })] })] }), _jsxs(Section, { name: "toggle-group", children: [['default', 'outline'].map((variant) => ['default', 'sm', 'lg'].map((size) => (_jsxs(ToggleGroup, { type: "single", defaultValue: "a", variant: variant, size: size, children: [_jsx(ToggleGroupItem, { value: "a", children: "A" }), _jsx(ToggleGroupItem, { value: "b", children: "B" }), _jsx(ToggleGroupItem, { value: "c", disabled: true, children: "C" })] }, `${variant}-${size}`)))), _jsxs(ToggleGroup, { type: "multiple", defaultValue: ['a'], children: [_jsx(ToggleGroupItem, { value: "a", children: "A" }), _jsx(ToggleGroupItem, { value: "b", children: "B" })] }), _jsxs(ToggleGroup, { type: "single", orientation: "vertical", defaultValue: "a", children: [_jsx(ToggleGroupItem, { value: "a", children: "A" }), _jsx(ToggleGroupItem, { value: "b", children: "B" })] })] }), _jsx(Section, { name: "accordion", children: _jsxs(Accordion, { type: "single", collapsible: true, defaultValue: "one", children: [_jsxs(AccordionItem, { value: "one", children: [_jsx(AccordionTrigger, { children: "Accordion trigger" }), _jsx(AccordionContent, { children: "Accordion content" })] }), _jsxs(AccordionItem, { value: "two", children: [_jsx(AccordionTrigger, { children: "Second trigger" }), _jsx(AccordionContent, { children: "Second content" })] })] }) }), _jsx(Section, { name: "tabs", children: _jsxs(Tabs, { defaultValue: "one", children: [_jsxs(TabsList, { children: [_jsx(TabsTrigger, { value: "one", children: "One" }), _jsx(TabsTrigger, { value: "two", children: "Two" })] }), _jsx(TabsContent, { value: "one", children: "Panel one" })] }) }), _jsxs(Section, { name: "surface", children: [_jsx(Separator, {}), _jsx(AspectRatio, { ratio: 16 / 9 }), _jsx(Avatar, { children: _jsx(AvatarFallback, { children: "HZ" }) }), _jsx(ScrollArea, { height: 80, children: "Scroll area" }), _jsxs(ResizablePanelGroup, { direction: "horizontal", children: [_jsx(ResizablePanel, {}), _jsx(ResizableHandle, {}), _jsx(ResizablePanel, {})] })] }), _jsx(Section, { name: "spinner", children: [12, 16, 20, 32].map((size) => (_jsx(Spinner, { size: size }, size))) }), _jsx(Section, { name: "collapsible", children: _jsxs(Collapsible, { open: true, children: [_jsx(CollapsibleTrigger, { children: "Collapsible trigger" }), _jsx(CollapsibleContent, { children: "Collapsible content" })] }) }), _jsxs(Section, { name: "command", children: [_jsxs(Command, { children: [_jsx(CommandInput, {}), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "No results" }), _jsx(CommandGroup, { heading: "Group", children: _jsxs(CommandItem, { value: "a", children: ["Item", _jsx(CommandShortcut, { children: "\u2318A" })] }) }), _jsx(CommandSeparator, {})] })] }), _jsxs(CommandDialog, { open: true, defaultValue: "alpha", onValueChange: (v) => {
|
|
74
|
+
export const Gallery = () => (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 28, padding: 24, maxWidth: 928 }, children: [_jsx(Section, { name: "type", children: _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, width: '100%' }, children: [11, 10, 9, 7, 6, 4, 3, 2, 1].map((rung) => (_jsx(Text, { fontSize: `$${rung}`, lineHeight: `$${rung}`, letterSpacing: `$${rung}`, children: "Hanzo \u2014 the Open AI Cloud" }, rung))) }) }), _jsxs(Section, { name: "button", children: [BUTTON_VARIANTS.map((variant) => (_jsx(Button, { variant: variant, children: variant }, variant))), BUTTON_SIZES.map((size) => (_jsx(Button, { size: size, children: size }, size))), _jsx(Button, { disabled: true, children: "disabled" }), _jsx(Button, { isLoading: true, children: "loading" })] }), _jsx(Section, { name: "badge", children: BADGE_VARIANTS.map((variant) => (_jsx(Badge, { variant: variant, children: variant }, variant))) }), _jsx(Section, { name: "card", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Card title" }), _jsx(CardDescription, { children: "Card description" }), _jsx(CardAction, { children: _jsx(Button, { size: "sm", variant: "ghost", children: "action" }) })] }), _jsx(CardContent, { children: "Card content" }), _jsx(CardFooter, { children: "Card footer" })] }) }), _jsxs(Section, { name: "form", children: [_jsx(Label, { children: "Label" }), _jsx(Input, { placeholder: "Input" }), _jsx(Input, { placeholder: "Password", type: "password" }), _jsx(Textarea, { placeholder: "Textarea" }), _jsx(Checkbox, {}), _jsx(Checkbox, { checked: true }), _jsx(Switch, {}), _jsx(Switch, { checked: true }), _jsx(Slider, { defaultValue: [40] }), _jsx(Progress, { value: 40 }), _jsxs(RadioGroup, { defaultValue: "a", children: [_jsx(RadioGroupItem, { value: "a" }), _jsx(RadioGroupItem, { value: "b" }), _jsx(RadioGroupItem, { value: "c", disabled: true })] }), _jsxs(RadioGroup, { orientation: "horizontal", defaultValue: "a", children: [_jsx(RadioGroupItem, { value: "a" }), _jsx(RadioGroupItem, { value: "b" })] })] }), _jsxs(Section, { name: "toggle-group", children: [['default', 'outline'].map((variant) => ['default', 'sm', 'lg'].map((size) => (_jsxs(ToggleGroup, { type: "single", defaultValue: "a", variant: variant, size: size, children: [_jsx(ToggleGroupItem, { value: "a", children: "A" }), _jsx(ToggleGroupItem, { value: "b", children: "B" }), _jsx(ToggleGroupItem, { value: "c", disabled: true, children: "C" })] }, `${variant}-${size}`)))), _jsxs(ToggleGroup, { type: "multiple", defaultValue: ['a'], children: [_jsx(ToggleGroupItem, { value: "a", children: "A" }), _jsx(ToggleGroupItem, { value: "b", children: "B" })] }), _jsxs(ToggleGroup, { type: "single", orientation: "vertical", defaultValue: "a", children: [_jsx(ToggleGroupItem, { value: "a", children: "A" }), _jsx(ToggleGroupItem, { value: "b", children: "B" })] })] }), _jsx(Section, { name: "accordion", children: _jsxs(Accordion, { type: "single", collapsible: true, defaultValue: "one", children: [_jsxs(AccordionItem, { value: "one", children: [_jsx(AccordionTrigger, { children: "Accordion trigger" }), _jsx(AccordionContent, { children: "Accordion content" })] }), _jsxs(AccordionItem, { value: "two", children: [_jsx(AccordionTrigger, { children: "Second trigger" }), _jsx(AccordionContent, { children: "Second content" })] })] }) }), _jsx(Section, { name: "tabs", children: _jsxs(Tabs, { defaultValue: "one", children: [_jsxs(TabsList, { children: [_jsx(TabsTrigger, { value: "one", children: "One" }), _jsx(TabsTrigger, { value: "two", children: "Two" })] }), _jsx(TabsContent, { value: "one", children: "Panel one" })] }) }), _jsxs(Section, { name: "surface", children: [_jsx(Separator, {}), _jsx(AspectRatio, { ratio: 16 / 9 }), _jsx(Avatar, { children: _jsx(AvatarFallback, { children: "HZ" }) }), _jsx(ScrollArea, { height: 80, children: "Scroll area" }), _jsxs(ResizablePanelGroup, { direction: "horizontal", children: [_jsx(ResizablePanel, {}), _jsx(ResizableHandle, {}), _jsx(ResizablePanel, {})] })] }), _jsxs(Section, { name: "connection-badge", children: [_jsx(ConnectionBadge, { method: "OAuth", extra: "acme/site", onDisconnect: () => { } }), _jsx(ConnectionBadge, { method: "API key", onDisconnect: () => { }, disconnecting: true })] }), _jsx(Section, { name: "project-thumb", children: _jsx("div", { style: { width: 240 }, children: _jsx(ProjectThumb, { name: "Acme" }) }) }), _jsx(Section, { name: "split", children: _jsx("div", { style: { width: 360, height: 120 }, children: _jsx(Split, { left: _jsx(Box, { children: "left" }), right: _jsx(Box, { children: "right" }) }) }) }), _jsx(Section, { name: "spinner", children: [12, 16, 20, 32].map((size) => (_jsx(Spinner, { size: size }, size))) }), _jsx(Section, { name: "collapsible", children: _jsxs(Collapsible, { open: true, children: [_jsx(CollapsibleTrigger, { children: "Collapsible trigger" }), _jsx(CollapsibleContent, { children: "Collapsible content" })] }) }), _jsxs(Section, { name: "command", children: [_jsxs(Command, { children: [_jsx(CommandInput, {}), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "No results" }), _jsx(CommandGroup, { heading: "Group", children: _jsxs(CommandItem, { value: "a", children: ["Item", _jsx(CommandShortcut, { children: "\u2318A" })] }) }), _jsx(CommandSeparator, {})] })] }), _jsxs(CommandDialog, { open: true, defaultValue: "alpha", onValueChange: (v) => {
|
|
72
75
|
const el = document.querySelector('[data-palette-selected]');
|
|
73
76
|
if (el)
|
|
74
77
|
el.setAttribute('data-palette-selected', v);
|
package/dist/gallery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gallery.js","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gallery.js","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ConnectionBadge = ConnectionBadge;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* "Connected", and the way out of it.
|
|
8
|
+
*
|
|
9
|
+
* A connection is a thing a person can END, so the badge that reports one
|
|
10
|
+
* carries the disconnect rather than leaving it somewhere else on the page —
|
|
11
|
+
* the state and the verb that changes it belong in the same box.
|
|
12
|
+
*
|
|
13
|
+
* `method` and `extra` are separate because they answer different questions:
|
|
14
|
+
* HOW the connection was made, and WHICH one it is. A caller that knows only
|
|
15
|
+
* one passes only one.
|
|
16
|
+
*/
|
|
17
|
+
const gui_1 = require("@hanzo/gui");
|
|
18
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
19
|
+
function ConnectionBadge({ method, extra, info, onDisconnect, disconnecting, }) {
|
|
20
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", justify: "space-between", p: "$2.5", rounded: "$5", borderWidth: 1, borderColor: "$green3", bg: "$green1", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { height: 10, width: 10, rounded: 9999, bg: "$green9" }), (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", fontWeight: "500", color: "$green11", children: "Connected" }), method ? ((0, jsx_runtime_1.jsxs)(gui_1.Text, { fontSize: "$1", color: "$quiet", children: ["via ", method] })) : null, extra ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", color: "$quiet", children: extra })) : null] }), (0, jsx_runtime_1.jsx)(gui_1.Button, { chromeless: true, onPress: onDisconnect, disabled: disconnecting, children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1", children: [disconnecting ? (0, jsx_runtime_1.jsx)(gui_1.Spinner, { size: "small" }) : (0, jsx_runtime_1.jsx)(lucide_icons_2_1.LogOut, { size: 12 }), (0, jsx_runtime_1.jsx)(gui_1.Text, { color: "$quiet", fontSize: "$1", children: "Disconnect" })] }) })] }), info ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { mt: "$2", children: (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", color: "$quiet", children: info }) })) : null] }));
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export type ConnectionBadgeProps = {
|
|
3
|
+
/** How the connection was made — "OAuth", "API key". */
|
|
4
|
+
method?: string;
|
|
5
|
+
/** Which connection it is — an account name, a host. */
|
|
6
|
+
extra?: string;
|
|
7
|
+
/** A line under the badge, for anything that needs more than the row. */
|
|
8
|
+
info?: ReactNode;
|
|
9
|
+
onDisconnect: () => void;
|
|
10
|
+
/** The disconnect is in flight; the button waits rather than repeating. */
|
|
11
|
+
disconnecting?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare function ConnectionBadge({ method, extra, info, onDisconnect, disconnecting, }: ConnectionBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=ConnectionBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionBadge.d.ts","sourceRoot":"","sources":["../../src/product/ConnectionBadge.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,MAAM,oBAAoB,GAAG;IACjC,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,aAAa,GACd,EAAE,oBAAoB,2CA8CtB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* "Connected", and the way out of it.
|
|
5
|
+
*
|
|
6
|
+
* A connection is a thing a person can END, so the badge that reports one
|
|
7
|
+
* carries the disconnect rather than leaving it somewhere else on the page —
|
|
8
|
+
* the state and the verb that changes it belong in the same box.
|
|
9
|
+
*
|
|
10
|
+
* `method` and `extra` are separate because they answer different questions:
|
|
11
|
+
* HOW the connection was made, and WHICH one it is. A caller that knows only
|
|
12
|
+
* one passes only one.
|
|
13
|
+
*/
|
|
14
|
+
import { Button, Spinner, Text, XStack, YStack } from '@hanzo/gui';
|
|
15
|
+
import { LogOut } from '@hanzogui/lucide-icons-2';
|
|
16
|
+
export function ConnectionBadge({ method, extra, info, onDisconnect, disconnecting, }) {
|
|
17
|
+
return (_jsxs(YStack, { children: [_jsxs(XStack, { items: "center", justify: "space-between", p: "$2.5", rounded: "$5", borderWidth: 1, borderColor: "$green3", bg: "$green1", children: [_jsxs(XStack, { items: "center", gap: "$2", children: [_jsx(YStack, { height: 10, width: 10, rounded: 9999, bg: "$green9" }), _jsx(Text, { fontSize: "$3", fontWeight: "500", color: "$green11", children: "Connected" }), method ? (_jsxs(Text, { fontSize: "$1", color: "$quiet", children: ["via ", method] })) : null, extra ? (_jsx(Text, { fontSize: "$1", color: "$quiet", children: extra })) : null] }), _jsx(Button, { chromeless: true, onPress: onDisconnect, disabled: disconnecting, children: _jsxs(XStack, { items: "center", gap: "$1", children: [disconnecting ? _jsx(Spinner, { size: "small" }) : _jsx(LogOut, { size: 12 }), _jsx(Text, { color: "$quiet", fontSize: "$1", children: "Disconnect" })] }) })] }), info ? (_jsx(YStack, { mt: "$2", children: _jsx(Text, { fontSize: "$1", color: "$quiet", children: info }) })) : null] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ConnectionBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionBadge.js","sourceRoot":"","sources":["../../src/product/ConnectionBadge.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAejD,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,EACN,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,aAAa,GACQ;IACrB,OAAO,CACL,MAAC,MAAM,eACL,MAAC,MAAM,IACL,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,eAAe,EACvB,CAAC,EAAC,MAAM,EACR,OAAO,EAAC,IAAI,EACZ,WAAW,EAAE,CAAC,EACd,WAAW,EAAC,SAAS,EACrB,EAAE,EAAC,SAAS,aAEZ,MAAC,MAAM,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,aAC7B,KAAC,MAAM,IAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAC,SAAS,GAAG,EAC7D,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,KAAK,EAAC,UAAU,0BAE9C,EACN,MAAM,CAAC,CAAC,CAAC,CACR,MAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,qBAC3B,MAAM,IACN,CACR,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,YAC/B,KAAK,GACD,CACR,CAAC,CAAC,CAAC,IAAI,IACD,EACT,KAAC,MAAM,IAAC,UAAU,QAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,YAC/D,MAAC,MAAM,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,aAC5B,aAAa,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,IAAI,EAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,EAChE,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ,EAAC,IAAI,2BAE3B,IACA,GACF,IACF,EACR,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,MAAM,IAAC,EAAE,EAAC,IAAI,YACb,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,YAC/B,IAAI,GACA,GACA,CACV,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.canPreview = canPreview;
|
|
5
|
+
exports.ProjectThumb = ProjectThumb;
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
/**
|
|
8
|
+
* A picture of a site.
|
|
9
|
+
*
|
|
10
|
+
* THREE ANSWERS, TRIED IN ORDER, and the order is the whole design:
|
|
11
|
+
*
|
|
12
|
+
* 1. A CAPTURE — cloud screenshots the live site and serves the picture. Tried
|
|
13
|
+
* first because it is the only one that works for every site.
|
|
14
|
+
* 2. THE LIVE SITE IN A FRAME — only while no capture exists, and only for a
|
|
15
|
+
* host that permits framing.
|
|
16
|
+
* 3. A MONOGRAM — when neither can say anything true.
|
|
17
|
+
*
|
|
18
|
+
* Why the capture leads: a framed preview dies on any host sending
|
|
19
|
+
* `X-Frame-Options: DENY` or `frame-ancestors 'none'`, and that refusal is
|
|
20
|
+
* UNDETECTABLE from the embedder. The browser blocks it at the network layer,
|
|
21
|
+
* so `onError` never fires, `onLoad` fires for the error document, `loaded`
|
|
22
|
+
* flips, and the iframe's own white background is revealed — a grey box with a
|
|
23
|
+
* torn-image glyph that stays forever, because nothing here can learn it
|
|
24
|
+
* happened. A capture is taken by a browser VISITING the page, so no framing
|
|
25
|
+
* policy applies to it.
|
|
26
|
+
*/
|
|
27
|
+
const gui_1 = require("@hanzo/gui");
|
|
28
|
+
const react_1 = require("react");
|
|
29
|
+
/**
|
|
30
|
+
* The viewport the framed site lays itself out against, before scaling. A
|
|
31
|
+
* DESKTOP width, so the thumbnail shows the desktop layout.
|
|
32
|
+
*/
|
|
33
|
+
const LOGICAL_W = 1280;
|
|
34
|
+
/** Hosts that are a sign-in, never a site worth picturing. */
|
|
35
|
+
const AUTH_HOSTS = new Set(['console.hanzo.ai', 'hanzo.id']);
|
|
36
|
+
function canPreview(value) {
|
|
37
|
+
if (!value)
|
|
38
|
+
return false;
|
|
39
|
+
try {
|
|
40
|
+
const host = new URL(value).hostname.toLowerCase();
|
|
41
|
+
return ![...AUTH_HOSTS].some((auth) => host === auth || host.endsWith(`.${auth}`));
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const sameOrigin = (slug) => `/v1/projects/${encodeURIComponent(slug)}/shot`;
|
|
48
|
+
function ProjectThumb({ name, slug, liveUrl, shotUrl = sameOrigin, fallback, aspect = 16 / 9, }) {
|
|
49
|
+
const [failed, setFailed] = (0, react_1.useState)(false);
|
|
50
|
+
const [loaded, setLoaded] = (0, react_1.useState)(false);
|
|
51
|
+
/** No capture for this project — never deployed, or cloud has none yet. */
|
|
52
|
+
const [noShot, setNoShot] = (0, react_1.useState)(false);
|
|
53
|
+
const host = (0, react_1.useRef)(null);
|
|
54
|
+
const [box, setBox] = (0, react_1.useState)({ scale: 0.25, h: 720 });
|
|
55
|
+
(0, react_1.useEffect)(() => {
|
|
56
|
+
const el = host.current;
|
|
57
|
+
if (!el || !('scrollTo' in el) || typeof ResizeObserver === 'undefined')
|
|
58
|
+
return;
|
|
59
|
+
const measure = () => {
|
|
60
|
+
const w = el.clientWidth;
|
|
61
|
+
if (w > 0)
|
|
62
|
+
setBox({ scale: w / LOGICAL_W, h: (el.clientHeight * LOGICAL_W) / w });
|
|
63
|
+
};
|
|
64
|
+
measure();
|
|
65
|
+
const ro = new ResizeObserver(measure);
|
|
66
|
+
ro.observe(el);
|
|
67
|
+
return () => ro.disconnect();
|
|
68
|
+
}, []);
|
|
69
|
+
const showShot = Boolean(slug) && !noShot;
|
|
70
|
+
const showLive = !showShot && canPreview(liveUrl) && !failed;
|
|
71
|
+
/**
|
|
72
|
+
* The monogram does two jobs: the honest no-preview state, AND the cover that
|
|
73
|
+
* hides the iframe's white background until it paints — a dark product must
|
|
74
|
+
* never flash a white card on load.
|
|
75
|
+
*/
|
|
76
|
+
const placeholder = fallback ?? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { height: "100%", width: "100%", items: "center", justify: "center", bg: "$edge", children: (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$11", fontWeight: "500", color: "$quiet", children: (name || '?').charAt(0).toUpperCase() }) }));
|
|
77
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ref: host, position: "relative", height: "100%", width: "100%", aspectRatio: aspect, overflow: "hidden", bg: "$edge", children: [showShot ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("img", { src: shotUrl(slug), alt: "", loading: "lazy", decoding: "async", onLoad: () => setLoaded(true), onError: () => setNoShot(true), style: {
|
|
78
|
+
position: 'absolute',
|
|
79
|
+
inset: 0,
|
|
80
|
+
width: '100%',
|
|
81
|
+
height: '100%',
|
|
82
|
+
maxWidth: 'none',
|
|
83
|
+
objectFit: 'cover',
|
|
84
|
+
// A site's identity is in its header; centring a tall page shows
|
|
85
|
+
// whatever happens to be in the middle of it.
|
|
86
|
+
objectPosition: 'top',
|
|
87
|
+
opacity: loaded ? 1 : 0,
|
|
88
|
+
transition: 'opacity 240ms ease',
|
|
89
|
+
} }), loaded ? null : ((0, jsx_runtime_1.jsx)(gui_1.YStack, { fullscreen: true, children: placeholder }))] })) : showLive ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("iframe", { src: liveUrl, title: `${name} preview`, loading: "lazy", tabIndex: -1, "aria-hidden": true,
|
|
90
|
+
// `allow-same-origin` is REQUIRED, not a relaxation: without it the
|
|
91
|
+
// frame gets an opaque origin and any site touching localStorage on
|
|
92
|
+
// boot throws before first paint. The framed host is always a
|
|
93
|
+
// DIFFERENT origin than the embedder, so restoring its own origin
|
|
94
|
+
// gives it nothing it would not have when visited directly — it
|
|
95
|
+
// still cannot script this page. Top-level navigation, forms,
|
|
96
|
+
// popups and modals all stay denied.
|
|
97
|
+
sandbox: "allow-scripts allow-same-origin", scrolling: "no", onLoad: () => setLoaded(true), onError: () => setFailed(true), style: {
|
|
98
|
+
pointerEvents: 'none',
|
|
99
|
+
position: 'absolute',
|
|
100
|
+
left: 0,
|
|
101
|
+
top: 0,
|
|
102
|
+
border: 0,
|
|
103
|
+
background: '#fff',
|
|
104
|
+
width: LOGICAL_W,
|
|
105
|
+
// `max-width` CONSTRAINS the used width no matter what `width`
|
|
106
|
+
// says, and this iframe sits under the usual responsive-media
|
|
107
|
+
// reset (`:where(img,svg,video,canvas,iframe) { max-width: 100% }`)
|
|
108
|
+
// — right for every picture on the page and wrong for this one
|
|
109
|
+
// element, because here the width is not a layout size, it is the
|
|
110
|
+
// VIEWPORT the framed site lays itself out against.
|
|
111
|
+
//
|
|
112
|
+
// Capped, it became the card's own width: the site inside saw
|
|
113
|
+
// ~390px, rendered its PHONE layout, and the transform shrank that
|
|
114
|
+
// to a strip. Every thumbnail was a real screenshot, correctly
|
|
115
|
+
// scaled, of the wrong layout.
|
|
116
|
+
maxWidth: 'none',
|
|
117
|
+
height: box.h,
|
|
118
|
+
transform: `scale(${box.scale})`,
|
|
119
|
+
transformOrigin: 'top left',
|
|
120
|
+
opacity: loaded ? 1 : 0,
|
|
121
|
+
transition: 'opacity 240ms ease',
|
|
122
|
+
} }), loaded ? null : ((0, jsx_runtime_1.jsx)(gui_1.YStack, { fullscreen: true, children: placeholder }))] })) : (placeholder), (0, jsx_runtime_1.jsx)(gui_1.YStack, { fullscreen: true })] }));
|
|
123
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
export declare function canPreview(value?: string | null): boolean;
|
|
3
|
+
export type ProjectThumbProps = {
|
|
4
|
+
name: string;
|
|
5
|
+
/** The project whose capture to show. */
|
|
6
|
+
slug?: string | null;
|
|
7
|
+
liveUrl?: string | null;
|
|
8
|
+
/**
|
|
9
|
+
* Where the capture lives. Defaults to the same-origin cloud route, which is
|
|
10
|
+
* right for a site served beside the API and wrong for a desktop webview —
|
|
11
|
+
* so a caller that is not same-origin passes the absolute URL.
|
|
12
|
+
*/
|
|
13
|
+
shotUrl?: (slug: string) => string;
|
|
14
|
+
/** Shown when there is no live URL and no capture. */
|
|
15
|
+
fallback?: ReactElement;
|
|
16
|
+
/**
|
|
17
|
+
* Box shape when the parent sets no height (cards 16/9, heroes 16/10).
|
|
18
|
+
*
|
|
19
|
+
* A RATIO, not a class name. As a Tailwind utility this named a shape and
|
|
20
|
+
* delivered none: where the parent supplied a height it went unnoticed, and
|
|
21
|
+
* where it did not, `height: 100%` resolved against an auto-height box and the
|
|
22
|
+
* thumbnail collapsed to zero.
|
|
23
|
+
*/
|
|
24
|
+
aspect?: number;
|
|
25
|
+
};
|
|
26
|
+
export declare function ProjectThumb({ name, slug, liveUrl, shotUrl, fallback, aspect, }: ProjectThumbProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
//# sourceMappingURL=ProjectThumb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectThumb.d.ts","sourceRoot":"","sources":["../../src/product/ProjectThumb.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAWtE,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAQzD;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAClC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAoB,EACpB,QAAQ,EACR,MAAe,GAChB,EAAE,iBAAiB,2CA6InB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* A picture of a site.
|
|
5
|
+
*
|
|
6
|
+
* THREE ANSWERS, TRIED IN ORDER, and the order is the whole design:
|
|
7
|
+
*
|
|
8
|
+
* 1. A CAPTURE — cloud screenshots the live site and serves the picture. Tried
|
|
9
|
+
* first because it is the only one that works for every site.
|
|
10
|
+
* 2. THE LIVE SITE IN A FRAME — only while no capture exists, and only for a
|
|
11
|
+
* host that permits framing.
|
|
12
|
+
* 3. A MONOGRAM — when neither can say anything true.
|
|
13
|
+
*
|
|
14
|
+
* Why the capture leads: a framed preview dies on any host sending
|
|
15
|
+
* `X-Frame-Options: DENY` or `frame-ancestors 'none'`, and that refusal is
|
|
16
|
+
* UNDETECTABLE from the embedder. The browser blocks it at the network layer,
|
|
17
|
+
* so `onError` never fires, `onLoad` fires for the error document, `loaded`
|
|
18
|
+
* flips, and the iframe's own white background is revealed — a grey box with a
|
|
19
|
+
* torn-image glyph that stays forever, because nothing here can learn it
|
|
20
|
+
* happened. A capture is taken by a browser VISITING the page, so no framing
|
|
21
|
+
* policy applies to it.
|
|
22
|
+
*/
|
|
23
|
+
import { Text, XStack, YStack } from '@hanzo/gui';
|
|
24
|
+
import { useEffect, useRef, useState } from 'react';
|
|
25
|
+
/**
|
|
26
|
+
* The viewport the framed site lays itself out against, before scaling. A
|
|
27
|
+
* DESKTOP width, so the thumbnail shows the desktop layout.
|
|
28
|
+
*/
|
|
29
|
+
const LOGICAL_W = 1280;
|
|
30
|
+
/** Hosts that are a sign-in, never a site worth picturing. */
|
|
31
|
+
const AUTH_HOSTS = new Set(['console.hanzo.ai', 'hanzo.id']);
|
|
32
|
+
export function canPreview(value) {
|
|
33
|
+
if (!value)
|
|
34
|
+
return false;
|
|
35
|
+
try {
|
|
36
|
+
const host = new URL(value).hostname.toLowerCase();
|
|
37
|
+
return ![...AUTH_HOSTS].some((auth) => host === auth || host.endsWith(`.${auth}`));
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const sameOrigin = (slug) => `/v1/projects/${encodeURIComponent(slug)}/shot`;
|
|
44
|
+
export function ProjectThumb({ name, slug, liveUrl, shotUrl = sameOrigin, fallback, aspect = 16 / 9, }) {
|
|
45
|
+
const [failed, setFailed] = useState(false);
|
|
46
|
+
const [loaded, setLoaded] = useState(false);
|
|
47
|
+
/** No capture for this project — never deployed, or cloud has none yet. */
|
|
48
|
+
const [noShot, setNoShot] = useState(false);
|
|
49
|
+
const host = useRef(null);
|
|
50
|
+
const [box, setBox] = useState({ scale: 0.25, h: 720 });
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
const el = host.current;
|
|
53
|
+
if (!el || !('scrollTo' in el) || typeof ResizeObserver === 'undefined')
|
|
54
|
+
return;
|
|
55
|
+
const measure = () => {
|
|
56
|
+
const w = el.clientWidth;
|
|
57
|
+
if (w > 0)
|
|
58
|
+
setBox({ scale: w / LOGICAL_W, h: (el.clientHeight * LOGICAL_W) / w });
|
|
59
|
+
};
|
|
60
|
+
measure();
|
|
61
|
+
const ro = new ResizeObserver(measure);
|
|
62
|
+
ro.observe(el);
|
|
63
|
+
return () => ro.disconnect();
|
|
64
|
+
}, []);
|
|
65
|
+
const showShot = Boolean(slug) && !noShot;
|
|
66
|
+
const showLive = !showShot && canPreview(liveUrl) && !failed;
|
|
67
|
+
/**
|
|
68
|
+
* The monogram does two jobs: the honest no-preview state, AND the cover that
|
|
69
|
+
* hides the iframe's white background until it paints — a dark product must
|
|
70
|
+
* never flash a white card on load.
|
|
71
|
+
*/
|
|
72
|
+
const placeholder = fallback ?? (_jsx(XStack, { height: "100%", width: "100%", items: "center", justify: "center", bg: "$edge", children: _jsx(Text, { fontSize: "$11", fontWeight: "500", color: "$quiet", children: (name || '?').charAt(0).toUpperCase() }) }));
|
|
73
|
+
return (_jsxs(YStack, { ref: host, position: "relative", height: "100%", width: "100%", aspectRatio: aspect, overflow: "hidden", bg: "$edge", children: [showShot ? (_jsxs(_Fragment, { children: [_jsx("img", { src: shotUrl(slug), alt: "", loading: "lazy", decoding: "async", onLoad: () => setLoaded(true), onError: () => setNoShot(true), style: {
|
|
74
|
+
position: 'absolute',
|
|
75
|
+
inset: 0,
|
|
76
|
+
width: '100%',
|
|
77
|
+
height: '100%',
|
|
78
|
+
maxWidth: 'none',
|
|
79
|
+
objectFit: 'cover',
|
|
80
|
+
// A site's identity is in its header; centring a tall page shows
|
|
81
|
+
// whatever happens to be in the middle of it.
|
|
82
|
+
objectPosition: 'top',
|
|
83
|
+
opacity: loaded ? 1 : 0,
|
|
84
|
+
transition: 'opacity 240ms ease',
|
|
85
|
+
} }), loaded ? null : (_jsx(YStack, { fullscreen: true, children: placeholder }))] })) : showLive ? (_jsxs(_Fragment, { children: [_jsx("iframe", { src: liveUrl, title: `${name} preview`, loading: "lazy", tabIndex: -1, "aria-hidden": true,
|
|
86
|
+
// `allow-same-origin` is REQUIRED, not a relaxation: without it the
|
|
87
|
+
// frame gets an opaque origin and any site touching localStorage on
|
|
88
|
+
// boot throws before first paint. The framed host is always a
|
|
89
|
+
// DIFFERENT origin than the embedder, so restoring its own origin
|
|
90
|
+
// gives it nothing it would not have when visited directly — it
|
|
91
|
+
// still cannot script this page. Top-level navigation, forms,
|
|
92
|
+
// popups and modals all stay denied.
|
|
93
|
+
sandbox: "allow-scripts allow-same-origin", scrolling: "no", onLoad: () => setLoaded(true), onError: () => setFailed(true), style: {
|
|
94
|
+
pointerEvents: 'none',
|
|
95
|
+
position: 'absolute',
|
|
96
|
+
left: 0,
|
|
97
|
+
top: 0,
|
|
98
|
+
border: 0,
|
|
99
|
+
background: '#fff',
|
|
100
|
+
width: LOGICAL_W,
|
|
101
|
+
// `max-width` CONSTRAINS the used width no matter what `width`
|
|
102
|
+
// says, and this iframe sits under the usual responsive-media
|
|
103
|
+
// reset (`:where(img,svg,video,canvas,iframe) { max-width: 100% }`)
|
|
104
|
+
// — right for every picture on the page and wrong for this one
|
|
105
|
+
// element, because here the width is not a layout size, it is the
|
|
106
|
+
// VIEWPORT the framed site lays itself out against.
|
|
107
|
+
//
|
|
108
|
+
// Capped, it became the card's own width: the site inside saw
|
|
109
|
+
// ~390px, rendered its PHONE layout, and the transform shrank that
|
|
110
|
+
// to a strip. Every thumbnail was a real screenshot, correctly
|
|
111
|
+
// scaled, of the wrong layout.
|
|
112
|
+
maxWidth: 'none',
|
|
113
|
+
height: box.h,
|
|
114
|
+
transform: `scale(${box.scale})`,
|
|
115
|
+
transformOrigin: 'top left',
|
|
116
|
+
opacity: loaded ? 1 : 0,
|
|
117
|
+
transition: 'opacity 240ms ease',
|
|
118
|
+
} }), loaded ? null : (_jsx(YStack, { fullscreen: true, children: placeholder }))] })) : (placeholder), _jsx(YStack, { fullscreen: true })] }));
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=ProjectThumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectThumb.js","sourceRoot":"","sources":["../../src/product/ProjectThumb.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Split = Split;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* Two panes and a handle between them.
|
|
8
|
+
*
|
|
9
|
+
* The split is a PERCENTAGE, not a pixel count, so the panes keep their
|
|
10
|
+
* proportion when the window changes size — a pixel split silently becomes a
|
|
11
|
+
* different layout on a smaller screen.
|
|
12
|
+
*
|
|
13
|
+
* The handle is a real `separator`: it takes focus and moves on the arrow keys.
|
|
14
|
+
* A drag-only handle is unusable without a mouse, and a split pane is exactly
|
|
15
|
+
* the control someone drives from the keyboard while reading the pane beside it.
|
|
16
|
+
*
|
|
17
|
+
* Drag state lives on `document` rather than the element because the pointer
|
|
18
|
+
* leaves the 4px handle immediately — listening on the handle drops the drag as
|
|
19
|
+
* soon as it starts.
|
|
20
|
+
*/
|
|
21
|
+
const gui_1 = require("@hanzo/gui");
|
|
22
|
+
const react_1 = require("react");
|
|
23
|
+
const STEP = 2;
|
|
24
|
+
function Split({ left, right, defaultSplit = 50, min = 20, max = 80, onSplitChange, }) {
|
|
25
|
+
const [split, setSplit] = (0, react_1.useState)(defaultSplit);
|
|
26
|
+
const [dragging, setDragging] = (0, react_1.useState)(false);
|
|
27
|
+
const container = (0, react_1.useRef)(null);
|
|
28
|
+
const move = (0, react_1.useCallback)((to) => {
|
|
29
|
+
const held = Math.max(min, Math.min(max, to));
|
|
30
|
+
setSplit(held);
|
|
31
|
+
onSplitChange?.(held);
|
|
32
|
+
}, [min, max, onSplitChange]);
|
|
33
|
+
(0, react_1.useEffect)(() => {
|
|
34
|
+
if (!dragging)
|
|
35
|
+
return;
|
|
36
|
+
const onMove = (e) => {
|
|
37
|
+
const el = container.current;
|
|
38
|
+
if (!el || !('getBoundingClientRect' in el))
|
|
39
|
+
return;
|
|
40
|
+
const box = el.getBoundingClientRect();
|
|
41
|
+
move(((e.clientX - box.left) / box.width) * 100);
|
|
42
|
+
};
|
|
43
|
+
const onUp = () => setDragging(false);
|
|
44
|
+
document.addEventListener('mousemove', onMove);
|
|
45
|
+
document.addEventListener('mouseup', onUp);
|
|
46
|
+
// A drag that paints a text selection across both panes reads as a bug.
|
|
47
|
+
document.body.style.cursor = 'col-resize';
|
|
48
|
+
document.body.style.userSelect = 'none';
|
|
49
|
+
return () => {
|
|
50
|
+
document.removeEventListener('mousemove', onMove);
|
|
51
|
+
document.removeEventListener('mouseup', onUp);
|
|
52
|
+
document.body.style.cursor = '';
|
|
53
|
+
document.body.style.userSelect = '';
|
|
54
|
+
};
|
|
55
|
+
}, [dragging, move]);
|
|
56
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ref: container, height: "100%", width: "100%", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { height: "100%", overflow: "hidden", style: { width: `${split}%` }, children: left }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { role: "separator", "aria-orientation": "vertical", "aria-valuenow": Math.round(split), "aria-valuemin": min, "aria-valuemax": max, tabIndex: 0, width: 4, cursor: "col-resize", bg: dragging ? '$hover' : '$borderColor', hoverStyle: { background: '$hover' }, focusStyle: { background: '$hover' }, onMouseDown: (e) => {
|
|
57
|
+
e.preventDefault();
|
|
58
|
+
setDragging(true);
|
|
59
|
+
}, ...(gui_1.isWeb
|
|
60
|
+
? {
|
|
61
|
+
onKeyDown: ((e) => {
|
|
62
|
+
if (e.key === 'ArrowLeft') {
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
move(split - STEP);
|
|
65
|
+
}
|
|
66
|
+
if (e.key === 'ArrowRight') {
|
|
67
|
+
e.preventDefault();
|
|
68
|
+
move(split + STEP);
|
|
69
|
+
}
|
|
70
|
+
}),
|
|
71
|
+
}
|
|
72
|
+
: null) }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { height: "100%", overflow: "hidden", flex: 1, children: right })] }));
|
|
73
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export type SplitProps = {
|
|
3
|
+
left: ReactNode;
|
|
4
|
+
right: ReactNode;
|
|
5
|
+
/** Where the handle starts, as a percentage of the width. */
|
|
6
|
+
defaultSplit?: number;
|
|
7
|
+
/** How narrow the left pane may get, as a percentage. */
|
|
8
|
+
min?: number;
|
|
9
|
+
/** How wide the left pane may get, as a percentage. */
|
|
10
|
+
max?: number;
|
|
11
|
+
onSplitChange?: (split: number) => void;
|
|
12
|
+
};
|
|
13
|
+
export declare function Split({ left, right, defaultSplit, min, max, onSplitChange, }: SplitProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=Split.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Split.d.ts","sourceRoot":"","sources":["../../src/product/Split.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,CAAA;AAID,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,KAAK,EACL,YAAiB,EACjB,GAAQ,EACR,GAAQ,EACR,aAAa,GACd,EAAE,UAAU,2CAqFZ"}
|