@hanzo/ui 8.27.59 → 8.27.61

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/code-editor.cjs +39 -18
  2. package/dist/backends/gui/code-editor.d.ts.map +1 -1
  3. package/dist/backends/gui/code-editor.js +39 -18
  4. package/dist/backends/gui/code-editor.js.map +1 -1
  5. package/dist/backends/gui/json-tree.cjs +4 -2
  6. package/dist/backends/gui/json-tree.d.ts.map +1 -1
  7. package/dist/backends/gui/json-tree.js +4 -2
  8. package/dist/backends/gui/json-tree.js.map +1 -1
  9. package/dist/backends/gui/json.cjs +68 -66
  10. package/dist/backends/gui/json.d.ts +3 -2
  11. package/dist/backends/gui/json.d.ts.map +1 -1
  12. package/dist/backends/gui/json.js +68 -66
  13. package/dist/backends/gui/json.js.map +1 -1
  14. package/dist/chat/Composer.cjs +1 -1
  15. package/dist/chat/Composer.d.ts +1 -1
  16. package/dist/chat/Composer.js +1 -1
  17. package/dist/gallery.cjs +4 -4
  18. package/dist/gallery.d.ts.map +1 -1
  19. package/dist/gallery.html +4 -5
  20. package/dist/gallery.js +5 -5
  21. package/dist/gallery.js.map +1 -1
  22. package/dist/index.cjs +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/index.node.cjs +1 -1
  25. package/dist/index.node.js +1 -1
  26. package/dist/models/ModelPicker.cjs +191 -0
  27. package/dist/models/ModelPicker.d.ts +27 -0
  28. package/dist/models/ModelPicker.d.ts.map +1 -0
  29. package/dist/models/ModelPicker.js +189 -0
  30. package/dist/models/ModelPicker.js.map +1 -0
  31. package/dist/models/catalog.cjs +313 -184
  32. package/dist/models/catalog.d.ts +101 -38
  33. package/dist/models/catalog.d.ts.map +1 -1
  34. package/dist/models/catalog.js +295 -179
  35. package/dist/models/catalog.js.map +1 -1
  36. package/dist/models/index.cjs +33 -12
  37. package/dist/models/index.d.ts +7 -4
  38. package/dist/models/index.d.ts.map +1 -1
  39. package/dist/models/index.js +7 -6
  40. package/dist/models/index.js.map +1 -1
  41. package/dist/models/picker.logic.cjs +83 -0
  42. package/dist/models/picker.logic.d.ts +51 -0
  43. package/dist/models/picker.logic.d.ts.map +1 -0
  44. package/dist/models/picker.logic.js +74 -0
  45. package/dist/models/picker.logic.js.map +1 -0
  46. package/dist/product/limits.cjs +14 -13
  47. package/dist/product/limits.d.ts +9 -10
  48. package/dist/product/limits.d.ts.map +1 -1
  49. package/dist/product/limits.js +14 -12
  50. package/dist/product/limits.js.map +1 -1
  51. package/dist/styles.css +1 -2
  52. package/package.json +1 -1
  53. package/dist/models/ModelSelector.cjs +0 -80
  54. package/dist/models/ModelSelector.d.ts +0 -44
  55. package/dist/models/ModelSelector.d.ts.map +0 -1
  56. package/dist/models/ModelSelector.js +0 -78
  57. package/dist/models/ModelSelector.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../src/models/ModelSelector.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAmD,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAenG,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,iBAAiB,EAAE,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAA;CAC/C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,IAAW,EACX,WAA4B,EAC5B,QAAe,EACf,SAAS,EACT,IAAI,EAAE,QAAQ,EACd,YAAY,EACZ,MAAM,GACP,EAAE,kBAAkB,+BA2IpB;eAEc,aAAa"}
@@ -1,78 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useMemo, useState } from 'react';
4
- import { sx } from '../sx.js';
5
- import { Check, ChevronsUpDown } from '@hanzogui/lucide-icons-2';
6
- import { SizableText, XStack } from '@hanzo/gui';
7
- import { Anchor, Button, Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, Popover, PopoverContent, PopoverTrigger, } from '../backends/gui/index.js';
8
- import { familyOf, filterChatModels, groupModelsByFamily } from './catalog.js';
9
- /** Show the search input once a catalog gets this large. */
10
- const SEARCH_THRESHOLD = 12;
11
- /** Panel floor when the trigger has not reported its width yet. */
12
- const MIN_W = 224;
13
- const MAX_H = 288;
14
- function fmtContext(ctx) {
15
- if (!ctx)
16
- return '';
17
- if (ctx >= 1_000_000)
18
- return `${(ctx / 1_000_000).toFixed(ctx % 1_000_000 === 0 ? 0 : 1)}M`;
19
- if (ctx >= 1000)
20
- return `${Math.round(ctx / 1000)}K`;
21
- return `${ctx}`;
22
- }
23
- /**
24
- * ModelSelector — the one unified model picker for every Hanzo app.
25
- *
26
- * Family-grouped picker in a Popover + Command combobox: grouped sections with
27
- * family headers, premium markers, context suffixes, keyboard navigation, and
28
- * type-to-filter search for large catalogs.
29
- *
30
- * A model `paused` names is listed and chosen like any other, with a quiet
31
- * "Paused" where its context size would sit.
32
- *
33
- * A model with `access` is listed and never chosen: its row is disabled, says
34
- * why, and links to where a person asks for access. The link sits inside a
35
- * list item rather than an option, so it is a control of its own and not one
36
- * nested in another; it keeps Enter to itself, which the list would otherwise
37
- * take as a pick.
38
- *
39
- * Styling is gui style props and tokens throughout — no class strings. The panel
40
- * matches the trigger's MEASURED width (`onLayout`, which gui implements on web
41
- * too), never a Radix `--radix-popover-trigger-width` custom property: nothing
42
- * defines that variable now that Radix is gone.
43
- */
44
- export function ModelSelector({ models, value, onChange, disabled = false, size = 'md', placeholder = 'Select model', chatOnly = true, className, open: openProp, onOpenChange, paused, }) {
45
- const [own, setOwn] = useState(false);
46
- const open = openProp ?? own;
47
- const setOpen = (next) => {
48
- if (openProp === undefined)
49
- setOwn(next);
50
- onOpenChange?.(next);
51
- };
52
- const [triggerW, setTriggerW] = useState(0);
53
- const visible = useMemo(() => (chatOnly ? filterChatModels(models) : models), [models, chatOnly]);
54
- const groups = useMemo(() => groupModelsByFamily(visible), [visible]);
55
- const showSearch = visible.length > SEARCH_THRESHOLD;
56
- // Resolve the selected label from the FULL list so a current pick still shows
57
- // even when chatOnly would otherwise hide it.
58
- const selected = value ? models.find((m) => m.id === value) : undefined;
59
- const selectedLabel = selected ? (selected.label ?? selected.id) : placeholder;
60
- const selectedFamily = selected ? familyOf(selected) : undefined;
61
- const isSm = size === 'sm';
62
- return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(XStack, { onLayout: (e) => setTriggerW(e.nativeEvent.layout.width), children: _jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: isSm ? 'sm' : 'default', role: "combobox", "aria-expanded": open, disabled: disabled, justify: "flex-start", ...sx(className), children: [_jsx(SizableText, { numberOfLines: 1, size: isSm ? '$1' : '$2', color: "$color12", children: selectedLabel }), selectedFamily && (_jsx(SizableText, { numberOfLines: 1, size: isSm ? '$1' : '$2', color: "$color11", children: selectedFamily })), _jsx(ChevronsUpDown, { size: isSm ? 12 : 14, ml: "auto", shrink: 0, opacity: 0.5 })] }) }) }), _jsx(PopoverContent, { align: "start", p: 0, width: Math.max(triggerW, MIN_W), children: _jsxs(Command, { children: [showSearch && _jsx(CommandInput, { placeholder: "Search models\u2026" }), _jsxs(CommandList, { maxH: MAX_H, children: [_jsx(CommandEmpty, { children: "No models found." }), groups.map((group) => (_jsx(CommandGroup, { heading: group.family, children: group.models.map((m) => {
63
- const label = m.label ?? m.id;
64
- const ctx = fmtContext(m.context_window);
65
- const locked = m.access === 'research';
66
- const resting = !locked && (paused?.(m) ?? false);
67
- return (_jsxs(CommandItem, { value: `${group.family} ${label} ${m.id}`, disabled: locked, "aria-disabled": locked ? false : undefined, "data-access": m.access, "data-paused": resting || undefined,
68
- // The name is muted, not the row: its link has to read as a link.
69
- opacity: 1, onSelect: () => {
70
- onChange(m.id);
71
- setOpen(false);
72
- }, children: [_jsxs(XStack, { flex: 1, minW: 0, items: "center", gap: "$2", "aria-disabled": locked || undefined, opacity: locked ? 0.5 : 1, children: [_jsx(Check, { size: 14, shrink: 0, opacity: m.id === value ? 1 : 0 }), _jsx(SizableText, { numberOfLines: 1, size: "$2", children: label }), m.premium && (_jsx(SizableText, { size: "$2", color: "$color11", "aria-label": "Premium", children: "\u2726" })), locked ? (_jsx(SizableText, { ml: "auto", shrink: 0, pl: "$2", size: "$1", color: "$color11", children: "Research preview" })) : resting ? (_jsx(SizableText, { ml: "auto", shrink: 0, pl: "$2", size: "$1", color: "$color11", children: "Paused" })) : ctx && (_jsx(XStack, { ml: "auto", shrink: 0, pl: "$2", children: _jsx(SizableText, { size: "$1", color: "$color11", fontVariant: ['tabular-nums'], children: ctx }) }))] }), locked && m.request && (_jsx(Anchor, { href: m.request, target: "_blank", rel: "noopener noreferrer", shrink: 0, size: "$1", color: "$color12", textDecorationLine: "underline",
73
- // The row takes no pointer while disabled; its link does.
74
- pointerEvents: "auto", onKeyDown: (e) => e.stopPropagation(), children: "Request access" }))] }, m.id));
75
- }) }, group.family)))] })] }) })] }));
76
- }
77
- export default ModelSelector;
78
- //# sourceMappingURL=ModelSelector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModelSelector.js","sourceRoot":"","sources":["../../src/models/ModelSelector.tsx"],"names":[],"mappings":"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"}