@hanzo/ui 8.1.0 → 8.1.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/chat/Code.cjs +1 -1
- package/dist/chat/Code.d.ts.map +1 -1
- package/dist/chat/Code.js +2 -2
- package/dist/chat/Code.js.map +1 -1
- package/dist/chat/Failure.cjs +48 -0
- package/dist/chat/Failure.d.ts +10 -0
- package/dist/chat/Failure.d.ts.map +1 -0
- package/dist/chat/Failure.js +46 -0
- package/dist/chat/Failure.js.map +1 -0
- package/dist/chat/Message.cjs +38 -2
- package/dist/chat/Message.d.ts +17 -1
- package/dist/chat/Message.d.ts.map +1 -1
- package/dist/chat/Message.js +38 -3
- package/dist/chat/Message.js.map +1 -1
- package/dist/chat/Step.cjs +81 -0
- package/dist/chat/Step.d.ts +34 -0
- package/dist/chat/Step.d.ts.map +1 -0
- package/dist/chat/Step.js +79 -0
- package/dist/chat/Step.js.map +1 -0
- package/dist/chat/index.cjs +38 -5
- package/dist/chat/index.d.ts +35 -5
- package/dist/chat/index.d.ts.map +1 -1
- package/dist/chat/index.js +35 -5
- package/dist/chat/index.js.map +1 -1
- package/dist/gallery.cjs +9 -1
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.js +9 -1
- package/dist/gallery.js.map +1 -1
- package/dist/styles.css +48 -0
- package/package.json +1 -1
package/dist/chat/Code.cjs
CHANGED
|
@@ -32,5 +32,5 @@ const MONO = {
|
|
|
32
32
|
};
|
|
33
33
|
function Code({ children, language = 'text', value, actions }) {
|
|
34
34
|
const text = value ?? (typeof children === 'string' ? children : '');
|
|
35
|
-
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('code'), width: "100%", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", bg: "$color2", overflow: "hidden", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1", px: "$3", py: "$1.5", borderBottomWidth: 1, borderColor: "$borderColor", children: [(0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", style: MONO, color: "$color11", children: language }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), actions, text ? (0, jsx_runtime_1.jsx)(CopyButton_1.CopyButton, { value: text }) : null] }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { px: "$3", py: "$2.5", children: (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", style: MONO, lineHeight: 20, children: children }) })] }));
|
|
35
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('code'), width: "100%", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", bg: "$color2", overflow: "hidden", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1", px: "$3", py: "$1.5", borderBottomWidth: 1, borderColor: "$borderColor", children: [(0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", style: MONO, color: "$color11", children: language }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), actions, text ? (0, jsx_runtime_1.jsx)(CopyButton_1.CopyButton, { value: text }) : null] }), (0, jsx_runtime_1.jsx)(gui_1.ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, children: (0, jsx_runtime_1.jsx)(gui_1.YStack, { px: "$3", py: "$2.5", children: (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", style: MONO, lineHeight: 20, children: children }) }) })] }));
|
|
36
36
|
}
|
package/dist/chat/Code.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Code.d.ts","sourceRoot":"","sources":["../../src/chat/Code.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAkBtC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oDAAoD;IACpD,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Code.d.ts","sourceRoot":"","sources":["../../src/chat/Code.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAkBtC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oDAAoD;IACpD,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,2CAyD9E"}
|
package/dist/chat/Code.js
CHANGED
|
@@ -12,7 +12,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
12
12
|
* dependency or be bypassed. `children` is rendered as-is, so a surface can pass
|
|
13
13
|
* plain text or its own highlighted nodes.
|
|
14
14
|
*/
|
|
15
|
-
import { SizableText, XStack, YStack } from '@hanzo/gui';
|
|
15
|
+
import { ScrollView, SizableText, XStack, YStack } from '@hanzo/gui';
|
|
16
16
|
import { slot } from '../backends/gui/slot.js';
|
|
17
17
|
import { CopyButton } from '../product/CopyButton.js';
|
|
18
18
|
/**
|
|
@@ -29,6 +29,6 @@ const MONO = {
|
|
|
29
29
|
};
|
|
30
30
|
export function Code({ children, language = 'text', value, actions }) {
|
|
31
31
|
const text = value ?? (typeof children === 'string' ? children : '');
|
|
32
|
-
return (_jsxs(YStack, { ...slot('code'), width: "100%", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", bg: "$color2", overflow: "hidden", children: [_jsxs(XStack, { items: "center", gap: "$1", px: "$3", py: "$1.5", borderBottomWidth: 1, borderColor: "$borderColor", children: [_jsx(SizableText, { size: "$1", style: MONO, color: "$color11", children: language }), _jsx(XStack, { flex: 1 }), actions, text ? _jsx(CopyButton, { value: text }) : null] }), _jsx(YStack, { px: "$3", py: "$2.5", children: _jsx(SizableText, { size: "$1", style: MONO, lineHeight: 20, children: children }) })] }));
|
|
32
|
+
return (_jsxs(YStack, { ...slot('code'), width: "100%", rounded: "$4", borderWidth: 1, borderColor: "$borderColor", bg: "$color2", overflow: "hidden", children: [_jsxs(XStack, { items: "center", gap: "$1", px: "$3", py: "$1.5", borderBottomWidth: 1, borderColor: "$borderColor", children: [_jsx(SizableText, { size: "$1", style: MONO, color: "$color11", children: language }), _jsx(XStack, { flex: 1 }), actions, text ? _jsx(CopyButton, { value: text }) : null] }), _jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, children: _jsx(YStack, { px: "$3", py: "$2.5", children: _jsx(SizableText, { size: "$1", style: MONO, lineHeight: 20, children: children }) }) })] }));
|
|
33
33
|
}
|
|
34
34
|
//# sourceMappingURL=Code.js.map
|
package/dist/chat/Code.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Code.js","sourceRoot":"","sources":["../../src/chat/Code.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"Code.js","sourceRoot":"","sources":["../../src/chat/Code.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGpE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD;;;;;;;;GAQG;AACH,MAAM,IAAI,GAAG;IACX,UAAU,EAAE,wEAAwE;CAC5E,CAAA;AAYV,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,EAAa;IAC7E,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAEpE,OAAO,CACL,MAAC,MAAM,OACD,IAAI,CAAC,MAAM,CAAC,EAChB,KAAK,EAAC,MAAM,EACZ,OAAO,EAAC,IAAI,EACZ,WAAW,EAAE,CAAC,EACd,WAAW,EAAC,cAAc,EAC1B,EAAE,EAAC,SAAS,EACZ,QAAQ,EAAC,QAAQ,aAEjB,MAAC,MAAM,IACL,KAAK,EAAC,QAAQ,EACd,GAAG,EAAC,IAAI,EACR,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,MAAM,EACT,iBAAiB,EAAE,CAAC,EACpB,WAAW,EAAC,cAAc,aAQ1B,KAAC,WAAW,IAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,UAAU,YACjD,QAAQ,GACG,EACd,KAAC,MAAM,IAAC,IAAI,EAAE,CAAC,GAAI,EAClB,OAAO,EACP,IAAI,CAAC,CAAC,CAAC,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,IACnC,EAeT,KAAC,UAAU,IAAC,UAAU,QAAC,8BAA8B,EAAE,KAAK,YAC1D,KAAC,MAAM,IAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,MAAM,YACvB,KAAC,WAAW,IAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,YAC/C,QAAQ,GACG,GACP,GACE,IACN,CACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Failure = Failure;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* Failure — the turn did not complete, and what to do about it.
|
|
8
|
+
*
|
|
9
|
+
* Distinct from a `Step` that errored: a step can fail inside an answer that
|
|
10
|
+
* still arrives, this is the answer not arriving. hanzo/chat keeps the same
|
|
11
|
+
* separation — `ToolCall`'s error state, and separately `MessageContent.tsx:153`
|
|
12
|
+
* swapping the whole body for `ErrorMessage`.
|
|
13
|
+
*
|
|
14
|
+
* Four surfaces draw this line and no two draw it the same way: chat's
|
|
15
|
+
* `ErrorBox` (`components/Messages/Content/Error.tsx`), the app builder's
|
|
16
|
+
* `$red8` text with the prose instruction "Something went wrong — please try
|
|
17
|
+
* again" (`ask-ai/chat-thread.tsx:258`), the extension's `.ae-error` div
|
|
18
|
+
* (`AnswerEngine.tsx:336`), and hanzo.app `/chat`, which is the interesting
|
|
19
|
+
* one: it sets `Message.error` at `app/chat/page.tsx:292` and never reads it
|
|
20
|
+
* anywhere in the render, so a stream that dies reports through a detached
|
|
21
|
+
* banner and the turn itself says nothing.
|
|
22
|
+
*
|
|
23
|
+
* Two of the four offer a way to try again. Both put it next to the message
|
|
24
|
+
* rather than in the hover strip, because a hover affordance on the thing that
|
|
25
|
+
* just failed is not reachable on a touch device.
|
|
26
|
+
*
|
|
27
|
+
* `role="alert"` with `aria-live="assertive"` is chat's, and it is right: a
|
|
28
|
+
* turn failing is the one event in a conversation that has to interrupt, since
|
|
29
|
+
* the reader is waiting on prose that is never going to come.
|
|
30
|
+
*/
|
|
31
|
+
const gui_1 = require("@hanzo/gui");
|
|
32
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
33
|
+
const gui_2 = require("../backends/gui/index.cjs");
|
|
34
|
+
const ink_1 = require("../backends/gui/ink.cjs");
|
|
35
|
+
const slot_1 = require("../backends/gui/slot.cjs");
|
|
36
|
+
function Failure({ children, onRetry, retryLabel = 'Try again' }) {
|
|
37
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('failure'), role: "alert", "aria-live": "assertive", width: "100%", gap: "$2", px: "$3", py: "$2.5", rounded: "$4", borderWidth: 1,
|
|
38
|
+
// The edge again — see `product/tone.ts`. Its `stopped` register is
|
|
39
|
+
// `$color4` behind a `$color9` border for exactly this: with no hue to
|
|
40
|
+
// spend, an outline is what separates "this one" from its neighbours.
|
|
41
|
+
borderColor: "$color9", bg: "$color4", children: [(0, ink_1.ink)(children, undefined, { size: '$2', color: '$color12' }), onRetry ? (
|
|
42
|
+
// The real Button, not a `role="button"` box with an `onPress`. A View
|
|
43
|
+
// wearing the role takes focus and then does nothing on Enter or Space,
|
|
44
|
+
// because the activation behaviour belongs to the element and not to
|
|
45
|
+
// the attribute — and the one control on a failed turn is the last one
|
|
46
|
+
// that should be pointer-only.
|
|
47
|
+
(0, jsx_runtime_1.jsx)(gui_1.XStack, { self: "flex-start", children: (0, jsx_runtime_1.jsxs)(gui_2.Button, { ...(0, slot_1.slot)('failure-retry'), variant: "outline", size: "sm", onPress: onRetry, children: [(0, jsx_runtime_1.jsx)(lucide_icons_2_1.RefreshCw, { size: 13 }), retryLabel] }) })) : null] }));
|
|
48
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface FailureProps {
|
|
3
|
+
/** What went wrong, in the surface's own words. */
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
/** Offer to run the turn again. Omit and no control renders. */
|
|
6
|
+
onRetry?: () => void;
|
|
7
|
+
retryLabel?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function Failure({ children, onRetry, retryLabel }: FailureProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=Failure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Failure.d.ts","sourceRoot":"","sources":["../../src/chat/Failure.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAwB,EAAE,EAAE,YAAY,2CAkCpF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Failure — the turn did not complete, and what to do about it.
|
|
5
|
+
*
|
|
6
|
+
* Distinct from a `Step` that errored: a step can fail inside an answer that
|
|
7
|
+
* still arrives, this is the answer not arriving. hanzo/chat keeps the same
|
|
8
|
+
* separation — `ToolCall`'s error state, and separately `MessageContent.tsx:153`
|
|
9
|
+
* swapping the whole body for `ErrorMessage`.
|
|
10
|
+
*
|
|
11
|
+
* Four surfaces draw this line and no two draw it the same way: chat's
|
|
12
|
+
* `ErrorBox` (`components/Messages/Content/Error.tsx`), the app builder's
|
|
13
|
+
* `$red8` text with the prose instruction "Something went wrong — please try
|
|
14
|
+
* again" (`ask-ai/chat-thread.tsx:258`), the extension's `.ae-error` div
|
|
15
|
+
* (`AnswerEngine.tsx:336`), and hanzo.app `/chat`, which is the interesting
|
|
16
|
+
* one: it sets `Message.error` at `app/chat/page.tsx:292` and never reads it
|
|
17
|
+
* anywhere in the render, so a stream that dies reports through a detached
|
|
18
|
+
* banner and the turn itself says nothing.
|
|
19
|
+
*
|
|
20
|
+
* Two of the four offer a way to try again. Both put it next to the message
|
|
21
|
+
* rather than in the hover strip, because a hover affordance on the thing that
|
|
22
|
+
* just failed is not reachable on a touch device.
|
|
23
|
+
*
|
|
24
|
+
* `role="alert"` with `aria-live="assertive"` is chat's, and it is right: a
|
|
25
|
+
* turn failing is the one event in a conversation that has to interrupt, since
|
|
26
|
+
* the reader is waiting on prose that is never going to come.
|
|
27
|
+
*/
|
|
28
|
+
import { XStack, YStack } from '@hanzo/gui';
|
|
29
|
+
import { RefreshCw } from '@hanzogui/lucide-icons-2';
|
|
30
|
+
import { Button } from '../backends/gui/index.js';
|
|
31
|
+
import { ink } from '../backends/gui/ink.js';
|
|
32
|
+
import { slot } from '../backends/gui/slot.js';
|
|
33
|
+
export function Failure({ children, onRetry, retryLabel = 'Try again' }) {
|
|
34
|
+
return (_jsxs(YStack, { ...slot('failure'), role: "alert", "aria-live": "assertive", width: "100%", gap: "$2", px: "$3", py: "$2.5", rounded: "$4", borderWidth: 1,
|
|
35
|
+
// The edge again — see `product/tone.ts`. Its `stopped` register is
|
|
36
|
+
// `$color4` behind a `$color9` border for exactly this: with no hue to
|
|
37
|
+
// spend, an outline is what separates "this one" from its neighbours.
|
|
38
|
+
borderColor: "$color9", bg: "$color4", children: [ink(children, undefined, { size: '$2', color: '$color12' }), onRetry ? (
|
|
39
|
+
// The real Button, not a `role="button"` box with an `onPress`. A View
|
|
40
|
+
// wearing the role takes focus and then does nothing on Enter or Space,
|
|
41
|
+
// because the activation behaviour belongs to the element and not to
|
|
42
|
+
// the attribute — and the one control on a failed turn is the last one
|
|
43
|
+
// that should be pointer-only.
|
|
44
|
+
_jsx(XStack, { self: "flex-start", children: _jsxs(Button, { ...slot('failure-retry'), variant: "outline", size: "sm", onPress: onRetry, children: [_jsx(RefreshCw, { size: 13 }), retryLabel] }) })) : null] }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=Failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Failure.js","sourceRoot":"","sources":["../../src/chat/Failure.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAGpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAU3C,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,WAAW,EAAgB;IACnF,OAAO,CACL,MAAC,MAAM,OACD,IAAI,CAAC,SAAS,CAAC,EACnB,IAAI,EAAC,OAAO,eACF,WAAW,EACrB,KAAK,EAAC,MAAM,EACZ,GAAG,EAAC,IAAI,EACR,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,MAAM,EACT,OAAO,EAAC,IAAI,EACZ,WAAW,EAAE,CAAC;QACd,oEAAoE;QACpE,uEAAuE;QACvE,sEAAsE;QACtE,WAAW,EAAC,SAAS,EACrB,EAAE,EAAC,SAAS,aAEX,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAC3D,OAAO,CAAC,CAAC,CAAC;YACT,uEAAuE;YACvE,wEAAwE;YACxE,qEAAqE;YACrE,uEAAuE;YACvE,+BAA+B;YAC/B,KAAC,MAAM,IAAC,IAAI,EAAC,YAAY,YACvB,MAAC,MAAM,OAAK,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,OAAO,aAC7E,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,EACtB,UAAU,IACJ,GACF,CACV,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAA;AACH,CAAC"}
|
package/dist/chat/Message.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';"use strict";
|
|
2
2
|
'use client';
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Caret = Caret;
|
|
4
5
|
exports.Message = Message;
|
|
5
6
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
7
|
/**
|
|
@@ -11,17 +12,52 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
11
12
|
* turn is a muted aside. Content is `children`, so the surface keeps its own
|
|
12
13
|
* markdown pipeline — the surfaces disagree on remark plugins and none of that
|
|
13
14
|
* belongs in a presentational package.
|
|
15
|
+
*
|
|
16
|
+
* That arrangement is not this package's taste; it is what all six turn
|
|
17
|
+
* renderers across the estate independently arrived at. hanzo/chat states it
|
|
18
|
+
* outright in `client/src/components/Chat/Messages/ui/MessageRender.tsx:131`:
|
|
19
|
+
* "the user's turn is a glass bubble on the right, the reply plain and full
|
|
20
|
+
* width — the contrast is what says who is speaking." No avatar, no sender
|
|
21
|
+
* name, no timestamp — which is why `icon` is opt-in and there is no `name`
|
|
22
|
+
* prop. Only the read-only share view renders a name, and only one surface
|
|
23
|
+
* renders a timestamp.
|
|
14
24
|
*/
|
|
15
25
|
const gui_1 = require("@hanzo/gui");
|
|
26
|
+
const ink_1 = require("../backends/gui/ink.cjs");
|
|
16
27
|
const slot_1 = require("../backends/gui/slot.cjs");
|
|
28
|
+
/**
|
|
29
|
+
* The mark that says a turn is still arriving.
|
|
30
|
+
*
|
|
31
|
+
* Placed by whoever knows where the prose ends. A surface rendering markdown
|
|
32
|
+
* owns that node and can append this inside it; `Message busy` puts it at the
|
|
33
|
+
* end of the turn instead, which is all this package can know.
|
|
34
|
+
*
|
|
35
|
+
* It does not blink. Every surface that ships one draws it static — an 8x16
|
|
36
|
+
* block on hanzo.app `/chat`, a 2px caret in the builder, a 12px `⬤` from
|
|
37
|
+
* hanzo/chat's `.result-streaming::after`. A caret is the narrowest of the
|
|
38
|
+
* three and the one that reads as "the sentence continues" rather than as a
|
|
39
|
+
* bullet. Decorative, so it is hidden from assistive tech: the turn's text is
|
|
40
|
+
* already live-announced by the surface, and a cursor announced as content is
|
|
41
|
+
* noise on every token.
|
|
42
|
+
*/
|
|
43
|
+
function Caret() {
|
|
44
|
+
return (0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('caret'), width: 2, height: 15, rounded: 1, bg: "$color12", "aria-hidden": true });
|
|
45
|
+
}
|
|
17
46
|
function Message({ role, children, actions, busy = false, icon }) {
|
|
18
47
|
if (role === 'system')
|
|
19
48
|
return ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('message'), "data-role": "system", width: "100%", justify: "center", py: "$2", children: (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", color: "$color10", text: "center", children: children }) }));
|
|
20
49
|
const mine = role === 'user';
|
|
21
|
-
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('message'), "data-role": role, width: "100%", justify: mine ? 'flex-end' : 'flex-start', gap: "$2", children: [icon && !mine ? (0, jsx_runtime_1.jsx)(gui_1.YStack, { pt: "$1", children: icon }) : null, (0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('message-body'), "data-bubble": mine ? 'true' : undefined, gap: "$2",
|
|
50
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('message'), "data-role": role, width: "100%", justify: mine ? 'flex-end' : 'flex-start', gap: "$2", children: [icon && !mine ? (0, jsx_runtime_1.jsx)(gui_1.YStack, { pt: "$1", children: icon }) : null, (0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('message-body'), "data-bubble": mine ? 'true' : undefined, gap: "$2",
|
|
51
|
+
// 85%, because that is the number three independent implementations
|
|
52
|
+
// reached: hanzo/chat's `USER_TURN` (`common/turn.ts:17`,
|
|
53
|
+
// `max-w-[85%]`), hanzo.app `/chat` (`app/chat/page.tsx:521`,
|
|
54
|
+
// `maxWidth="85%"`) and the app builder's `UserBubble`
|
|
55
|
+
// (`ask-ai/chat-thread.tsx:141`). This package said 80% and no one
|
|
56
|
+
// said 80%.
|
|
57
|
+
maxW: mine ? '85%' : '100%', flex: mine ? undefined : 1, ...(mine && {
|
|
22
58
|
bg: '$color3',
|
|
23
59
|
rounded: '$5',
|
|
24
60
|
px: '$3',
|
|
25
61
|
py: '$2',
|
|
26
|
-
}), children: [children, busy ? (0, jsx_runtime_1.jsx)(
|
|
62
|
+
}), children: [(0, ink_1.ink)(children), busy ? (0, jsx_runtime_1.jsx)(Caret, {}) : null, actions ? (0, jsx_runtime_1.jsx)(gui_1.XStack, { gap: "$1", items: "center", children: actions }) : null] })] }));
|
|
27
63
|
}
|
package/dist/chat/Message.d.ts
CHANGED
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
export type Role = 'user' | 'assistant' | 'system';
|
|
3
|
+
/**
|
|
4
|
+
* The mark that says a turn is still arriving.
|
|
5
|
+
*
|
|
6
|
+
* Placed by whoever knows where the prose ends. A surface rendering markdown
|
|
7
|
+
* owns that node and can append this inside it; `Message busy` puts it at the
|
|
8
|
+
* end of the turn instead, which is all this package can know.
|
|
9
|
+
*
|
|
10
|
+
* It does not blink. Every surface that ships one draws it static — an 8x16
|
|
11
|
+
* block on hanzo.app `/chat`, a 2px caret in the builder, a 12px `⬤` from
|
|
12
|
+
* hanzo/chat's `.result-streaming::after`. A caret is the narrowest of the
|
|
13
|
+
* three and the one that reads as "the sentence continues" rather than as a
|
|
14
|
+
* bullet. Decorative, so it is hidden from assistive tech: the turn's text is
|
|
15
|
+
* already live-announced by the surface, and a cursor announced as content is
|
|
16
|
+
* noise on every token.
|
|
17
|
+
*/
|
|
18
|
+
export declare function Caret(): import("react/jsx-runtime").JSX.Element;
|
|
3
19
|
export interface MessageProps {
|
|
4
20
|
role: Role;
|
|
5
21
|
children?: ReactNode;
|
|
6
22
|
/** Row rendered under the turn — copy, retry, feedback. */
|
|
7
23
|
actions?: ReactNode;
|
|
8
|
-
/** The turn is still streaming. */
|
|
24
|
+
/** The turn is still streaming: a `Caret` closes the body. */
|
|
9
25
|
busy?: boolean;
|
|
10
26
|
/** Leading affordance for an assistant turn: avatar or model mark. */
|
|
11
27
|
icon?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../src/chat/Message.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../src/chat/Message.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;AAElD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,4CAEpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,sEAAsE;IACtE,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAY,EAAE,IAAI,EAAE,EAAE,YAAY,2CA6CpF"}
|
package/dist/chat/Message.js
CHANGED
|
@@ -8,18 +8,53 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
8
8
|
* turn is a muted aside. Content is `children`, so the surface keeps its own
|
|
9
9
|
* markdown pipeline — the surfaces disagree on remark plugins and none of that
|
|
10
10
|
* belongs in a presentational package.
|
|
11
|
+
*
|
|
12
|
+
* That arrangement is not this package's taste; it is what all six turn
|
|
13
|
+
* renderers across the estate independently arrived at. hanzo/chat states it
|
|
14
|
+
* outright in `client/src/components/Chat/Messages/ui/MessageRender.tsx:131`:
|
|
15
|
+
* "the user's turn is a glass bubble on the right, the reply plain and full
|
|
16
|
+
* width — the contrast is what says who is speaking." No avatar, no sender
|
|
17
|
+
* name, no timestamp — which is why `icon` is opt-in and there is no `name`
|
|
18
|
+
* prop. Only the read-only share view renders a name, and only one surface
|
|
19
|
+
* renders a timestamp.
|
|
11
20
|
*/
|
|
12
|
-
import {
|
|
21
|
+
import { Text, XStack, YStack } from '@hanzo/gui';
|
|
22
|
+
import { ink } from '../backends/gui/ink.js';
|
|
13
23
|
import { slot } from '../backends/gui/slot.js';
|
|
24
|
+
/**
|
|
25
|
+
* The mark that says a turn is still arriving.
|
|
26
|
+
*
|
|
27
|
+
* Placed by whoever knows where the prose ends. A surface rendering markdown
|
|
28
|
+
* owns that node and can append this inside it; `Message busy` puts it at the
|
|
29
|
+
* end of the turn instead, which is all this package can know.
|
|
30
|
+
*
|
|
31
|
+
* It does not blink. Every surface that ships one draws it static — an 8x16
|
|
32
|
+
* block on hanzo.app `/chat`, a 2px caret in the builder, a 12px `⬤` from
|
|
33
|
+
* hanzo/chat's `.result-streaming::after`. A caret is the narrowest of the
|
|
34
|
+
* three and the one that reads as "the sentence continues" rather than as a
|
|
35
|
+
* bullet. Decorative, so it is hidden from assistive tech: the turn's text is
|
|
36
|
+
* already live-announced by the surface, and a cursor announced as content is
|
|
37
|
+
* noise on every token.
|
|
38
|
+
*/
|
|
39
|
+
export function Caret() {
|
|
40
|
+
return _jsx(YStack, { ...slot('caret'), width: 2, height: 15, rounded: 1, bg: "$color12", "aria-hidden": true });
|
|
41
|
+
}
|
|
14
42
|
export function Message({ role, children, actions, busy = false, icon }) {
|
|
15
43
|
if (role === 'system')
|
|
16
44
|
return (_jsx(XStack, { ...slot('message'), "data-role": "system", width: "100%", justify: "center", py: "$2", children: _jsx(Text, { fontSize: "$1", color: "$color10", text: "center", children: children }) }));
|
|
17
45
|
const mine = role === 'user';
|
|
18
|
-
return (_jsxs(XStack, { ...slot('message'), "data-role": role, width: "100%", justify: mine ? 'flex-end' : 'flex-start', gap: "$2", children: [icon && !mine ? _jsx(YStack, { pt: "$1", children: icon }) : null, _jsxs(YStack, { ...slot('message-body'), "data-bubble": mine ? 'true' : undefined, gap: "$2",
|
|
46
|
+
return (_jsxs(XStack, { ...slot('message'), "data-role": role, width: "100%", justify: mine ? 'flex-end' : 'flex-start', gap: "$2", children: [icon && !mine ? _jsx(YStack, { pt: "$1", children: icon }) : null, _jsxs(YStack, { ...slot('message-body'), "data-bubble": mine ? 'true' : undefined, gap: "$2",
|
|
47
|
+
// 85%, because that is the number three independent implementations
|
|
48
|
+
// reached: hanzo/chat's `USER_TURN` (`common/turn.ts:17`,
|
|
49
|
+
// `max-w-[85%]`), hanzo.app `/chat` (`app/chat/page.tsx:521`,
|
|
50
|
+
// `maxWidth="85%"`) and the app builder's `UserBubble`
|
|
51
|
+
// (`ask-ai/chat-thread.tsx:141`). This package said 80% and no one
|
|
52
|
+
// said 80%.
|
|
53
|
+
maxW: mine ? '85%' : '100%', flex: mine ? undefined : 1, ...(mine && {
|
|
19
54
|
bg: '$color3',
|
|
20
55
|
rounded: '$5',
|
|
21
56
|
px: '$3',
|
|
22
57
|
py: '$2',
|
|
23
|
-
}), children: [children, busy ? _jsx(
|
|
58
|
+
}), children: [ink(children), busy ? _jsx(Caret, {}) : null, actions ? _jsx(XStack, { gap: "$1", items: "center", children: actions }) : null] })] }));
|
|
24
59
|
}
|
|
25
60
|
//# sourceMappingURL=Message.js.map
|
package/dist/chat/Message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/chat/Message.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/chat/Message.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGjD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAI3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,KAAC,MAAM,OAAK,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAC,UAAU,wBAAe,CAAA;AAClG,CAAC;AAaD,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,EAAgB;IACnF,IAAI,IAAI,KAAK,QAAQ;QACnB,OAAO,CACL,KAAC,MAAM,OAAK,IAAI,CAAC,SAAS,CAAC,eAAY,QAAQ,EAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAE,EAAC,IAAI,YACnF,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,YAC/C,QAAQ,GACJ,GACA,CACV,CAAA;IAEH,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,CAAA;IAC5B,OAAO,CACL,MAAC,MAAM,OACD,IAAI,CAAC,SAAS,CAAC,eACR,IAAI,EACf,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EACzC,GAAG,EAAC,IAAI,aAEP,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,EAAE,EAAC,IAAI,YAAE,IAAI,GAAU,CAAC,CAAC,CAAC,IAAI,EACvD,MAAC,MAAM,OACD,IAAI,CAAC,cAAc,CAAC,iBACX,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACtC,GAAG,EAAC,IAAI;gBACR,oEAAoE;gBACpE,0DAA0D;gBAC1D,8DAA8D;gBAC9D,uDAAuD;gBACvD,mEAAmE;gBACnE,YAAY;gBACZ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAC3B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KACtB,CAAC,IAAI,IAAI;oBACX,EAAE,EAAE,SAAS;oBACb,OAAO,EAAE,IAAI;oBACb,EAAE,EAAE,IAAI;oBACR,EAAE,EAAE,IAAI;iBACT,CAAC,aAED,GAAG,CAAC,QAAQ,CAAC,EACb,IAAI,CAAC,CAAC,CAAC,KAAC,KAAK,KAAG,CAAC,CAAC,CAAC,IAAI,EACvB,OAAO,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,YAAE,OAAO,GAAU,CAAC,CAAC,CAAC,IAAI,IAC7D,IACF,CACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Step = Step;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* Step — something the assistant did on the way to the answer, and how it went.
|
|
8
|
+
*
|
|
9
|
+
* A tool call, a retrieval, a plan, a stretch of reasoning, a progress report:
|
|
10
|
+
* every one of them is a named region that reports a state and opens to show
|
|
11
|
+
* its detail. Two repos had written that arrangement NINE times without ever
|
|
12
|
+
* naming it — hanzo/chat once (`ToolCall.tsx` + `ProgressText.tsx`), hanzo.app
|
|
13
|
+
* eight (`chat-panel/index.tsx` `ToolDisplay`, `SyntheticErrorDisplay`,
|
|
14
|
+
* `ReasoningDisplay`, `PlanDisplay`, `AgentDisplay`, `ProgressDisplay`, the
|
|
15
|
+
* inline `project_context` block, and the builder's own `CollapsibleSection` in
|
|
16
|
+
* `ask-ai/chat-thread.tsx:330`). Nine chances to order the header differently,
|
|
17
|
+
* and they took most of them.
|
|
18
|
+
*
|
|
19
|
+
* What goes INSIDE stays the surface's: chat renders the input as a code block
|
|
20
|
+
* and the result through its own markdown, the app renders
|
|
21
|
+
* `JSON.stringify(parameters, null, 2)`. That is `children`. The header, the
|
|
22
|
+
* state mark, the disclosure and the frame are the same drawing in all nine and
|
|
23
|
+
* they are here.
|
|
24
|
+
*
|
|
25
|
+
* The open/closed behaviour is `Collapsible`, not a hand-rolled height
|
|
26
|
+
* animation. Both existing implementations rolled their own — chat measures
|
|
27
|
+
* `scrollHeight` in a `useLayoutEffect`, keeps a `ResizeObserver` alive and
|
|
28
|
+
* transitions an explicit pixel height — and that is the keyboard handling and
|
|
29
|
+
* the `aria-expanded`/`aria-controls` pair re-derived by hand each time. The
|
|
30
|
+
* primitive already has them.
|
|
31
|
+
*
|
|
32
|
+
* There is no duration and no elapsed time. Neither implementation shows one,
|
|
33
|
+
* and chat's apparent progress is not measured at all: `useProgress.ts:54`
|
|
34
|
+
* ticks a `setInterval` by 0.007 every 200ms and caps at 0.95 until the server
|
|
35
|
+
* says otherwise. A number that is invented should not be given a place to
|
|
36
|
+
* render.
|
|
37
|
+
*/
|
|
38
|
+
const gui_1 = require("@hanzo/gui");
|
|
39
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
40
|
+
const gui_2 = require("../backends/gui/index.cjs");
|
|
41
|
+
const slot_1 = require("../backends/gui/slot.cjs");
|
|
42
|
+
/** Edge of the state mark, px. One size, so the header never reflows on a state
|
|
43
|
+
* change — a step that finishes must not move the text beside it. */
|
|
44
|
+
const MARK = 13;
|
|
45
|
+
/**
|
|
46
|
+
* The mark for each state. `running` is the one that moves.
|
|
47
|
+
*
|
|
48
|
+
* Tinted on the glyph, never on the box: `XStack` is a View and has no `color`,
|
|
49
|
+
* so a colour set there type-errors rather than cascading — which is this
|
|
50
|
+
* package's "a prop must actually arrive" rule catching a habit borrowed from
|
|
51
|
+
* the DOM. Written as four call sites rather than a lookup table because the
|
|
52
|
+
* Spinner and the three glyphs do not share a props type: the icons take a
|
|
53
|
+
* themed `GetThemeValueForKey<'color'>` and the Spinner takes a plain string,
|
|
54
|
+
* and the table that unified them only typechecked by widening both to `any`.
|
|
55
|
+
*/
|
|
56
|
+
const mark = (status) => {
|
|
57
|
+
switch (status) {
|
|
58
|
+
case 'running':
|
|
59
|
+
return (0, jsx_runtime_1.jsx)(gui_2.Spinner, { size: MARK, color: "$color11" });
|
|
60
|
+
case 'done':
|
|
61
|
+
return (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Check, { size: MARK, color: "$color11" });
|
|
62
|
+
case 'error':
|
|
63
|
+
return (0, jsx_runtime_1.jsx)(lucide_icons_2_1.TriangleAlert, { size: MARK, color: "$color11" });
|
|
64
|
+
case 'cancelled':
|
|
65
|
+
return (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Ban, { size: MARK, color: "$color11" });
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
function Step({ name, status = 'done', detail, children, defaultOpen, open, onOpenChange, }) {
|
|
69
|
+
// A step with no body is a statement, not a control. Rendering a dead chevron
|
|
70
|
+
// and a focusable trigger over nothing is how a keyboard user is sent to a
|
|
71
|
+
// stop that does not answer.
|
|
72
|
+
const opens = children != null;
|
|
73
|
+
const header = ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", px: "$3", py: "$2", width: "100%", children: [(0, jsx_runtime_1.jsx)(gui_1.XStack, { width: MARK + 1, items: "center", justify: "center", shrink: 0, children: mark(status) }), (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", color: "$color12", numberOfLines: 1, children: name }), detail ? ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", color: "$color10", numberOfLines: 1, shrink: 1, children: detail })) : null, (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), opens ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronDown, { size: 13, color: "$color10" }) : null] }));
|
|
74
|
+
return ((0, jsx_runtime_1.jsxs)(gui_2.Collapsible, { ...(0, slot_1.slot)('step'), "data-status": status, open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, width: "100%", rounded: "$4", borderWidth: 1,
|
|
75
|
+
// The failure edge, not a red one. `product/tone.ts` states the rule this
|
|
76
|
+
// package works under — "this system has no colour to spend" — and marks
|
|
77
|
+
// its `stopped` register with a border rather than a fill. A step that
|
|
78
|
+
// errored is set apart the same way, so it still reads as a failure in a
|
|
79
|
+
// brand that retunes the whole ramp.
|
|
80
|
+
borderColor: status === 'error' ? '$color9' : '$borderColor', bg: "$color2", overflow: "hidden", children: [opens ? (0, jsx_runtime_1.jsx)(gui_2.CollapsibleTrigger, { width: "100%", children: header }) : header, opens ? ((0, jsx_runtime_1.jsx)(gui_2.CollapsibleContent, { children: (0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('step-body'), px: "$3", py: "$2.5", gap: "$2", borderTopWidth: 1, borderColor: "$borderColor", children: children }) })) : null] }));
|
|
81
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* How a step went.
|
|
4
|
+
*
|
|
5
|
+
* Four, from the union of what the two implementations track. chat reports
|
|
6
|
+
* `error`, `cancelled` and a progress ratio it treats as running-or-done
|
|
7
|
+
* (`ToolCall.tsx:139`); the app reports `pending | executing | completed |
|
|
8
|
+
* failed` (`chat-panel/index.tsx:97`) — and `pending` and `executing` draw the
|
|
9
|
+
* same thing, because from the reader's side a step that has not started and a
|
|
10
|
+
* step that is running are both "not yet".
|
|
11
|
+
*/
|
|
12
|
+
export type Ran = 'running' | 'done' | 'error' | 'cancelled';
|
|
13
|
+
export interface StepProps {
|
|
14
|
+
/** What ran — a tool name, "Reasoning", "Plan". */
|
|
15
|
+
name: string;
|
|
16
|
+
status?: Ran;
|
|
17
|
+
/**
|
|
18
|
+
* One line beside the name: the command, the path, the query. Clamped to a
|
|
19
|
+
* single line — the app truncates its own to 50 characters
|
|
20
|
+
* (`chat-panel/index.tsx:1148`) precisely because an untruncated one wraps
|
|
21
|
+
* the header and moves the chevron.
|
|
22
|
+
*/
|
|
23
|
+
detail?: string;
|
|
24
|
+
/** Revealed when open. Omit it and the step has nothing to open, so it does
|
|
25
|
+
* not offer to: no chevron, no trigger, no keyboard stop. */
|
|
26
|
+
children?: ReactNode;
|
|
27
|
+
/** Uncontrolled. */
|
|
28
|
+
defaultOpen?: boolean;
|
|
29
|
+
/** Controlled — the app holds every step's state in one `Set` on the panel. */
|
|
30
|
+
open?: boolean;
|
|
31
|
+
onOpenChange?: (open: boolean) => void;
|
|
32
|
+
}
|
|
33
|
+
export declare function Step({ name, status, detail, children, defaultOpen, open, onOpenChange, }: StepProps): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
//# sourceMappingURL=Step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.d.ts","sourceRoot":"","sources":["../../src/chat/Step.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC;;;;;;;;;GASG;AACH,MAAM,MAAM,GAAG,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAA;AA8B5D,MAAM,WAAW,SAAS;IACxB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;kEAC8D;IAC9D,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACvC;AAED,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,MAAe,EACf,MAAM,EACN,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,YAAY,GACb,EAAE,SAAS,2CA4DX"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Step — something the assistant did on the way to the answer, and how it went.
|
|
5
|
+
*
|
|
6
|
+
* A tool call, a retrieval, a plan, a stretch of reasoning, a progress report:
|
|
7
|
+
* every one of them is a named region that reports a state and opens to show
|
|
8
|
+
* its detail. Two repos had written that arrangement NINE times without ever
|
|
9
|
+
* naming it — hanzo/chat once (`ToolCall.tsx` + `ProgressText.tsx`), hanzo.app
|
|
10
|
+
* eight (`chat-panel/index.tsx` `ToolDisplay`, `SyntheticErrorDisplay`,
|
|
11
|
+
* `ReasoningDisplay`, `PlanDisplay`, `AgentDisplay`, `ProgressDisplay`, the
|
|
12
|
+
* inline `project_context` block, and the builder's own `CollapsibleSection` in
|
|
13
|
+
* `ask-ai/chat-thread.tsx:330`). Nine chances to order the header differently,
|
|
14
|
+
* and they took most of them.
|
|
15
|
+
*
|
|
16
|
+
* What goes INSIDE stays the surface's: chat renders the input as a code block
|
|
17
|
+
* and the result through its own markdown, the app renders
|
|
18
|
+
* `JSON.stringify(parameters, null, 2)`. That is `children`. The header, the
|
|
19
|
+
* state mark, the disclosure and the frame are the same drawing in all nine and
|
|
20
|
+
* they are here.
|
|
21
|
+
*
|
|
22
|
+
* The open/closed behaviour is `Collapsible`, not a hand-rolled height
|
|
23
|
+
* animation. Both existing implementations rolled their own — chat measures
|
|
24
|
+
* `scrollHeight` in a `useLayoutEffect`, keeps a `ResizeObserver` alive and
|
|
25
|
+
* transitions an explicit pixel height — and that is the keyboard handling and
|
|
26
|
+
* the `aria-expanded`/`aria-controls` pair re-derived by hand each time. The
|
|
27
|
+
* primitive already has them.
|
|
28
|
+
*
|
|
29
|
+
* There is no duration and no elapsed time. Neither implementation shows one,
|
|
30
|
+
* and chat's apparent progress is not measured at all: `useProgress.ts:54`
|
|
31
|
+
* ticks a `setInterval` by 0.007 every 200ms and caps at 0.95 until the server
|
|
32
|
+
* says otherwise. A number that is invented should not be given a place to
|
|
33
|
+
* render.
|
|
34
|
+
*/
|
|
35
|
+
import { SizableText, XStack, YStack } from '@hanzo/gui';
|
|
36
|
+
import { Ban, Check, ChevronDown, TriangleAlert } from '@hanzogui/lucide-icons-2';
|
|
37
|
+
import { Collapsible, CollapsibleContent, CollapsibleTrigger, Spinner } from '../backends/gui/index.js';
|
|
38
|
+
import { slot } from '../backends/gui/slot.js';
|
|
39
|
+
/** Edge of the state mark, px. One size, so the header never reflows on a state
|
|
40
|
+
* change — a step that finishes must not move the text beside it. */
|
|
41
|
+
const MARK = 13;
|
|
42
|
+
/**
|
|
43
|
+
* The mark for each state. `running` is the one that moves.
|
|
44
|
+
*
|
|
45
|
+
* Tinted on the glyph, never on the box: `XStack` is a View and has no `color`,
|
|
46
|
+
* so a colour set there type-errors rather than cascading — which is this
|
|
47
|
+
* package's "a prop must actually arrive" rule catching a habit borrowed from
|
|
48
|
+
* the DOM. Written as four call sites rather than a lookup table because the
|
|
49
|
+
* Spinner and the three glyphs do not share a props type: the icons take a
|
|
50
|
+
* themed `GetThemeValueForKey<'color'>` and the Spinner takes a plain string,
|
|
51
|
+
* and the table that unified them only typechecked by widening both to `any`.
|
|
52
|
+
*/
|
|
53
|
+
const mark = (status) => {
|
|
54
|
+
switch (status) {
|
|
55
|
+
case 'running':
|
|
56
|
+
return _jsx(Spinner, { size: MARK, color: "$color11" });
|
|
57
|
+
case 'done':
|
|
58
|
+
return _jsx(Check, { size: MARK, color: "$color11" });
|
|
59
|
+
case 'error':
|
|
60
|
+
return _jsx(TriangleAlert, { size: MARK, color: "$color11" });
|
|
61
|
+
case 'cancelled':
|
|
62
|
+
return _jsx(Ban, { size: MARK, color: "$color11" });
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
export function Step({ name, status = 'done', detail, children, defaultOpen, open, onOpenChange, }) {
|
|
66
|
+
// A step with no body is a statement, not a control. Rendering a dead chevron
|
|
67
|
+
// and a focusable trigger over nothing is how a keyboard user is sent to a
|
|
68
|
+
// stop that does not answer.
|
|
69
|
+
const opens = children != null;
|
|
70
|
+
const header = (_jsxs(XStack, { items: "center", gap: "$2", px: "$3", py: "$2", width: "100%", children: [_jsx(XStack, { width: MARK + 1, items: "center", justify: "center", shrink: 0, children: mark(status) }), _jsx(SizableText, { size: "$1", color: "$color12", numberOfLines: 1, children: name }), detail ? (_jsx(SizableText, { size: "$1", color: "$color10", numberOfLines: 1, shrink: 1, children: detail })) : null, _jsx(XStack, { flex: 1 }), opens ? _jsx(ChevronDown, { size: 13, color: "$color10" }) : null] }));
|
|
71
|
+
return (_jsxs(Collapsible, { ...slot('step'), "data-status": status, open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, width: "100%", rounded: "$4", borderWidth: 1,
|
|
72
|
+
// The failure edge, not a red one. `product/tone.ts` states the rule this
|
|
73
|
+
// package works under — "this system has no colour to spend" — and marks
|
|
74
|
+
// its `stopped` register with a border rather than a fill. A step that
|
|
75
|
+
// errored is set apart the same way, so it still reads as a failure in a
|
|
76
|
+
// brand that retunes the whole ramp.
|
|
77
|
+
borderColor: status === 'error' ? '$color9' : '$borderColor', bg: "$color2", overflow: "hidden", children: [opens ? _jsx(CollapsibleTrigger, { width: "100%", children: header }) : header, opens ? (_jsx(CollapsibleContent, { children: _jsx(YStack, { ...slot('step-body'), px: "$3", py: "$2.5", gap: "$2", borderTopWidth: 1, borderColor: "$borderColor", children: children }) })) : null] }));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=Step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.js","sourceRoot":"","sources":["../../src/chat/Step.tsx"],"names":[],"mappings":"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"}
|
package/dist/chat/index.cjs
CHANGED
|
@@ -1,14 +1,42 @@
|
|
|
1
1
|
'use client';"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SourceChip = exports.Sources = exports.Code = exports.Aside = exports.AsideToggle = exports.ShareButton = exports.HeaderButton = exports.Header = exports.SidebarUser = exports.SidebarFolder = exports.SidebarItem = exports.SidebarSection = exports.SidebarScroll = exports.SidebarNewChat = exports.SidebarIconButton = exports.SidebarHeader = exports.Sidebar = exports.SLACK = exports.pinned = exports.sends = exports.ready = exports.Thread = exports.Message = exports.ASK = exports.Composer = void 0;
|
|
3
|
+
exports.SourceChip = exports.Sources = exports.Failure = exports.Step = exports.Code = exports.Aside = exports.AsideToggle = exports.ShareButton = exports.HeaderButton = exports.Header = exports.SidebarUser = exports.SidebarFolder = exports.SidebarItem = exports.SidebarSection = exports.SidebarScroll = exports.SidebarNewChat = exports.SidebarIconButton = exports.SidebarHeader = exports.Sidebar = exports.SLACK = exports.pinned = exports.sends = exports.ready = exports.Thread = exports.Message = exports.Caret = exports.ASK = exports.Composer = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* @hanzo/ui/chat — the one chat shell, on @hanzo/gui primitives.
|
|
6
6
|
*
|
|
7
7
|
* Shell only: Thread scrolls, Message presents a turn, Composer takes a draft,
|
|
8
|
-
* Sidebar navigates between conversations, Header names the current one,
|
|
9
|
-
* and Sources present the
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* Sidebar navigates between conversations, Header names the current one, and
|
|
9
|
+
* Code, Step, Failure and Sources present the pieces of a turn every surface
|
|
10
|
+
* renders the same way.
|
|
11
|
+
*
|
|
12
|
+
* This file used to end that sentence with "Content rendering (markdown, tool
|
|
13
|
+
* calls) stays with the surface — they disagree on the pipeline, and none of it
|
|
14
|
+
* is presentational." Half of that was right and the half that was wrong cost
|
|
15
|
+
* nine hand-drawn copies. Re-decided by reading what the three surfaces
|
|
16
|
+
* actually render:
|
|
17
|
+
*
|
|
18
|
+
* MARKDOWN STAYS OUT, and not as a preference. hanzo/chat runs seven remark
|
|
19
|
+
* plugins and two rehype plugins (`Content/Markdown.tsx:42-65`, including
|
|
20
|
+
* katex and highlight.js over a 35-language subset); hanzo.app runs
|
|
21
|
+
* remark-gfm and nothing else (`markdown-renderer/index.tsx:107`); the
|
|
22
|
+
* extension parses markdown with eighty lines of regex and no dependency at
|
|
23
|
+
* all (`answer/markdown.ts`) because `newtab.js` measures 485.9 KB against a
|
|
24
|
+
* 500 KB ceiling that fails the build (`scripts/check-bundle-budgets.mjs:29`)
|
|
25
|
+
* and its MV3 policy is `script-src 'self'`. Fourteen kilobytes of headroom
|
|
26
|
+
* is not a pipeline disagreement to be reconciled; it is a surface that
|
|
27
|
+
* cannot afford a parser. So the pipeline is the surface's, and `children` is
|
|
28
|
+
* how it arrives — which is also why there is no `renderPart` prop: the part
|
|
29
|
+
* UNION is per-surface too (twelve item types in the app's
|
|
30
|
+
* `chat-panel/index.tsx` `TurnDisplay`, eight in chat's `Content/Part.tsx`,
|
|
31
|
+
* none in the extension), so a callback here would need a Part type that
|
|
32
|
+
* matches nobody's. The surface maps its own parts and passes nodes.
|
|
33
|
+
*
|
|
34
|
+
* THE REST OF IT WAS ALWAYS PRESENTATIONAL. A code block with a language
|
|
35
|
+
* label and a copy control, a collapsible step with a state mark, a failure
|
|
36
|
+
* with a retry, a streaming caret — every surface draws these and no two draw
|
|
37
|
+
* them alike. `Step` alone replaces nine copies across two repos. What is
|
|
38
|
+
* inside each of them is still `children`; the frame, the header, the mark
|
|
39
|
+
* and the disclosure are here.
|
|
12
40
|
*
|
|
13
41
|
* Everything is props-in, callbacks-out: no transport, no store, no routing, no
|
|
14
42
|
* active-id resolution. The same components serve a live conversation, a shared
|
|
@@ -31,6 +59,7 @@ var Composer_1 = require("./Composer.cjs");
|
|
|
31
59
|
Object.defineProperty(exports, "Composer", { enumerable: true, get: function () { return Composer_1.Composer; } });
|
|
32
60
|
Object.defineProperty(exports, "ASK", { enumerable: true, get: function () { return Composer_1.ASK; } });
|
|
33
61
|
var Message_1 = require("./Message.cjs");
|
|
62
|
+
Object.defineProperty(exports, "Caret", { enumerable: true, get: function () { return Message_1.Caret; } });
|
|
34
63
|
Object.defineProperty(exports, "Message", { enumerable: true, get: function () { return Message_1.Message; } });
|
|
35
64
|
var Thread_1 = require("./Thread.cjs");
|
|
36
65
|
Object.defineProperty(exports, "Thread", { enumerable: true, get: function () { return Thread_1.Thread; } });
|
|
@@ -58,6 +87,10 @@ Object.defineProperty(exports, "AsideToggle", { enumerable: true, get: function
|
|
|
58
87
|
Object.defineProperty(exports, "Aside", { enumerable: true, get: function () { return Header_1.Aside; } });
|
|
59
88
|
var Code_1 = require("./Code.cjs");
|
|
60
89
|
Object.defineProperty(exports, "Code", { enumerable: true, get: function () { return Code_1.Code; } });
|
|
90
|
+
var Step_1 = require("./Step.cjs");
|
|
91
|
+
Object.defineProperty(exports, "Step", { enumerable: true, get: function () { return Step_1.Step; } });
|
|
92
|
+
var Failure_1 = require("./Failure.cjs");
|
|
93
|
+
Object.defineProperty(exports, "Failure", { enumerable: true, get: function () { return Failure_1.Failure; } });
|
|
61
94
|
var Sources_1 = require("./Sources.cjs");
|
|
62
95
|
Object.defineProperty(exports, "Sources", { enumerable: true, get: function () { return Sources_1.Sources; } });
|
|
63
96
|
Object.defineProperty(exports, "SourceChip", { enumerable: true, get: function () { return Sources_1.SourceChip; } });
|
package/dist/chat/index.d.ts
CHANGED
|
@@ -2,10 +2,38 @@
|
|
|
2
2
|
* @hanzo/ui/chat — the one chat shell, on @hanzo/gui primitives.
|
|
3
3
|
*
|
|
4
4
|
* Shell only: Thread scrolls, Message presents a turn, Composer takes a draft,
|
|
5
|
-
* Sidebar navigates between conversations, Header names the current one,
|
|
6
|
-
* and Sources present the
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* Sidebar navigates between conversations, Header names the current one, and
|
|
6
|
+
* Code, Step, Failure and Sources present the pieces of a turn every surface
|
|
7
|
+
* renders the same way.
|
|
8
|
+
*
|
|
9
|
+
* This file used to end that sentence with "Content rendering (markdown, tool
|
|
10
|
+
* calls) stays with the surface — they disagree on the pipeline, and none of it
|
|
11
|
+
* is presentational." Half of that was right and the half that was wrong cost
|
|
12
|
+
* nine hand-drawn copies. Re-decided by reading what the three surfaces
|
|
13
|
+
* actually render:
|
|
14
|
+
*
|
|
15
|
+
* MARKDOWN STAYS OUT, and not as a preference. hanzo/chat runs seven remark
|
|
16
|
+
* plugins and two rehype plugins (`Content/Markdown.tsx:42-65`, including
|
|
17
|
+
* katex and highlight.js over a 35-language subset); hanzo.app runs
|
|
18
|
+
* remark-gfm and nothing else (`markdown-renderer/index.tsx:107`); the
|
|
19
|
+
* extension parses markdown with eighty lines of regex and no dependency at
|
|
20
|
+
* all (`answer/markdown.ts`) because `newtab.js` measures 485.9 KB against a
|
|
21
|
+
* 500 KB ceiling that fails the build (`scripts/check-bundle-budgets.mjs:29`)
|
|
22
|
+
* and its MV3 policy is `script-src 'self'`. Fourteen kilobytes of headroom
|
|
23
|
+
* is not a pipeline disagreement to be reconciled; it is a surface that
|
|
24
|
+
* cannot afford a parser. So the pipeline is the surface's, and `children` is
|
|
25
|
+
* how it arrives — which is also why there is no `renderPart` prop: the part
|
|
26
|
+
* UNION is per-surface too (twelve item types in the app's
|
|
27
|
+
* `chat-panel/index.tsx` `TurnDisplay`, eight in chat's `Content/Part.tsx`,
|
|
28
|
+
* none in the extension), so a callback here would need a Part type that
|
|
29
|
+
* matches nobody's. The surface maps its own parts and passes nodes.
|
|
30
|
+
*
|
|
31
|
+
* THE REST OF IT WAS ALWAYS PRESENTATIONAL. A code block with a language
|
|
32
|
+
* label and a copy control, a collapsible step with a state mark, a failure
|
|
33
|
+
* with a retry, a streaming caret — every surface draws these and no two draw
|
|
34
|
+
* them alike. `Step` alone replaces nine copies across two repos. What is
|
|
35
|
+
* inside each of them is still `children`; the frame, the header, the mark
|
|
36
|
+
* and the disclosure are here.
|
|
9
37
|
*
|
|
10
38
|
* Everything is props-in, callbacks-out: no transport, no store, no routing, no
|
|
11
39
|
* active-id resolution. The same components serve a live conversation, a shared
|
|
@@ -25,12 +53,14 @@
|
|
|
25
53
|
* `Code` imports it from there.
|
|
26
54
|
*/
|
|
27
55
|
export { Composer, ASK, type ComposerProps } from './Composer.js';
|
|
28
|
-
export { Message, type MessageProps, type Role } from './Message.js';
|
|
56
|
+
export { Caret, Message, type MessageProps, type Role } from './Message.js';
|
|
29
57
|
export { Thread, type ThreadProps } from './Thread.js';
|
|
30
58
|
export { ready, sends, type Mods } from './send.js';
|
|
31
59
|
export { pinned, SLACK, type Track } from './stick.js';
|
|
32
60
|
export { Sidebar, SidebarHeader, SidebarIconButton, SidebarNewChat, SidebarScroll, SidebarSection, SidebarItem, SidebarFolder, SidebarUser, type SidebarProps, type SidebarHeaderProps, type SidebarIconButtonProps, type SidebarNewChatProps, type SidebarSectionProps, type SidebarItemProps, type SidebarFolderProps, type SidebarUserProps, } from './Sidebar.js';
|
|
33
61
|
export { Header, HeaderButton, ShareButton, AsideToggle, Aside, type HeaderProps, type HeaderButtonProps, type ShareButtonProps, type AsideToggleProps, type AsideProps, } from './Header.js';
|
|
34
62
|
export { Code, type CodeProps } from './Code.js';
|
|
63
|
+
export { Step, type StepProps, type Ran } from './Step.js';
|
|
64
|
+
export { Failure, type FailureProps } from './Failure.js';
|
|
35
65
|
export { Sources, SourceChip, type Source, type SourcesProps, type SourceChipProps, } from './Sources.js';
|
|
36
66
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/chat/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,IAAI,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,MAAM,SAAS,CAAA;AAEnD,OAAO,EACL,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,WAAW,EACX,WAAW,EACX,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AAEtD,OAAO,EACL,OAAO,EACP,UAAU,EACV,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAA"}
|
package/dist/chat/index.js
CHANGED
|
@@ -2,10 +2,38 @@
|
|
|
2
2
|
* @hanzo/ui/chat — the one chat shell, on @hanzo/gui primitives.
|
|
3
3
|
*
|
|
4
4
|
* Shell only: Thread scrolls, Message presents a turn, Composer takes a draft,
|
|
5
|
-
* Sidebar navigates between conversations, Header names the current one,
|
|
6
|
-
* and Sources present the
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* Sidebar navigates between conversations, Header names the current one, and
|
|
6
|
+
* Code, Step, Failure and Sources present the pieces of a turn every surface
|
|
7
|
+
* renders the same way.
|
|
8
|
+
*
|
|
9
|
+
* This file used to end that sentence with "Content rendering (markdown, tool
|
|
10
|
+
* calls) stays with the surface — they disagree on the pipeline, and none of it
|
|
11
|
+
* is presentational." Half of that was right and the half that was wrong cost
|
|
12
|
+
* nine hand-drawn copies. Re-decided by reading what the three surfaces
|
|
13
|
+
* actually render:
|
|
14
|
+
*
|
|
15
|
+
* MARKDOWN STAYS OUT, and not as a preference. hanzo/chat runs seven remark
|
|
16
|
+
* plugins and two rehype plugins (`Content/Markdown.tsx:42-65`, including
|
|
17
|
+
* katex and highlight.js over a 35-language subset); hanzo.app runs
|
|
18
|
+
* remark-gfm and nothing else (`markdown-renderer/index.tsx:107`); the
|
|
19
|
+
* extension parses markdown with eighty lines of regex and no dependency at
|
|
20
|
+
* all (`answer/markdown.ts`) because `newtab.js` measures 485.9 KB against a
|
|
21
|
+
* 500 KB ceiling that fails the build (`scripts/check-bundle-budgets.mjs:29`)
|
|
22
|
+
* and its MV3 policy is `script-src 'self'`. Fourteen kilobytes of headroom
|
|
23
|
+
* is not a pipeline disagreement to be reconciled; it is a surface that
|
|
24
|
+
* cannot afford a parser. So the pipeline is the surface's, and `children` is
|
|
25
|
+
* how it arrives — which is also why there is no `renderPart` prop: the part
|
|
26
|
+
* UNION is per-surface too (twelve item types in the app's
|
|
27
|
+
* `chat-panel/index.tsx` `TurnDisplay`, eight in chat's `Content/Part.tsx`,
|
|
28
|
+
* none in the extension), so a callback here would need a Part type that
|
|
29
|
+
* matches nobody's. The surface maps its own parts and passes nodes.
|
|
30
|
+
*
|
|
31
|
+
* THE REST OF IT WAS ALWAYS PRESENTATIONAL. A code block with a language
|
|
32
|
+
* label and a copy control, a collapsible step with a state mark, a failure
|
|
33
|
+
* with a retry, a streaming caret — every surface draws these and no two draw
|
|
34
|
+
* them alike. `Step` alone replaces nine copies across two repos. What is
|
|
35
|
+
* inside each of them is still `children`; the frame, the header, the mark
|
|
36
|
+
* and the disclosure are here.
|
|
9
37
|
*
|
|
10
38
|
* Everything is props-in, callbacks-out: no transport, no store, no routing, no
|
|
11
39
|
* active-id resolution. The same components serve a live conversation, a shared
|
|
@@ -25,12 +53,14 @@
|
|
|
25
53
|
* `Code` imports it from there.
|
|
26
54
|
*/
|
|
27
55
|
export { Composer, ASK } from './Composer.js';
|
|
28
|
-
export { Message } from './Message.js';
|
|
56
|
+
export { Caret, Message } from './Message.js';
|
|
29
57
|
export { Thread } from './Thread.js';
|
|
30
58
|
export { ready, sends } from './send.js';
|
|
31
59
|
export { pinned, SLACK } from './stick.js';
|
|
32
60
|
export { Sidebar, SidebarHeader, SidebarIconButton, SidebarNewChat, SidebarScroll, SidebarSection, SidebarItem, SidebarFolder, SidebarUser, } from './Sidebar.js';
|
|
33
61
|
export { Header, HeaderButton, ShareButton, AsideToggle, Aside, } from './Header.js';
|
|
34
62
|
export { Code } from './Code.js';
|
|
63
|
+
export { Step } from './Step.js';
|
|
64
|
+
export { Failure } from './Failure.js';
|
|
35
65
|
export { Sources, SourceChip, } from './Sources.js';
|
|
36
66
|
//# sourceMappingURL=index.js.map
|
package/dist/chat/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAsB,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAa,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAc,MAAM,SAAS,CAAA;AAEnD,OAAO,EACL,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,WAAW,GASZ,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,WAAW,EACX,WAAW,EACX,KAAK,GAMN,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,IAAI,EAAkB,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,IAAI,EAA4B,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,OAAO,EAAqB,MAAM,WAAW,CAAA;AAEtD,OAAO,EACL,OAAO,EACP,UAAU,GAIX,MAAM,WAAW,CAAA"}
|
package/dist/gallery.cjs
CHANGED
|
@@ -8,6 +8,7 @@ const Workbench_1 = require("./product/Workbench.cjs");
|
|
|
8
8
|
const Skeleton_1 = require("./product/Skeleton.cjs");
|
|
9
9
|
const TooltipAnchor_1 = require("./product/TooltipAnchor.cjs");
|
|
10
10
|
const DialogTemplate_1 = require("./product/DialogTemplate.cjs");
|
|
11
|
+
const chat_1 = require("./chat/index.cjs");
|
|
11
12
|
const gui_1 = require("./backends/gui/index.cjs");
|
|
12
13
|
/** A real <img> with real intrinsic pixels, inline so nothing hits the network.
|
|
13
14
|
* 120x40 on purpose: the wrong ratio for every box it goes in, so a frame that
|
|
@@ -23,6 +24,13 @@ const BUTTON_VARIANTS = [
|
|
|
23
24
|
];
|
|
24
25
|
const BUTTON_SIZES = ['default', 'sm', 'lg', 'icon', 'icon-sm', 'icon-lg'];
|
|
25
26
|
const BADGE_VARIANTS = ['default', 'secondary', 'destructive', 'outline'];
|
|
27
|
+
/** The chat shell is callbacks-out, and this list only needs them to exist. */
|
|
28
|
+
const NOOP = () => { };
|
|
29
|
+
/** Two, so the grid's wrap rule and the letter fallback both render. */
|
|
30
|
+
const SOURCES = [
|
|
31
|
+
{ id: 'a', title: 'hanzo.ai', href: 'https://hanzo.ai' },
|
|
32
|
+
{ id: 'b', title: 'Reference' },
|
|
33
|
+
];
|
|
26
34
|
/** One section. Plain CSS on a plain div — the gallery is a harness, and laying
|
|
27
35
|
* it out with the components under test would make a layout bug read as a
|
|
28
36
|
* styling bug. Rows wrap so the same tree is legible at 390px and at 1280px,
|
|
@@ -45,6 +53,6 @@ const Gallery = () => ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex'
|
|
|
45
53
|
tabs: [
|
|
46
54
|
{ id: 'console', title: 'Console', closable: false, content: (0, jsx_runtime_1.jsx)(gui_1.CardTitle, { children: "console" }) },
|
|
47
55
|
],
|
|
48
|
-
}, children: (0, jsx_runtime_1.jsx)(gui_1.CardTitle, { children: "center" }) }) }) }), (0, jsx_runtime_1.jsxs)(Section, { name: "product-arrangements", children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, width: 320 }, children: [(0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { width: 120 }), (0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { width: "100%", height: 72, rounded: "$4" }), (0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton.Text, { lines: 3 })] }), (0, jsx_runtime_1.jsx)(TooltipAnchor_1.TooltipAnchor, { description: "Delete this agent", children: (0, jsx_runtime_1.jsx)(gui_1.Button, { children: "hinted" }) }), (0, jsx_runtime_1.jsx)(gui_1.Dialog, { open: true, children: (0, jsx_runtime_1.jsx)(DialogTemplate_1.DialogTemplate, { title: "Delete agent", description: "This removes every run recorded against it.", confirm: { label: 'Delete', tone: 'danger' }, children: (0, jsx_runtime_1.jsx)(gui_1.CardTitle, { children: "body" }) }) })] }), (0, jsx_runtime_1.jsxs)(Section, { name: "box", children: [(0, jsx_runtime_1.jsx)(box_1.Box, { className: "flex items-center gap-4 px-6 py-3 rounded-lg border", children: (0, jsx_runtime_1.jsx)(gui_1.CardTitle, { children: "utility classes" }) }), (0, jsx_runtime_1.jsx)(box_1.Box, { className: "flex-col gap-2 max-w-3xl mx-auto overflow-hidden", children: (0, jsx_runtime_1.jsx)(gui_1.CardTitle, { children: "column" }) })] })] }));
|
|
56
|
+
}, children: (0, jsx_runtime_1.jsx)(gui_1.CardTitle, { children: "center" }) }) }) }), (0, jsx_runtime_1.jsxs)(Section, { name: "product-arrangements", children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, width: 320 }, children: [(0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { width: 120 }), (0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { width: "100%", height: 72, rounded: "$4" }), (0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton.Text, { lines: 3 })] }), (0, jsx_runtime_1.jsx)(TooltipAnchor_1.TooltipAnchor, { description: "Delete this agent", children: (0, jsx_runtime_1.jsx)(gui_1.Button, { children: "hinted" }) }), (0, jsx_runtime_1.jsx)(gui_1.Dialog, { open: true, children: (0, jsx_runtime_1.jsx)(DialogTemplate_1.DialogTemplate, { title: "Delete agent", description: "This removes every run recorded against it.", confirm: { label: 'Delete', tone: 'danger' }, children: (0, jsx_runtime_1.jsx)(gui_1.CardTitle, { children: "body" }) }) })] }), (0, jsx_runtime_1.jsxs)(Section, { name: "chat", children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, width: 520, height: 320 }, children: [(0, jsx_runtime_1.jsxs)(chat_1.Header, { title: "A conversation with a long enough name to clamp", children: [(0, jsx_runtime_1.jsx)(chat_1.ShareButton, {}), (0, jsx_runtime_1.jsx)(chat_1.AsideToggle, {})] }), (0, jsx_runtime_1.jsxs)(chat_1.Thread, { children: [(0, jsx_runtime_1.jsx)(chat_1.Message, { role: "user", children: "ask" }), (0, jsx_runtime_1.jsxs)(chat_1.Message, { role: "assistant", icon: (0, jsx_runtime_1.jsx)(gui_1.Spinner, {}), actions: (0, jsx_runtime_1.jsx)(gui_1.Badge, { children: "copy" }), children: [(0, jsx_runtime_1.jsx)(chat_1.Step, { name: "shell", status: "running", detail: "git status --porcelain" }), (0, jsx_runtime_1.jsx)(chat_1.Step, { name: "write", status: "done", detail: "src/index.ts", defaultOpen: true, children: (0, jsx_runtime_1.jsx)(chat_1.Code, { language: "json", value: "{}", children: '{}' }) }), (0, jsx_runtime_1.jsx)(chat_1.Step, { name: "fetch", status: "error", detail: "timed out", children: "plain body" }), (0, jsx_runtime_1.jsx)(chat_1.Step, { name: "plan", status: "cancelled" }), (0, jsx_runtime_1.jsx)(chat_1.Code, { language: "typescript", value: "const x = 1", children: "const x = 1" }), (0, jsx_runtime_1.jsx)(chat_1.Sources, { sources: SOURCES })] }), (0, jsx_runtime_1.jsx)(chat_1.Message, { role: "assistant", busy: true, children: "answering" }), (0, jsx_runtime_1.jsx)(chat_1.Message, { role: "assistant", children: (0, jsx_runtime_1.jsx)(chat_1.Failure, { onRetry: NOOP, children: "The model stopped before finishing." }) }), (0, jsx_runtime_1.jsx)(chat_1.Message, { role: "assistant", children: (0, jsx_runtime_1.jsx)(chat_1.Failure, { children: "Rate limited." }) }), (0, jsx_runtime_1.jsx)(chat_1.Message, { role: "system", children: "note" })] }), (0, jsx_runtime_1.jsx)(chat_1.Composer, { value: "a draft", onChange: NOOP, onSend: NOOP, hint: "Enter to send", children: (0, jsx_runtime_1.jsx)(gui_1.Badge, { children: "tool" }) }), (0, jsx_runtime_1.jsx)(chat_1.Composer, { value: "", onChange: NOOP, onSend: NOOP, onStop: NOOP, busy: true })] }), (0, jsx_runtime_1.jsx)(chat_1.Aside, { children: (0, jsx_runtime_1.jsx)(chat_1.Sources, { sources: SOURCES }) }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', width: 260, height: 320 }, children: (0, jsx_runtime_1.jsxs)(chat_1.Sidebar, { children: [(0, jsx_runtime_1.jsx)(chat_1.SidebarHeader, { title: "Hanzo", onOpenSwitcher: NOOP, onSearch: NOOP, onCollapse: NOOP }), (0, jsx_runtime_1.jsx)(chat_1.SidebarNewChat, { onPress: NOOP }), (0, jsx_runtime_1.jsxs)(chat_1.SidebarScroll, { children: [(0, jsx_runtime_1.jsxs)(chat_1.SidebarSection, { label: "Today", children: [(0, jsx_runtime_1.jsx)(chat_1.SidebarItem, { active: true, onPress: NOOP, children: "Selected thread" }), (0, jsx_runtime_1.jsx)(chat_1.SidebarItem, { onPress: NOOP, children: "Another thread" })] }), (0, jsx_runtime_1.jsx)(chat_1.SidebarFolder, { name: "Archive", defaultOpen: true, children: (0, jsx_runtime_1.jsx)(chat_1.SidebarItem, { onPress: NOOP, children: "Nested thread" }) })] }), (0, jsx_runtime_1.jsx)(chat_1.SidebarUser, { name: "z", secondary: "z@hanzo.ai", onPress: NOOP, onHelp: NOOP })] }) })] }), (0, jsx_runtime_1.jsxs)(Section, { name: "box", children: [(0, jsx_runtime_1.jsx)(box_1.Box, { className: "flex items-center gap-4 px-6 py-3 rounded-lg border", children: (0, jsx_runtime_1.jsx)(gui_1.CardTitle, { children: "utility classes" }) }), (0, jsx_runtime_1.jsx)(box_1.Box, { className: "flex-col gap-2 max-w-3xl mx-auto overflow-hidden", children: (0, jsx_runtime_1.jsx)(gui_1.CardTitle, { children: "column" }) })] })] }));
|
|
49
57
|
exports.Gallery = Gallery;
|
|
50
58
|
exports.default = exports.Gallery;
|
package/dist/gallery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"AAgHA;;;GAGG;AACH,eAAO,MAAM,OAAO,+CAkgBnB,CAAA;AAED,eAAe,OAAO,CAAA"}
|
package/dist/gallery.js
CHANGED
|
@@ -5,6 +5,7 @@ import { Workbench } from './product/Workbench.js';
|
|
|
5
5
|
import { Skeleton } from './product/Skeleton.js';
|
|
6
6
|
import { TooltipAnchor } from './product/TooltipAnchor.js';
|
|
7
7
|
import { DialogTemplate } from './product/DialogTemplate.js';
|
|
8
|
+
import { Aside, AsideToggle, Code, Composer, Failure, Header as ChatHeader, Message, ShareButton, Step, Sidebar, SidebarFolder, SidebarHeader, SidebarItem, SidebarNewChat, SidebarScroll, SidebarSection, SidebarUser, Sources, Thread, } from './chat/index.js';
|
|
8
9
|
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuSeparator, ContextMenuTrigger, HoverCard, HoverCardContent, HoverCardTrigger, RadioGroup, RadioGroupItem, ToggleGroup, ToggleGroupItem, AspectRatio, Avatar, AvatarFallback, Badge, Button, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Input, Label, Popover, PopoverContent, PopoverTrigger, Progress, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Separator, Slider, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Grid, Section as PageSection, CardMedia, CommandDialog, Spinner, } from './backends/gui/index.js';
|
|
9
10
|
/** A real <img> with real intrinsic pixels, inline so nothing hits the network.
|
|
10
11
|
* 120x40 on purpose: the wrong ratio for every box it goes in, so a frame that
|
|
@@ -20,6 +21,13 @@ const BUTTON_VARIANTS = [
|
|
|
20
21
|
];
|
|
21
22
|
const BUTTON_SIZES = ['default', 'sm', 'lg', 'icon', 'icon-sm', 'icon-lg'];
|
|
22
23
|
const BADGE_VARIANTS = ['default', 'secondary', 'destructive', 'outline'];
|
|
24
|
+
/** The chat shell is callbacks-out, and this list only needs them to exist. */
|
|
25
|
+
const NOOP = () => { };
|
|
26
|
+
/** Two, so the grid's wrap rule and the letter fallback both render. */
|
|
27
|
+
const SOURCES = [
|
|
28
|
+
{ id: 'a', title: 'hanzo.ai', href: 'https://hanzo.ai' },
|
|
29
|
+
{ id: 'b', title: 'Reference' },
|
|
30
|
+
];
|
|
23
31
|
/** One section. Plain CSS on a plain div — the gallery is a harness, and laying
|
|
24
32
|
* it out with the components under test would make a layout bug read as a
|
|
25
33
|
* styling bug. Rows wrap so the same tree is legible at 390px and at 1280px,
|
|
@@ -42,6 +50,6 @@ export const Gallery = () => (_jsxs("div", { style: { display: 'flex', flexDirec
|
|
|
42
50
|
tabs: [
|
|
43
51
|
{ id: 'console', title: 'Console', closable: false, content: _jsx(CardTitle, { children: "console" }) },
|
|
44
52
|
],
|
|
45
|
-
}, children: _jsx(CardTitle, { children: "center" }) }) }) }), _jsxs(Section, { name: "product-arrangements", children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, width: 320 }, children: [_jsx(Skeleton, { width: 120 }), _jsx(Skeleton, { width: "100%", height: 72, rounded: "$4" }), _jsx(Skeleton.Text, { lines: 3 })] }), _jsx(TooltipAnchor, { description: "Delete this agent", children: _jsx(Button, { children: "hinted" }) }), _jsx(Dialog, { open: true, children: _jsx(DialogTemplate, { title: "Delete agent", description: "This removes every run recorded against it.", confirm: { label: 'Delete', tone: 'danger' }, children: _jsx(CardTitle, { children: "body" }) }) })] }), _jsxs(Section, { name: "box", children: [_jsx(Box, { className: "flex items-center gap-4 px-6 py-3 rounded-lg border", children: _jsx(CardTitle, { children: "utility classes" }) }), _jsx(Box, { className: "flex-col gap-2 max-w-3xl mx-auto overflow-hidden", children: _jsx(CardTitle, { children: "column" }) })] })] }));
|
|
53
|
+
}, children: _jsx(CardTitle, { children: "center" }) }) }) }), _jsxs(Section, { name: "product-arrangements", children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, width: 320 }, children: [_jsx(Skeleton, { width: 120 }), _jsx(Skeleton, { width: "100%", height: 72, rounded: "$4" }), _jsx(Skeleton.Text, { lines: 3 })] }), _jsx(TooltipAnchor, { description: "Delete this agent", children: _jsx(Button, { children: "hinted" }) }), _jsx(Dialog, { open: true, children: _jsx(DialogTemplate, { title: "Delete agent", description: "This removes every run recorded against it.", confirm: { label: 'Delete', tone: 'danger' }, children: _jsx(CardTitle, { children: "body" }) }) })] }), _jsxs(Section, { name: "chat", children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 12, width: 520, height: 320 }, children: [_jsxs(ChatHeader, { title: "A conversation with a long enough name to clamp", children: [_jsx(ShareButton, {}), _jsx(AsideToggle, {})] }), _jsxs(Thread, { children: [_jsx(Message, { role: "user", children: "ask" }), _jsxs(Message, { role: "assistant", icon: _jsx(Spinner, {}), actions: _jsx(Badge, { children: "copy" }), children: [_jsx(Step, { name: "shell", status: "running", detail: "git status --porcelain" }), _jsx(Step, { name: "write", status: "done", detail: "src/index.ts", defaultOpen: true, children: _jsx(Code, { language: "json", value: "{}", children: '{}' }) }), _jsx(Step, { name: "fetch", status: "error", detail: "timed out", children: "plain body" }), _jsx(Step, { name: "plan", status: "cancelled" }), _jsx(Code, { language: "typescript", value: "const x = 1", children: "const x = 1" }), _jsx(Sources, { sources: SOURCES })] }), _jsx(Message, { role: "assistant", busy: true, children: "answering" }), _jsx(Message, { role: "assistant", children: _jsx(Failure, { onRetry: NOOP, children: "The model stopped before finishing." }) }), _jsx(Message, { role: "assistant", children: _jsx(Failure, { children: "Rate limited." }) }), _jsx(Message, { role: "system", children: "note" })] }), _jsx(Composer, { value: "a draft", onChange: NOOP, onSend: NOOP, hint: "Enter to send", children: _jsx(Badge, { children: "tool" }) }), _jsx(Composer, { value: "", onChange: NOOP, onSend: NOOP, onStop: NOOP, busy: true })] }), _jsx(Aside, { children: _jsx(Sources, { sources: SOURCES }) }), _jsx("div", { style: { display: 'flex', width: 260, height: 320 }, children: _jsxs(Sidebar, { children: [_jsx(SidebarHeader, { title: "Hanzo", onOpenSwitcher: NOOP, onSearch: NOOP, onCollapse: NOOP }), _jsx(SidebarNewChat, { onPress: NOOP }), _jsxs(SidebarScroll, { children: [_jsxs(SidebarSection, { label: "Today", children: [_jsx(SidebarItem, { active: true, onPress: NOOP, children: "Selected thread" }), _jsx(SidebarItem, { onPress: NOOP, children: "Another thread" })] }), _jsx(SidebarFolder, { name: "Archive", defaultOpen: true, children: _jsx(SidebarItem, { onPress: NOOP, children: "Nested thread" }) })] }), _jsx(SidebarUser, { name: "z", secondary: "z@hanzo.ai", onPress: NOOP, onHelp: NOOP })] }) })] }), _jsxs(Section, { name: "box", children: [_jsx(Box, { className: "flex items-center gap-4 px-6 py-3 rounded-lg border", children: _jsx(CardTitle, { children: "utility classes" }) }), _jsx(Box, { className: "flex-col gap-2 max-w-3xl mx-auto overflow-hidden", children: _jsx(CardTitle, { children: "column" }) })] })] }));
|
|
46
54
|
export default Gallery;
|
|
47
55
|
//# sourceMappingURL=gallery.js.map
|
package/dist/gallery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gallery.js","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAwBZ,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,EACL,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAC5F,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,iBAAiB,EAChF,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EACrF,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EACvF,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAC1E,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EACjF,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EACzE,kBAAkB,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACzF,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAClF,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EACxE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAC/E,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EACpF,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EACvF,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EACpF,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAClF,cAAc,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,GAEhF,MAAM,gBAAgB,CAAA;AAEvB;;2EAE2E;AAC3E,MAAM,MAAM,GACV,0BAA0B;IAC1B,kBAAkB;IAChB,6EAA6E;IAC7E,6EAA6E;IAC7E,gDAAgD;IAChD,mHAAmH,CACpH,CAAA;AAEH,MAAM,eAAe,GAAoB;IACvC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW;CACpG,CAAA;AACD,MAAM,YAAY,GAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AACxF,MAAM,cAAc,GAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;AAEzF;;;oEAGoE;AACpE,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAyC,EAAE,EAAE,CAAC,CAC7E,kCACgB,IAAI,EAClB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,YAEzF,QAAQ,GACD,CACX,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAC3B,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAC3F,MAAC,OAAO,IAAC,IAAI,EAAC,QAAQ,aACnB,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAChC,KAAC,MAAM,IAAe,OAAO,EAAE,OAAO,YACnC,OAAO,IADG,OAAO,CAEX,CACV,CAAC,EACD,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,KAAC,MAAM,IAAY,IAAI,EAAE,IAAI,YAC1B,IAAI,IADM,IAAI,CAER,CACV,CAAC,EACF,KAAC,MAAM,IAAC,QAAQ,+BAAkB,EAClC,KAAC,MAAM,IAAC,SAAS,8BAAiB,IAC1B,EAEV,KAAC,OAAO,IAAC,IAAI,EAAC,OAAO,YAClB,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC/B,KAAC,KAAK,IAAe,OAAO,EAAE,OAAO,YAClC,OAAO,IADE,OAAO,CAEX,CACT,CAAC,GACM,EAEV,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,YAClB,MAAC,IAAI,eACH,MAAC,UAAU,eACT,KAAC,SAAS,6BAAuB,EACjC,KAAC,eAAe,mCAAmC,EACnD,KAAC,UAAU,cACT,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,uBAExB,GACE,IACF,EACb,KAAC,WAAW,+BAA2B,EACvC,KAAC,UAAU,8BAAyB,IAC/B,GACC,EAEV,MAAC,OAAO,IAAC,IAAI,EAAC,MAAM,aAClB,KAAC,KAAK,wBAAc,EACpB,KAAC,KAAK,IAAC,WAAW,EAAC,OAAO,GAAG,EAC7B,KAAC,KAAK,IAAC,WAAW,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,GAAG,EAChD,KAAC,QAAQ,IAAC,WAAW,EAAC,UAAU,GAAG,EACnC,KAAC,QAAQ,KAAG,EACZ,KAAC,QAAQ,IAAC,OAAO,SAAG,EACpB,KAAC,MAAM,KAAG,EACV,KAAC,MAAM,IAAC,OAAO,SAAG,EAClB,KAAC,MAAM,IAAC,YAAY,EAAE,CAAC,EAAE,CAAC,GAAI,EAC9B,KAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,GAAI,EAIvB,MAAC,UAAU,IAAC,YAAY,EAAC,GAAG,aAC1B,KAAC,cAAc,IAAC,KAAK,EAAC,GAAG,GAAG,EAC5B,KAAC,cAAc,IAAC,KAAK,EAAC,GAAG,GAAG,EAC5B,KAAC,cAAc,IAAC,KAAK,EAAC,GAAG,EAAC,QAAQ,SAAG,IAC1B,EACb,MAAC,UAAU,IAAC,WAAW,EAAC,YAAY,EAAC,YAAY,EAAC,GAAG,aACnD,KAAC,cAAc,IAAC,KAAK,EAAC,GAAG,GAAG,EAC5B,KAAC,cAAc,IAAC,KAAK,EAAC,GAAG,GAAG,IACjB,IACL,EAMV,MAAC,OAAO,IAAC,IAAI,EAAC,cAAc,aACxB,CAAC,SAAS,EAAE,SAAS,CAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAChD,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC/C,MAAC,WAAW,IAEV,IAAI,EAAC,QAAQ,EACb,YAAY,EAAC,GAAG,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,aAEV,KAAC,eAAe,IAAC,KAAK,EAAC,GAAG,kBAAoB,EAC9C,KAAC,eAAe,IAAC,KAAK,EAAC,GAAG,kBAAoB,EAC9C,KAAC,eAAe,IAAC,KAAK,EAAC,GAAG,EAAC,QAAQ,wBAEjB,KAVb,GAAG,OAAO,IAAI,IAAI,EAAE,CAWb,CACf,CAAC,CACH,EACD,MAAC,WAAW,IAAC,IAAI,EAAC,UAAU,EAAC,YAAY,EAAE,CAAC,GAAG,CAAC,aAC9C,KAAC,eAAe,IAAC,KAAK,EAAC,GAAG,kBAAoB,EAC9C,KAAC,eAAe,IAAC,KAAK,EAAC,GAAG,kBAAoB,IAClC,EACd,MAAC,WAAW,IAAC,IAAI,EAAC,QAAQ,EAAC,WAAW,EAAC,UAAU,EAAC,YAAY,EAAC,GAAG,aAChE,KAAC,eAAe,IAAC,KAAK,EAAC,GAAG,kBAAoB,EAC9C,KAAC,eAAe,IAAC,KAAK,EAAC,GAAG,kBAAoB,IAClC,IACN,EAIV,KAAC,OAAO,IAAC,IAAI,EAAC,WAAW,YACvB,MAAC,SAAS,IAAC,IAAI,EAAC,QAAQ,EAAC,WAAW,QAAC,YAAY,EAAC,KAAK,aACrD,MAAC,aAAa,IAAC,KAAK,EAAC,KAAK,aACxB,KAAC,gBAAgB,oCAAqC,EACtD,KAAC,gBAAgB,oCAAqC,IACxC,EAChB,MAAC,aAAa,IAAC,KAAK,EAAC,KAAK,aACxB,KAAC,gBAAgB,iCAAkC,EACnD,KAAC,gBAAgB,iCAAkC,IACrC,IACN,GACJ,EAEV,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,YAClB,MAAC,IAAI,IAAC,YAAY,EAAC,KAAK,aACtB,MAAC,QAAQ,eACP,KAAC,WAAW,IAAC,KAAK,EAAC,KAAK,oBAAkB,EAC1C,KAAC,WAAW,IAAC,KAAK,EAAC,KAAK,oBAAkB,IACjC,EACX,KAAC,WAAW,IAAC,KAAK,EAAC,KAAK,0BAAwB,IAC3C,GACC,EAEV,MAAC,OAAO,IAAC,IAAI,EAAC,SAAS,aACrB,KAAC,SAAS,KAAG,EACb,KAAC,WAAW,IAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAI,EAC9B,KAAC,MAAM,cACL,KAAC,cAAc,qBAAoB,GAC5B,EACT,KAAC,UAAU,IAAC,MAAM,EAAE,EAAE,4BAA0B,EAChD,MAAC,mBAAmB,IAAC,SAAS,EAAC,YAAY,aACzC,KAAC,cAAc,KAAG,EAClB,KAAC,eAAe,KAAG,EACnB,KAAC,cAAc,KAAG,IACE,IACd,EAEV,KAAC,OAAO,IAAC,IAAI,EAAC,SAAS,YACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC9B,KAAC,OAAO,IAAY,IAAI,EAAE,IAAI,IAAhB,IAAI,CAAgB,CACnC,CAAC,GACM,EAEV,KAAC,OAAO,IAAC,IAAI,EAAC,aAAa,YACzB,MAAC,WAAW,IAAC,IAAI,mBACf,KAAC,kBAAkB,sCAAyC,EAC5D,KAAC,kBAAkB,sCAAyC,IAChD,GACN,EAEV,MAAC,OAAO,IAAC,IAAI,EAAC,SAAS,aACrB,MAAC,OAAO,eACN,KAAC,YAAY,KAAG,EAChB,MAAC,WAAW,eACV,KAAC,YAAY,6BAA0B,EACvC,KAAC,YAAY,IAAC,OAAO,EAAC,OAAO,YAC3B,MAAC,WAAW,IAAC,KAAK,EAAC,GAAG,qBAChB,KAAC,eAAe,0BAAqB,IAC7B,GACD,EACf,KAAC,gBAAgB,KAAG,IACR,IACN,EAQV,MAAC,aAAa,IACZ,IAAI,QACJ,YAAY,EAAC,OAAO,EACpB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;wBACnB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAA;wBAC5D,IAAI,EAAE;4BAAE,EAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;oBACrD,CAAC,aAED,KAAC,YAAY,KAAG,EAChB,MAAC,WAAW,eACV,KAAC,YAAY,6BAA0B,EACvC,MAAC,YAAY,IAAC,OAAO,EAAC,SAAS,aAC7B,KAAC,WAAW,IAAC,KAAK,EAAC,OAAO,sBAAoB,EAC9C,KAAC,WAAW,IAAC,KAAK,EAAC,MAAM,qBAAmB,EAC5C,KAAC,WAAW,IAAC,KAAK,EAAC,OAAO,sBAAoB,IACjC,IACH,IACA,EAChB,wCAA4B,EAAE,GAAG,IACzB,EAIV,MAAC,OAAO,IAAC,IAAI,EAAC,SAAS,aACrB,KAAC,MAAM,IAAC,IAAI,kBACV,MAAC,aAAa,eACZ,MAAC,YAAY,eACX,KAAC,WAAW,+BAA2B,EACvC,KAAC,iBAAiB,qCAAuC,IAC5C,EACf,KAAC,YAAY,cACX,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,mBAAY,GAChB,IACD,GACT,EACT,MAAC,YAAY,IAAC,IAAI,mBAChB,KAAC,mBAAmB,uBAA2B,EAC/C,MAAC,mBAAmB,eAClB,KAAC,iBAAiB,wBAA0B,EAC5C,KAAC,qBAAqB,KAAG,EACzB,KAAC,gBAAgB,uBAAwB,IACrB,IACT,EACf,MAAC,OAAO,IAAC,IAAI,mBACX,KAAC,cAAc,0BAAyB,EACxC,KAAC,cAAc,kCAAiC,IACxC,EACV,MAAC,MAAM,IAAC,IAAI,mBACV,KAAC,aAAa,cACZ,KAAC,WAAW,IAAC,WAAW,EAAC,QAAQ,GAAG,GACtB,EAChB,KAAC,aAAa,cACZ,KAAC,UAAU,IAAC,KAAK,EAAC,GAAG,EAAC,KAAK,EAAE,CAAC,uBAEjB,GACC,IACT,EACT,KAAC,eAAe,IAAC,KAAK,EAAE,CAAC,YACvB,MAAC,OAAO,IAAC,IAAI,mBACX,KAAC,cAAc,0BAAyB,EACxC,KAAC,cAAc,kCAAiC,IACxC,GACM,EAClB,KAAC,WAAW,IAAC,IAAI,kBACf,MAAC,kBAAkB,eACjB,MAAC,iBAAiB,eAChB,KAAC,gBAAgB,8BAA+B,EAChD,KAAC,sBAAsB,oCAA2C,IAChD,EACpB,MAAC,iBAAiB,eAChB,KAAC,iBAAiB,yBAA2B,EAC7C,KAAC,iBAAiB,IAAC,OAAO,EAAC,aAAa,uBAA2B,IACjD,IACD,GACT,EACd,MAAC,SAAS,IAAC,IAAI,mBACb,KAAC,gBAAgB,6BAA8B,EAC/C,KAAC,gBAAgB,qCAAsC,IAC7C,EAOZ,MAAC,WAAW,eACV,KAAC,kBAAkB,+BAAkC,EACrD,MAAC,kBAAkB,eACjB,KAAC,gBAAgB,wBAAyB,EAC1C,KAAC,oBAAoB,KAAG,EACxB,KAAC,eAAe,uBAAuB,IACpB,IACT,EACd,KAAC,OAAO,KAAG,IACH,EACV,MAAC,OAAO,IAAC,IAAI,EAAC,QAAQ,aAKpB,KAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC,IAAI,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAY,MAAM,YAChE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChC,MAAC,IAAI,eACH,KAAC,SAAS,IAAC,KAAK,EAAE,EAAE,GAAG,EAAE,YACvB,cAAK,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC,EAAE,GAAG,GACjB,EACZ,MAAC,UAAU,eACT,MAAC,SAAS,wBAAO,CAAC,IAAa,EAC/B,KAAC,eAAe,kEAAkE,IACvE,KAPJ,CAAC,CAQL,CACR,CAAC,GACG,EAKP,KAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAC,IAAI,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAY,QAAQ,YAC1E,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC7B,KAAC,IAAI,cAAS,MAAC,WAAW,uBAAM,CAAC,IAAe,IAArC,CAAC,CAA2C,CACxD,CAAC,GACG,EAMP,MAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC,IAAI,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAY,MAAM,aACjE,KAAC,IAAI,cAAC,KAAC,WAAW,uBAAmB,GAAO,EAC5C,KAAC,IAAI,cAAC,KAAC,WAAW,uBAAmB,GAAO,IACvC,EAOP,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAC/C,MAAC,IAAI,IAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAC,IAAI,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAY,OAAO,aACjE,KAAC,IAAI,cAAC,KAAC,WAAW,wBAAoB,GAAO,EAC7C,KAAC,IAAI,cACH,KAAC,WAAW,cAKV,eAAM,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,iEAE9B,GACK,GACT,EACP,KAAC,IAAI,cAAC,KAAC,WAAW,wBAAoB,GAAO,IACxC,GACH,EAGN,4BACY,QAAQ,EAClB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAE5E,KAAC,IAAI,iBAAW,MAAM,YAAC,KAAC,WAAW,2BAAuB,GAAO,EACjE,MAAC,IAAI,iBAAW,KAAK,aACnB,KAAC,WAAW,2BAAuB,EACnC,KAAC,WAAW,2BAAuB,EACnC,KAAC,WAAW,6BAAyB,EACrC,KAAC,WAAW,4BAAwB,IAC/B,IACH,EAEN,KAAC,IAAI,IAAC,WAAW,qBAAW,aAAa,YACvC,KAAC,UAAU,cAAC,KAAC,SAAS,mCAA6B,GAAa,GAC3D,EAEP,KAAC,WAAW,IAAC,QAAQ,EAAE,GAAG,kBAAe,MAAM,YAC7C,KAAC,SAAS,0BAAoB,GAClB,EAQd,KAAC,SAAS,IAAC,UAAU,EAAC,OAAO,eAAW,MAAM,2BAAuB,EAErE,KAAC,MAAM,mBAAa,aAAa,YAC/B,yCAAuB,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAI,GACxE,IACD,EAIV,KAAC,OAAO,IAAC,IAAI,EAAC,WAAW,YAOvB,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAC3F,KAAC,SAAS,IACR,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAC,SAAS,uBAAiB,EAAE,CAAC,EAAE,EACvF,KAAK,EAAE;wBACL,IAAI,EAAE;4BACJ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAC,SAAS,uBAAiB,EAAE;4BACxE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAC,SAAS,0BAAoB,EAAE;yBAC7E;qBACF,EACD,MAAM,EAAE;wBACN,IAAI,EAAE;4BACJ,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAC,SAAS,0BAAoB,EAAE;yBAC9F;qBACF,YAED,KAAC,SAAS,yBAAmB,GACnB,GACR,GACE,EAUV,MAAC,OAAO,IAAC,IAAI,EAAC,sBAAsB,aAClC,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,aAC3E,KAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,GAAI,EACxB,KAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAC,IAAI,GAAG,EAClD,KAAC,QAAQ,CAAC,IAAI,IAAC,KAAK,EAAE,CAAC,GAAI,IACvB,EACN,KAAC,aAAa,IAAC,WAAW,EAAC,mBAAmB,YAC5C,KAAC,MAAM,yBAAgB,GACT,EAGhB,KAAC,MAAM,IAAC,IAAI,kBACV,KAAC,cAAc,IACb,KAAK,EAAC,cAAc,EACpB,WAAW,EAAC,6CAA6C,EACzD,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,YAE5C,KAAC,SAAS,uBAAiB,GACZ,GACV,IACD,EAIV,MAAC,OAAO,IAAC,IAAI,EAAC,KAAK,aACjB,KAAC,GAAG,IAAC,SAAS,EAAC,qDAAqD,YAClE,KAAC,SAAS,kCAA4B,GAClC,EACN,KAAC,GAAG,IAAC,SAAS,EAAC,kDAAkD,YAC/D,KAAC,SAAS,yBAAmB,GACzB,IACE,IAEN,CACP,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
1
|
+
{"version":3,"file":"gallery.js","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"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"}
|
package/dist/styles.css
CHANGED
|
@@ -2166,21 +2166,27 @@
|
|
|
2166
2166
|
:root ._bblr-100000px{border-bottom-left-radius:100000px;}
|
|
2167
2167
|
:root ._bblr-1000px{border-bottom-left-radius:1000px;}
|
|
2168
2168
|
:root ._bblr-10px{border-bottom-left-radius:10px;}
|
|
2169
|
+
:root ._bblr-1px{border-bottom-left-radius:1px;}
|
|
2169
2170
|
:root ._bblr-7px{border-bottom-left-radius:7px;}
|
|
2171
|
+
:root ._bblr-9999px{border-bottom-left-radius:9999px;}
|
|
2170
2172
|
:root ._bblr-c-radius-10{border-bottom-left-radius:var(--c-radius-10);}
|
|
2171
2173
|
:root ._bblr-c-radius-2{border-bottom-left-radius:var(--c-radius-2);}
|
|
2172
2174
|
:root ._bblr-c-radius-3{border-bottom-left-radius:var(--c-radius-3);}
|
|
2173
2175
|
:root ._bblr-c-radius-4{border-bottom-left-radius:var(--c-radius-4);}
|
|
2176
|
+
:root ._bblr-c-radius-5{border-bottom-left-radius:var(--c-radius-5);}
|
|
2174
2177
|
:root ._bblr-c-radius-6{border-bottom-left-radius:var(--c-radius-6);}
|
|
2175
2178
|
:root ._bblr-radius-lg0--71290927033{border-bottom-left-radius:var(--radius-lg, 0.75rem);}
|
|
2176
2179
|
:root ._bbrr-100000px{border-bottom-right-radius:100000px;}
|
|
2177
2180
|
:root ._bbrr-1000px{border-bottom-right-radius:1000px;}
|
|
2178
2181
|
:root ._bbrr-10px{border-bottom-right-radius:10px;}
|
|
2182
|
+
:root ._bbrr-1px{border-bottom-right-radius:1px;}
|
|
2179
2183
|
:root ._bbrr-7px{border-bottom-right-radius:7px;}
|
|
2184
|
+
:root ._bbrr-9999px{border-bottom-right-radius:9999px;}
|
|
2180
2185
|
:root ._bbrr-c-radius-10{border-bottom-right-radius:var(--c-radius-10);}
|
|
2181
2186
|
:root ._bbrr-c-radius-2{border-bottom-right-radius:var(--c-radius-2);}
|
|
2182
2187
|
:root ._bbrr-c-radius-3{border-bottom-right-radius:var(--c-radius-3);}
|
|
2183
2188
|
:root ._bbrr-c-radius-4{border-bottom-right-radius:var(--c-radius-4);}
|
|
2189
|
+
:root ._bbrr-c-radius-5{border-bottom-right-radius:var(--c-radius-5);}
|
|
2184
2190
|
:root ._bbrr-c-radius-6{border-bottom-right-radius:var(--c-radius-6);}
|
|
2185
2191
|
:root ._bbrr-radius-lg0--71290927033{border-bottom-right-radius:var(--radius-lg, 0.75rem);}
|
|
2186
2192
|
:root ._bbs-solid._bbs-solid{border-bottom-style:solid;}
|
|
@@ -2188,6 +2194,7 @@
|
|
|
2188
2194
|
:root:root:root ._bg-0active-backgroundF3405682:active{background-color:var(--backgroundFocus) !important;}
|
|
2189
2195
|
:root:root:root ._bg-0active-backgroundP3496915:active{background-color:var(--backgroundPress) !important;}
|
|
2190
2196
|
:root:root:root ._bg-0active-color3:active{background-color:var(--color3) !important;}
|
|
2197
|
+
:root:root:root ._bg-0active-color5:active{background-color:var(--color5) !important;}
|
|
2191
2198
|
:root:root:root:root ._bg-0focus-backgroundH3423444:focus{background-color:var(--backgroundHover) !important;}
|
|
2192
2199
|
:root:root:root:root ._bg-0focus-color3:focus{background-color:var(--color3) !important;}
|
|
2193
2200
|
:root:root:root:root ._bg-0focus-color4:focus{background-color:var(--color4) !important;}
|
|
@@ -2234,6 +2241,7 @@
|
|
|
2234
2241
|
:root ._borderBottomColor-color12._borderBottomColor-color12{border-bottom-color:var(--color12);}
|
|
2235
2242
|
:root ._borderBottomColor-color6._borderBottomColor-color6{border-bottom-color:var(--color6);}
|
|
2236
2243
|
:root ._borderBottomColor-color7._borderBottomColor-color7{border-bottom-color:var(--color7);}
|
|
2244
|
+
:root ._borderBottomColor-color9._borderBottomColor-color9{border-bottom-color:var(--color9);}
|
|
2237
2245
|
:root ._borderBottomColor-transparent._borderBottomColor-transparent{border-bottom-color:transparent;}
|
|
2238
2246
|
:root ._borderBottomWidth-0px._borderBottomWidth-0px{border-bottom-width:0px;}
|
|
2239
2247
|
:root ._borderBottomWidth-1px._borderBottomWidth-1px{border-bottom-width:1px;}
|
|
@@ -2256,6 +2264,7 @@
|
|
|
2256
2264
|
:root ._borderLeftColor-color12._borderLeftColor-color12{border-left-color:var(--color12);}
|
|
2257
2265
|
:root ._borderLeftColor-color6._borderLeftColor-color6{border-left-color:var(--color6);}
|
|
2258
2266
|
:root ._borderLeftColor-color7._borderLeftColor-color7{border-left-color:var(--color7);}
|
|
2267
|
+
:root ._borderLeftColor-color9._borderLeftColor-color9{border-left-color:var(--color9);}
|
|
2259
2268
|
:root ._borderLeftColor-transparent._borderLeftColor-transparent{border-left-color:transparent;}
|
|
2260
2269
|
:root ._borderLeftWidth-0px._borderLeftWidth-0px{border-left-width:0px;}
|
|
2261
2270
|
:root ._borderLeftWidth-1px._borderLeftWidth-1px{border-left-width:1px;}
|
|
@@ -2278,6 +2287,7 @@
|
|
|
2278
2287
|
:root ._brc-color12._brc-color12{border-right-color:var(--color12);}
|
|
2279
2288
|
:root ._brc-color6._brc-color6{border-right-color:var(--color6);}
|
|
2280
2289
|
:root ._brc-color7._brc-color7{border-right-color:var(--color7);}
|
|
2290
|
+
:root ._brc-color9._brc-color9{border-right-color:var(--color9);}
|
|
2281
2291
|
:root ._brc-transparent._brc-transparent{border-right-color:transparent;}
|
|
2282
2292
|
:root ._brs-solid._brs-solid{border-right-style:solid;}
|
|
2283
2293
|
:root ._brw-0px._brw-0px{border-right-width:0px;}
|
|
@@ -2301,25 +2311,32 @@
|
|
|
2301
2311
|
:root ._btc-color12._btc-color12{border-top-color:var(--color12);}
|
|
2302
2312
|
:root ._btc-color6._btc-color6{border-top-color:var(--color6);}
|
|
2303
2313
|
:root ._btc-color7._btc-color7{border-top-color:var(--color7);}
|
|
2314
|
+
:root ._btc-color9._btc-color9{border-top-color:var(--color9);}
|
|
2304
2315
|
:root ._btc-transparent._btc-transparent{border-top-color:transparent;}
|
|
2305
2316
|
:root ._btlr-100000px{border-top-left-radius:100000px;}
|
|
2306
2317
|
:root ._btlr-1000px{border-top-left-radius:1000px;}
|
|
2307
2318
|
:root ._btlr-10px{border-top-left-radius:10px;}
|
|
2319
|
+
:root ._btlr-1px{border-top-left-radius:1px;}
|
|
2308
2320
|
:root ._btlr-7px{border-top-left-radius:7px;}
|
|
2321
|
+
:root ._btlr-9999px{border-top-left-radius:9999px;}
|
|
2309
2322
|
:root ._btlr-c-radius-10{border-top-left-radius:var(--c-radius-10);}
|
|
2310
2323
|
:root ._btlr-c-radius-2{border-top-left-radius:var(--c-radius-2);}
|
|
2311
2324
|
:root ._btlr-c-radius-3{border-top-left-radius:var(--c-radius-3);}
|
|
2312
2325
|
:root ._btlr-c-radius-4{border-top-left-radius:var(--c-radius-4);}
|
|
2326
|
+
:root ._btlr-c-radius-5{border-top-left-radius:var(--c-radius-5);}
|
|
2313
2327
|
:root ._btlr-c-radius-6{border-top-left-radius:var(--c-radius-6);}
|
|
2314
2328
|
:root ._btlr-radius-lg0--71290927033{border-top-left-radius:var(--radius-lg, 0.75rem);}
|
|
2315
2329
|
:root ._btrr-100000px{border-top-right-radius:100000px;}
|
|
2316
2330
|
:root ._btrr-1000px{border-top-right-radius:1000px;}
|
|
2317
2331
|
:root ._btrr-10px{border-top-right-radius:10px;}
|
|
2332
|
+
:root ._btrr-1px{border-top-right-radius:1px;}
|
|
2318
2333
|
:root ._btrr-7px{border-top-right-radius:7px;}
|
|
2334
|
+
:root ._btrr-9999px{border-top-right-radius:9999px;}
|
|
2319
2335
|
:root ._btrr-c-radius-10{border-top-right-radius:var(--c-radius-10);}
|
|
2320
2336
|
:root ._btrr-c-radius-2{border-top-right-radius:var(--c-radius-2);}
|
|
2321
2337
|
:root ._btrr-c-radius-3{border-top-right-radius:var(--c-radius-3);}
|
|
2322
2338
|
:root ._btrr-c-radius-4{border-top-right-radius:var(--c-radius-4);}
|
|
2339
|
+
:root ._btrr-c-radius-5{border-top-right-radius:var(--c-radius-5);}
|
|
2323
2340
|
:root ._btrr-c-radius-6{border-top-right-radius:var(--c-radius-6);}
|
|
2324
2341
|
:root ._btrr-radius-lg0--71290927033{border-top-right-radius:var(--radius-lg, 0.75rem);}
|
|
2325
2342
|
:root ._bts-solid._bts-solid{border-top-style:solid;}
|
|
@@ -2330,8 +2347,10 @@
|
|
|
2330
2347
|
@media (hover) {:root:root ._col-0hover-color12:hover{color:var(--color12) !important;}}
|
|
2331
2348
|
:root ._col-color{color:var(--color);}
|
|
2332
2349
|
:root ._col-color1{color:var(--color1);}
|
|
2350
|
+
:root ._col-color10{color:var(--color10);}
|
|
2333
2351
|
:root ._col-color11{color:var(--color11);}
|
|
2334
2352
|
:root ._col-color12{color:var(--color12);}
|
|
2353
|
+
:root ._col-color9{color:var(--color9);}
|
|
2335
2354
|
:root ._col-white1{color:var(--white1);}
|
|
2336
2355
|
:root:root ._cur-_platformweb_pointer{cursor:pointer;}
|
|
2337
2356
|
:root ._cur-col-resize{cursor:col-resize;}
|
|
@@ -2360,26 +2379,33 @@
|
|
|
2360
2379
|
:root ._fw-f-weight-3{font-weight:var(--f-weight-3);}
|
|
2361
2380
|
:root ._fw-f-weight-4{font-weight:var(--f-weight-4);}
|
|
2362
2381
|
:root ._fwr-nowrap{flex-wrap:nowrap;}
|
|
2382
|
+
:root ._fwr-wrap{flex-wrap:wrap;}
|
|
2363
2383
|
:root ._gap-16px{gap:16px;}
|
|
2364
2384
|
:root ._gap-24px{gap:24px;}
|
|
2365
2385
|
:root ._gap-2px{gap:2px;}
|
|
2366
2386
|
:root ._gap-6px{gap:6px;}
|
|
2367
2387
|
:root ._gap-8px{gap:8px;}
|
|
2388
|
+
:root ._gap-c-space-0--53{gap:var(--c-space-0--5);}
|
|
2368
2389
|
:root ._gap-c-space-1{gap:var(--c-space-1);}
|
|
2369
2390
|
:root ._gap-c-space-1--53{gap:var(--c-space-1--5);}
|
|
2370
2391
|
:root ._gap-c-space-2{gap:var(--c-space-2);}
|
|
2392
|
+
:root ._gap-c-space-3{gap:var(--c-space-3);}
|
|
2371
2393
|
:root ._grow-0{flex-grow:0;}
|
|
2372
2394
|
:root ._grow-1{flex-grow:1;}
|
|
2373
2395
|
:root ._grow-50{flex-grow:50;}
|
|
2374
2396
|
:root ._height-0px{height:0px;}
|
|
2375
2397
|
:root ._height-10037{height:100%;}
|
|
2398
|
+
:root ._height-15px{height:15px;}
|
|
2376
2399
|
:root ._height-16px{height:16px;}
|
|
2377
2400
|
:root ._height-20px{height:20px;}
|
|
2378
2401
|
:root ._height-220px{height:220px;}
|
|
2402
|
+
:root ._height-24px{height:24px;}
|
|
2403
|
+
:root ._height-28px{height:28px;}
|
|
2379
2404
|
:root ._height-32px{height:32px;}
|
|
2380
2405
|
:root ._height-36px{height:36px;}
|
|
2381
2406
|
:root ._height-40px{height:40px;}
|
|
2382
2407
|
:root ._height-44px{height:44px;}
|
|
2408
|
+
:root ._height-48px{height:48px;}
|
|
2383
2409
|
:root ._height-5px{height:5px;}
|
|
2384
2410
|
:root ._height-6px{height:6px;}
|
|
2385
2411
|
:root ._height-72px{height:72px;}
|
|
@@ -2393,10 +2419,13 @@
|
|
|
2393
2419
|
:root ._items-center{align-items:center;}
|
|
2394
2420
|
:root ._items-flex-start{align-items:flex-start;}
|
|
2395
2421
|
:root ._justify-center{justify-content:center;}
|
|
2422
|
+
:root ._justify-flex-end{justify-content:flex-end;}
|
|
2423
|
+
:root ._justify-flex-start{justify-content:flex-start;}
|
|
2396
2424
|
:root ._justify-space-betwe3241{justify-content:space-between;}
|
|
2397
2425
|
:root ._l-037{left:0%;}
|
|
2398
2426
|
:root ._l-0px{left:0px;}
|
|
2399
2427
|
:root ._l-4037{left:40%;}
|
|
2428
|
+
:root ._lh-20px{line-height:20px;}
|
|
2400
2429
|
:root ._lh-c-size-true{line-height:var(--c-size-true);}
|
|
2401
2430
|
:root ._lh-f-lineHeigh112920{line-height:var(--f-lineHeight-1);}
|
|
2402
2431
|
:root ._lh-f-lineHeigh112921{line-height:var(--f-lineHeight-2);}
|
|
@@ -2420,6 +2449,7 @@
|
|
|
2420
2449
|
:root ._maxW-32px{max-width:32px;}
|
|
2421
2450
|
:root ._maxW-600px{max-width:600px;}
|
|
2422
2451
|
:root ._maxW-768px{max-width:768px;}
|
|
2452
|
+
:root ._maxW-8537{max-width:85%;}
|
|
2423
2453
|
:root ._maxW-c-size-1{max-width:var(--c-size-1);}
|
|
2424
2454
|
:root ._mb-0px{margin-bottom:0px;}
|
|
2425
2455
|
:root ._minH-16px{min-height:16px;}
|
|
@@ -2445,13 +2475,17 @@
|
|
|
2445
2475
|
:root ._mr-auto{margin-right:auto;}
|
|
2446
2476
|
:root ._mt--24px{margin-top:-24px;}
|
|
2447
2477
|
:root ._mt-0px{margin-top:0px;}
|
|
2478
|
+
:root ._mt-c-space-1{margin-top:var(--c-space-1);}
|
|
2479
|
+
:root ._mt-c-space-3{margin-top:var(--c-space-3);}
|
|
2448
2480
|
:root ._o-0{opacity:0;}
|
|
2449
2481
|
:root ._o-0--4{opacity:0.4;}
|
|
2450
2482
|
:root ._o-0--5{opacity:0.5;}
|
|
2451
2483
|
:root ._o-0--6{opacity:0.6;}
|
|
2452
2484
|
:root ._o-0--7{opacity:0.7;}
|
|
2485
|
+
:root ._o-0--8{opacity:0.8;}
|
|
2453
2486
|
@media (hover) {:root:root ._o-0hover-0--8:hover{opacity:0.8 !important;}}
|
|
2454
2487
|
@media (hover) {:root:root ._o-0hover-0--9:hover{opacity:0.9 !important;}}
|
|
2488
|
+
@media (hover) {:root:root ._o-0hover-1:hover{opacity:1 !important;}}
|
|
2455
2489
|
:root ._o-1{opacity:1;}
|
|
2456
2490
|
:root:root:root:root ._outlineColor-0focus-color8._outlineColor-0focus-color8:focus{outline-color:var(--color8) !important;}
|
|
2457
2491
|
:root:root:root:root ._outlineColor-0focus-visible-outlineColo114._outlineColor-0focus-visible-outlineColo114:focus-visible{outline-color:var(--outlineColor) !important;}
|
|
@@ -2470,12 +2504,14 @@
|
|
|
2470
2504
|
:root ._pb-24px{padding-bottom:24px;}
|
|
2471
2505
|
:root ._pb-2px{padding-bottom:2px;}
|
|
2472
2506
|
:root ._pb-3px{padding-bottom:3px;}
|
|
2507
|
+
:root ._pb-8px{padding-bottom:8px;}
|
|
2473
2508
|
@media (min-width: 768px){:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root ._pb-_md_c-space-8{padding-bottom:var(--c-space-8);}}
|
|
2474
2509
|
:root ._pb-c-space--3-1448{padding-bottom:var(--c-space--3--5);}
|
|
2475
2510
|
:root ._pb-c-space-1{padding-bottom:var(--c-space-1);}
|
|
2476
2511
|
:root ._pb-c-space-1--53{padding-bottom:var(--c-space-1--5);}
|
|
2477
2512
|
:root ._pb-c-space-11{padding-bottom:var(--c-space-11);}
|
|
2478
2513
|
:root ._pb-c-space-2{padding-bottom:var(--c-space-2);}
|
|
2514
|
+
:root ._pb-c-space-2--53{padding-bottom:var(--c-space-2--5);}
|
|
2479
2515
|
:root ._pb-c-space-3{padding-bottom:var(--c-space-3);}
|
|
2480
2516
|
:root ._pb-c-space-3--53{padding-bottom:var(--c-space-3--5);}
|
|
2481
2517
|
:root ._pb-c-space-4{padding-bottom:var(--c-space-4);}
|
|
@@ -2487,6 +2523,7 @@
|
|
|
2487
2523
|
:root ._pl-24px{padding-left:24px;}
|
|
2488
2524
|
:root ._pl-2px{padding-left:2px;}
|
|
2489
2525
|
:root ._pl-3px{padding-left:3px;}
|
|
2526
|
+
:root ._pl-8px{padding-left:8px;}
|
|
2490
2527
|
@media (min-width: 768px){:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root ._pl-_md_c-space-4{padding-left:var(--c-space-4);}}
|
|
2491
2528
|
:root ._pl-c-space-1{padding-left:var(--c-space-1);}
|
|
2492
2529
|
:root ._pl-c-space-2{padding-left:var(--c-space-2);}
|
|
@@ -2504,6 +2541,7 @@
|
|
|
2504
2541
|
:root ._pr-2px{padding-right:2px;}
|
|
2505
2542
|
:root ._pr-36px{padding-right:36px;}
|
|
2506
2543
|
:root ._pr-3px{padding-right:3px;}
|
|
2544
|
+
:root ._pr-8px{padding-right:8px;}
|
|
2507
2545
|
@media (min-width: 768px){:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root ._pr-_md_c-space-4{padding-right:var(--c-space-4);}}
|
|
2508
2546
|
:root ._pr-c-space-1{padding-right:var(--c-space-1);}
|
|
2509
2547
|
:root ._pr-c-space-2{padding-right:var(--c-space-2);}
|
|
@@ -2518,12 +2556,15 @@
|
|
|
2518
2556
|
:root ._pt-24px{padding-top:24px;}
|
|
2519
2557
|
:root ._pt-2px{padding-top:2px;}
|
|
2520
2558
|
:root ._pt-3px{padding-top:3px;}
|
|
2559
|
+
:root ._pt-8px{padding-top:8px;}
|
|
2521
2560
|
@media (min-width: 768px){:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root:root ._pt-_md_c-space-8{padding-top:var(--c-space-8);}}
|
|
2522
2561
|
:root ._pt-c-space--3-1448{padding-top:var(--c-space--3--5);}
|
|
2523
2562
|
:root ._pt-c-space-1{padding-top:var(--c-space-1);}
|
|
2524
2563
|
:root ._pt-c-space-1--53{padding-top:var(--c-space-1--5);}
|
|
2525
2564
|
:root ._pt-c-space-11{padding-top:var(--c-space-11);}
|
|
2526
2565
|
:root ._pt-c-space-2{padding-top:var(--c-space-2);}
|
|
2566
|
+
:root ._pt-c-space-2--53{padding-top:var(--c-space-2--5);}
|
|
2567
|
+
:root ._pt-c-space-3{padding-top:var(--c-space-3);}
|
|
2527
2568
|
:root ._pt-c-space-3--53{padding-top:var(--c-space-3--5);}
|
|
2528
2569
|
:root ._pt-c-space-4{padding-top:var(--c-space-4);}
|
|
2529
2570
|
:root ._r-0px{right:0px;}
|
|
@@ -2540,6 +2581,7 @@
|
|
|
2540
2581
|
:root ._t-0px{top:0px;}
|
|
2541
2582
|
:root ._t-5037{top:50%;}
|
|
2542
2583
|
@media (hover) {:root:root ._td-0hover-underline:hover{text-decoration-line:underline !important;}}
|
|
2584
|
+
:root ._text-center{text-align:center;}
|
|
2543
2585
|
:root ._textOverflow-ellipsis{text-overflow:ellipsis;}
|
|
2544
2586
|
:root ._tr-rotate0deg1281{transform:rotate(0deg);}
|
|
2545
2587
|
:root ._tr-rotate180de41674{transform:rotate(180deg);}
|
|
@@ -2554,9 +2596,15 @@
|
|
|
2554
2596
|
:root ._width-10037{width:100%;}
|
|
2555
2597
|
:root ._width-10px{width:10px;}
|
|
2556
2598
|
:root ._width-120px{width:120px;}
|
|
2599
|
+
:root ._width-14px{width:14px;}
|
|
2557
2600
|
:root ._width-16px{width:16px;}
|
|
2558
2601
|
:root ._width-20037{width:200%;}
|
|
2602
|
+
:root ._width-24px{width:24px;}
|
|
2559
2603
|
:root ._width-260px{width:260px;}
|
|
2604
|
+
:root ._width-264px{width:264px;}
|
|
2605
|
+
:root ._width-28px{width:28px;}
|
|
2606
|
+
:root ._width-2px{width:2px;}
|
|
2607
|
+
:root ._width-320px{width:320px;}
|
|
2560
2608
|
:root ._width-32px{width:32px;}
|
|
2561
2609
|
:root ._width-36px{width:36px;}
|
|
2562
2610
|
:root ._width-380px{width:380px;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzo/ui",
|
|
3
|
-
"version": "8.1.
|
|
3
|
+
"version": "8.1.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": {
|