@hanzo/ui 8.27.54 → 8.27.56

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.
Files changed (57) hide show
  1. package/dist/backends/gui/progress.cjs +2 -2
  2. package/dist/backends/gui/progress.d.ts +3 -1
  3. package/dist/backends/gui/progress.d.ts.map +1 -1
  4. package/dist/backends/gui/progress.js +2 -2
  5. package/dist/backends/gui/progress.js.map +1 -1
  6. package/dist/gallery.cjs +18 -1
  7. package/dist/gallery.d.ts.map +1 -1
  8. package/dist/gallery.html +21 -4
  9. package/dist/gallery.js +18 -1
  10. package/dist/gallery.js.map +1 -1
  11. package/dist/marketing/rows.cjs +5 -11
  12. package/dist/marketing/rows.d.ts +2 -1
  13. package/dist/marketing/rows.d.ts.map +1 -1
  14. package/dist/marketing/rows.js +5 -11
  15. package/dist/marketing/rows.js.map +1 -1
  16. package/dist/models/ModelSelector.cjs +7 -3
  17. package/dist/models/ModelSelector.d.ts +9 -1
  18. package/dist/models/ModelSelector.d.ts.map +1 -1
  19. package/dist/models/ModelSelector.js +7 -3
  20. package/dist/models/ModelSelector.js.map +1 -1
  21. package/dist/product/LimitedBanner.cjs +22 -0
  22. package/dist/product/LimitedBanner.d.ts +10 -0
  23. package/dist/product/LimitedBanner.d.ts.map +1 -0
  24. package/dist/product/LimitedBanner.js +20 -0
  25. package/dist/product/LimitedBanner.js.map +1 -0
  26. package/dist/product/PlanUsage.cjs +45 -0
  27. package/dist/product/PlanUsage.d.ts +15 -0
  28. package/dist/product/PlanUsage.d.ts.map +1 -0
  29. package/dist/product/PlanUsage.js +42 -0
  30. package/dist/product/PlanUsage.js.map +1 -0
  31. package/dist/product/UsageMeter.cjs +48 -0
  32. package/dist/product/UsageMeter.d.ts +18 -0
  33. package/dist/product/UsageMeter.d.ts.map +1 -0
  34. package/dist/product/UsageMeter.js +45 -0
  35. package/dist/product/UsageMeter.js.map +1 -0
  36. package/dist/product/index.cjs +8 -0
  37. package/dist/product/index.d.ts +5 -0
  38. package/dist/product/index.d.ts.map +1 -1
  39. package/dist/product/index.js +8 -0
  40. package/dist/product/index.js.map +1 -1
  41. package/dist/product/limits.cjs +246 -0
  42. package/dist/product/limits.d.ts +113 -0
  43. package/dist/product/limits.d.ts.map +1 -0
  44. package/dist/product/limits.js +233 -0
  45. package/dist/product/limits.js.map +1 -0
  46. package/dist/product/pure.cjs +17 -0
  47. package/dist/product/pure.d.ts +1 -0
  48. package/dist/product/pure.d.ts.map +1 -1
  49. package/dist/product/pure.js +3 -0
  50. package/dist/product/pure.js.map +1 -1
  51. package/dist/product/useLimits.cjs +124 -0
  52. package/dist/product/useLimits.d.ts +27 -0
  53. package/dist/product/useLimits.d.ts.map +1 -0
  54. package/dist/product/useLimits.js +120 -0
  55. package/dist/product/useLimits.js.map +1 -0
  56. package/dist/styles.css +17 -0
  57. package/package.json +1 -1
@@ -7,10 +7,10 @@ const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const gui_1 = require("@hanzo/gui");
8
8
  const sx_1 = require("../../sx.cjs");
9
9
  const slot_1 = require("./slot.cjs");
10
- const Progress = ({ value, indicatorClassName, ...props }) => ((0, jsx_runtime_1.jsx)(gui_1.Progress, { ...(0, slot_1.slot)('progress'), value: value ?? 0, height: 8, width: "100%", bg: "$edge", rounded: "$10", overflow: "hidden", ...props, children: (0, jsx_runtime_1.jsx)(gui_1.Progress.Indicator, { ...(0, slot_1.slot)('progress-indicator'),
10
+ const Progress = ({ value, indicatorClassName, indicatorColor, ...props }) => ((0, jsx_runtime_1.jsx)(gui_1.Progress, { ...(0, slot_1.slot)('progress'), value: value ?? 0, height: 8, width: "100%", bg: "$edge", rounded: "$10", overflow: "hidden", ...props, children: (0, jsx_runtime_1.jsx)(gui_1.Progress.Indicator, { ...(0, slot_1.slot)('progress-indicator'),
11
11
  // Same reason as the slider's fill: `$ink` is the foreground rung, and
12
12
  // a type colour stretched across a bar is a lit slab. 6.93:1 over the
13
13
  // track against WCAG 1.4.11's 3:1 — legible with room to spare, and no
14
14
  // longer competing with the text beside it for attention.
15
- bg: "$soft", ...(0, sx_1.sx)(indicatorClassName) }) }));
15
+ bg: indicatorColor ?? '$soft', ...(0, sx_1.sx)(indicatorClassName) }) }));
16
16
  exports.Progress = Progress;
@@ -9,7 +9,9 @@ export type ProgressProps = ComponentProps<typeof GuiProgress> & {
9
9
  * native, where gui paints from tokens.
10
10
  */
11
11
  indicatorClassName?: string;
12
+ /** The moving bar's colour, a theme token: a status rung where the value is a state. */
13
+ indicatorColor?: ComponentProps<typeof GuiProgress.Indicator>['bg'];
12
14
  };
13
- declare const Progress: ({ value, indicatorClassName, ...props }: ProgressProps) => import("react").JSX.Element;
15
+ declare const Progress: ({ value, indicatorClassName, indicatorColor, ...props }: ProgressProps) => import("react").JSX.Element;
14
16
  export { Progress };
15
17
  //# sourceMappingURL=progress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/progress.tsx"],"names":[],"mappings":"AAEA,oDAAoD;AACpD,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAG3C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,WAAW,CAAC,GAAG;IAC/D;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,QAAA,MAAM,QAAQ,4CAA6C,aAAa,gCAqBvE,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/progress.tsx"],"names":[],"mappings":"AAEA,oDAAoD;AACpD,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAG3C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,WAAW,CAAC,GAAG;IAC/D;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,wFAAwF;IACxF,cAAc,CAAC,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAA;CACpE,CAAA;AAED,QAAA,MAAM,QAAQ,4DAA6D,aAAa,gCAqBvF,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -4,11 +4,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { Progress as GuiProgress } from '@hanzo/gui';
5
5
  import { sx } from '../../sx.js';
6
6
  import { slot } from './slot.js';
7
- const Progress = ({ value, indicatorClassName, ...props }) => (_jsx(GuiProgress, { ...slot('progress'), value: value ?? 0, height: 8, width: "100%", bg: "$edge", rounded: "$10", overflow: "hidden", ...props, children: _jsx(GuiProgress.Indicator, { ...slot('progress-indicator'),
7
+ const Progress = ({ value, indicatorClassName, indicatorColor, ...props }) => (_jsx(GuiProgress, { ...slot('progress'), value: value ?? 0, height: 8, width: "100%", bg: "$edge", rounded: "$10", overflow: "hidden", ...props, children: _jsx(GuiProgress.Indicator, { ...slot('progress-indicator'),
8
8
  // Same reason as the slider's fill: `$ink` is the foreground rung, and
9
9
  // a type colour stretched across a bar is a lit slab. 6.93:1 over the
10
10
  // track against WCAG 1.4.11's 3:1 — legible with room to spare, and no
11
11
  // longer competing with the text beside it for attention.
12
- bg: "$soft", ...sx(indicatorClassName) }) }));
12
+ bg: indicatorColor ?? '$soft', ...sx(indicatorClassName) }) }));
13
13
  export { Progress };
14
14
  //# sourceMappingURL=progress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/backends/gui/progress.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,oDAAoD;AACpD,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAY7B,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,KAAK,EAAiB,EAAE,EAAE,CAAC,CAC3E,KAAC,WAAW,OACN,IAAI,CAAC,UAAU,CAAC,EACpB,KAAK,EAAE,KAAK,IAAI,CAAC,EACjB,MAAM,EAAE,CAAC,EACT,KAAK,EAAC,MAAM,EACZ,EAAE,EAAC,OAAO,EACV,OAAO,EAAC,KAAK,EACb,QAAQ,EAAC,QAAQ,KACb,KAAK,YAET,KAAC,WAAW,CAAC,SAAS,OAChB,IAAI,CAAC,oBAAoB,CAAC;QAC9B,uEAAuE;QACvE,sEAAsE;QACtE,uEAAuE;QACvE,0DAA0D;QAC1D,EAAE,EAAC,OAAO,KACN,EAAE,CAAC,kBAAkB,CAAC,GAC1B,GACU,CACf,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/backends/gui/progress.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,oDAAoD;AACpD,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAc7B,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAAG,KAAK,EAAiB,EAAE,EAAE,CAAC,CAC3F,KAAC,WAAW,OACN,IAAI,CAAC,UAAU,CAAC,EACpB,KAAK,EAAE,KAAK,IAAI,CAAC,EACjB,MAAM,EAAE,CAAC,EACT,KAAK,EAAC,MAAM,EACZ,EAAE,EAAC,OAAO,EACV,OAAO,EAAC,KAAK,EACb,QAAQ,EAAC,QAAQ,KACb,KAAK,YAET,KAAC,WAAW,CAAC,SAAS,OAChB,IAAI,CAAC,oBAAoB,CAAC;QAC9B,uEAAuE;QACvE,sEAAsE;QACtE,uEAAuE;QACvE,0DAA0D;QAC1D,EAAE,EAAE,cAAc,IAAI,OAAO,KACzB,EAAE,CAAC,kBAAkB,CAAC,GAC1B,GACU,CACf,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
package/dist/gallery.cjs CHANGED
@@ -38,6 +38,10 @@ const DialogTemplate_1 = require("./product/DialogTemplate.cjs");
38
38
  const ChipSelect_1 = require("./product/ChipSelect.cjs");
39
39
  const RepoSelect_1 = require("./product/RepoSelect.cjs");
40
40
  const BranchSelect_1 = require("./product/BranchSelect.cjs");
41
+ const UsageMeter_1 = require("./product/UsageMeter.cjs");
42
+ const LimitedBanner_1 = require("./product/LimitedBanner.cjs");
43
+ const PlanUsage_1 = require("./product/PlanUsage.cjs");
44
+ const limits_1 = require("./product/limits.cjs");
41
45
  const models_1 = require("./models/index.cjs");
42
46
  const chat_1 = require("./chat/index.cjs");
43
47
  const gui_2 = require("./backends/gui/index.cjs");
@@ -136,6 +140,19 @@ const SOURCES = [
136
140
  * a 36px button sat halfway down beside a 320px panel with no relationship to
137
141
  * it. Most of what read as raggedness was that one word.
138
142
  */
143
+ const USAGE = (0, limits_1.limitsOf)({
144
+ plan: 'max-20x',
145
+ state: 'limited',
146
+ classes: {
147
+ premium: { percent: 100, state: 'limited', paying: 'none', resets_at: '2026-10-31T00:00:00Z' },
148
+ ours: { percent: 85, state: 'near', paying: 'plan', resets_at: '2026-10-31T00:00:00Z', window: { percent: 40, state: 'ok', resets_at: '2026-10-31T00:00:00Z' } },
149
+ free: { percent: 20, state: 'ok', paying: 'prepaid', resets_at: '2026-10-31T00:00:00Z' },
150
+ },
151
+ actions: [
152
+ { kind: 'upgrade', label: 'Upgrade', url: 'https://hanzo.ai/pricing' },
153
+ { kind: 'topup', label: 'Add prepaid credit', url: 'https://hanzo.ai/billing' },
154
+ ],
155
+ });
139
156
  const Section = ({ name, children }) => ((0, jsx_runtime_1.jsx)("section", { "data-gallery": name, style: {
140
157
  display: 'flex',
141
158
  flexWrap: 'wrap',
@@ -165,7 +182,7 @@ const Gallery = () => ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex'
165
182
  tabs: [
166
183
  { id: 'console', title: 'Console', closable: false, content: (0, jsx_runtime_1.jsx)(gui_2.CardTitle, { children: "console" }) },
167
184
  ],
168
- }, children: (0, jsx_runtime_1.jsx)(gui_2.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: '100%', maxWidth: 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_2.Button, { children: "hinted" }) }), (0, jsx_runtime_1.jsx)(gui_2.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_2.CardTitle, { children: "body" }) }) })] }), (0, jsx_runtime_1.jsxs)(Section, { name: "chat", children: [(0, jsx_runtime_1.jsxs)(gui_2.Screen, { height: "min(72vh, 620px)", minH: 420, maxW: 720, gap: "$3", children: [(0, jsx_runtime_1.jsxs)(chat_1.Header, { title: "A conversation with a long enough name to clamp", leading: (0, jsx_runtime_1.jsx)(chat_1.AsideToggle, {}), onOpenMenu: NOOP, children: [(0, jsx_runtime_1.jsx)(chat_1.ShareButton, {}), (0, jsx_runtime_1.jsx)(chat_1.AsideToggle, {})] }), (0, jsx_runtime_1.jsx)(gui_2.Fill, { children: (0, jsx_runtime_1.jsx)(chat_1.Message, { role: "user", children: "plain Fill \u2014 the middle, without a Thread" }) }), (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_2.Spinner, {}), actions: (0, jsx_runtime_1.jsx)(gui_2.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: "user", body: { bg: '$color5', rounded: '$3' }, children: "restyled bubble" }), (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_2.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)(gui_2.Screen, { height: "min(72vh, 620px)", minH: 420, maxW: 720, gap: "$3", children: (0, jsx_runtime_1.jsx)(chat_1.Chat, { messages: TURNS, streaming: true, send: NOOP, stop: NOOP, composer: { placeholder: 'Ask anything' } }) }), (0, jsx_runtime_1.jsx)(gui_2.Screen, { height: "min(72vh, 620px)", minH: 420, maxW: 720, gap: "$3", children: (0, jsx_runtime_1.jsx)(chat_1.Chat, { messages: [], send: NOOP, empty: (0, jsx_runtime_1.jsx)(chat_1.Message, { role: "system", children: "nothing yet" }) }) }), (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: '100%', maxWidth: 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: "workspace", children: [(0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', width: '100%', height: 420 }, children: (0, jsx_runtime_1.jsx)(agents_1.Workspace, { start: (0, jsx_runtime_1.jsx)(agents_1.ProjectChip, { name: "MEGA Shop", onPress: NOOP }), middle: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(agents_1.Views, { views: [...agents_1.VIEWS, agents_1.CHAT], value: "preview", onChange: NOOP, label: "Editor view" }), (0, jsx_runtime_1.jsx)(agents_1.Views, { views: agents_1.DEVICES, value: "desktop", onChange: NOOP, label: "Device", labels: "none" }), (0, jsx_runtime_1.jsx)(agents_1.PageSelect, { pages: [{ id: '/', label: 'Homepage' }], value: "/", onChange: NOOP })] }), end: (0, jsx_runtime_1.jsx)(gui_2.Button, { size: "sm", children: "Publish" }), chat: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(agents_1.Suggestions, { items: agents_1.SUGGESTIONS, onPick: NOOP, onDismiss: NOOP }), (0, jsx_runtime_1.jsx)(agents_1.Attachments, { items: [
185
+ }, children: (0, jsx_runtime_1.jsx)(gui_2.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: '100%', maxWidth: 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_2.Button, { children: "hinted" }) }), (0, jsx_runtime_1.jsx)(gui_2.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_2.CardTitle, { children: "body" }) }) })] }), (0, jsx_runtime_1.jsx)(Section, { name: "usage-limits", children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: 16, width: '100%', maxWidth: 480 }, children: [['md', 'sm'].map((size) => ((0, jsx_runtime_1.jsx)(UsageMeter_1.UsageMeter, { size: size, limits: USAGE }, size))), (0, jsx_runtime_1.jsx)(LimitedBanner_1.LimitedBanner, { message: "Premium models are paused until Oct 31. You're chatting on Zen Free.", actions: USAGE.actions, onAction: () => { }, onClose: () => { } }), (0, jsx_runtime_1.jsx)(PlanUsage_1.PlanUsage, { limits: { ...USAGE, state: 'ok', period_start: '2026-10-01T00:00:00Z', period_end: '2026-10-31T00:00:00Z' }, onAction: () => { } }), (0, jsx_runtime_1.jsx)(PlanUsage_1.PlanUsage, { limits: { ...USAGE, plan: '' }, onAction: () => { } })] }) }), (0, jsx_runtime_1.jsxs)(Section, { name: "chat", children: [(0, jsx_runtime_1.jsxs)(gui_2.Screen, { height: "min(72vh, 620px)", minH: 420, maxW: 720, gap: "$3", children: [(0, jsx_runtime_1.jsxs)(chat_1.Header, { title: "A conversation with a long enough name to clamp", leading: (0, jsx_runtime_1.jsx)(chat_1.AsideToggle, {}), onOpenMenu: NOOP, children: [(0, jsx_runtime_1.jsx)(chat_1.ShareButton, {}), (0, jsx_runtime_1.jsx)(chat_1.AsideToggle, {})] }), (0, jsx_runtime_1.jsx)(gui_2.Fill, { children: (0, jsx_runtime_1.jsx)(chat_1.Message, { role: "user", children: "plain Fill \u2014 the middle, without a Thread" }) }), (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_2.Spinner, {}), actions: (0, jsx_runtime_1.jsx)(gui_2.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: "user", body: { bg: '$color5', rounded: '$3' }, children: "restyled bubble" }), (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_2.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)(gui_2.Screen, { height: "min(72vh, 620px)", minH: 420, maxW: 720, gap: "$3", children: (0, jsx_runtime_1.jsx)(chat_1.Chat, { messages: TURNS, streaming: true, send: NOOP, stop: NOOP, composer: { placeholder: 'Ask anything' } }) }), (0, jsx_runtime_1.jsx)(gui_2.Screen, { height: "min(72vh, 620px)", minH: 420, maxW: 720, gap: "$3", children: (0, jsx_runtime_1.jsx)(chat_1.Chat, { messages: [], send: NOOP, empty: (0, jsx_runtime_1.jsx)(chat_1.Message, { role: "system", children: "nothing yet" }) }) }), (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: '100%', maxWidth: 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: "workspace", children: [(0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', width: '100%', height: 420 }, children: (0, jsx_runtime_1.jsx)(agents_1.Workspace, { start: (0, jsx_runtime_1.jsx)(agents_1.ProjectChip, { name: "MEGA Shop", onPress: NOOP }), middle: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(agents_1.Views, { views: [...agents_1.VIEWS, agents_1.CHAT], value: "preview", onChange: NOOP, label: "Editor view" }), (0, jsx_runtime_1.jsx)(agents_1.Views, { views: agents_1.DEVICES, value: "desktop", onChange: NOOP, label: "Device", labels: "none" }), (0, jsx_runtime_1.jsx)(agents_1.PageSelect, { pages: [{ id: '/', label: 'Homepage' }], value: "/", onChange: NOOP })] }), end: (0, jsx_runtime_1.jsx)(gui_2.Button, { size: "sm", children: "Publish" }), chat: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(agents_1.Suggestions, { items: agents_1.SUGGESTIONS, onPick: NOOP, onDismiss: NOOP }), (0, jsx_runtime_1.jsx)(agents_1.Attachments, { items: [
169
186
  { id: 'a', kind: 'file', label: 'src/app.tsx' },
170
187
  { id: 'b', kind: 'element', label: '<button> .cta' },
171
188
  { id: 'c', kind: 'upload', label: 'shot.png' },
@@ -1 +1 @@
1
- {"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"AA8OA;;;GAGG;AACH,eAAO,MAAM,OAAO,mCA22BnB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,gCA4BpB;eAEc,OAAO"}
1
+ {"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../src/gallery.tsx"],"names":[],"mappings":"AAgQA;;;GAGG;AACH,eAAO,MAAM,OAAO,mCA63BnB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,gCA4BpB;eAEc,OAAO"}