@hanzo/ui 8.14.1 → 8.14.3

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.
@@ -0,0 +1,74 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ChannelHeader = ChannelHeader;
5
+ exports.ArtifactCard = ArtifactCard;
6
+ exports.SystemLine = SystemLine;
7
+ exports.Pane = Pane;
8
+ exports.OrgRail = OrgRail;
9
+ const jsx_runtime_1 = require("react/jsx-runtime");
10
+ /**
11
+ * The channel's furniture: the header, the artifact card, the system line, the
12
+ * right-hand pane, and the org rail the whole shell hangs off.
13
+ *
14
+ * Each is presentational and takes its content. Together they are the working
15
+ * view: a channel names the work and counts what came out of it, the thread
16
+ * carries the conversation and the things produced, and the pane is where a
17
+ * produced thing is actually looked at.
18
+ */
19
+ const gui_1 = require("@hanzo/gui");
20
+ const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
21
+ const react_1 = require("react");
22
+ const slot_1 = require("../backends/gui/slot.cjs");
23
+ function ChannelHeader({ name, artifacts, onArtifacts, children, ...rest }) {
24
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('channel-header'), items: "center", gap: "$2", px: "$4", py: "$3", borderBottomWidth: 1, borderColor: "$borderColor", ...rest, children: [(0, jsx_runtime_1.jsx)(gui_1.XStack, { width: 26, height: 26, rounded: "$3", items: "center", justify: "center", bg: "$raised", shrink: 0, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Code2, { size: 13, opacity: 0.8 }) }), (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$5", fontWeight: "600", numberOfLines: 1, shrink: 1, children: name }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), artifacts === undefined ? null : ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", px: "$2.5", py: "$1", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", cursor: onArtifacts ? 'pointer' : 'default', role: onArtifacts ? 'button' : undefined, tabIndex: onArtifacts ? 0 : undefined, hoverStyle: onArtifacts ? { bg: '$hover' } : undefined, onPress: onArtifacts, children: [(0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", color: "$quiet", children: "Artifacts" }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { minW: 18, height: 18, px: "$1", rounded: 9999, items: "center", justify: "center", bg: "$edge", children: (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", fontWeight: "600", children: artifacts }) })] })), children] }));
25
+ }
26
+ const ART = {
27
+ canvas: { icon: lucide_icons_2_1.FileText, says: 'Canvas' },
28
+ code: { icon: lucide_icons_2_1.Code2, says: 'Code' },
29
+ view: { icon: lucide_icons_2_1.Eye, says: 'View' },
30
+ };
31
+ /** A thing the agent made, offered in the thread. Opening it fills the pane. */
32
+ function ArtifactCard({ title, kind, onOpen, ...rest }) {
33
+ const { icon: Icon, says } = ART[kind];
34
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('artifact-card'), items: "center", gap: "$3", p: "$3", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", bg: "$panel", maxW: 420, cursor: onOpen ? 'pointer' : 'default', role: onOpen ? 'button' : undefined, tabIndex: onOpen ? 0 : undefined, hoverStyle: onOpen ? { bg: '$hover' } : undefined, onPress: onOpen, ...rest, children: [(0, jsx_runtime_1.jsx)(gui_1.XStack, { width: 34, height: 34, rounded: "$3", items: "center", justify: "center", bg: "$edge", shrink: 0, children: (0, jsx_runtime_1.jsx)(Icon, { size: 16 }) }), (0, jsx_runtime_1.jsxs)(gui_1.YStack, { flex: 1, shrink: 1, children: [(0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$3", fontWeight: "600", numberOfLines: 1, children: title }), (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", color: "$soft", children: says })] })] }));
35
+ }
36
+ /** Something that happened TO the channel, not something anyone said. */
37
+ function SystemLine({ children, avatar, ...rest }) {
38
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('system-line'), items: "flex-start", gap: "$3", ...rest, children: [avatar ?? (0, jsx_runtime_1.jsx)(gui_1.YStack, { width: 28, shrink: 0 }), (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", color: "$soft", flex: 1, children: children })] }));
39
+ }
40
+ /**
41
+ * The right-hand pane — Code, View, Canvas.
42
+ *
43
+ * Uncontrolled until `active` is supplied, so the common case needs no state
44
+ * while a surface that routes to a tab can drive it.
45
+ */
46
+ function Pane({ tabs, active, onActive, onClose, ...rest }) {
47
+ const [own, setOwn] = (0, react_1.useState)(tabs[0]?.id);
48
+ const current = active ?? own;
49
+ const shown = tabs.find((t) => t.id === current) ?? tabs[0];
50
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('pane'), flex: 1, minH: 0, bg: "$panel", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", overflow: "hidden", ...rest, children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1", px: "$2", py: "$2", borderBottomWidth: 1, borderColor: "$borderColor", children: [tabs.map((tab) => {
51
+ const on = tab.id === shown?.id;
52
+ const Icon = ART[tab.kind].icon;
53
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1.5", px: "$2.5", py: "$1.5", rounded: "$3", cursor: "pointer", role: "tab", tabIndex: 0, "aria-selected": on, opacity: on ? 1 : 0.6, bg: on ? '$edge' : undefined, hoverStyle: { bg: on ? '$edge' : '$hover', opacity: 1 }, onPress: () => {
54
+ setOwn(tab.id);
55
+ onActive?.(tab.id);
56
+ }, children: [(0, jsx_runtime_1.jsx)(Icon, { size: 13 }), (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", children: tab.label })] }, tab.id));
57
+ }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), onClose ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { width: 26, height: 26, items: "center", justify: "center", rounded: "$3", cursor: "pointer", opacity: 0.7, role: "button", tabIndex: 0, "aria-label": "Close panel", ...(0, slot_1.tip)('Close panel'), hoverStyle: { bg: '$hover', opacity: 1 }, onPress: onClose, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.X, { size: 15 }) })) : null] }), (0, jsx_runtime_1.jsx)(gui_1.ScrollView, { flex: 1, showsVerticalScrollIndicator: false, children: (0, jsx_runtime_1.jsx)(gui_1.YStack, { p: "$5", children: shown?.content }) })] }));
58
+ }
59
+ /**
60
+ * The outermost column: which organization you are in.
61
+ *
62
+ * A person belongs to several and can always start another, so this is a
63
+ * SWITCHER and not a logo — everything to the right of it (channels, DMs,
64
+ * activity, files) belongs to whichever org is lit here. It is its own column
65
+ * rather than a menu in the rail because the rail's contents change when this
66
+ * changes, and a control that reorganises the page beside it should not be
67
+ * hidden inside that page.
68
+ */
69
+ function OrgRail({ orgs, active, onSwitch, onAdd, ...rest }) {
70
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('org-rail'), width: 56, shrink: 0, height: "100%", items: "center", gap: "$2", py: "$3", bg: "$background", borderRightWidth: 1, borderColor: "$borderColor", ...rest, children: [orgs.map((org) => {
71
+ const on = org.id === active;
72
+ return ((0, jsx_runtime_1.jsx)(gui_1.XStack, { width: 36, height: 36, rounded: "$4", items: "center", justify: "center", overflow: "hidden", cursor: "pointer", role: "button", tabIndex: 0, "aria-current": on ? 'true' : undefined, "aria-label": org.name, ...(0, slot_1.tip)(org.name), bg: on ? '$edge' : '$raised', borderWidth: 1, borderColor: on ? '$color8' : 'transparent', opacity: on ? 1 : 0.7, hoverStyle: { opacity: 1 }, onPress: () => onSwitch?.(org.id), children: org.avatar ?? ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$3", fontWeight: "600", children: org.name.charAt(0).toUpperCase() })) }, org.id));
73
+ }), onAdd ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { width: 36, height: 36, rounded: "$4", items: "center", justify: "center", cursor: "pointer", role: "button", tabIndex: 0, "aria-label": "Add an organization", ...(0, slot_1.tip)('Add an organization'), borderWidth: 1, borderColor: "$borderColor", opacity: 0.6, hoverStyle: { bg: '$hover', opacity: 1 }, onPress: onAdd, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Plus, { size: 16 }) })) : null] }));
74
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * The channel's furniture: the header, the artifact card, the system line, the
3
+ * right-hand pane, and the org rail the whole shell hangs off.
4
+ *
5
+ * Each is presentational and takes its content. Together they are the working
6
+ * view: a channel names the work and counts what came out of it, the thread
7
+ * carries the conversation and the things produced, and the pane is where a
8
+ * produced thing is actually looked at.
9
+ */
10
+ import { XStack, YStack } from '@hanzo/gui';
11
+ import { type ComponentProps, type ReactNode } from 'react';
12
+ type Col = Omit<ComponentProps<typeof YStack>, 'children'>;
13
+ type Row = Omit<ComponentProps<typeof XStack>, 'children'>;
14
+ export interface ChannelHeaderProps extends Row {
15
+ name: string;
16
+ /** How many work products this channel has produced. Absent draws no badge —
17
+ * zero is a fact worth showing, absent is "not counted yet". */
18
+ artifacts?: number;
19
+ onArtifacts?: () => void;
20
+ /** Trailing controls. */
21
+ children?: ReactNode;
22
+ }
23
+ export declare function ChannelHeader({ name, artifacts, onArtifacts, children, ...rest }: ChannelHeaderProps): import("react/jsx-runtime").JSX.Element;
24
+ /** What a produced thing is. Names the icon and the card's second line. */
25
+ export type ArtifactKind = 'canvas' | 'code' | 'view';
26
+ export interface ArtifactCardProps extends Row {
27
+ title: string;
28
+ kind: ArtifactKind;
29
+ onOpen?: () => void;
30
+ }
31
+ /** A thing the agent made, offered in the thread. Opening it fills the pane. */
32
+ export declare function ArtifactCard({ title, kind, onOpen, ...rest }: ArtifactCardProps): import("react/jsx-runtime").JSX.Element;
33
+ export interface SystemLineProps extends Row {
34
+ /** The whole sentence, already written by the caller — "Zoe was added by
35
+ * Harry". Composing it here would need a grammar this component cannot have. */
36
+ children: ReactNode;
37
+ avatar?: ReactNode;
38
+ }
39
+ /** Something that happened TO the channel, not something anyone said. */
40
+ export declare function SystemLine({ children, avatar, ...rest }: SystemLineProps): import("react/jsx-runtime").JSX.Element;
41
+ export interface PaneTab {
42
+ id: string;
43
+ label: string;
44
+ kind: ArtifactKind;
45
+ content: ReactNode;
46
+ }
47
+ export interface PaneProps extends Col {
48
+ tabs: PaneTab[];
49
+ active?: string;
50
+ onActive?: (id: string) => void;
51
+ onClose?: () => void;
52
+ }
53
+ /**
54
+ * The right-hand pane — Code, View, Canvas.
55
+ *
56
+ * Uncontrolled until `active` is supplied, so the common case needs no state
57
+ * while a surface that routes to a tab can drive it.
58
+ */
59
+ export declare function Pane({ tabs, active, onActive, onClose, ...rest }: PaneProps): import("react/jsx-runtime").JSX.Element;
60
+ export interface Org {
61
+ id: string;
62
+ name: string;
63
+ /** A mark. Falls back to the first letter of `name`. */
64
+ avatar?: ReactNode;
65
+ }
66
+ export interface OrgRailProps extends Col {
67
+ orgs: Org[];
68
+ active?: string;
69
+ onSwitch?: (id: string) => void;
70
+ onAdd?: () => void;
71
+ }
72
+ /**
73
+ * The outermost column: which organization you are in.
74
+ *
75
+ * A person belongs to several and can always start another, so this is a
76
+ * SWITCHER and not a logo — everything to the right of it (channels, DMs,
77
+ * activity, files) belongs to whichever org is lit here. It is its own column
78
+ * rather than a menu in the rail because the rail's contents change when this
79
+ * changes, and a control that reorganises the page beside it should not be
80
+ * hidden inside that page.
81
+ */
82
+ export declare function OrgRail({ orgs, active, onSwitch, onAdd, ...rest }: OrgRailProps): import("react/jsx-runtime").JSX.Element;
83
+ export {};
84
+ //# sourceMappingURL=Pane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pane.d.ts","sourceRoot":"","sources":["../../src/agents/Pane.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,OAAO,EAA2B,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEpE,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIrE,KAAK,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;AAC1D,KAAK,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;AAI1D,MAAM,WAAW,kBAAmB,SAAQ,GAAG;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ;qEACiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,WAAW,EACX,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,kBAAkB,2CA+DpB;AAID,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAQrD,MAAM,WAAW,iBAAkB,SAAQ,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,iBAAiB,2CAyC/E;AAID,MAAM,WAAW,eAAgB,SAAQ,GAAG;IAC1C;qFACiF;IACjF,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,2CASxE;AAID,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,SAAS,CAAA;CACnB;AAED,MAAM,WAAW,SAAU,SAAQ,GAAG;IACpC,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAyE3E;AAID,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB;AAED,MAAM,WAAW,YAAa,SAAQ,GAAG;IACvC,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,YAAY,2CAuE/E"}
@@ -0,0 +1,68 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * The channel's furniture: the header, the artifact card, the system line, the
5
+ * right-hand pane, and the org rail the whole shell hangs off.
6
+ *
7
+ * Each is presentational and takes its content. Together they are the working
8
+ * view: a channel names the work and counts what came out of it, the thread
9
+ * carries the conversation and the things produced, and the pane is where a
10
+ * produced thing is actually looked at.
11
+ */
12
+ import { ScrollView, SizableText, XStack, YStack } from '@hanzo/gui';
13
+ import { Code2, Eye, FileText, Plus, X } from '@hanzogui/lucide-icons-2';
14
+ import { useState } from 'react';
15
+ import { slot, tip } from '../backends/gui/slot.js';
16
+ export function ChannelHeader({ name, artifacts, onArtifacts, children, ...rest }) {
17
+ return (_jsxs(XStack, { ...slot('channel-header'), items: "center", gap: "$2", px: "$4", py: "$3", borderBottomWidth: 1, borderColor: "$borderColor", ...rest, children: [_jsx(XStack, { width: 26, height: 26, rounded: "$3", items: "center", justify: "center", bg: "$raised", shrink: 0, children: _jsx(Code2, { size: 13, opacity: 0.8 }) }), _jsx(SizableText, { size: "$5", fontWeight: "600", numberOfLines: 1, shrink: 1, children: name }), _jsx(XStack, { flex: 1 }), artifacts === undefined ? null : (_jsxs(XStack, { items: "center", gap: "$2", px: "$2.5", py: "$1", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", cursor: onArtifacts ? 'pointer' : 'default', role: onArtifacts ? 'button' : undefined, tabIndex: onArtifacts ? 0 : undefined, hoverStyle: onArtifacts ? { bg: '$hover' } : undefined, onPress: onArtifacts, children: [_jsx(SizableText, { size: "$2", color: "$quiet", children: "Artifacts" }), _jsx(XStack, { minW: 18, height: 18, px: "$1", rounded: 9999, items: "center", justify: "center", bg: "$edge", children: _jsx(SizableText, { size: "$1", fontWeight: "600", children: artifacts }) })] })), children] }));
18
+ }
19
+ const ART = {
20
+ canvas: { icon: FileText, says: 'Canvas' },
21
+ code: { icon: Code2, says: 'Code' },
22
+ view: { icon: Eye, says: 'View' },
23
+ };
24
+ /** A thing the agent made, offered in the thread. Opening it fills the pane. */
25
+ export function ArtifactCard({ title, kind, onOpen, ...rest }) {
26
+ const { icon: Icon, says } = ART[kind];
27
+ return (_jsxs(XStack, { ...slot('artifact-card'), items: "center", gap: "$3", p: "$3", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", bg: "$panel", maxW: 420, cursor: onOpen ? 'pointer' : 'default', role: onOpen ? 'button' : undefined, tabIndex: onOpen ? 0 : undefined, hoverStyle: onOpen ? { bg: '$hover' } : undefined, onPress: onOpen, ...rest, children: [_jsx(XStack, { width: 34, height: 34, rounded: "$3", items: "center", justify: "center", bg: "$edge", shrink: 0, children: _jsx(Icon, { size: 16 }) }), _jsxs(YStack, { flex: 1, shrink: 1, children: [_jsx(SizableText, { size: "$3", fontWeight: "600", numberOfLines: 1, children: title }), _jsx(SizableText, { size: "$2", color: "$soft", children: says })] })] }));
28
+ }
29
+ /** Something that happened TO the channel, not something anyone said. */
30
+ export function SystemLine({ children, avatar, ...rest }) {
31
+ return (_jsxs(XStack, { ...slot('system-line'), items: "flex-start", gap: "$3", ...rest, children: [avatar ?? _jsx(YStack, { width: 28, shrink: 0 }), _jsx(SizableText, { size: "$2", color: "$soft", flex: 1, children: children })] }));
32
+ }
33
+ /**
34
+ * The right-hand pane — Code, View, Canvas.
35
+ *
36
+ * Uncontrolled until `active` is supplied, so the common case needs no state
37
+ * while a surface that routes to a tab can drive it.
38
+ */
39
+ export function Pane({ tabs, active, onActive, onClose, ...rest }) {
40
+ const [own, setOwn] = useState(tabs[0]?.id);
41
+ const current = active ?? own;
42
+ const shown = tabs.find((t) => t.id === current) ?? tabs[0];
43
+ return (_jsxs(YStack, { ...slot('pane'), flex: 1, minH: 0, bg: "$panel", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", overflow: "hidden", ...rest, children: [_jsxs(XStack, { items: "center", gap: "$1", px: "$2", py: "$2", borderBottomWidth: 1, borderColor: "$borderColor", children: [tabs.map((tab) => {
44
+ const on = tab.id === shown?.id;
45
+ const Icon = ART[tab.kind].icon;
46
+ return (_jsxs(XStack, { items: "center", gap: "$1.5", px: "$2.5", py: "$1.5", rounded: "$3", cursor: "pointer", role: "tab", tabIndex: 0, "aria-selected": on, opacity: on ? 1 : 0.6, bg: on ? '$edge' : undefined, hoverStyle: { bg: on ? '$edge' : '$hover', opacity: 1 }, onPress: () => {
47
+ setOwn(tab.id);
48
+ onActive?.(tab.id);
49
+ }, children: [_jsx(Icon, { size: 13 }), _jsx(SizableText, { size: "$2", children: tab.label })] }, tab.id));
50
+ }), _jsx(XStack, { flex: 1 }), onClose ? (_jsx(XStack, { width: 26, height: 26, items: "center", justify: "center", rounded: "$3", cursor: "pointer", opacity: 0.7, role: "button", tabIndex: 0, "aria-label": "Close panel", ...tip('Close panel'), hoverStyle: { bg: '$hover', opacity: 1 }, onPress: onClose, children: _jsx(X, { size: 15 }) })) : null] }), _jsx(ScrollView, { flex: 1, showsVerticalScrollIndicator: false, children: _jsx(YStack, { p: "$5", children: shown?.content }) })] }));
51
+ }
52
+ /**
53
+ * The outermost column: which organization you are in.
54
+ *
55
+ * A person belongs to several and can always start another, so this is a
56
+ * SWITCHER and not a logo — everything to the right of it (channels, DMs,
57
+ * activity, files) belongs to whichever org is lit here. It is its own column
58
+ * rather than a menu in the rail because the rail's contents change when this
59
+ * changes, and a control that reorganises the page beside it should not be
60
+ * hidden inside that page.
61
+ */
62
+ export function OrgRail({ orgs, active, onSwitch, onAdd, ...rest }) {
63
+ return (_jsxs(YStack, { ...slot('org-rail'), width: 56, shrink: 0, height: "100%", items: "center", gap: "$2", py: "$3", bg: "$background", borderRightWidth: 1, borderColor: "$borderColor", ...rest, children: [orgs.map((org) => {
64
+ const on = org.id === active;
65
+ return (_jsx(XStack, { width: 36, height: 36, rounded: "$4", items: "center", justify: "center", overflow: "hidden", cursor: "pointer", role: "button", tabIndex: 0, "aria-current": on ? 'true' : undefined, "aria-label": org.name, ...tip(org.name), bg: on ? '$edge' : '$raised', borderWidth: 1, borderColor: on ? '$color8' : 'transparent', opacity: on ? 1 : 0.7, hoverStyle: { opacity: 1 }, onPress: () => onSwitch?.(org.id), children: org.avatar ?? (_jsx(SizableText, { size: "$3", fontWeight: "600", children: org.name.charAt(0).toUpperCase() })) }, org.id));
66
+ }), onAdd ? (_jsx(XStack, { width: 36, height: 36, rounded: "$4", items: "center", justify: "center", cursor: "pointer", role: "button", tabIndex: 0, "aria-label": "Add an organization", ...tip('Add an organization'), borderWidth: 1, borderColor: "$borderColor", opacity: 0.6, hoverStyle: { bg: '$hover', opacity: 1 }, onPress: onAdd, children: _jsx(Plus, { size: 16 }) })) : null] }));
67
+ }
68
+ //# sourceMappingURL=Pane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pane.js","sourceRoot":"","sources":["../../src/agents/Pane.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ProgressBlock = ProgressBlock;
5
+ exports.steps = steps;
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ /**
8
+ * ProgressBlock — an agent's turn, as the steps it took.
9
+ *
10
+ * A run emits one event per token and per tool call, and printed flat that is a
11
+ * wall. What a reader wants is the SHAPE of the work: it thought, it searched,
12
+ * it read two files, it finished — each one line, each openable for the detail,
13
+ * and the answer underneath at full size.
14
+ *
15
+ * So a step is a LABEL plus DETAIL, and the detail is closed by default. The
16
+ * label is the claim ("Read 2 files"); the detail is the evidence
17
+ * ("BuyNowButton.tsx", "styles.css"). A reader skims labels and opens the one
18
+ * they doubt — which is the whole reason this beats a transcript.
19
+ *
20
+ * `done` is a state of the BLOCK, not a step: a run that is still working shows
21
+ * no tick, and a tick that appears before the work stops is a lie a reader will
22
+ * only catch once.
23
+ *
24
+ * Presentational. `steps()` maps session events to this shape and is exported
25
+ * beside it, because every surface reading the same stream should group it the
26
+ * same way.
27
+ */
28
+ const gui_1 = require("@hanzo/gui");
29
+ const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
30
+ const react_1 = require("react");
31
+ const slot_1 = require("../backends/gui/slot.cjs");
32
+ const ICON = {
33
+ think: lucide_icons_2_1.Lightbulb,
34
+ search: lucide_icons_2_1.Sparkles,
35
+ read: lucide_icons_2_1.FileText,
36
+ run: lucide_icons_2_1.Terminal,
37
+ write: lucide_icons_2_1.FileText,
38
+ error: lucide_icons_2_1.TriangleAlert,
39
+ step: lucide_icons_2_1.CircleDot,
40
+ };
41
+ function Row({ step }) {
42
+ const [open, setOpen] = (0, react_1.useState)(step.open ?? false);
43
+ const Icon = ICON[step.kind];
44
+ const has = !!step.detail?.length;
45
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$0.5", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1.5", cursor: has ? 'pointer' : 'default', role: has ? 'button' : undefined, tabIndex: has ? 0 : undefined, "aria-expanded": has ? open : undefined, onPress: () => has && setOpen((v) => !v), children: [(0, jsx_runtime_1.jsx)(Icon, { size: 13, opacity: 0.55 }), (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", color: "$quiet", children: step.label }), has ? (open ? ((0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronDown, { size: 12, opacity: 0.5 })) : ((0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronRight, { size: 12, opacity: 0.5 }))) : null] }), has && open ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { pl: "$4", ml: "$1", gap: "$0.5", borderLeftWidth: 1, borderColor: "$borderColor", children: step.detail.map((line, i) => ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", color: "$soft", pl: "$2", children: line }, `${step.key}-${i}`))) })) : null] }));
46
+ }
47
+ function ProgressBlock({ steps, done = false, doneLabel = 'Done', children, ...rest }) {
48
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('progress-block'), gap: "$1.5", ...rest, children: [steps.map((step) => ((0, jsx_runtime_1.jsx)(Row, { step: step }, step.key))), done ? ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1.5", children: [(0, jsx_runtime_1.jsx)(lucide_icons_2_1.Check, { size: 13, opacity: 0.75 }), (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", color: "$quiet", children: doneLabel })] })) : null, children ? (0, jsx_runtime_1.jsx)(gui_1.YStack, { pt: "$1", children: children }) : null] }));
49
+ }
50
+ /** Map an event's kind onto a step kind. Unknown kinds stay generic rather than
51
+ * being forced into the nearest icon, which would misreport what happened. */
52
+ function kindOf(kind) {
53
+ const k = kind.toLowerCase();
54
+ if (k.includes('think') || k.includes('reason'))
55
+ return 'think';
56
+ if (k.includes('search') || k.includes('grep'))
57
+ return 'search';
58
+ if (k.includes('read') || k.includes('file'))
59
+ return 'read';
60
+ if (k.includes('tool') || k.includes('exec') || k.includes('command'))
61
+ return 'run';
62
+ if (k.includes('write') || k.includes('edit') || k.includes('patch'))
63
+ return 'write';
64
+ if (k.includes('error') || k.includes('fail'))
65
+ return 'error';
66
+ return 'step';
67
+ }
68
+ /** One readable line out of whatever a payload turned out to be. */
69
+ function say(payload) {
70
+ if (payload == null)
71
+ return '';
72
+ if (typeof payload === 'string')
73
+ return payload;
74
+ if (typeof payload !== 'object')
75
+ return String(payload);
76
+ const bag = payload;
77
+ for (const key of ['text', 'message', 'preview', 'content', 'name', 'command', 'path']) {
78
+ const found = bag[key];
79
+ if (typeof found === 'string' && found.trim())
80
+ return found;
81
+ }
82
+ try {
83
+ return JSON.stringify(payload);
84
+ }
85
+ catch {
86
+ return '';
87
+ }
88
+ }
89
+ /**
90
+ * Group a run's events into steps.
91
+ *
92
+ * Consecutive events of the same kind become ONE step whose detail is their
93
+ * lines — that is what turns twelve `tool-call` events into "Read 2 files" with
94
+ * two names under it. `message` events are NOT steps: they are the answer, and
95
+ * the caller renders them as `children`.
96
+ */
97
+ function steps(events) {
98
+ const out = [];
99
+ const said = [];
100
+ events.forEach((event, i) => {
101
+ const kind = event.kind ?? 'step';
102
+ const line = say(event.payload).trim();
103
+ if (kind === 'message') {
104
+ if (line)
105
+ said.push(line);
106
+ return;
107
+ }
108
+ const step = kindOf(kind);
109
+ const last = out[out.length - 1];
110
+ if (last && last.kind === step) {
111
+ if (line)
112
+ (last.detail ??= []).push(line);
113
+ return;
114
+ }
115
+ out.push({
116
+ key: `${event.seq ?? event.id ?? i}`,
117
+ kind: step,
118
+ label: kind,
119
+ detail: line ? [line] : undefined,
120
+ });
121
+ });
122
+ // A step's label counts what it did, once the run is grouped — "Read 2 files"
123
+ // rather than "read". The verb is the event's own; the number is ours.
124
+ for (const step of out) {
125
+ const n = step.detail?.length ?? 0;
126
+ if (n > 1)
127
+ step.label = `${step.label} ${n}`;
128
+ }
129
+ return { steps: out, message: said.join('') };
130
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * ProgressBlock — an agent's turn, as the steps it took.
3
+ *
4
+ * A run emits one event per token and per tool call, and printed flat that is a
5
+ * wall. What a reader wants is the SHAPE of the work: it thought, it searched,
6
+ * it read two files, it finished — each one line, each openable for the detail,
7
+ * and the answer underneath at full size.
8
+ *
9
+ * So a step is a LABEL plus DETAIL, and the detail is closed by default. The
10
+ * label is the claim ("Read 2 files"); the detail is the evidence
11
+ * ("BuyNowButton.tsx", "styles.css"). A reader skims labels and opens the one
12
+ * they doubt — which is the whole reason this beats a transcript.
13
+ *
14
+ * `done` is a state of the BLOCK, not a step: a run that is still working shows
15
+ * no tick, and a tick that appears before the work stops is a lie a reader will
16
+ * only catch once.
17
+ *
18
+ * Presentational. `steps()` maps session events to this shape and is exported
19
+ * beside it, because every surface reading the same stream should group it the
20
+ * same way.
21
+ */
22
+ import { YStack } from '@hanzo/gui';
23
+ import { type ComponentProps, type ReactNode } from 'react';
24
+ type Col = Omit<ComponentProps<typeof YStack>, 'children'>;
25
+ /** What a step was. Chooses the icon, and nothing else. */
26
+ export type StepKind = 'think' | 'search' | 'read' | 'run' | 'write' | 'error' | 'step';
27
+ export interface Step {
28
+ key: string;
29
+ kind: StepKind;
30
+ /** The claim — one line, always visible. */
31
+ label: string;
32
+ /** The evidence, one line each. Absent means nothing to open. */
33
+ detail?: string[];
34
+ /** Open on first render — for the step being worked on right now. */
35
+ open?: boolean;
36
+ }
37
+ export interface ProgressBlockProps extends Col {
38
+ steps: Step[];
39
+ /** The work has stopped. Draws the tick. */
40
+ done?: boolean;
41
+ doneLabel?: string;
42
+ /** The agent's message, at full size under the steps. */
43
+ children?: ReactNode;
44
+ }
45
+ export declare function ProgressBlock({ steps, done, doneLabel, children, ...rest }: ProgressBlockProps): import("react/jsx-runtime").JSX.Element;
46
+ /** The shape `steps()` reads. A session event, or anything that looks like one. */
47
+ export interface Event {
48
+ seq?: number;
49
+ id?: string;
50
+ kind?: string;
51
+ actor?: string;
52
+ payload?: unknown;
53
+ }
54
+ /**
55
+ * Group a run's events into steps.
56
+ *
57
+ * Consecutive events of the same kind become ONE step whose detail is their
58
+ * lines — that is what turns twelve `tool-call` events into "Read 2 files" with
59
+ * two names under it. `message` events are NOT steps: they are the answer, and
60
+ * the caller renders them as `children`.
61
+ */
62
+ export declare function steps(events: Event[]): {
63
+ steps: Step[];
64
+ message: string;
65
+ };
66
+ export {};
67
+ //# sourceMappingURL=Progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Progress.d.ts","sourceRoot":"","sources":["../../src/agents/Progress.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAuB,MAAM,EAAE,MAAM,YAAY,CAAA;AAaxD,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIrE,KAAK,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;AAE1D,2DAA2D;AAC3D,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;AAYvF,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,QAAQ,CAAA;IACd,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,qEAAqE;IACrE,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AA8CD,MAAM,WAAW,kBAAmB,SAAQ,GAAG;IAC7C,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,IAAY,EACZ,SAAkB,EAClB,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,kBAAkB,2CAmBpB;AAED,mFAAmF;AACnF,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAgCD;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAiCzE"}
@@ -0,0 +1,127 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * ProgressBlock — an agent's turn, as the steps it took.
5
+ *
6
+ * A run emits one event per token and per tool call, and printed flat that is a
7
+ * wall. What a reader wants is the SHAPE of the work: it thought, it searched,
8
+ * it read two files, it finished — each one line, each openable for the detail,
9
+ * and the answer underneath at full size.
10
+ *
11
+ * So a step is a LABEL plus DETAIL, and the detail is closed by default. The
12
+ * label is the claim ("Read 2 files"); the detail is the evidence
13
+ * ("BuyNowButton.tsx", "styles.css"). A reader skims labels and opens the one
14
+ * they doubt — which is the whole reason this beats a transcript.
15
+ *
16
+ * `done` is a state of the BLOCK, not a step: a run that is still working shows
17
+ * no tick, and a tick that appears before the work stops is a lie a reader will
18
+ * only catch once.
19
+ *
20
+ * Presentational. `steps()` maps session events to this shape and is exported
21
+ * beside it, because every surface reading the same stream should group it the
22
+ * same way.
23
+ */
24
+ import { SizableText, XStack, YStack } from '@hanzo/gui';
25
+ import { Check, ChevronDown, ChevronRight, CircleDot, FileText, Lightbulb, Sparkles, Terminal, TriangleAlert, } from '@hanzogui/lucide-icons-2';
26
+ import { useState } from 'react';
27
+ import { slot } from '../backends/gui/slot.js';
28
+ const ICON = {
29
+ think: Lightbulb,
30
+ search: Sparkles,
31
+ read: FileText,
32
+ run: Terminal,
33
+ write: FileText,
34
+ error: TriangleAlert,
35
+ step: CircleDot,
36
+ };
37
+ function Row({ step }) {
38
+ const [open, setOpen] = useState(step.open ?? false);
39
+ const Icon = ICON[step.kind];
40
+ const has = !!step.detail?.length;
41
+ return (_jsxs(YStack, { gap: "$0.5", children: [_jsxs(XStack, { items: "center", gap: "$1.5", cursor: has ? 'pointer' : 'default', role: has ? 'button' : undefined, tabIndex: has ? 0 : undefined, "aria-expanded": has ? open : undefined, onPress: () => has && setOpen((v) => !v), children: [_jsx(Icon, { size: 13, opacity: 0.55 }), _jsx(SizableText, { size: "$2", color: "$quiet", children: step.label }), has ? (open ? (_jsx(ChevronDown, { size: 12, opacity: 0.5 })) : (_jsx(ChevronRight, { size: 12, opacity: 0.5 }))) : null] }), has && open ? (_jsx(YStack, { pl: "$4", ml: "$1", gap: "$0.5", borderLeftWidth: 1, borderColor: "$borderColor", children: step.detail.map((line, i) => (_jsx(SizableText, { size: "$2", color: "$soft", pl: "$2", children: line }, `${step.key}-${i}`))) })) : null] }));
42
+ }
43
+ export function ProgressBlock({ steps, done = false, doneLabel = 'Done', children, ...rest }) {
44
+ return (_jsxs(YStack, { ...slot('progress-block'), gap: "$1.5", ...rest, children: [steps.map((step) => (_jsx(Row, { step: step }, step.key))), done ? (_jsxs(XStack, { items: "center", gap: "$1.5", children: [_jsx(Check, { size: 13, opacity: 0.75 }), _jsx(SizableText, { size: "$2", color: "$quiet", children: doneLabel })] })) : null, children ? _jsx(YStack, { pt: "$1", children: children }) : null] }));
45
+ }
46
+ /** Map an event's kind onto a step kind. Unknown kinds stay generic rather than
47
+ * being forced into the nearest icon, which would misreport what happened. */
48
+ function kindOf(kind) {
49
+ const k = kind.toLowerCase();
50
+ if (k.includes('think') || k.includes('reason'))
51
+ return 'think';
52
+ if (k.includes('search') || k.includes('grep'))
53
+ return 'search';
54
+ if (k.includes('read') || k.includes('file'))
55
+ return 'read';
56
+ if (k.includes('tool') || k.includes('exec') || k.includes('command'))
57
+ return 'run';
58
+ if (k.includes('write') || k.includes('edit') || k.includes('patch'))
59
+ return 'write';
60
+ if (k.includes('error') || k.includes('fail'))
61
+ return 'error';
62
+ return 'step';
63
+ }
64
+ /** One readable line out of whatever a payload turned out to be. */
65
+ function say(payload) {
66
+ if (payload == null)
67
+ return '';
68
+ if (typeof payload === 'string')
69
+ return payload;
70
+ if (typeof payload !== 'object')
71
+ return String(payload);
72
+ const bag = payload;
73
+ for (const key of ['text', 'message', 'preview', 'content', 'name', 'command', 'path']) {
74
+ const found = bag[key];
75
+ if (typeof found === 'string' && found.trim())
76
+ return found;
77
+ }
78
+ try {
79
+ return JSON.stringify(payload);
80
+ }
81
+ catch {
82
+ return '';
83
+ }
84
+ }
85
+ /**
86
+ * Group a run's events into steps.
87
+ *
88
+ * Consecutive events of the same kind become ONE step whose detail is their
89
+ * lines — that is what turns twelve `tool-call` events into "Read 2 files" with
90
+ * two names under it. `message` events are NOT steps: they are the answer, and
91
+ * the caller renders them as `children`.
92
+ */
93
+ export function steps(events) {
94
+ const out = [];
95
+ const said = [];
96
+ events.forEach((event, i) => {
97
+ const kind = event.kind ?? 'step';
98
+ const line = say(event.payload).trim();
99
+ if (kind === 'message') {
100
+ if (line)
101
+ said.push(line);
102
+ return;
103
+ }
104
+ const step = kindOf(kind);
105
+ const last = out[out.length - 1];
106
+ if (last && last.kind === step) {
107
+ if (line)
108
+ (last.detail ??= []).push(line);
109
+ return;
110
+ }
111
+ out.push({
112
+ key: `${event.seq ?? event.id ?? i}`,
113
+ kind: step,
114
+ label: kind,
115
+ detail: line ? [line] : undefined,
116
+ });
117
+ });
118
+ // A step's label counts what it did, once the run is grouped — "Read 2 files"
119
+ // rather than "read". The verb is the event's own; the number is ours.
120
+ for (const step of out) {
121
+ const n = step.detail?.length ?? 0;
122
+ if (n > 1)
123
+ step.label = `${step.label} ${n}`;
124
+ }
125
+ return { steps: out, message: said.join('') };
126
+ }
127
+ //# sourceMappingURL=Progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Progress.js","sourceRoot":"","sources":["../../src/agents/Progress.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use client';"use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Screen = exports.Steer = exports.MemberRow = exports.fold = exports.Transcript = exports.nest = exports.RunRow = exports.AgentBoard = void 0;
3
+ exports.SystemLine = exports.Pane = exports.OrgRail = exports.ChannelHeader = exports.ArtifactCard = exports.steps = exports.ProgressBlock = exports.Screen = exports.Steer = exports.MemberRow = exports.fold = exports.Transcript = exports.nest = exports.RunRow = exports.AgentBoard = void 0;
4
4
  /**
5
5
  * @hanzo/ui/agents — the agents working view, on @hanzo/gui primitives.
6
6
  *
@@ -34,3 +34,12 @@ Object.defineProperty(exports, "MemberRow", { enumerable: true, get: function ()
34
34
  Object.defineProperty(exports, "Steer", { enumerable: true, get: function () { return Steer_1.Steer; } });
35
35
  var Screen_1 = require("./Screen.cjs");
36
36
  Object.defineProperty(exports, "Screen", { enumerable: true, get: function () { return Screen_1.Screen; } });
37
+ var Progress_1 = require("./Progress.cjs");
38
+ Object.defineProperty(exports, "ProgressBlock", { enumerable: true, get: function () { return Progress_1.ProgressBlock; } });
39
+ Object.defineProperty(exports, "steps", { enumerable: true, get: function () { return Progress_1.steps; } });
40
+ var Pane_1 = require("./Pane.cjs");
41
+ Object.defineProperty(exports, "ArtifactCard", { enumerable: true, get: function () { return Pane_1.ArtifactCard; } });
42
+ Object.defineProperty(exports, "ChannelHeader", { enumerable: true, get: function () { return Pane_1.ChannelHeader; } });
43
+ Object.defineProperty(exports, "OrgRail", { enumerable: true, get: function () { return Pane_1.OrgRail; } });
44
+ Object.defineProperty(exports, "Pane", { enumerable: true, get: function () { return Pane_1.Pane; } });
45
+ Object.defineProperty(exports, "SystemLine", { enumerable: true, get: function () { return Pane_1.SystemLine; } });
@@ -23,4 +23,6 @@ export { AgentBoard, RunRow, nest, type AgentBoardProps, type Run, type RunRowPr
23
23
  export { Transcript, fold, type Block, type TranscriptProps, type Turn } from './Transcript.js';
24
24
  export { MemberRow, Steer, type Command, type MemberKind, type MemberRowProps, type SteerProps, } from './Steer.js';
25
25
  export { Screen, type ScreenKind, type ScreenProps, type Ticket } from './Screen.js';
26
+ export { ProgressBlock, steps, type Event, type ProgressBlockProps, type Step, type StepKind, } from './Progress.js';
27
+ export { ArtifactCard, ChannelHeader, OrgRail, Pane, SystemLine, type ArtifactCardProps, type ArtifactKind, type ChannelHeaderProps, type Org, type OrgRailProps, type PaneProps, type PaneTab, type SystemLineProps, } from './Pane.js';
26
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,UAAU,EACV,MAAM,EACN,IAAI,EACJ,KAAK,eAAe,EACpB,KAAK,GAAG,EACR,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAA;AAE5F,OAAO,EACL,SAAS,EACT,KAAK,EACL,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,UAAU,EACV,MAAM,EACN,IAAI,EACJ,KAAK,eAAe,EACpB,KAAK,GAAG,EACR,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAA;AAE5F,OAAO,EACL,SAAS,EACT,KAAK,EACL,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjF,OAAO,EACL,aAAa,EACb,KAAK,EACL,KAAK,KAAK,EACV,KAAK,kBAAkB,EACvB,KAAK,IAAI,EACT,KAAK,QAAQ,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,OAAO,EACP,IAAI,EACJ,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,eAAe,GACrB,MAAM,QAAQ,CAAA"}
@@ -23,4 +23,6 @@ export { AgentBoard, RunRow, nest, } from './Board.js';
23
23
  export { Transcript, fold } from './Transcript.js';
24
24
  export { MemberRow, Steer, } from './Steer.js';
25
25
  export { Screen } from './Screen.js';
26
+ export { ProgressBlock, steps, } from './Progress.js';
27
+ export { ArtifactCard, ChannelHeader, OrgRail, Pane, SystemLine, } from './Pane.js';
26
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,UAAU,EACV,MAAM,EACN,IAAI,GAKL,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,UAAU,EAAE,IAAI,EAA+C,MAAM,cAAc,CAAA;AAE5F,OAAO,EACL,SAAS,EACT,KAAK,GAKN,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,MAAM,EAAkD,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,UAAU,EACV,MAAM,EACN,IAAI,GAKL,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,UAAU,EAAE,IAAI,EAA+C,MAAM,cAAc,CAAA;AAE5F,OAAO,EACL,SAAS,EACT,KAAK,GAKN,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,MAAM,EAAkD,MAAM,UAAU,CAAA;AAEjF,OAAO,EACL,aAAa,EACb,KAAK,GAKN,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,OAAO,EACP,IAAI,EACJ,UAAU,GASX,MAAM,QAAQ,CAAA"}
package/dist/css.cjs ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.css = void 0;
4
+ const cn_1 = require("./core/cn.cjs");
5
+ const tw_1 = require("./tw.cjs");
6
+ const group = (v) => typeof v === 'object' && v !== null;
7
+ const css = (...classes) => {
8
+ const { props } = (0, tw_1.tw)((0, cn_1.cn)(...classes));
9
+ const out = {};
10
+ for (const key in props)
11
+ if (!group(props[key]))
12
+ out[key] = props[key];
13
+ return out;
14
+ };
15
+ exports.css = css;
16
+ exports.default = exports.css;
package/dist/css.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Class notation as an inline style — for a component that is neither ours nor
3
+ * an element.
4
+ *
5
+ * There are three kinds of thing you can put class notation on, and each needs
6
+ * its own answer:
7
+ *
8
+ * <Box className="grid gap-4"> an element — Box converts
9
+ * <Card {...sx('grid gap-4')}> a gui component — sx converts
10
+ * <Link style={css('gap-2')}> someone else's — this
11
+ *
12
+ * The third is `next/link`, `next/image`, a lucide icon: components that accept
13
+ * a `style` and hand every other prop straight to the element. `sx` is wrong for
14
+ * them — its output is gui's prop vocabulary, and a component that does not
15
+ * speak it forwards `fontSize` to the DOM as an attribute. `className` is wrong
16
+ * too: it arrives intact and means nothing, which is the defect this replaces.
17
+ *
18
+ * `tw` already speaks CSS — `h-4 w-4 ml-2` is `{height:16,width:16,marginLeft:8}`
19
+ * — so this is that, with the one part an inline style cannot hold removed.
20
+ *
21
+ * A CONDITION DOES NOT SURVIVE. `md:grid-cols-2` is a media query and
22
+ * `hover:bg-black` is a pseudo-class; a `style` attribute holds neither. `tw`
23
+ * returns both as a nested group — `$md`, `hoverStyle`, `groupHoverStyle` — so
24
+ * the rule is simply that an inline style is FLAT: a value that is itself a
25
+ * group is dropped, never flattened. Flattening would paint the large-screen
26
+ * rule on a phone and the hover state at rest, and silently wrong is worse than
27
+ * visibly absent. Anything conditional belongs on a `Box`.
28
+ */
29
+ import type { CSSProperties } from 'react';
30
+ import { type ClassValue } from './tw.js';
31
+ export declare const css: (...classes: ClassValue[]) => CSSProperties;
32
+ export default css;
33
+ //# sourceMappingURL=css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAG1C,OAAO,EAAE,KAAK,UAAU,EAAM,MAAM,MAAM,CAAA;AAI1C,eAAO,MAAM,GAAG,eAAgB,UAAU,EAAE,KAAG,aAK9C,CAAA;eAEc,GAAG"}
package/dist/css.js ADDED
@@ -0,0 +1,13 @@
1
+ import { cn } from './core/cn.js';
2
+ import { tw } from './tw.js';
3
+ const group = (v) => typeof v === 'object' && v !== null;
4
+ export const css = (...classes) => {
5
+ const { props } = tw(cn(...classes));
6
+ const out = {};
7
+ for (const key in props)
8
+ if (!group(props[key]))
9
+ out[key] = props[key];
10
+ return out;
11
+ };
12
+ export default css;
13
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAmB,EAAE,EAAE,MAAM,MAAM,CAAA;AAE1C,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAA;AAEjE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,OAAqB,EAAiB,EAAE;IAC7D,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAA;IACpC,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,GAAG,IAAI,KAAK;QAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACtE,OAAO,GAAoB,CAAA;AAC7B,CAAC,CAAA;AAED,eAAe,GAAG,CAAA"}
package/dist/gallery.html CHANGED
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.14.1</title><style>/* @hanzo/ui — generated by scripts/gen-css.mjs. Do not edit. */
1
+ <!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.14.3</title><style>/* @hanzo/ui — generated by scripts/gen-css.mjs. Do not edit. */
2
2
  :root { --hanzo-ui-styles: 1; }
3
3
  /* Hanzo Design System — the entry point. Import THIS one file.
4
4
  *
package/dist/index.cjs CHANGED
@@ -4,7 +4,7 @@ exports.DropdownMenuSubContent = exports.DropdownMenuSub = exports.DropdownMenuS
4
4
  exports.TabsContent = exports.Tabs = exports.Switch = exports.Strong = exports.Spinner = exports.Span = exports.Spacer = exports.Slider = exports.SizableText = exports.Separator = exports.Band = exports.ScrollView = exports.Screen = exports.Paragraph = exports.SelectValue = exports.SelectTrigger = exports.SelectSeparator = exports.SelectScrollUpButton = exports.SelectScrollDownButton = exports.SelectLabel = exports.SelectItem = exports.SelectGroup = exports.SelectContent = exports.Select = exports.ScrollBar = exports.ScrollArea = exports.ResizablePanelGroup = exports.ResizablePanel = exports.ResizableHandle = exports.Progress = exports.PopoverTrigger = exports.PopoverContent = exports.PopoverClose = exports.PopoverAnchor = exports.Popover = exports.Label = exports.Input = exports.Image = exports.Heading = exports.H6 = exports.H5 = exports.H4 = exports.H3 = exports.H2 = exports.H1 = exports.Fill = exports.Glass = exports.Em = exports.DropdownMenuTrigger = exports.DropdownMenuSubTrigger = void 0;
5
5
  exports.SheetTitle = exports.SheetPortal = exports.SheetOverlay = exports.SheetHeader = exports.SheetFooter = exports.SheetDescription = exports.SheetContent = exports.SheetClose = exports.Sheet = exports.StepIndicator = exports.NavItems = exports.fit = exports.MediaStack = exports.Skeleton = exports.CarouselNext = exports.CarouselPrevious = exports.CarouselItem = exports.CarouselContent = exports.Carousel = exports.useFormField = exports.FormMessage = exports.FormDescription = exports.FormControl = exports.FormLabel = exports.FormItem = exports.FormField = exports.Form = exports.useLink = exports.YouTubeEmbed = exports.VideoPlayer = exports.MDXLink = exports.LinkElement = exports.Link = exports.ApplyTypography = exports.toast = exports.buttonVariants = exports.badgeVariants = exports.ZStack = exports.YStack = exports.XStack = exports.View = exports.TooltipTrigger = exports.TooltipProvider = exports.TooltipContent = exports.Tooltip = exports.Text = exports.Toaster = exports.Textarea = exports.TabsTrigger = exports.TabsList = void 0;
6
6
  exports.ContextMenuSub = exports.ContextMenuShortcut = exports.ContextMenuSeparator = exports.ContextMenuRadioItem = exports.ContextMenuRadioGroup = exports.ContextMenuPortal = exports.ContextMenuLabel = exports.ContextMenuItem = exports.ContextMenuGroup = exports.ContextMenuContent = exports.ContextMenuCheckboxItem = exports.ContextMenu = exports.AlertDialogTrigger = exports.AlertDialogTitle = exports.AlertDialogPortal = exports.AlertDialogOverlay = exports.AlertDialogHeader = exports.AlertDialogFooter = exports.AlertDialogDescription = exports.AlertDialogContent = exports.AlertDialogCancel = exports.AlertDialogAction = exports.AlertDialog = exports.AccordionTrigger = exports.AccordionItem = exports.AccordionContent = exports.Accordion = exports.DrawerTrigger = exports.DrawerHandle = exports.DrawerContent = exports.Drawer = exports.navigationMenuTriggerStyle = exports.NavigationMenuTrigger = exports.NavigationMenuList = exports.NavigationMenuLink = exports.NavigationMenuItem = exports.NavigationMenuContent = exports.NavigationMenu = exports.InputOTPSlot = exports.InputOTPSeparator = exports.InputOTPGroup = exports.InputOTP = exports.BreadcrumbSeparator = exports.BreadcrumbPage = exports.BreadcrumbList = exports.BreadcrumbLink = exports.BreadcrumbItem = exports.BreadcrumbEllipsis = exports.Breadcrumb = exports.SheetTrigger = void 0;
7
- exports.sx = exports.Box = exports.tw = exports.capitalize = exports.cn = exports.Hanzo = exports.Anchor = exports.ToggleGroupItem = exports.ToggleGroup = exports.RadioGroupItem = exports.RadioGroup = exports.HoverCardTrigger = exports.HoverCardContent = exports.HoverCard = exports.ContextMenuTrigger = exports.ContextMenuSubTrigger = exports.ContextMenuSubContent = void 0;
7
+ exports.css = exports.sx = exports.Box = exports.tw = exports.capitalize = exports.cn = exports.Hanzo = exports.Anchor = exports.ToggleGroupItem = exports.ToggleGroup = exports.RadioGroupItem = exports.RadioGroup = exports.HoverCardTrigger = exports.HoverCardContent = exports.HoverCard = exports.ContextMenuTrigger = exports.ContextMenuSubTrigger = exports.ContextMenuSubContent = void 0;
8
8
  // @hanzo/ui — the one Hanzo component library, on @hanzo/gui + @hanzo/design.
9
9
  //
10
10
  // ONE substrate: every component renders through @hanzo/gui primitives, so the
@@ -290,3 +290,5 @@ var box_1 = require("./box.cjs");
290
290
  Object.defineProperty(exports, "Box", { enumerable: true, get: function () { return box_1.Box; } });
291
291
  var sx_1 = require("./sx.cjs");
292
292
  Object.defineProperty(exports, "sx", { enumerable: true, get: function () { return sx_1.sx; } });
293
+ var css_1 = require("./css.cjs");
294
+ Object.defineProperty(exports, "css", { enumerable: true, get: function () { return css_1.css; } });
package/dist/index.d.ts CHANGED
@@ -6,4 +6,5 @@ export { cn, capitalize, type ClassValue } from './core/cn.js';
6
6
  export { tw, type Parsed, type Props as TwProps } from './tw.js';
7
7
  export { Box, type BoxProps } from './box.js';
8
8
  export { sx } from './sx.js';
9
+ export { css } from './css.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -66,4 +66,5 @@ export { cn, capitalize } from './core/cn.js';
66
66
  export { tw } from './tw.js';
67
67
  export { Box } from './box.js';
68
68
  export { sx } from './sx.js';
69
+ export { css } from './css.js';
69
70
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -66,4 +66,5 @@ export { cn, capitalize } from './core/cn.js';
66
66
  export { tw } from './tw.js';
67
67
  export { Box } from './box.js';
68
68
  export { sx } from './sx.js';
69
+ export { css } from './css.js';
69
70
  //# sourceMappingURL=index.js.map
package/dist/next.cjs CHANGED
@@ -91,6 +91,12 @@ function withGui(nextConfig = {}, dir = process.cwd()) {
91
91
  '@hanzo/gui',
92
92
  '@hanzo/ui',
93
93
  'react-native-web',
94
+ // The icon set draws through this, and it ships `ReactNativeSVG.web.js`
95
+ // beside the native entry. Rule (1) only reaches inside a package that is
96
+ // transpiled, so leaving it out picks the native half and lands in the
97
+ // Flow parse error above — naming react-native, from a package nothing in
98
+ // the app imports directly.
99
+ 'react-native-svg',
94
100
  ...guiPackages(dir),
95
101
  ])
96
102
  const turbo = nextConfig.turbopack || {}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.14.1",
3
+ "version": "8.14.3",
4
4
  "type": "module",
5
5
  "description": "Hanzo UI — the one canonical Hanzo component library, on @hanzo/gui + @hanzo/design. ONE substrate: every component renders through @hanzo/gui primitives, so the same import works on web, native (expo) and desktop (Tauri). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
6
6
  "exports": {