@hanzo/ui 8.27.60 → 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.
- package/dist/chat/Composer.cjs +1 -1
- package/dist/chat/Composer.d.ts +1 -1
- package/dist/chat/Composer.js +1 -1
- package/dist/gallery.cjs +4 -4
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.html +4 -5
- package/dist/gallery.js +5 -5
- package/dist/gallery.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/index.node.cjs +1 -1
- package/dist/index.node.js +1 -1
- package/dist/models/ModelPicker.cjs +191 -0
- package/dist/models/ModelPicker.d.ts +27 -0
- package/dist/models/ModelPicker.d.ts.map +1 -0
- package/dist/models/ModelPicker.js +189 -0
- package/dist/models/ModelPicker.js.map +1 -0
- package/dist/models/catalog.cjs +313 -184
- package/dist/models/catalog.d.ts +101 -38
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/catalog.js +295 -179
- package/dist/models/catalog.js.map +1 -1
- package/dist/models/index.cjs +33 -12
- package/dist/models/index.d.ts +7 -4
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +7 -6
- package/dist/models/index.js.map +1 -1
- package/dist/models/picker.logic.cjs +83 -0
- package/dist/models/picker.logic.d.ts +51 -0
- package/dist/models/picker.logic.d.ts.map +1 -0
- package/dist/models/picker.logic.js +74 -0
- package/dist/models/picker.logic.js.map +1 -0
- package/dist/product/limits.cjs +14 -13
- package/dist/product/limits.d.ts +9 -10
- package/dist/product/limits.d.ts.map +1 -1
- package/dist/product/limits.js +14 -12
- package/dist/product/limits.js.map +1 -1
- package/dist/styles.css +1 -2
- package/package.json +1 -1
- package/dist/models/ModelSelector.cjs +0 -80
- package/dist/models/ModelSelector.d.ts +0 -44
- package/dist/models/ModelSelector.d.ts.map +0 -1
- package/dist/models/ModelSelector.js +0 -78
- package/dist/models/ModelSelector.js.map +0 -1
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* ModelPicker — the one model picker every Hanzo surface uses: hanzo.ai chat
|
|
5
|
+
* and dev, and every playground tab in the console.
|
|
6
|
+
*
|
|
7
|
+
* It lists the whole catalog `GET /v1/models` answers, grouped — Hanzo's own
|
|
8
|
+
* families first (Enso, Zen, Kai, Jev, Zoo), then every maker by name — with a
|
|
9
|
+
* search over id, name, maker and description. `scope` narrows it to what a
|
|
10
|
+
* surface can run (an embeddings tab offers embedding models).
|
|
11
|
+
*
|
|
12
|
+
* Every listed model can be picked. One the payer's plan has paused, by class
|
|
13
|
+
* or by itself (`limits`), says "Paused" and still picks: the gateway answers
|
|
14
|
+
* it with the policy's refusal or from Enso, and the host shows that. Only a
|
|
15
|
+
* research preview, which nothing can call yet, is listed and never picked.
|
|
16
|
+
*
|
|
17
|
+
* VIRTUALISED. Five hundred rows are drawn as the ~15 in view plus a margin:
|
|
18
|
+
* every row is one height, so a scroll offset names the slice outright and
|
|
19
|
+
* two spacers stand in for the rest. The cursor moves over the full list and
|
|
20
|
+
* scrolls itself into view, so keyboard reach is the same as a full render.
|
|
21
|
+
*
|
|
22
|
+
* ARIA: the search field is the combobox and owns the cursor through
|
|
23
|
+
* `aria-activedescendant`; the list is a listbox whose options carry
|
|
24
|
+
* `aria-setsize` / `aria-posinset`, since most of them are not in the DOM.
|
|
25
|
+
* Group headings are presentation: the option's own label names the group.
|
|
26
|
+
*
|
|
27
|
+
* On a phone it is a bottom sheet with rows sized for a thumb; elsewhere a
|
|
28
|
+
* popover. Styling is gui props and tokens only.
|
|
29
|
+
*/
|
|
30
|
+
import { Anchor, Input as GuiInput, ScrollView, SizableText, XStack, YStack, useMedia } from '@hanzo/gui';
|
|
31
|
+
import { Check, ChevronsUpDown, Search } from '@hanzogui/lucide-icons-2';
|
|
32
|
+
import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
33
|
+
import { Popover, PopoverContent, PopoverTrigger } from '../backends/gui/popover.js';
|
|
34
|
+
import { RING } from '../backends/gui/press.js';
|
|
35
|
+
import { Sheet, SheetContent, SheetTitle } from '../backends/gui/sheet.js';
|
|
36
|
+
import { slot } from '../backends/gui/slot.js';
|
|
37
|
+
import { move } from '../product/chipSelect.logic.js';
|
|
38
|
+
import { formatContext, groupLabel, isPaused, modelName, RESEARCH, } from './catalog.js';
|
|
39
|
+
import { modelCount, pickable, pickerRows, restable, revealTop, visibleRange } from './picker.logic.js';
|
|
40
|
+
/** Row height, px: a line of 13px type on a pointer, a thumb's reach on a phone. */
|
|
41
|
+
const ROW = 32;
|
|
42
|
+
const ROW_TOUCH = 44;
|
|
43
|
+
/** The list's ceiling in a popover, px. */
|
|
44
|
+
const LIST_H = 360;
|
|
45
|
+
const PANEL_W = 360;
|
|
46
|
+
const MOVES = new Set(['ArrowDown', 'ArrowUp', 'Home', 'End', 'PageDown', 'PageUp']);
|
|
47
|
+
export function ModelPicker({ models, value, onChange, scope, limits, loading = false, error = null, disabled = false, quiet = false, size = 'md', placeholder = 'Choose a model', name = 'Model', open: openProp, onOpenChange, }) {
|
|
48
|
+
const [own, setOwn] = useState(false);
|
|
49
|
+
const open = openProp ?? own;
|
|
50
|
+
const setOpen = useCallback((next) => {
|
|
51
|
+
if (openProp === undefined)
|
|
52
|
+
setOwn(next);
|
|
53
|
+
onOpenChange?.(next);
|
|
54
|
+
}, [openProp, onOpenChange]);
|
|
55
|
+
const media = useMedia();
|
|
56
|
+
const sheet = !media.sm;
|
|
57
|
+
const row = sheet ? ROW_TOUCH : ROW;
|
|
58
|
+
const [q, setQ] = useState('');
|
|
59
|
+
const [at, setAt] = useState(-1);
|
|
60
|
+
const [top, setTop] = useState(0);
|
|
61
|
+
const [viewH, setViewH] = useState(LIST_H);
|
|
62
|
+
const [triggerW, setTriggerW] = useState(0);
|
|
63
|
+
const list = useRef(null);
|
|
64
|
+
const field = useRef(null);
|
|
65
|
+
const trigger = useRef(null);
|
|
66
|
+
const id = useId();
|
|
67
|
+
const listId = `${id}-list`;
|
|
68
|
+
const optionId = (i) => `${id}-opt-${i}`;
|
|
69
|
+
const rows = useMemo(() => pickerRows(models, q, scope), [models, q, scope]);
|
|
70
|
+
const total = useMemo(() => modelCount(rows), [rows]);
|
|
71
|
+
const research = useMemo(() => RESEARCH.filter((r) => rows.some((x) => x.kind === 'model' && x.model.id === r.id)), [rows]);
|
|
72
|
+
// Position among the models alone, for aria-posinset.
|
|
73
|
+
const position = useMemo(() => {
|
|
74
|
+
const pos = [];
|
|
75
|
+
let n = 0;
|
|
76
|
+
for (const r of rows)
|
|
77
|
+
pos.push(r.kind === 'model' ? ++n : 0);
|
|
78
|
+
return pos;
|
|
79
|
+
}, [rows]);
|
|
80
|
+
const selected = value ? models.find((m) => m.id === value) : undefined;
|
|
81
|
+
const label = selected ? modelName(selected) : value || placeholder;
|
|
82
|
+
const scrollTo = useCallback((y) => {
|
|
83
|
+
list.current?.scrollTo?.({ y, animated: false });
|
|
84
|
+
setTop(y);
|
|
85
|
+
}, []);
|
|
86
|
+
// Opening starts from the top of an empty search, the cursor on the chosen
|
|
87
|
+
// model — scrolled to the middle of the list — or the first one.
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
if (!open) {
|
|
90
|
+
setQ('');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const all = pickerRows(models, '', scope);
|
|
94
|
+
const chosen = all.findIndex((r) => r.kind === 'model' && r.model.id === value);
|
|
95
|
+
const first = all.findIndex((_, i) => restable(all, i));
|
|
96
|
+
const i = chosen >= 0 ? chosen : first;
|
|
97
|
+
setAt(i);
|
|
98
|
+
const y = i >= 0 ? Math.max(0, i * row - viewH / 2 + row / 2) : 0;
|
|
99
|
+
// The list mounts with the panel; scroll once it is there.
|
|
100
|
+
requestAnimationFrame(() => scrollTo(y));
|
|
101
|
+
// Only on open: the cursor is the reader's after that.
|
|
102
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
103
|
+
}, [open]);
|
|
104
|
+
// A new search puts the cursor on its first match, at the top.
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
if (!open)
|
|
107
|
+
return;
|
|
108
|
+
setAt(rows.findIndex((_, i) => restable(rows, i)));
|
|
109
|
+
scrollTo(0);
|
|
110
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
111
|
+
}, [q]);
|
|
112
|
+
const reveal = useCallback((i) => {
|
|
113
|
+
const y = revealTop(i, top, viewH, row);
|
|
114
|
+
if (y !== null)
|
|
115
|
+
scrollTo(y);
|
|
116
|
+
}, [top, viewH, row, scrollTo]);
|
|
117
|
+
const close = useCallback(() => {
|
|
118
|
+
setOpen(false);
|
|
119
|
+
queueMicrotask(() => trigger.current?.focus?.());
|
|
120
|
+
}, [setOpen]);
|
|
121
|
+
const choose = useCallback((r) => {
|
|
122
|
+
if (r?.kind !== 'model' || !pickable(r.model))
|
|
123
|
+
return;
|
|
124
|
+
onChange(r.model.id);
|
|
125
|
+
close();
|
|
126
|
+
}, [onChange, close]);
|
|
127
|
+
const onField = (e) => {
|
|
128
|
+
const key = e.key;
|
|
129
|
+
if (MOVES.has(key)) {
|
|
130
|
+
if ((key === 'Home' || key === 'End') && q)
|
|
131
|
+
return;
|
|
132
|
+
e.preventDefault?.();
|
|
133
|
+
const to = move(key, at, rows.length, (i) => !restable(rows, i));
|
|
134
|
+
setAt(to);
|
|
135
|
+
if (to >= 0)
|
|
136
|
+
reveal(to);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (e.key === 'Enter') {
|
|
140
|
+
e.preventDefault?.();
|
|
141
|
+
choose(rows[at]);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (e.key === 'Escape') {
|
|
145
|
+
e.preventDefault?.();
|
|
146
|
+
close();
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
const range = visibleRange(top, viewH, row, rows.length);
|
|
150
|
+
const shown = rows.slice(range.start, range.end);
|
|
151
|
+
const body = (_jsxs(YStack, { ...slot('model-picker-body'), flex: sheet ? 1 : undefined, minH: 0, gap: "$1", children: [_jsxs(XStack, { ...slot('model-picker-search'), height: sheet ? 40 : 32, px: "$2", gap: "$2", items: "center", rounded: "$2", borderWidth: 1, borderColor: "$rim", bg: "$background", focusWithinStyle: { borderColor: '$outlineColor' }, children: [_jsx(Search, { size: 14, color: "$soft", "aria-hidden": true }), _jsx(GuiInput, { ref: field, ...slot('model-picker-input'), unstyled: true, flex: 1, minW: 0, height: sheet ? 38 : 30, p: 0, borderWidth: 0, bg: "transparent", fontSize: sheet ? '$3' : '$2', color: "$ink", placeholderTextColor: "$soft", placeholder: "Search models", value: q, onChangeText: setQ, role: "combobox", "aria-label": "Search models", "aria-expanded": open, "aria-controls": listId, "aria-autocomplete": "list", "aria-activedescendant": at >= 0 && rows[at] ? optionId(at) : undefined, autoComplete: "off", spellCheck: false, onKeyDown: onField }), _jsx(SizableText, { ...slot('model-picker-count'), size: "$1", color: "$soft", shrink: 0, "aria-live": "polite", children: loading && !models.length ? 'Loading' : `${total} ${total === 1 ? 'model' : 'models'}` })] }), _jsxs(ScrollView, { ref: list, height: sheet ? undefined : Math.min(LIST_H, Math.max(row * 3, rows.length * row)), flex: sheet ? 1 : undefined, showsVerticalScrollIndicator: true, scrollEventThrottle: 16, onScroll: (e) => setTop(e.nativeEvent?.contentOffset?.y ?? 0), onLayout: (e) => {
|
|
152
|
+
const h = e.nativeEvent?.layout?.height;
|
|
153
|
+
if (h)
|
|
154
|
+
setViewH(h);
|
|
155
|
+
}, children: [_jsxs(YStack, { ...slot('model-picker-list'), id: listId, role: "listbox", "aria-label": name, height: rows.length * row, children: [_jsx(YStack, { height: range.start * row }), shown.map((r, k) => {
|
|
156
|
+
const i = range.start + k;
|
|
157
|
+
if (r.kind === 'group') {
|
|
158
|
+
return (_jsxs(XStack, { ...slot('model-picker-group'), role: "presentation", height: row, px: "$2", gap: "$2", items: "flex-end", pb: "$1.5", children: [_jsx(SizableText, { size: "$1", color: "$soft", fontWeight: "600", numberOfLines: 1, flex: 1, children: r.label }), _jsx(SizableText, { size: "$1", color: "$soft", fontVariant: ['tabular-nums'], children: r.count })] }, r.key));
|
|
159
|
+
}
|
|
160
|
+
const m = r.model;
|
|
161
|
+
const locked = !pickable(m);
|
|
162
|
+
const paused = !locked && isPaused(m, limits);
|
|
163
|
+
const picked = m.id === value;
|
|
164
|
+
const ctx = formatContext(m.context_window);
|
|
165
|
+
const title = modelName(m);
|
|
166
|
+
return (_jsxs(XStack, { ...slot('model-picker-option'), id: optionId(i), role: "option", "aria-selected": picked, "aria-disabled": locked || undefined, "aria-setsize": total, "aria-posinset": position[i], "aria-label": `${title}, ${groupLabel(m)}${paused ? ', paused' : ''}${locked ? ', research preview' : ''}`, "data-model": m.id, "data-class": m.class, "data-paused": paused || undefined, height: row, px: "$2", gap: "$2", items: "center", rounded: "$2", cursor: locked ? 'default' : 'pointer', bg: i === at ? '$raised' : 'transparent', onHoverIn: () => setAt(i), onPress: () => choose(r), children: [_jsx(Check, { size: 14, color: "$ink", shrink: 0, opacity: picked ? 1 : 0, "aria-hidden": true }), _jsx(SizableText, { size: sheet ? '$3' : '$2', color: "$ink", opacity: locked ? 0.5 : 1, numberOfLines: 1, flex: 1, minW: 0, children: title }), m.class === 'premium' ? (_jsx(SizableText, { size: "$1", color: "$soft", shrink: 0, "aria-hidden": true, children: "\u2726" })) : null, locked || paused || ctx ? (_jsx(SizableText, { size: "$1", color: "$soft", shrink: 0, fontVariant: ['tabular-nums'], children: locked ? 'Research preview' : paused ? 'Paused' : ctx })) : null] }, m.id));
|
|
167
|
+
})] }), rows.length === 0 ? (_jsx(XStack, { ...slot('model-picker-empty'), px: "$2", py: "$2", role: "status", children: _jsx(SizableText, { size: "$2", color: error ? '$bad' : '$soft', children: error ?? (loading ? 'Loading models…' : q ? `No models match “${q}”.` : 'No models to choose from.') }) })) : null] }), research.length ? (_jsxs(XStack, { ...slot('model-picker-research'), px: "$2", py: "$1.5", gap: "$1.5", items: "center", flexWrap: "wrap", children: [_jsxs(SizableText, { size: "$1", color: "$soft", children: [research.map(modelName).join(', '), " ", research.length === 1 ? 'is' : 'are', " in research preview."] }), _jsx(Anchor, { href: research[0].request, target: "_blank", rel: "noopener noreferrer", size: "$1", color: "$ink", textDecorationLine: "underline", children: "Request access" })] })) : null] }));
|
|
168
|
+
const small = size === 'sm';
|
|
169
|
+
const button = (_jsxs(XStack, { ref: trigger, ...slot('model-picker'), role: "button", tabIndex: disabled ? -1 : 0, "aria-label": `${name}: ${label}`, "aria-haspopup": "listbox", "aria-expanded": open, "aria-disabled": disabled || undefined, height: small ? 28 : 36, px: small ? '$2' : '$3', gap: "$2", items: "center", maxW: "100%", rounded: "$3", borderWidth: quiet ? 0 : 1, borderColor: "$borderColor", bg: quiet ? 'transparent' : '$background', cursor: disabled ? 'default' : 'pointer', opacity: disabled ? 0.5 : 1, hoverStyle: disabled ? undefined : quiet ? { bg: '$hover' } : { borderColor: '$rim' }, pressStyle: disabled ? undefined : { bg: '$hover' }, focusVisibleStyle: RING, onLayout: (e) => setTriggerW(e.nativeEvent?.layout?.width ?? 0), onPress: sheet && !disabled ? () => setOpen(true) : undefined, onKeyDown: (e) => {
|
|
170
|
+
if (disabled)
|
|
171
|
+
return;
|
|
172
|
+
if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown' || e.key === 'ArrowUp') {
|
|
173
|
+
e.preventDefault?.();
|
|
174
|
+
setOpen(true);
|
|
175
|
+
}
|
|
176
|
+
}, children: [_jsx(SizableText, { size: small ? '$1' : '$2', color: quiet ? '$quiet' : '$ink', numberOfLines: 1, shrink: 1, minW: 0, children: label }), selected && !quiet ? (_jsx(SizableText, { size: small ? '$1' : '$2', color: "$soft", numberOfLines: 1, shrink: 2, minW: 0, children: groupLabel(selected) })) : null, _jsx(ChevronsUpDown, { size: small ? 12 : 14, color: "$soft", shrink: 0, "aria-hidden": true })] }));
|
|
177
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Popover, { open: open && !sheet, onOpenChange: (v) => (v ? setOpen(true) : close()), placement: "bottom-start", allowFlip: true, stayInFrame: true, children: [_jsx(PopoverTrigger, { asChild: true, disabled: disabled, children: button }), sheet ? null : (_jsx(PopoverContent, { ...slot('model-picker-panel'), sideOffset: 6, width: Math.max(triggerW, PANEL_W), maxW: "92vw", p: "$1.5", items: "stretch", trapFocus: true, onOpenAutoFocus: (e) => {
|
|
178
|
+
e.preventDefault();
|
|
179
|
+
field.current?.focus();
|
|
180
|
+
}, onCloseAutoFocus: (e) => {
|
|
181
|
+
e.preventDefault();
|
|
182
|
+
trigger.current?.focus?.();
|
|
183
|
+
}, children: body }))] }), sheet ? (_jsx(Sheet, { open: open, onOpenChange: (v) => (v ? setOpen(true) : close()), children: _jsxs(SheetContent, { ...slot('model-picker-sheet'), side: "bottom", height: "85%", maxH: "85%", p: "$3", gap: "$2", onOpenAutoFocus: (e) => {
|
|
184
|
+
e.preventDefault();
|
|
185
|
+
field.current?.focus();
|
|
186
|
+
}, children: [_jsx(SheetTitle, { size: "$4", children: name }), body] }) })) : null] }));
|
|
187
|
+
}
|
|
188
|
+
export default ModelPicker;
|
|
189
|
+
//# sourceMappingURL=ModelPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelPicker.js","sourceRoot":"","sources":["../../src/models/ModelPicker.tsx"],"names":[],"mappings":"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"}
|