@hanzo/ui 8.29.43 → 8.29.45
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/backends/gui/plate.cjs +18 -0
- package/dist/backends/gui/plate.d.ts +5 -0
- package/dist/backends/gui/plate.d.ts.map +1 -0
- package/dist/backends/gui/plate.js +16 -0
- package/dist/backends/gui/plate.js.map +1 -0
- package/dist/framework/CollectionBuilder.cjs +2 -1
- package/dist/framework/CollectionBuilder.d.ts.map +1 -1
- package/dist/framework/CollectionBuilder.js +2 -1
- package/dist/framework/CollectionBuilder.js.map +1 -1
- package/dist/framework/DocTypeDetail.cjs +3 -2
- package/dist/framework/DocTypeDetail.d.ts.map +1 -1
- package/dist/framework/DocTypeDetail.js +2 -1
- package/dist/framework/DocTypeDetail.js.map +1 -1
- package/dist/framework/MediaGrid.d.ts.map +1 -1
- package/dist/framework/MediaGrid.js.map +1 -1
- package/dist/framework/RecordCards.cjs +3 -2
- package/dist/framework/RecordCards.d.ts.map +1 -1
- package/dist/framework/RecordCards.js +2 -1
- package/dist/framework/RecordCards.js.map +1 -1
- package/dist/framework/parts.cjs +3 -2
- package/dist/framework/parts.d.ts.map +1 -1
- package/dist/framework/parts.js +2 -1
- package/dist/framework/parts.js.map +1 -1
- package/dist/gallery.html +2 -2
- package/dist/marketing/ClosingCta.cjs +8 -2
- package/dist/marketing/ClosingCta.d.ts.map +1 -1
- package/dist/marketing/ClosingCta.js +8 -2
- package/dist/marketing/ClosingCta.js.map +1 -1
- package/dist/product/BackendState.cjs +2 -1
- package/dist/product/BackendState.d.ts.map +1 -1
- package/dist/product/BackendState.js +3 -2
- package/dist/product/BackendState.js.map +1 -1
- package/dist/product/EmptyState.cjs +2 -1
- package/dist/product/EmptyState.d.ts.map +1 -1
- package/dist/product/EmptyState.js +3 -2
- package/dist/product/EmptyState.js.map +1 -1
- package/dist/product/LimitedBanner.cjs +3 -3
- package/dist/product/LimitedBanner.d.ts +10 -1
- package/dist/product/LimitedBanner.d.ts.map +1 -1
- package/dist/product/LimitedBanner.js +3 -3
- package/dist/product/LimitedBanner.js.map +1 -1
- package/dist/product/Metric.cjs +3 -2
- package/dist/product/Metric.d.ts.map +1 -1
- package/dist/product/Metric.js +2 -1
- package/dist/product/Metric.js.map +1 -1
- package/dist/product/Toast.cjs +2 -1
- package/dist/product/Toast.d.ts.map +1 -1
- package/dist/product/Toast.js +3 -2
- package/dist/product/Toast.js.map +1 -1
- package/dist/product/limits.cjs +18 -8
- package/dist/product/limits.d.ts +3 -2
- package/dist/product/limits.d.ts.map +1 -1
- package/dist/product/limits.js +18 -8
- package/dist/product/limits.js.map +1 -1
- package/dist/product/social/CampaignCard.cjs +2 -1
- package/dist/product/social/CampaignCard.d.ts.map +1 -1
- package/dist/product/social/CampaignCard.js +2 -1
- package/dist/product/social/CampaignCard.js.map +1 -1
- package/dist/product/social/PostCard.cjs +2 -1
- package/dist/product/social/PostCard.d.ts.map +1 -1
- package/dist/product/social/PostCard.js +2 -1
- package/dist/product/social/PostCard.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,12 +8,18 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
8
8
|
* read more. The way in is "Try Hanzo" to sign-in, payment second: `/login`, or
|
|
9
9
|
* `/login?next=<checkout>` when the page names a plan (`next`).
|
|
10
10
|
*
|
|
11
|
-
* `onCta` hears both links, named `try_hanzo` and `read_docs`.
|
|
11
|
+
* `onCta` hears both links, named `try_hanzo` and `read_docs`. The section is named
|
|
12
|
+
* by its own headline (`aria-labelledby`), so a host that passes its words in the
|
|
13
|
+
* reader's language names it in that language too.
|
|
12
14
|
*/
|
|
15
|
+
const react_1 = require("react");
|
|
13
16
|
const gui_1 = require("@hanzo/gui");
|
|
14
17
|
const slot_1 = require("../backends/gui/slot.cjs");
|
|
15
18
|
const Cta_1 = require("./Cta.cjs");
|
|
16
19
|
const type_1 = require("./type.cjs");
|
|
17
20
|
const TIGHT = { letterSpacing: '-0.012em', textWrap: 'balance' };
|
|
18
|
-
const ClosingCta = ({ title = 'Build what’s next.', next, primary = { label: 'Try Hanzo', href: next ? `/login?next=${encodeURIComponent(next)}` : '/login' }, secondary = { label: 'Read the docs', href: 'https://docs.hanzo.ai' }, onCta, }) =>
|
|
21
|
+
const ClosingCta = ({ title = 'Build what’s next.', next, primary = { label: 'Try Hanzo', href: next ? `/login?next=${encodeURIComponent(next)}` : '/login' }, secondary = { label: 'Read the docs', href: 'https://docs.hanzo.ai' }, onCta, }) => {
|
|
22
|
+
const id = (0, react_1.useId)();
|
|
23
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('closing-cta'), render: "section", "aria-labelledby": id, width: "100%", maxW: 1240, mx: "auto", items: "center", gap: "$6", px: "$6", py: 56, $md: { py: 96 }, children: [(0, jsx_runtime_1.jsx)(type_1.Line, { render: "h2", id: id, m: 0, align: "center", fontSize: "$9", lineHeight: "$9", fontWeight: 500, $md: { fontSize: '$11', lineHeight: '$11' }, style: TIGHT, children: title }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { flexWrap: "wrap", justify: "center", gap: "$4", children: [(0, jsx_runtime_1.jsx)(Cta_1.Cta, { href: primary.href, onPress: () => onCta?.('try_hanzo'), children: primary.label }), secondary ? ((0, jsx_runtime_1.jsx)(Cta_1.Cta, { quiet: true, href: secondary.href, onPress: () => onCta?.('read_docs'), children: secondary.label })) : null] })] }));
|
|
24
|
+
};
|
|
19
25
|
exports.ClosingCta = ClosingCta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClosingCta.d.ts","sourceRoot":"","sources":["../../src/marketing/ClosingCta.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClosingCta.d.ts","sourceRoot":"","sources":["../../src/marketing/ClosingCta.tsx"],"names":[],"mappings":"AAoBA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAClD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,KAAK,IAAI,CAAA;CACjD,CAAA;AAED,QAAA,MAAM,UAAU,gDAMb,eAAe,gCA+BjB,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -5,13 +5,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
* read more. The way in is "Try Hanzo" to sign-in, payment second: `/login`, or
|
|
6
6
|
* `/login?next=<checkout>` when the page names a plan (`next`).
|
|
7
7
|
*
|
|
8
|
-
* `onCta` hears both links, named `try_hanzo` and `read_docs`.
|
|
8
|
+
* `onCta` hears both links, named `try_hanzo` and `read_docs`. The section is named
|
|
9
|
+
* by its own headline (`aria-labelledby`), so a host that passes its words in the
|
|
10
|
+
* reader's language names it in that language too.
|
|
9
11
|
*/
|
|
12
|
+
import { useId } from 'react';
|
|
10
13
|
import { XStack, YStack } from '@hanzo/gui';
|
|
11
14
|
import { slot } from '../backends/gui/slot.js';
|
|
12
15
|
import { Cta } from './Cta.js';
|
|
13
16
|
import { Line } from './type.js';
|
|
14
17
|
const TIGHT = { letterSpacing: '-0.012em', textWrap: 'balance' };
|
|
15
|
-
const ClosingCta = ({ title = 'Build what’s next.', next, primary = { label: 'Try Hanzo', href: next ? `/login?next=${encodeURIComponent(next)}` : '/login' }, secondary = { label: 'Read the docs', href: 'https://docs.hanzo.ai' }, onCta, }) =>
|
|
18
|
+
const ClosingCta = ({ title = 'Build what’s next.', next, primary = { label: 'Try Hanzo', href: next ? `/login?next=${encodeURIComponent(next)}` : '/login' }, secondary = { label: 'Read the docs', href: 'https://docs.hanzo.ai' }, onCta, }) => {
|
|
19
|
+
const id = useId();
|
|
20
|
+
return (_jsxs(YStack, { ...slot('closing-cta'), render: "section", "aria-labelledby": id, width: "100%", maxW: 1240, mx: "auto", items: "center", gap: "$6", px: "$6", py: 56, $md: { py: 96 }, children: [_jsx(Line, { render: "h2", id: id, m: 0, align: "center", fontSize: "$9", lineHeight: "$9", fontWeight: 500, $md: { fontSize: '$11', lineHeight: '$11' }, style: TIGHT, children: title }), _jsxs(XStack, { flexWrap: "wrap", justify: "center", gap: "$4", children: [_jsx(Cta, { href: primary.href, onPress: () => onCta?.('try_hanzo'), children: primary.label }), secondary ? (_jsx(Cta, { quiet: true, href: secondary.href, onPress: () => onCta?.('read_docs'), children: secondary.label })) : null] })] }));
|
|
21
|
+
};
|
|
16
22
|
export { ClosingCta };
|
|
17
23
|
//# sourceMappingURL=ClosingCta.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClosingCta.js","sourceRoot":"","sources":["../../src/marketing/ClosingCta.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"ClosingCta.js","sourceRoot":"","sources":["../../src/marketing/ClosingCta.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,MAAM,KAAK,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAW,CAAA;AAWzE,MAAM,UAAU,GAAG,CAAC,EAClB,KAAK,GAAG,oBAAoB,EAC5B,IAAI,EACJ,OAAO,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EACnG,SAAS,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,EACrE,KAAK,GACW,EAAE,EAAE;IACpB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,OAAO,CACP,MAAC,MAAM,OACD,IAAI,CAAC,aAAa,CAAC,EACvB,MAAM,EAAC,SAAS,qBACC,EAAE,EACnB,KAAK,EAAC,MAAM,EACZ,IAAI,EAAE,IAAI,EACV,EAAE,EAAC,MAAM,EACT,KAAK,EAAC,QAAQ,EACd,GAAG,EAAC,IAAI,EACR,EAAE,EAAC,IAAI,EACP,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,aAEf,KAAC,IAAI,IAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAC,QAAQ,EAAC,QAAQ,EAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,YACpJ,KAAK,GACD,EACP,MAAC,MAAM,IAAC,QAAQ,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,aAC/C,KAAC,GAAG,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,YACzD,OAAO,CAAC,KAAK,GACV,EACL,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,GAAG,IAAC,KAAK,QAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,YACjE,SAAS,CAAC,KAAK,GACZ,CACP,CAAC,CAAC,CAAC,IAAI,IACD,IACF,CACR,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -6,6 +6,7 @@ exports.classifyRead = classifyRead;
|
|
|
6
6
|
exports.BackendStateCard = BackendStateCard;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const gui_1 = require("@hanzo/gui");
|
|
9
|
+
const plate_1 = require("../backends/gui/plate.cjs");
|
|
9
10
|
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
10
11
|
const host_1 = require("./host.cjs");
|
|
11
12
|
/**
|
|
@@ -73,5 +74,5 @@ const BODIES = {
|
|
|
73
74
|
/** A truthful state card for a `/v1` load failure, with an optional retry + hint. */
|
|
74
75
|
function BackendStateCard({ state, onRetry, hint, }) {
|
|
75
76
|
const { signIn, addCredits } = (0, host_1.useHost)();
|
|
76
|
-
return ((0, jsx_runtime_1.jsxs)(
|
|
77
|
+
return ((0, jsx_runtime_1.jsxs)(plate_1.Plate, { borderWidth: 1, borderColor: "$borderColor", p: "$4", gap: "$2", maxW: 640, children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2", items: "center", children: [(0, jsx_runtime_1.jsx)(lucide_icons_2_1.TriangleAlert, { size: 16 }), (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$4", fontWeight: "700", children: TITLES[state.kind] })] }), (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", color: "$quiet", children: BODIES[state.kind] || state.message }), hint ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$soft", children: hint })) : null, state.kind === 'signin' && signIn ? ((0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", theme: "light", self: "flex-start", onPress: signIn, children: "Sign in again" })) : state.kind === 'billing' && addCredits ? ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2", items: "center", flexWrap: "wrap", children: [(0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", theme: "light", self: "flex-start", icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.CreditCard, { size: 14 }), onPress: addCredits, children: "Add credits" }), onRetry ? ((0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", self: "flex-start", onPress: onRetry, children: "Retry" })) : null] })) : onRetry ? ((0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", self: "flex-start", onPress: onRetry, children: "Retry" })) : null] }));
|
|
77
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackendState.d.ts","sourceRoot":"","sources":["../../src/product/BackendState.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"BackendState.d.ts","sourceRoot":"","sources":["../../src/product/BackendState.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,aAAa,GACb,iBAAiB,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,OAAO,CAAA;AAEX,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtE;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,YAAY,CAaxD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAG5D;AA+BD,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,IAAI,GACL,EAAE;IACD,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,+BA0CA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Button,
|
|
3
|
+
import { Button, Text, XStack } from '@hanzo/gui';
|
|
4
|
+
import { Plate as Card } from '../backends/gui/plate.js';
|
|
4
5
|
import { TriangleAlert, CreditCard } from '@hanzogui/lucide-icons-2';
|
|
5
6
|
import { useHost } from './host.js';
|
|
6
7
|
/**
|
|
@@ -68,6 +69,6 @@ const BODIES = {
|
|
|
68
69
|
/** A truthful state card for a `/v1` load failure, with an optional retry + hint. */
|
|
69
70
|
export function BackendStateCard({ state, onRetry, hint, }) {
|
|
70
71
|
const { signIn, addCredits } = useHost();
|
|
71
|
-
return (_jsxs(Card, { borderWidth: 1, borderColor: "$borderColor", p: "$4", gap: "$2",
|
|
72
|
+
return (_jsxs(Card, { borderWidth: 1, borderColor: "$borderColor", p: "$4", gap: "$2", maxW: 640, children: [_jsxs(XStack, { gap: "$2", items: "center", children: [_jsx(TriangleAlert, { size: 16 }), _jsx(Text, { fontSize: "$4", fontWeight: "700", children: TITLES[state.kind] })] }), _jsx(Text, { fontSize: "$3", color: "$quiet", children: BODIES[state.kind] || state.message }), hint ? (_jsx(Text, { fontSize: "$2", color: "$soft", children: hint })) : null, state.kind === 'signin' && signIn ? (_jsx(Button, { size: "$2", theme: "light", self: "flex-start", onPress: signIn, children: "Sign in again" })) : state.kind === 'billing' && addCredits ? (_jsxs(XStack, { gap: "$2", items: "center", flexWrap: "wrap", children: [_jsx(Button, { size: "$2", theme: "light", self: "flex-start", icon: _jsx(CreditCard, { size: 14 }), onPress: addCredits, children: "Add credits" }), onRetry ? (_jsx(Button, { size: "$2", self: "flex-start", onPress: onRetry, children: "Retry" })) : null] })) : onRetry ? (_jsx(Button, { size: "$2", self: "flex-start", onPress: onRetry, children: "Retry" })) : null] }));
|
|
72
73
|
}
|
|
73
74
|
//# sourceMappingURL=BackendState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackendState.js","sourceRoot":"","sources":["../../src/product/BackendState.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAgBZ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"BackendState.js","sourceRoot":"","sources":["../../src/product/BackendState.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.EmptyState = EmptyState;
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
6
|
const gui_1 = require("@hanzo/gui");
|
|
7
|
+
const plate_1 = require("../backends/gui/plate.cjs");
|
|
7
8
|
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
8
9
|
const PrimaryButton_1 = require("./PrimaryButton.cjs");
|
|
9
10
|
/** Open an external URL in a new tab (no-opener), guarded for SSR. */
|
|
@@ -15,7 +16,7 @@ const instrument_1 = require("./instrument.cjs");
|
|
|
15
16
|
const dir_1 = require("../backends/gui/dir.cjs");
|
|
16
17
|
function EmptyState({ icon: Icon, title, description, bullets, primary, secondary, }) {
|
|
17
18
|
const track = (0, instrument_1.useEmit)();
|
|
18
|
-
return ((0, jsx_runtime_1.jsxs)(
|
|
19
|
+
return ((0, jsx_runtime_1.jsxs)(plate_1.Plate, { borderWidth: 1, borderColor: "$borderColor", borderStyle: "dashed", p: "$6", gap: "$4", items: "center", maxW: 640, self: "center", width: "100%", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { width: 48, height: 48, items: "center", justify: "center", rounded: "$4", bg: "$hover", children: (0, jsx_runtime_1.jsx)(Icon, { size: 24 }) }), (0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$2", items: "center", maxW: 480, children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$6", fontWeight: "500", text: "center", letterSpacing: -0.3, children: title }), (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", color: "$quiet", text: "center", children: description })] }), bullets && bullets.length ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { gap: "$2", self: "stretch", maxW: 420, mx: "auto", children: bullets.map((b) => ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2", items: "flex-start", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { pt: "$1", children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Check, { size: 14, color: "$soft" }) }), (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", color: "$quiet", flex: 1, children: b })] }, b))) })) : null, primary || secondary ? ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2", items: "center", flexWrap: "wrap", justify: "center", children: [primary ? ((0, jsx_runtime_1.jsx)(PrimaryButton_1.PrimaryButton, { icon: primary.icon, iconAfter: primary.href ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ExternalLink, { size: 16 }) : (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ArrowRight, { ...dir_1.mirror, size: 16 }), onPress: () => {
|
|
19
20
|
track({ component: 'EmptyState', action: 'click', id: title, value: primary.label });
|
|
20
21
|
if (primary.href)
|
|
21
22
|
openHref(primary.href);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../src/product/EmptyState.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../src/product/EmptyState.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAA;AAKpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,+EAA+E;AAC/E,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB,CAAA;AAUD,wBAAgB,UAAU,CAAC,EACzB,IAAI,EAAE,IAAI,EACV,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,SAAS,GACV,EAAE;IACD,oFAAoF;IACpF,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,mEAAmE;IACnE,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,mEAAmE;IACnE,SAAS,CAAC,EAAE,WAAW,CAAA;CACxB,+BAkFA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Button,
|
|
3
|
+
import { Button, Text, XStack, YStack } from '@hanzo/gui';
|
|
4
|
+
import { Plate as Card } from '../backends/gui/plate.js';
|
|
4
5
|
import { ArrowRight, Check, ExternalLink } from '@hanzogui/lucide-icons-2';
|
|
5
6
|
import { PrimaryButton } from './PrimaryButton.js';
|
|
6
7
|
/** Open an external URL in a new tab (no-opener), guarded for SSR. */
|
|
@@ -12,7 +13,7 @@ import { useEmit } from './instrument.js';
|
|
|
12
13
|
import { mirror } from '../backends/gui/dir.js';
|
|
13
14
|
export function EmptyState({ icon: Icon, title, description, bullets, primary, secondary, }) {
|
|
14
15
|
const track = useEmit();
|
|
15
|
-
return (_jsxs(Card, { borderWidth: 1, borderColor: "$borderColor", borderStyle: "dashed", p: "$6", gap: "$4", items: "center",
|
|
16
|
+
return (_jsxs(Card, { borderWidth: 1, borderColor: "$borderColor", borderStyle: "dashed", p: "$6", gap: "$4", items: "center", maxW: 640, self: "center", width: "100%", children: [_jsx(YStack, { width: 48, height: 48, items: "center", justify: "center", rounded: "$4", bg: "$hover", children: _jsx(Icon, { size: 24 }) }), _jsxs(YStack, { gap: "$2", items: "center", maxW: 480, children: [_jsx(Text, { fontSize: "$6", fontWeight: "500", text: "center", letterSpacing: -0.3, children: title }), _jsx(Text, { fontSize: "$3", color: "$quiet", text: "center", children: description })] }), bullets && bullets.length ? (_jsx(YStack, { gap: "$2", self: "stretch", maxW: 420, mx: "auto", children: bullets.map((b) => (_jsxs(XStack, { gap: "$2", items: "flex-start", children: [_jsx(YStack, { pt: "$1", children: _jsx(Check, { size: 14, color: "$soft" }) }), _jsx(Text, { fontSize: "$3", color: "$quiet", flex: 1, children: b })] }, b))) })) : null, primary || secondary ? (_jsxs(XStack, { gap: "$2", items: "center", flexWrap: "wrap", justify: "center", children: [primary ? (_jsx(PrimaryButton, { icon: primary.icon, iconAfter: primary.href ? _jsx(ExternalLink, { size: 16 }) : _jsx(ArrowRight, { ...mirror, size: 16 }), onPress: () => {
|
|
16
17
|
track({ component: 'EmptyState', action: 'click', id: title, value: primary.label });
|
|
17
18
|
if (primary.href)
|
|
18
19
|
openHref(primary.href);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../src/product/EmptyState.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAgBZ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../src/product/EmptyState.tsx"],"names":[],"mappings":"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"}
|
|
@@ -22,8 +22,8 @@ function LimitActions({ actions, onAction, children, }) {
|
|
|
22
22
|
const shown = onAction ? actions : actions.filter(limits_1.navigable);
|
|
23
23
|
if (!shown.length && !children)
|
|
24
24
|
return null;
|
|
25
|
-
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2", shrink: 0, flexWrap: "wrap", items: "center", children: [shown.map((a, i) => ((0, jsx_runtime_1.jsx)(button_1.Button, { size: "sm", variant: i === 0 ? 'primary' : 'default', "data-kind": a.kind, onPress: () => (onAction ?? go)(a), children: a.label }, `${a.kind}:${a.url ?? a.model ?? i}`))), children] }));
|
|
25
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2", shrink: 0, maxW: "100%", flexWrap: "wrap", items: "center", children: [shown.map((a, i) => ((0, jsx_runtime_1.jsx)(button_1.Button, { size: "sm", variant: i === 0 ? 'primary' : 'default', "data-kind": a.kind, onPress: () => (onAction ?? go)(a), children: a.label }, `${a.kind}:${a.url ?? a.model ?? i}`))), children] }));
|
|
26
26
|
}
|
|
27
|
-
function LimitedBanner({ message, actions = [], onAction, onUsage, onClose }) {
|
|
28
|
-
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, {
|
|
27
|
+
function LimitedBanner({ message, actions = [], onAction, onUsage, onClose, labels }) {
|
|
28
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('limited-banner'), width: "100%", items: "center", flexWrap: "wrap", gap: "$2", px: "$3", py: "$2.5", rounded: "$4", borderWidth: 1, borderColor: "$edge", bg: "$panel", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { flex: 1, minW: 200, items: "center", gap: "$2", children: [(0, jsx_runtime_1.jsx)(gui_1.View, { width: 8, height: 8, rounded: 4, bg: "$bad", shrink: 0, "aria-hidden": true }), (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", color: "$ink", ...(0, slot_1.slot)('limited-banner-message'), children: message })] }), (0, jsx_runtime_1.jsx)(LimitActions, { actions: actions, onAction: onAction, children: onUsage ? ((0, jsx_runtime_1.jsx)(button_1.Button, { size: "sm", variant: "link", px: "$1.5", "data-kind": "usage", onPress: onUsage, children: labels?.usage ?? 'See usage' })) : null }), onClose ? ((0, jsx_runtime_1.jsx)(button_1.Button, { variant: "ghost", size: "icon", minH: 24, minW: 24, ...(0, gesture_1.touch)(24), "aria-label": labels?.dismiss ?? 'Dismiss', onPress: onClose, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.X, { size: 14 }) })) : null] }));
|
|
29
29
|
}
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
* the ways past it (Upgrade, Add prepaid credit) and, where the host has one, a
|
|
4
4
|
* quiet "See usage" to its usage settings. One line where it fits. Neutral
|
|
5
5
|
* chrome; the dot is the one status colour.
|
|
6
|
+
*
|
|
7
|
+
* It is drawn, not announced: a live region speaks what changes inside it, not
|
|
8
|
+
* what it was mounted holding, and the banner mounts with its message. The host
|
|
9
|
+
* keeps one mounted region and puts the message there.
|
|
6
10
|
*/
|
|
7
11
|
import type { ReactNode } from 'react';
|
|
8
12
|
import { type LimitAction } from './limits.js';
|
|
@@ -18,6 +22,11 @@ export interface LimitedBannerProps {
|
|
|
18
22
|
/** Opens the host's usage settings; draws "See usage" when given. */
|
|
19
23
|
onUsage?: () => void;
|
|
20
24
|
onClose?: () => void;
|
|
25
|
+
/** The quiet controls' words, in the reader's language: "See usage" and the close mark's "Dismiss". */
|
|
26
|
+
labels?: {
|
|
27
|
+
usage?: string;
|
|
28
|
+
dismiss?: string;
|
|
29
|
+
};
|
|
21
30
|
}
|
|
22
31
|
/**
|
|
23
32
|
* The server's actions in the order it sent them: the first is the one filled
|
|
@@ -28,5 +37,5 @@ export declare function LimitActions({ actions, onAction, children, }: {
|
|
|
28
37
|
onAction?: (action: LimitAction) => void;
|
|
29
38
|
children?: ReactNode;
|
|
30
39
|
}): import("react").JSX.Element | null;
|
|
31
|
-
export declare function LimitedBanner({ message, actions, onAction, onUsage, onClose }: LimitedBannerProps): import("react").JSX.Element;
|
|
40
|
+
export declare function LimitedBanner({ message, actions, onAction, onUsage, onClose, labels }: LimitedBannerProps): import("react").JSX.Element;
|
|
32
41
|
//# sourceMappingURL=LimitedBanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimitedBanner.d.ts","sourceRoot":"","sources":["../../src/product/LimitedBanner.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"LimitedBanner.d.ts","sourceRoot":"","sources":["../../src/product/LimitedBanner.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IACxC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,uGAAuG;IACvG,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9C;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,sCAmBA;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,OAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,kBAAkB,+BAmC9G"}
|
|
@@ -18,9 +18,9 @@ export function LimitActions({ actions, onAction, children, }) {
|
|
|
18
18
|
const shown = onAction ? actions : actions.filter(navigable);
|
|
19
19
|
if (!shown.length && !children)
|
|
20
20
|
return null;
|
|
21
|
-
return (_jsxs(XStack, { gap: "$2", shrink: 0, flexWrap: "wrap", items: "center", children: [shown.map((a, i) => (_jsx(Button, { size: "sm", variant: i === 0 ? 'primary' : 'default', "data-kind": a.kind, onPress: () => (onAction ?? go)(a), children: a.label }, `${a.kind}:${a.url ?? a.model ?? i}`))), children] }));
|
|
21
|
+
return (_jsxs(XStack, { gap: "$2", shrink: 0, maxW: "100%", flexWrap: "wrap", items: "center", children: [shown.map((a, i) => (_jsx(Button, { size: "sm", variant: i === 0 ? 'primary' : 'default', "data-kind": a.kind, onPress: () => (onAction ?? go)(a), children: a.label }, `${a.kind}:${a.url ?? a.model ?? i}`))), children] }));
|
|
22
22
|
}
|
|
23
|
-
export function LimitedBanner({ message, actions = [], onAction, onUsage, onClose }) {
|
|
24
|
-
return (_jsxs(XStack, {
|
|
23
|
+
export function LimitedBanner({ message, actions = [], onAction, onUsage, onClose, labels }) {
|
|
24
|
+
return (_jsxs(XStack, { ...slot('limited-banner'), width: "100%", items: "center", flexWrap: "wrap", gap: "$2", px: "$3", py: "$2.5", rounded: "$4", borderWidth: 1, borderColor: "$edge", bg: "$panel", children: [_jsxs(XStack, { flex: 1, minW: 200, items: "center", gap: "$2", children: [_jsx(View, { width: 8, height: 8, rounded: 4, bg: "$bad", shrink: 0, "aria-hidden": true }), _jsx(Text, { fontSize: "$1", color: "$ink", ...slot('limited-banner-message'), children: message })] }), _jsx(LimitActions, { actions: actions, onAction: onAction, children: onUsage ? (_jsx(Button, { size: "sm", variant: "link", px: "$1.5", "data-kind": "usage", onPress: onUsage, children: labels?.usage ?? 'See usage' })) : null }), onClose ? (_jsx(Button, { variant: "ghost", size: "icon", minH: 24, minW: 24, ...touch(24), "aria-label": labels?.dismiss ?? 'Dismiss', onPress: onClose, children: _jsx(X, { size: 14 }) })) : null] }));
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=LimitedBanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimitedBanner.js","sourceRoot":"","sources":["../../src/product/LimitedBanner.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;
|
|
1
|
+
{"version":3,"file":"LimitedBanner.js","sourceRoot":"","sources":["../../src/product/LimitedBanner.tsx"],"names":[],"mappings":"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"}
|
package/dist/product/Metric.cjs
CHANGED
|
@@ -29,6 +29,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
29
29
|
*/
|
|
30
30
|
const figures_1 = require("./figures.cjs");
|
|
31
31
|
const gui_1 = require("@hanzo/gui");
|
|
32
|
+
const plate_1 = require("../backends/gui/plate.cjs");
|
|
32
33
|
/** Distinct, theme-neutral series colors (mid-saturation reads on dark + light). */
|
|
33
34
|
exports.SERIES = ['#6ea8fe', '#7ee787', '#f0a868', '#c792ea', '#56d4c4', '#e879a6', '#d6c15a', '#8b9bb4'];
|
|
34
35
|
const colorForIndex = (i) => exports.SERIES[i % exports.SERIES.length];
|
|
@@ -89,7 +90,7 @@ function LegendDot({ color, label, value }) {
|
|
|
89
90
|
*/
|
|
90
91
|
function MetricCard({ icon, label, value, caption, spark, sparkColor, delta, }) {
|
|
91
92
|
const up = delta ? delta.pct >= 0 : false;
|
|
92
|
-
return ((0, jsx_runtime_1.jsxs)(
|
|
93
|
+
return ((0, jsx_runtime_1.jsxs)(plate_1.Plate, { p: "$3.5", gap: "$2", borderWidth: 1, borderColor: "$borderColor", flex: 1, minW: 172, children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", justify: "space-between", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", children: [icon, (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$quiet", fontWeight: "500", children: label })] }), delta ? ((0, jsx_runtime_1.jsxs)(gui_1.Text, { fontSize: "$1", color: up ? '#7ee787' : '#e5534b', children: [up ? '▲' : '▼', " ", Math.abs(delta.pct), "%"] })) : null] }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "flex-end", justify: "space-between", gap: "$2", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$8", fontWeight: "500", color: "$ink", numberOfLines: 1, ...figures_1.FIGURES, children: value }), spark && spark.length >= 2 ? (0, jsx_runtime_1.jsx)(Sparkline, { points: spark, color: sparkColor ?? exports.SERIES[0] }) : null] }), caption ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", color: "$soft", numberOfLines: 1, children: caption })) : null] }));
|
|
93
94
|
}
|
|
94
95
|
/**
|
|
95
96
|
* A button that is either a real action (onPress) or HONESTLY disabled with a
|
|
@@ -109,5 +110,5 @@ function HintButton({ icon, iconAfter, children, onPress, disabled, hint, theme,
|
|
|
109
110
|
* stacks — flex-grow in a column with no fixed height collapses them onto each other.
|
|
110
111
|
*/
|
|
111
112
|
function Panel({ title, icon, description, right, children, minW = 280, grow = true, }) {
|
|
112
|
-
return ((0, jsx_runtime_1.jsxs)(
|
|
113
|
+
return ((0, jsx_runtime_1.jsxs)(plate_1.Plate, { p: "$4", gap: "$3", borderWidth: 1, borderColor: "$borderColor", flex: grow ? 1 : undefined, minW: minW, width: grow ? undefined : '100%', children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", justify: "space-between", gap: "$2", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", flex: 1, minW: 0, children: [icon, (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$4", fontWeight: "500", color: "$ink", children: title })] }), right] }), description ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$quiet", children: description })) : null, children] }));
|
|
113
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Metric.d.ts","sourceRoot":"","sources":["../../src/product/Metric.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Metric.d.ts","sourceRoot":"","sources":["../../src/product/Metric.tsx"],"names":[],"mappings":"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"}
|
package/dist/product/Metric.js
CHANGED
|
@@ -17,7 +17,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
17
17
|
* shorthand set.
|
|
18
18
|
*/
|
|
19
19
|
import { FIGURES } from './figures.js';
|
|
20
|
-
import { Button,
|
|
20
|
+
import { Button, Text, XStack, YStack } from '@hanzo/gui';
|
|
21
|
+
import { Plate as Card } from '../backends/gui/plate.js';
|
|
21
22
|
/** Distinct, theme-neutral series colors (mid-saturation reads on dark + light). */
|
|
22
23
|
export const SERIES = ['#6ea8fe', '#7ee787', '#f0a868', '#c792ea', '#56d4c4', '#e879a6', '#d6c15a', '#8b9bb4'];
|
|
23
24
|
export const colorForIndex = (i) => SERIES[i % SERIES.length];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Metric.js","sourceRoot":"","sources":["../../src/product/Metric.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"Metric.js","sourceRoot":"","sources":["../../src/product/Metric.tsx"],"names":[],"mappings":"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"}
|
package/dist/product/Toast.cjs
CHANGED
|
@@ -18,6 +18,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
18
18
|
const react_1 = require("react");
|
|
19
19
|
const react_dom_1 = require("react-dom");
|
|
20
20
|
const gui_1 = require("@hanzo/gui");
|
|
21
|
+
const plate_1 = require("../backends/gui/plate.cjs");
|
|
21
22
|
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
22
23
|
const instrument_1 = require("./instrument.cjs");
|
|
23
24
|
const ToastContext = (0, react_1.createContext)(null);
|
|
@@ -44,7 +45,7 @@ const DURATION = {
|
|
|
44
45
|
function ToastCard({ t, onClose }) {
|
|
45
46
|
const Icon = ICON[t.kind];
|
|
46
47
|
const accent = ACCENT[t.kind];
|
|
47
|
-
return ((0, jsx_runtime_1.jsx)(
|
|
48
|
+
return ((0, jsx_runtime_1.jsx)(plate_1.Plate, { width: 360, maxW: "90%", p: "$3", gap: "$2", bg: "$panel", borderWidth: 1, borderColor: "$borderColor", borderInlineStartWidth: 3, borderInlineStartColor: accent, rounded: "$4", elevation: "$2", children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2.5", items: "flex-start", children: [t.showIcon ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { pt: 1, children: (0, jsx_runtime_1.jsx)(Icon, { size: 18, color: accent }) })) : null, (0, jsx_runtime_1.jsxs)(gui_1.YStack, { flex: 1, gap: "$1", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", fontWeight: "700", color: "$ink", children: t.title }), t.description ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$quiet", children: t.description })) : null] }), (0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$1", chromeless: true, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.X, { size: 14 }), onPress: onClose, "aria-label": "Dismiss" })] }) }));
|
|
48
49
|
}
|
|
49
50
|
/** Portalled, fixed top-right stack. Rendered only after mount (SSR-safe). */
|
|
50
51
|
function ToastViewport({ toasts, dismiss }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/product/Toast.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,EAAgF,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/product/Toast.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,EAAgF,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAQpH;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAEhE,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,yEAAyE;AACzE,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAA;AAEvG;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B,CAAA;AAqFD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAgElE;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAInC"}
|
package/dist/product/Toast.js
CHANGED
|
@@ -13,7 +13,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
*/
|
|
14
14
|
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
15
15
|
import { createPortal } from 'react-dom';
|
|
16
|
-
import { Button,
|
|
16
|
+
import { Button, Text, XStack, YStack } from '@hanzo/gui';
|
|
17
|
+
import { Plate as Card } from '../backends/gui/plate.js';
|
|
17
18
|
import { CircleCheck, CircleX, Info, TriangleAlert, X } from '@hanzogui/lucide-icons-2';
|
|
18
19
|
import { useEmit } from './instrument.js';
|
|
19
20
|
const ToastContext = createContext(null);
|
|
@@ -40,7 +41,7 @@ const DURATION = {
|
|
|
40
41
|
function ToastCard({ t, onClose }) {
|
|
41
42
|
const Icon = ICON[t.kind];
|
|
42
43
|
const accent = ACCENT[t.kind];
|
|
43
|
-
return (_jsx(Card, { width: 360,
|
|
44
|
+
return (_jsx(Card, { width: 360, maxW: "90%", p: "$3", gap: "$2", bg: "$panel", borderWidth: 1, borderColor: "$borderColor", borderInlineStartWidth: 3, borderInlineStartColor: accent, rounded: "$4", elevation: "$2", children: _jsxs(XStack, { gap: "$2.5", items: "flex-start", children: [t.showIcon ? (_jsx(YStack, { pt: 1, children: _jsx(Icon, { size: 18, color: accent }) })) : null, _jsxs(YStack, { flex: 1, gap: "$1", children: [_jsx(Text, { fontSize: "$3", fontWeight: "700", color: "$ink", children: t.title }), t.description ? (_jsx(Text, { fontSize: "$2", color: "$quiet", children: t.description })) : null] }), _jsx(Button, { size: "$1", chromeless: true, icon: _jsx(X, { size: 14 }), onPress: onClose, "aria-label": "Dismiss" })] }) }));
|
|
44
45
|
}
|
|
45
46
|
/** Portalled, fixed top-right stack. Rendered only after mount (SSR-safe). */
|
|
46
47
|
function ToastViewport({ toasts, dismiss }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/product/Toast.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;GAUG;AACH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AACpH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/product/Toast.tsx"],"names":[],"mappings":"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"}
|
package/dist/product/limits.cjs
CHANGED
|
@@ -37,6 +37,7 @@ const LABEL = {
|
|
|
37
37
|
topup: 'Add prepaid credit',
|
|
38
38
|
credits: 'Continue with credits',
|
|
39
39
|
switch: 'Switch model',
|
|
40
|
+
later: 'Try again later',
|
|
40
41
|
};
|
|
41
42
|
const RANK = { ok: 0, near: 1, limited: 2 };
|
|
42
43
|
const text = (v) => (typeof v === 'string' ? v : null);
|
|
@@ -155,28 +156,37 @@ function servedOf(headers) {
|
|
|
155
156
|
};
|
|
156
157
|
}
|
|
157
158
|
/**
|
|
158
|
-
* The
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
159
|
+
* The limit codes sent on a 429 that is not a `billing_error`, each under the
|
|
160
|
+
* one type its server sends it with: the two caps the gateway sends as a
|
|
161
|
+
* `rate_limit_error` (ai `routers/filter_balance.go` `limitReached`), and the
|
|
162
|
+
* Free allowance's spent window, `allowance_spent` (cloud zen `freeSpent`,
|
|
163
|
+
* `insufficient_quota`). Each lifts by itself at a reset, so the wire calls it a
|
|
164
|
+
* limit; each is still the plan speaking, and the reader is owed the same notice.
|
|
162
165
|
*/
|
|
163
|
-
const CAPS = [
|
|
166
|
+
const CAPS = new Map([
|
|
167
|
+
['free_plan_cap', 'rate_limit_error'],
|
|
168
|
+
['usage_cap_exceeded', 'rate_limit_error'],
|
|
169
|
+
['allowance_spent', 'insufficient_quota'],
|
|
170
|
+
]);
|
|
171
|
+
/** The longest Retry-After believed, in seconds: a day. A longer or negative one names no retry. */
|
|
172
|
+
const WAIT = 86_400;
|
|
164
173
|
/** A billing refusal's envelope, or null for any other error. */
|
|
165
174
|
function refusalOf(body, status, retryAfter) {
|
|
166
175
|
const e = record(record(body)?.error);
|
|
167
176
|
if (!e)
|
|
168
177
|
return null;
|
|
169
|
-
|
|
178
|
+
const code = text(e.code) ?? '';
|
|
179
|
+
if (e.type !== 'billing_error' && (!CAPS.has(code) || CAPS.get(code) !== e.type))
|
|
170
180
|
return null;
|
|
171
181
|
const retry = retryAfter ? Number(retryAfter) : NaN;
|
|
172
182
|
return {
|
|
173
183
|
status,
|
|
174
|
-
code
|
|
184
|
+
code,
|
|
175
185
|
message: text(e.message) ?? '',
|
|
176
186
|
class: one(exports.CLASSES, e.class),
|
|
177
187
|
resets_at: text(e.resets_at),
|
|
178
188
|
actions: actionsOf(e.actions),
|
|
179
|
-
retry:
|
|
189
|
+
retry: retry >= 0 && retry <= WAIT ? retry : null,
|
|
180
190
|
};
|
|
181
191
|
}
|
|
182
192
|
/** The limits with what served calls said since they were read laid over them. */
|
package/dist/product/limits.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ export type LimitClass = 'premium' | 'ours' | 'free';
|
|
|
4
4
|
export type LimitPayer = 'plan' | 'credits' | 'free' | 'none';
|
|
5
5
|
export type PaidBy = LimitPayer;
|
|
6
6
|
export type LimitReason = 'plan_allowance_used' | 'paid_plan_required' | 'free_plan_cap' | 'insufficient_balance' | 'model_cap';
|
|
7
|
-
|
|
7
|
+
/** A way past a limit. The server sends the first four; `later` is the reader's own, a host's to offer: put the notice away and come back after the reset. */
|
|
8
|
+
export type LimitActionKind = 'upgrade' | 'topup' | 'credits' | 'switch' | 'later';
|
|
8
9
|
/** A share of one window: percent used, its state, and when it starts over. */
|
|
9
10
|
export interface LimitWindow {
|
|
10
11
|
percent: number;
|
|
@@ -75,7 +76,7 @@ export interface Refusal {
|
|
|
75
76
|
class: LimitClass | null;
|
|
76
77
|
resets_at: string | null;
|
|
77
78
|
actions: LimitAction[];
|
|
78
|
-
/** Seconds, from Retry-After on a 429. */
|
|
79
|
+
/** Seconds, from Retry-After on a 429, when it names none to a day (`WAIT`). */
|
|
79
80
|
retry: number | null;
|
|
80
81
|
}
|
|
81
82
|
/** What the reader is told when a class is paused or refused. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/product/limits.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAA;AAClD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;AACpD,0GAA0G;AAC1G,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;AAC7D,MAAM,MAAM,MAAM,GAAG,UAAU,CAAA;AAC/B,MAAM,MAAM,WAAW,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,eAAe,GAAG,sBAAsB,GAAG,WAAW,CAAA;AAC/H,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/product/limits.ts"],"names":[],"mappings":"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"}
|