@hanzo/ui 8.14.1 → 8.14.2
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/agents/Pane.cjs +74 -0
- package/dist/agents/Pane.d.ts +84 -0
- package/dist/agents/Pane.d.ts.map +1 -0
- package/dist/agents/Pane.js +68 -0
- package/dist/agents/Pane.js.map +1 -0
- package/dist/agents/Progress.cjs +130 -0
- package/dist/agents/Progress.d.ts +67 -0
- package/dist/agents/Progress.d.ts.map +1 -0
- package/dist/agents/Progress.js +127 -0
- package/dist/agents/Progress.js.map +1 -0
- package/dist/agents/index.cjs +10 -1
- package/dist/agents/index.d.ts +2 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +2 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/css.cjs +17 -0
- package/dist/css.d.ts +30 -0
- package/dist/css.d.ts.map +1 -0
- package/dist/css.js +14 -0
- package/dist/css.js.map +1 -0
- package/dist/gallery.html +1 -1
- package/dist/index.cjs +3 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.node.js +1 -0
- package/dist/next.cjs +6 -0
- package/package.json +1 -1
|
@@ -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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"}
|
package/dist/agents/index.cjs
CHANGED
|
@@ -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; } });
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/agents/index.js
CHANGED
|
@@ -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
|
package/dist/agents/index.js.map
CHANGED
|
@@ -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,17 @@
|
|
|
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
|
+
/** gui writes a breakpoint group under a `$`-prefixed key. */
|
|
7
|
+
const responsive = (key) => key.startsWith('$');
|
|
8
|
+
const css = (...classes) => {
|
|
9
|
+
const { props } = (0, tw_1.tw)((0, cn_1.cn)(...classes));
|
|
10
|
+
const out = {};
|
|
11
|
+
for (const key in props)
|
|
12
|
+
if (!responsive(key))
|
|
13
|
+
out[key] = props[key];
|
|
14
|
+
return out;
|
|
15
|
+
};
|
|
16
|
+
exports.css = css;
|
|
17
|
+
exports.default = exports.css;
|
package/dist/css.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
* BREAKPOINTS DO NOT SURVIVE. `md:grid-cols-2` is a media query, and there is no
|
|
22
|
+
* media query inside a `style` attribute. Those keys are dropped rather than
|
|
23
|
+
* flattened, because flattening would apply a large-screen rule on a phone —
|
|
24
|
+
* silently wrong beats visibly absent. Responsive layout belongs on a `Box`.
|
|
25
|
+
*/
|
|
26
|
+
import type { CSSProperties } from 'react';
|
|
27
|
+
import { type ClassValue } from './tw.js';
|
|
28
|
+
export declare const css: (...classes: ClassValue[]) => CSSProperties;
|
|
29
|
+
export default css;
|
|
30
|
+
//# sourceMappingURL=css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAG1C,OAAO,EAAE,KAAK,UAAU,EAAM,MAAM,MAAM,CAAA;AAK1C,eAAO,MAAM,GAAG,eAAgB,UAAU,EAAE,KAAG,aAK9C,CAAA;eAEc,GAAG"}
|
package/dist/css.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { cn } from './core/cn.js';
|
|
2
|
+
import { tw } from './tw.js';
|
|
3
|
+
/** gui writes a breakpoint group under a `$`-prefixed key. */
|
|
4
|
+
const responsive = (key) => key.startsWith('$');
|
|
5
|
+
export const css = (...classes) => {
|
|
6
|
+
const { props } = tw(cn(...classes));
|
|
7
|
+
const out = {};
|
|
8
|
+
for (const key in props)
|
|
9
|
+
if (!responsive(key))
|
|
10
|
+
out[key] = props[key];
|
|
11
|
+
return out;
|
|
12
|
+
};
|
|
13
|
+
export default css;
|
|
14
|
+
//# sourceMappingURL=css.js.map
|
package/dist/css.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAmB,EAAE,EAAE,MAAM,MAAM,CAAA;AAE1C,8DAA8D;AAC9D,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAEvD,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,UAAU,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACpE,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
|
+
<!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.2</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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":"AAmCA,OAAO,EACL,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EACjF,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EACpF,WAAW,EACX,kBAAkB,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAC1F,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EACjF,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EACxF,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,wBAAwB,EAChF,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAC3E,kBAAkB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EACxF,oBAAoB,EAAE,eAAe,EAAE,sBAAsB,EAAE,sBAAsB,EACrF,mBAAmB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EACnF,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAC3C,cAAc,EACd,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,UAAU,EAC1F,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EACtE,sBAAsB,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EACzF,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAClG,MAAM,EAAE,IAAI,EAAE,WAAW,EACzB,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAC/B,OAAO,EACP,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EACpF,MAAM,EAAE,aAAa,EAAE,cAAc,EACrC,KAAK,EACL,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAC/E,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAC7F,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EACvE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAClD,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAC3E,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EACnD,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAC9E,cAAc,EAAE,mBAAmB,EACnC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EACxD,cAAc,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAC7E,kBAAkB,EAAE,qBAAqB,EAAE,0BAA0B,EACrE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAClD,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,GAAG,MAAM,gBAAgB,CAAA;AAE9rB,YAAY,EACV,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAClF,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAC9F,wBAAwB,EAAE,mBAAmB,EAC7C,qBAAqB,EAAE,kBAAkB,EAAE,cAAc,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,EACpY,eAAe,EAAE,kBAAkB,EACnC,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAC5D,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,OAAO,EACzD,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,GACzE,MAAM,gBAAgB,CAAA;AAkBvB,OAAO,EACL,MAAM,EACN,KAAK,UAAU,GAChB,MAAM,gBAAgB,CAAA;AAKvB,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAA;AAM/C,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAA;AAM3D,OAAO,EAAE,EAAE,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,IAAI,OAAO,EAAE,MAAM,MAAM,CAAA;AAC7D,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAA;AACzB,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA"}
|
package/dist/index.js
CHANGED
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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"}
|
package/dist/index.node.js
CHANGED
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.
|
|
3
|
+
"version": "8.14.2",
|
|
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": {
|