@neuronection/assistant-ui 0.53.1 → 0.54.0

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 (40) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -0
  3. package/dist/chunk-65JY3ATO.js +94 -0
  4. package/dist/chunk-65JY3ATO.js.map +1 -0
  5. package/dist/chunk-6G7H6YP6.js +180 -0
  6. package/dist/chunk-6G7H6YP6.js.map +1 -0
  7. package/dist/chunk-7IP3JP3Z.js +54 -0
  8. package/dist/chunk-7IP3JP3Z.js.map +1 -0
  9. package/dist/chunk-FQXVZVA5.js +68 -0
  10. package/dist/chunk-FQXVZVA5.js.map +1 -0
  11. package/dist/chunk-FY3NCPFO.js +112 -0
  12. package/dist/chunk-FY3NCPFO.js.map +1 -0
  13. package/dist/chunk-KKZLR3YD.js +3 -0
  14. package/dist/chunk-KKZLR3YD.js.map +1 -0
  15. package/dist/chunk-RRT3DOPJ.js +3 -0
  16. package/dist/chunk-RRT3DOPJ.js.map +1 -0
  17. package/dist/chunk-YDQW2WJH.js +70 -0
  18. package/dist/chunk-YDQW2WJH.js.map +1 -0
  19. package/dist/index.d.ts +206 -1
  20. package/dist/index.js +14 -8
  21. package/dist/provider-logo.d.ts +16 -0
  22. package/dist/provider-logo.js +3 -0
  23. package/dist/provider-logo.js.map +1 -0
  24. package/dist/provider-setup-form.d.ts +74 -0
  25. package/dist/provider-setup-form.js +3 -0
  26. package/dist/provider-setup-form.js.map +1 -0
  27. package/dist/provider-setup-tiles.d.ts +41 -0
  28. package/dist/provider-setup-tiles.js +3 -0
  29. package/dist/provider-setup-tiles.js.map +1 -0
  30. package/dist/setup-first-run-card.d.ts +23 -0
  31. package/dist/setup-first-run-card.js +3 -0
  32. package/dist/setup-first-run-card.js.map +1 -0
  33. package/dist/setup-review.d.ts +51 -0
  34. package/dist/setup-review.js +3 -0
  35. package/dist/setup-review.js.map +1 -0
  36. package/dist/styles.css +1 -1
  37. package/dist/switch-row.d.ts +19 -0
  38. package/dist/switch-row.js +3 -0
  39. package/dist/switch-row.js.map +1 -0
  40. package/package.json +25 -1
@@ -0,0 +1,112 @@
1
+ import { SwitchRow } from './chunk-FQXVZVA5.js';
2
+ import { cn } from './chunk-RVVXVTH3.js';
3
+ import * as React from 'react';
4
+ import { Scale, Database, Volume2, Mic, Wrench, Eye, Type, Check } from 'lucide-react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var DEFAULT_CAP_ICONS = {
8
+ text: Type,
9
+ vision: Eye,
10
+ tools: Wrench,
11
+ stt: Mic,
12
+ tts: Volume2,
13
+ embeddings: Database,
14
+ decision: Scale
15
+ };
16
+ var SetupReview = React.forwardRef(
17
+ function SetupReview2({
18
+ models,
19
+ slots,
20
+ onOptionsChange,
21
+ capIcons,
22
+ modelsLabel = "Models to save",
23
+ footnote = "Existing assignments and models are never removed.",
24
+ className,
25
+ ...props
26
+ }, ref) {
27
+ const icons = { ...DEFAULT_CAP_ICONS, ...capIcons };
28
+ const body = (curatedIds, slotOverrides = {}) => ({
29
+ curatedIds,
30
+ bindChat: slotOverrides.bindChat ?? slots.some((slot) => slot.optionsKey === "bindChat" && slot.bind),
31
+ bindVision: slotOverrides.bindVision ?? slots.some((slot) => slot.optionsKey === "bindVision" && slot.bind),
32
+ bindStt: slotOverrides.bindStt ?? slots.some((slot) => slot.optionsKey === "bindStt" && slot.bind),
33
+ bindDecision: slotOverrides.bindDecision ?? slots.some((slot) => slot.optionsKey === "bindDecision" && slot.bind)
34
+ });
35
+ const toggleModel = (id) => {
36
+ const next = models.filter(
37
+ (model) => model.selected !== (model.id === id)
38
+ );
39
+ onOptionsChange(body(next.map((model) => model.id)));
40
+ };
41
+ const toggleSlot = (slot) => {
42
+ onOptionsChange(
43
+ body(
44
+ models.filter((model) => model.selected).map((model) => model.id),
45
+ { [slot.optionsKey]: !slot.bind }
46
+ )
47
+ );
48
+ };
49
+ return /* @__PURE__ */ jsxs(
50
+ "div",
51
+ {
52
+ ref,
53
+ "data-as": "setup-review",
54
+ className: cn("flex w-full flex-col gap-4", className),
55
+ ...props,
56
+ children: [
57
+ models.length > 0 ? /* @__PURE__ */ jsx(
58
+ "div",
59
+ {
60
+ role: "group",
61
+ "aria-label": modelsLabel,
62
+ className: "grid grid-cols-1 gap-2 sm:grid-cols-2",
63
+ children: models.map((model) => {
64
+ const selected = model.selected;
65
+ const caps = model.caps ?? [];
66
+ return /* @__PURE__ */ jsxs(
67
+ "button",
68
+ {
69
+ type: "button",
70
+ "aria-pressed": selected,
71
+ "data-model-id": model.id,
72
+ onClick: () => toggleModel(model.id),
73
+ className: cn(
74
+ "flex cursor-pointer items-center justify-between gap-2 rounded-[var(--as-radius)] border px-3 py-2 text-left text-sm text-[var(--as-fg)] transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]",
75
+ selected ? "border-[var(--as-focus-ring)] bg-[var(--as-muted)]" : "border-[var(--as-border)] opacity-70 hover:opacity-100"
76
+ ),
77
+ children: [
78
+ /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col gap-1", children: [
79
+ /* @__PURE__ */ jsx("span", { className: "truncate font-medium", children: model.name }),
80
+ caps.length > 0 ? /* @__PURE__ */ jsx("span", { className: "flex items-center gap-2 text-xs text-[var(--as-muted-fg)]", children: caps.map((cap) => {
81
+ const Icon = icons[cap];
82
+ return Icon ? /* @__PURE__ */ jsx(Icon, { className: "size-3.5", "aria-hidden": true }, cap) : null;
83
+ }) }) : null
84
+ ] }),
85
+ selected ? /* @__PURE__ */ jsx(Check, { className: "size-4 shrink-0", "aria-hidden": true }) : null
86
+ ]
87
+ },
88
+ model.id
89
+ );
90
+ })
91
+ }
92
+ ) : null,
93
+ slots.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: slots.map((slot) => /* @__PURE__ */ jsx(
94
+ SwitchRow,
95
+ {
96
+ label: slot.label,
97
+ checked: slot.bind,
98
+ currentValue: slot.currentValue,
99
+ onCheckedChange: () => toggleSlot(slot)
100
+ },
101
+ slot.id
102
+ )) }) : null,
103
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-[var(--as-muted-fg)]", children: footnote })
104
+ ]
105
+ }
106
+ );
107
+ }
108
+ );
109
+
110
+ export { SetupReview };
111
+ //# sourceMappingURL=chunk-FY3NCPFO.js.map
112
+ //# sourceMappingURL=chunk-FY3NCPFO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/setup-review/SetupReview.tsx"],"names":["SetupReview"],"mappings":"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","file":"chunk-FY3NCPFO.js","sourcesContent":["import * as React from 'react'\nimport {\n Check,\n Database,\n Eye,\n Mic,\n Scale,\n Type,\n Volume2,\n Wrench,\n type LucideIcon,\n} from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { SwitchRow } from '../switch-row/SwitchRow'\n\n/** One curated model card (capability icons render from `caps`). */\nexport interface SetupReviewModel {\n id: string\n name: string\n caps?: string[]\n selected: boolean\n}\n\n/** The five-bind option keys of the §15 options body (camelCase — desktop\n * IPC; Python apps convert to snake_case app-side). */\nexport type SetupReviewOptionsKey =\n | 'bindChat'\n | 'bindVision'\n | 'bindStt'\n | 'bindDecision'\n\n/** One gap-fill switch. Pass one slot per `optionsKey` — chat presets show\n * text/vision/stt slots, decision-only presets show the decision slot only;\n * the current value of every slot the bind would fill rides `currentValue`. */\nexport interface SetupReviewSlot {\n id: string\n label: string\n bind: boolean\n currentValue?: string\n optionsKey: SetupReviewOptionsKey\n}\n\n/** The options body a setup run carries (plan 26 D14) — `curatedIds` in the\n * order the cards are given, one bind flag per capability group. */\nexport interface SetupReviewOptions {\n curatedIds: string[]\n bindChat: boolean\n bindVision: boolean\n bindStt: boolean\n bindDecision: boolean\n}\n\nconst DEFAULT_CAP_ICONS: Record<string, LucideIcon> = {\n text: Type,\n vision: Eye,\n tools: Wrench,\n stt: Mic,\n tts: Volume2,\n embeddings: Database,\n decision: Scale,\n}\n\nexport interface SetupReviewProps extends React.ComponentProps<'div'> {\n models: SetupReviewModel[]\n slots: SetupReviewSlot[]\n /** Emits the full options body on every card/switch edit — controlled:\n * feed the changed state back through `models`/`slots`. */\n onOptionsChange: (options: SetupReviewOptions) => void\n /** Per-capability icon override (capability string → icon). */\n capIcons?: Partial<Record<string, LucideIcon>>\n modelsLabel?: string\n footnote?: string\n}\n\n/** Editable pre-flight review (plan 26 §6): model-select cards with\n * capability icons plus gap-fill switch rows with `now:` sub-lines and the\n * never-removes footnote. Emits the five-bind options body\n * `{curatedIds, bindChat, bindVision, bindStt, bindDecision}` — append\n * semantics mean nothing existing is ever removed. */\nexport const SetupReview = React.forwardRef<HTMLDivElement, SetupReviewProps>(\n function SetupReview(\n {\n models,\n slots,\n onOptionsChange,\n capIcons,\n modelsLabel = 'Models to save',\n footnote = 'Existing assignments and models are never removed.',\n className,\n ...props\n },\n ref,\n ) {\n const icons = { ...DEFAULT_CAP_ICONS, ...capIcons }\n const body = (\n curatedIds: string[],\n slotOverrides: Partial<Record<SetupReviewOptionsKey, boolean>> = {},\n ): SetupReviewOptions => ({\n curatedIds,\n bindChat: slotOverrides.bindChat ?? slots.some((slot) => slot.optionsKey === 'bindChat' && slot.bind),\n bindVision: slotOverrides.bindVision ?? slots.some((slot) => slot.optionsKey === 'bindVision' && slot.bind),\n bindStt: slotOverrides.bindStt ?? slots.some((slot) => slot.optionsKey === 'bindStt' && slot.bind),\n bindDecision: slotOverrides.bindDecision ?? slots.some((slot) => slot.optionsKey === 'bindDecision' && slot.bind),\n })\n\n const toggleModel = (id: string): void => {\n const next = models.filter(\n (model) => model.selected !== (model.id === id),\n )\n onOptionsChange(body(next.map((model) => model.id)))\n }\n\n const toggleSlot = (slot: SetupReviewSlot): void => {\n onOptionsChange(\n body(\n models.filter((model) => model.selected).map((model) => model.id),\n { [slot.optionsKey]: !slot.bind },\n ),\n )\n }\n\n return (\n <div\n ref={ref}\n data-as=\"setup-review\"\n className={cn('flex w-full flex-col gap-4', className)}\n {...props}\n >\n {models.length > 0 ? (\n <div\n role=\"group\"\n aria-label={modelsLabel}\n className=\"grid grid-cols-1 gap-2 sm:grid-cols-2\"\n >\n {models.map((model) => {\n const selected = model.selected\n const caps = model.caps ?? []\n return (\n <button\n key={model.id}\n type=\"button\"\n aria-pressed={selected}\n data-model-id={model.id}\n onClick={() => toggleModel(model.id)}\n className={cn(\n 'flex cursor-pointer items-center justify-between gap-2 rounded-[var(--as-radius)] border px-3 py-2 text-left text-sm text-[var(--as-fg)] transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]',\n selected\n ? 'border-[var(--as-focus-ring)] bg-[var(--as-muted)]'\n : 'border-[var(--as-border)] opacity-70 hover:opacity-100',\n )}\n >\n <span className=\"flex min-w-0 flex-col gap-1\">\n <span className=\"truncate font-medium\">{model.name}</span>\n {caps.length > 0 ? (\n <span className=\"flex items-center gap-2 text-xs text-[var(--as-muted-fg)]\">\n {caps.map((cap) => {\n const Icon = icons[cap]\n return Icon ? (\n <Icon key={cap} className=\"size-3.5\" aria-hidden />\n ) : null\n })}\n </span>\n ) : null}\n </span>\n {selected ? (\n <Check className=\"size-4 shrink-0\" aria-hidden />\n ) : null}\n </button>\n )\n })}\n </div>\n ) : null}\n\n {slots.length > 0 ? (\n <div className=\"flex flex-col gap-2\">\n {slots.map((slot) => (\n <SwitchRow\n key={slot.id}\n label={slot.label}\n checked={slot.bind}\n currentValue={slot.currentValue}\n onCheckedChange={() => toggleSlot(slot)}\n />\n ))}\n </div>\n ) : null}\n\n <p className=\"text-xs text-[var(--as-muted-fg)]\">{footnote}</p>\n </div>\n )\n },\n)\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-KKZLR3YD.js.map
3
+ //# sourceMappingURL=chunk-KKZLR3YD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-KKZLR3YD.js"}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-RRT3DOPJ.js.map
3
+ //# sourceMappingURL=chunk-RRT3DOPJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-RRT3DOPJ.js"}
@@ -0,0 +1,70 @@
1
+ import { Button } from './chunk-4WBBF5LH.js';
2
+ import { cn } from './chunk-RVVXVTH3.js';
3
+ import * as React from 'react';
4
+ import { Sparkles, Loader2 } from 'lucide-react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var SetupFirstRunCard = React.forwardRef(function SetupFirstRunCard2({
8
+ title,
9
+ body,
10
+ localProbing = false,
11
+ onSetup,
12
+ onDismiss,
13
+ children,
14
+ setupLabel = "Set up a provider",
15
+ dismissLabel = "Dismiss",
16
+ probingLabel = "Checking for a local engine\u2026",
17
+ className,
18
+ ...props
19
+ }, ref) {
20
+ const titleId = React.useId();
21
+ return /* @__PURE__ */ jsxs(
22
+ "section",
23
+ {
24
+ ref,
25
+ "data-as": "setup-first-run-card",
26
+ "aria-labelledby": titleId,
27
+ className: cn(
28
+ "flex flex-col gap-3 rounded-[var(--as-radius)] border border-[var(--as-border)] bg-[var(--as-surface)] p-4",
29
+ className
30
+ ),
31
+ ...props,
32
+ children: [
33
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
34
+ /* @__PURE__ */ jsxs(
35
+ "h3",
36
+ {
37
+ id: titleId,
38
+ className: "flex items-center gap-2 text-base font-semibold text-[var(--as-fg)]",
39
+ children: [
40
+ /* @__PURE__ */ jsx(Sparkles, { className: "size-4 shrink-0 text-[var(--as-primary)]", "aria-hidden": true }),
41
+ title
42
+ ]
43
+ }
44
+ ),
45
+ body ? /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--as-muted-fg)]", children: body }) : null
46
+ ] }),
47
+ children,
48
+ localProbing ? /* @__PURE__ */ jsxs(
49
+ "p",
50
+ {
51
+ role: "status",
52
+ className: "flex items-center gap-2 text-sm text-[var(--as-muted-fg)]",
53
+ children: [
54
+ /* @__PURE__ */ jsx(Loader2, { className: "size-4 animate-spin", "aria-hidden": true }),
55
+ probingLabel
56
+ ]
57
+ }
58
+ ) : null,
59
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
60
+ /* @__PURE__ */ jsx(Button, { size: "sm", onClick: onSetup, children: setupLabel }),
61
+ onDismiss ? /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", onClick: onDismiss, children: dismissLabel }) : null
62
+ ] })
63
+ ]
64
+ }
65
+ );
66
+ });
67
+
68
+ export { SetupFirstRunCard };
69
+ //# sourceMappingURL=chunk-YDQW2WJH.js.map
70
+ //# sourceMappingURL=chunk-YDQW2WJH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/setup-first-run-card/SetupFirstRunCard.tsx"],"names":["SetupFirstRunCard"],"mappings":";;;;;;AAyBO,IAAM,iBAAA,GAA0B,KAAA,CAAA,UAAA,CAGrC,SAASA,kBAAAA,CACT;AAAA,EACE,KAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA,GAAe,KAAA;AAAA,EACf,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA,GAAa,mBAAA;AAAA,EACb,YAAA,GAAe,SAAA;AAAA,EACf,YAAA,GAAe,mCAAA;AAAA,EACf,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,UAAgB,KAAA,CAAA,KAAA,EAAM;AAC5B,EAAA,uBACE,IAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAQ,sBAAA;AAAA,MACR,iBAAA,EAAiB,OAAA;AAAA,MACjB,SAAA,EAAW,EAAA;AAAA,QACT,4GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,IAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,OAAA;AAAA,cACJ,SAAA,EAAU,qEAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,0CAAA,EAA2C,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,gBAC1E;AAAA;AAAA;AAAA,WACH;AAAA,UACC,uBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,mCAAA,EAAqC,gBAAK,CAAA,GACrD;AAAA,SAAA,EACN,CAAA;AAAA,QACC,QAAA;AAAA,QACA,YAAA,mBACC,IAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,2DAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,qBAAA,EAAsB,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,cACpD;AAAA;AAAA;AAAA,SACH,GACE,IAAA;AAAA,wBACJ,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,SACxB,QAAA,EAAA,UAAA,EACH,CAAA;AAAA,UACC,SAAA,mBACC,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAK,SAAQ,OAAA,EAAQ,OAAA,EAAS,SAAA,EACxC,QAAA,EAAA,YAAA,EACH,CAAA,GACE;AAAA,SAAA,EACN;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC","file":"chunk-YDQW2WJH.js","sourcesContent":["import * as React from 'react'\nimport { Loader2, Sparkles } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Button } from '../button/Button'\n\nexport interface SetupFirstRunCardProps\n extends Omit<React.ComponentProps<'section'>, 'title'> {\n title: React.ReactNode\n body?: React.ReactNode\n /** The app is probing for a local engine (e.g. Ollama) — renders the\n * `probingLabel` status line while it runs. */\n localProbing?: boolean\n onSetup: () => void\n /** Optional dismiss — omit to render the card without a dismiss action. */\n onDismiss?: () => void\n /** App content between body and actions (e.g. a detected-local banner). */\n children?: React.ReactNode\n setupLabel?: string\n dismissLabel?: string\n probingLabel?: string\n}\n\n/** Empty-state CTA for the AI-settings surface when no provider is\n * configured yet (plan 26 §6) — the entry point of the setup flow. Chat\n * empty states deep-link to the settings surface that renders this card. */\nexport const SetupFirstRunCard = React.forwardRef<\n HTMLElement,\n SetupFirstRunCardProps\n>(function SetupFirstRunCard(\n {\n title,\n body,\n localProbing = false,\n onSetup,\n onDismiss,\n children,\n setupLabel = 'Set up a provider',\n dismissLabel = 'Dismiss',\n probingLabel = 'Checking for a local engine…',\n className,\n ...props\n },\n ref,\n) {\n const titleId = React.useId()\n return (\n <section\n ref={ref}\n data-as=\"setup-first-run-card\"\n aria-labelledby={titleId}\n className={cn(\n 'flex flex-col gap-3 rounded-[var(--as-radius)] border border-[var(--as-border)] bg-[var(--as-surface)] p-4',\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-1\">\n <h3\n id={titleId}\n className=\"flex items-center gap-2 text-base font-semibold text-[var(--as-fg)]\"\n >\n <Sparkles className=\"size-4 shrink-0 text-[var(--as-primary)]\" aria-hidden />\n {title}\n </h3>\n {body ? (\n <p className=\"text-sm text-[var(--as-muted-fg)]\">{body}</p>\n ) : null}\n </div>\n {children}\n {localProbing ? (\n <p\n role=\"status\"\n className=\"flex items-center gap-2 text-sm text-[var(--as-muted-fg)]\"\n >\n <Loader2 className=\"size-4 animate-spin\" aria-hidden />\n {probingLabel}\n </p>\n ) : null}\n <div className=\"flex items-center gap-2\">\n <Button size=\"sm\" onClick={onSetup}>\n {setupLabel}\n </Button>\n {onDismiss ? (\n <Button size=\"sm\" variant=\"ghost\" onClick={onDismiss}>\n {dismissLabel}\n </Button>\n ) : null}\n </div>\n </section>\n )\n})\n"]}
package/dist/index.d.ts CHANGED
@@ -597,6 +597,211 @@ interface ProviderFormProps extends React.ComponentProps<'div'> {
597
597
  */
598
598
  declare const ProviderForm: React.ForwardRefExoticComponent<Omit<ProviderFormProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
599
599
 
600
+ /** One preset entry (ADR-006: the catalog is app data — the tiles only
601
+ * render it, in the order given, with equal weight). */
602
+ interface ProviderSetupTileData {
603
+ key: string;
604
+ name: string;
605
+ /** Keyless local preset (e.g. Ollama) — renders the `localLabel` caption. */
606
+ local?: boolean;
607
+ /** Disabled tiles render inert with their reason (health's overlay). */
608
+ disabled?: boolean;
609
+ disabledReason?: string;
610
+ /** The preset ships a key-prefix hint (informational for the app). */
611
+ hasKeyPrefixHint?: boolean;
612
+ }
613
+ interface ProviderSetupTilesProps extends Omit<React.ComponentProps<'div'>, 'onSelect' | 'children'> {
614
+ /** Presets in the app's family order — the grid keeps it verbatim. */
615
+ presets: ProviderSetupTileData[];
616
+ /** Preset keys already configured (renders the `configuredLabel` badge). */
617
+ configured?: string[];
618
+ /** Key of a tile the app's paste-prefix match suggests (highlight only —
619
+ * never a "recommended" ranking; all tiles stay equal weight). */
620
+ suggestedKey?: string;
621
+ /** Fires with the preset key of the activated tile. */
622
+ onSelect: (key: string) => void;
623
+ /** Extra grid cell (e.g. the "Manual / custom" tile) — app-composed. */
624
+ children?: React.ReactNode;
625
+ label?: string;
626
+ localLabel?: string;
627
+ configuredLabel?: string;
628
+ /** Visually-hidden text marking the suggested tile. */
629
+ suggestedLabel?: string;
630
+ }
631
+ /** Neutral, equal-weight provider picker grid — step one of the family's
632
+ * one-click setup (plan 26 §6): tiles in family order, no "recommended"
633
+ * anywhere, local presets visible, disabled presets explain themselves. */
634
+ declare const ProviderSetupTiles: React.ForwardRefExoticComponent<Omit<ProviderSetupTilesProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
635
+ /** The "manual / custom" tile apps append as `children` of the grid. */
636
+ declare const ProviderSetupManualTile: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
637
+
638
+ /** The shared §15 error-routing enum (family contract — apps key their i18n
639
+ * off exactly these codes). */
640
+ declare const SETUP_ERROR_CODES: readonly ["invalid_key", "insufficient_credit", "new_user_quota", "region_unavailable", "timeout", "local_not_running", "unknown"];
641
+ type SetupErrorCode = (typeof SETUP_ERROR_CODES)[number];
642
+ /** English fallback copy per code — apps inject translated labels via
643
+ * `errorLabels` (the library ships no i18n engine, ADR-006). */
644
+ declare const DEFAULT_SETUP_ERROR_COPY: Record<SetupErrorCode, string>;
645
+ /** Guided-setup preset slice (app data; snake_case API fields map app-side). */
646
+ interface ProviderSetupFormPreset {
647
+ name: string;
648
+ keyUrl?: string;
649
+ steps?: string[];
650
+ freeTierNote?: string;
651
+ fixedBase?: boolean;
652
+ baseUrl: string;
653
+ /** Keyless local preset — renders `noKeyLabel` instead of the key field. */
654
+ local?: boolean;
655
+ }
656
+ interface ProviderSetupFormValue {
657
+ name: string;
658
+ apiKey: string;
659
+ baseUrl?: string;
660
+ }
661
+ /** Classified setup failure (§15 error routing) — copy comes from
662
+ * `errorLabels`, keyed off the code. */
663
+ interface ProviderSetupFormError {
664
+ code: SetupErrorCode | string;
665
+ suspectedVendor?: string | null;
666
+ }
667
+ interface ProviderSetupFormProps extends Omit<React.ComponentProps<'form'>, 'onChange' | 'onSubmit'> {
668
+ preset: ProviderSetupFormPreset;
669
+ /** Controlled field values. */
670
+ value: ProviderSetupFormValue;
671
+ error?: ProviderSetupFormError | null;
672
+ /** Validation/connection test in flight — disables + marks the submit. */
673
+ testing?: boolean;
674
+ onSubmit: (value: ProviderSetupFormValue) => void;
675
+ onCancel?: () => void;
676
+ onChange: (value: ProviderSetupFormValue) => void;
677
+ /** Translated error copy per §15 code (`{vendor}` interpolates in the hint). */
678
+ errorLabels?: Partial<Record<string, string>>;
679
+ suspectedVendorHint?: string;
680
+ /** Notified when a checklist step is copied (Electron apps mirror the copy
681
+ * through their IPC clipboard; the browser write always happens). */
682
+ onCopyStep?: (step: string) => void;
683
+ /** Opens the key page — render an anchor by default; Electron apps pass
684
+ * their `openExternal` bridge to get a button instead. */
685
+ onOpenKeyUrl?: (url: string) => void;
686
+ /** Extra app content inside the Advanced disclosure (hosting toggle,
687
+ * country select — study/health pattern). */
688
+ advancedExtra?: React.ReactNode;
689
+ checklistLabel?: string;
690
+ copyLabel?: string;
691
+ getKeyLabel?: string;
692
+ nameLabel?: string;
693
+ apiKeyLabel?: string;
694
+ keyPlaceholder?: string;
695
+ noKeyLabel?: string;
696
+ advancedLabel?: string;
697
+ baseUrlLabel?: string;
698
+ baseUrlHint?: string;
699
+ submitLabel?: string;
700
+ cancelLabel?: string;
701
+ }
702
+ /** Guided one-click setup form (plan 26 §6): vendor checklist with copy
703
+ * buttons and key link, connection name, write-only API key
704
+ * (`autoComplete="new-password"`), and an Advanced disclosure whose base URL
705
+ * is read-only for fixed-endpoint presets. Validation, secrets and IPC are
706
+ * the app's business (ADR-006) — the form reports `onSubmit`. */
707
+ declare const ProviderSetupForm: React.ForwardRefExoticComponent<Omit<ProviderSetupFormProps, "ref"> & React.RefAttributes<HTMLFormElement>>;
708
+
709
+ /** One curated model card (capability icons render from `caps`). */
710
+ interface SetupReviewModel {
711
+ id: string;
712
+ name: string;
713
+ caps?: string[];
714
+ selected: boolean;
715
+ }
716
+ /** The five-bind option keys of the §15 options body (camelCase — desktop
717
+ * IPC; Python apps convert to snake_case app-side). */
718
+ type SetupReviewOptionsKey = 'bindChat' | 'bindVision' | 'bindStt' | 'bindDecision';
719
+ /** One gap-fill switch. Pass one slot per `optionsKey` — chat presets show
720
+ * text/vision/stt slots, decision-only presets show the decision slot only;
721
+ * the current value of every slot the bind would fill rides `currentValue`. */
722
+ interface SetupReviewSlot {
723
+ id: string;
724
+ label: string;
725
+ bind: boolean;
726
+ currentValue?: string;
727
+ optionsKey: SetupReviewOptionsKey;
728
+ }
729
+ /** The options body a setup run carries (plan 26 D14) — `curatedIds` in the
730
+ * order the cards are given, one bind flag per capability group. */
731
+ interface SetupReviewOptions {
732
+ curatedIds: string[];
733
+ bindChat: boolean;
734
+ bindVision: boolean;
735
+ bindStt: boolean;
736
+ bindDecision: boolean;
737
+ }
738
+ interface SetupReviewProps extends React.ComponentProps<'div'> {
739
+ models: SetupReviewModel[];
740
+ slots: SetupReviewSlot[];
741
+ /** Emits the full options body on every card/switch edit — controlled:
742
+ * feed the changed state back through `models`/`slots`. */
743
+ onOptionsChange: (options: SetupReviewOptions) => void;
744
+ /** Per-capability icon override (capability string → icon). */
745
+ capIcons?: Partial<Record<string, LucideIcon>>;
746
+ modelsLabel?: string;
747
+ footnote?: string;
748
+ }
749
+ /** Editable pre-flight review (plan 26 §6): model-select cards with
750
+ * capability icons plus gap-fill switch rows with `now:` sub-lines and the
751
+ * never-removes footnote. Emits the five-bind options body
752
+ * `{curatedIds, bindChat, bindVision, bindStt, bindDecision}` — append
753
+ * semantics mean nothing existing is ever removed. */
754
+ declare const SetupReview: React.ForwardRefExoticComponent<Omit<SetupReviewProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
755
+
756
+ interface SetupFirstRunCardProps extends Omit<React.ComponentProps<'section'>, 'title'> {
757
+ title: React.ReactNode;
758
+ body?: React.ReactNode;
759
+ /** The app is probing for a local engine (e.g. Ollama) — renders the
760
+ * `probingLabel` status line while it runs. */
761
+ localProbing?: boolean;
762
+ onSetup: () => void;
763
+ /** Optional dismiss — omit to render the card without a dismiss action. */
764
+ onDismiss?: () => void;
765
+ /** App content between body and actions (e.g. a detected-local banner). */
766
+ children?: React.ReactNode;
767
+ setupLabel?: string;
768
+ dismissLabel?: string;
769
+ probingLabel?: string;
770
+ }
771
+ /** Empty-state CTA for the AI-settings surface when no provider is
772
+ * configured yet (plan 26 §6) — the entry point of the setup flow. Chat
773
+ * empty states deep-link to the settings surface that renders this card. */
774
+ declare const SetupFirstRunCard: React.ForwardRefExoticComponent<Omit<SetupFirstRunCardProps, "ref"> & React.RefAttributes<HTMLElement>>;
775
+
776
+ interface SwitchRowProps extends Omit<React.ComponentProps<'button'>, 'onChange'> {
777
+ /** Visible row label — doubles as the switch's accessible name. */
778
+ label: React.ReactNode;
779
+ /** Controlled on/off state. */
780
+ checked: boolean;
781
+ /** Controlled toggle. */
782
+ onCheckedChange: (checked: boolean) => void;
783
+ /** Sub-line under the label — apps pass the current value ("now: gpt-5"). */
784
+ currentValue?: React.ReactNode;
785
+ disabled?: boolean;
786
+ }
787
+ /** Labeled `role="switch"` row with an animated knob — the standalone
788
+ * settings toggle the family's setup surfaces (desktop/study/health)
789
+ * previously hand-rolled. */
790
+ declare const SwitchRow: React.ForwardRefExoticComponent<Omit<SwitchRowProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
791
+
792
+ interface ProviderLogoProps extends React.ComponentProps<'span'> {
793
+ /** Preset key (`'openai'`, `'gemini'`, …) — unknown/unshipped marks fall
794
+ * back to a monogram of the key's first letter. */
795
+ preset: string;
796
+ /** Square icon size in px. */
797
+ size?: number;
798
+ }
799
+ /** Provider mark for setup tiles and rows: simple-icons path data keyed by
800
+ * preset key, monogram fallback (openai/groq marks are gone upstream),
801
+ * `currentColor` so it inherits app identity. Decorative by default
802
+ * (`aria-hidden`) — name the tile/button it lives in. */
803
+ declare const ProviderLogo: React.ForwardRefExoticComponent<Omit<ProviderLogoProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
804
+
600
805
  interface SettingsNavItem {
601
806
  id: string;
602
807
  label: string;
@@ -3487,4 +3692,4 @@ interface ChatLauncherProps {
3487
3692
  */
3488
3693
  declare const ChatLauncher: React.ForwardRefExoticComponent<ChatLauncherProps & React.RefAttributes<HTMLButtonElement>>;
3489
3694
 
3490
- export { AboutCard, type AboutCardProps, type AboutCreator, AboutFooterLine, type AboutFooterLineProps, type AboutLicense, type AboutLinkItem, AboutLinkList, type AboutLinkListProps, AboutNote, type AboutNoteContent, type AboutNoteProps, AboutPanel, type AboutPanelProps, type AboutSponsorContent, ActionMenu, type ActionMenuItem, type ActionMenuProps, type AdminUser, type AdminUserPatch, AdminUserTable, type AdminUserTableIcons, type AdminUserTableLabels, type AdminUserTableProps, type AiAction, AiActionsDropdown, type AiActionsDropdownProps, AiButton, type AiButtonProps, AiMagicFill, type AiMagicFillProps, type AiTextTransformEventHandlers, type AiTextTransformStatus, type AiTextTransformTransport, AuthGate, type AuthGateLabels, type AuthGateProps, type AuthGateStatus, Badge, type BadgeProps, type BranchNode, type BranchNodeInput, type BranchTree, type BreadcrumbItem, type BreadcrumbLinkProps, Breadcrumbs, type BreadcrumbsProps, Button, type ButtonProps, CUSTOM_PRESET_KEY, CapabilityChips, type CapabilityChipsProps, type CapabilityDescriptor, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CareerMark, type ChatAttachmentView, ChatBranchTree, type ChatBranchTreeIcons, type ChatBranchTreeLabels, type ChatBranchTreeNode, type ChatBranchTreeProps, ChatComposer, type ChatComposerIcons, type ChatComposerLabels, type ChatComposerProps, ChatDrawer, type ChatDrawerProps, type ChatError, type ChatExportMessage, type ChatExportOptions, ChatHistoryButton, type ChatHistoryButtonLabels, type ChatHistoryButtonProps, ChatLauncher, type ChatLauncherProps, ChatMessage, type ChatMessageAction, type ChatMessageActions, ChatMessageEditor, type ChatMessageEditorLabels, type ChatMessageEditorProps, type ChatMessageLabels, type ChatMessageProps, type ChatMessageStatus, type ChatMessageVariants, type ChatMessageView, ChatPanel, type ChatPanelProps, type ChatPanelVariant, ChatPending, type ChatPendingProps, ChatReasoning, type ChatReasoningLabels, type ChatReasoningProps, type ChatRole, ChatSearchField, type ChatSearchFieldLabels, type ChatSearchFieldProps, ChatSessionList, type ChatSessionListIcons, type ChatSessionListLabels, type ChatSessionListProps, type ChatSessionView, type ChatStreamEvent, type ChatStreamTransport, ChatSuggestionCard, type ChatSuggestionCardProps, ChatToolCard, type ChatToolCardLabels, type ChatToolCardProps, type ChatToolCatalogArgument, type ChatToolCatalogEntry, ChatToolsCatalog, type ChatToolsCatalogLabels, type ChatToolsCatalogProps, ChatTraceMeta, type ChatTraceMetaProps, ChatTraceTimeline, type ChatTraceTimelineEntry, type ChatTraceTimelineLabels, type ChatTraceTimelineProps, type ChatTraceTimelineTrace, ChatTranscript, type ChatTranscriptLabels, type ChatTranscriptProps, ChatTurnStatus, type ChatTurnStatusLabels, type ChatTurnStatusProps, ChatWelcome, type ChatWelcomeProps, CheckIndicator, type CheckIndicatorProps, ChipInput, type ChipInputProps, ChipList, type ChipListProps, type ChipVariant, Combobox, ComboboxMulti, type ComboboxMultiProps, type ComboboxOption, type ComboboxProps, ConfirmationModal, type ConfirmationModalProps, ConnectionTestRow, type ConnectionTestRowProps, type ConnectionTestStatus, ContextMenu, type ContextMenuItem, type ContextMenuProps, CopyButton, type CopyButtonProps, DatePicker, type DatePickerProps, DesktopMark, DictationButton, type DictationButtonProps, type DictationError, type DictationResult, type DictationStatus, DictationStrip, type DictationStripLabels, type DictationStripProps, type DiffCell, type DiffRow, type DiffSegment, EmptyState, type EmptyStateProps, ErrorBanner, type ErrorBannerProps, ExpandableSearch, type ExpandableSearchProps, type FamilyApp, FamilyBadge, type FamilyBadgeProps, type FamilyCreator, type FamilyMember, FieldDiff, type FieldDiffLabels, type FieldDiffProps, type FieldDiffValue, FieldLabel, type FieldLabelProps, FieldSummary, type FieldSummaryProps, FileCard, type FileCardProps, type FileCardStatus, FileQueue, type FileQueueItem, type FileQueueProps, type FlowError, FlowStatusCard, type FlowStatusCardProps, type FlowStep, type FlowStepInfo, type FlowStepStatus, FlowTelemetryStrip, type FlowTelemetryStripProps, type FlowTrace, type FlowTraceCall, FlowTraceCard, type FlowTraceCardLabels, type FlowTraceCardProps, type FlowTraceStage, type FlowTraceToolOp, FormModal, type FormModalProps, HealthMark, type HitlProposalAction, HitlProposalCard, type HitlProposalCardLabels, type HitlProposalCardProps, type HitlProposalStatus, HoverCard, HoverCardContent, HoverCardPortal, type HoverCardProps, HoverCardTrigger, InfoButton, type InfoButtonProps, InfoTooltip, type InfoTooltipProps, Input, type InputProps, type InstanceAuthMode, InstanceModeControl, type InstanceModeControlIcons, type InstanceModeControlLabels, type InstanceModeControlProps, type LineDiffOptions, type LineDiffResult, type LiveNodeState, type LiveToolCall, type LiveTurnAction, type LiveTurnState, type LiveTurnStatus, LoginForm, type LoginFormFieldOverrides, type LoginFormFields, type LoginFormIcons, type LoginFormLabels, type LoginFormProps, type LogoProps, type LogoTheme, MarkdownCodeBlock, type MarkdownCodeBlockLabels, type MarkdownCodeBlockProps, type MarkdownComponents, MarkdownDiffView, type MarkdownDiffViewLabels, type MarkdownDiffViewProps, MarkdownSurface, type MarkdownSurfaceProps, MarqueeBand, type MarqueePhase, type MarqueeSelection, MarqueeSurface, type MarqueeSurfaceProps, Menu, MenuCheckboxItem, type MenuCheckboxItemProps, MenuContent, MenuGroup, MenuItem, type MenuItemProps, MenuLabel, MenuSeparator, MenuSub, MenuSubContent, MenuSubTrigger, MenuTrigger, MermaidDiagram, type MermaidDiagramProps, MessageVariantSwitcher, type MessageVariantSwitcherLabels, type MessageVariantSwitcherProps, Modal, ModalBody, ModalClose, ModalContent, type ModalContentProps, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, ModelPicker, type ModelPickerModel, type ModelPickerProps, type ModelPickerProvider, ModelRegistry, type ModelRegistryDraft, type ModelRegistryModel, type ModelRegistryPatch, type ModelRegistryProps, type ModelRegistryProvider, type ModelRegistryRemoteModel, type ModelRegistryRemoteState, type NavChild, type NavItem, NeuronectionMark, NeuronectionWordmark, type NeuronectionWordmarkProps, PanelModal, type PanelModalProps, Popover, PopoverAnchor, PopoverButton, type PopoverButtonProps, PopoverClose, PopoverContent, PopoverTrigger, Portal, type PortalProps, type ProfileItem, ProfileSwitcher, type ProfileSwitcherIcons, type ProfileSwitcherLabels, type ProfileSwitcherProps, ProviderForm, type ProviderFormProps, type ProviderPresetOption, RangeBar, type RangeBarProps, type Rect, RegisterForm, type RegisterFormFieldOverrides, type RegisterFormFields, type RegisterFormIcons, type RegisterFormLabels, type RegisterFormProps, RichTextEditor, type RichTextEditorIcons, type RichTextEditorLabels, type RichTextEditorProps, type RichTextToolbarGroup, ScaleSlider, type ScaleSliderProps, SearchInput, type SearchInputProps, SegmentedTabs, type SegmentedTabsItem, type SegmentedTabsProps, SelectionBar, type SelectionBarProps, type SettingsNavItem, SettingsShell, type SettingsShellProps, SidebarNav, type SidebarNavLabels, type SidebarNavProps, Skeleton, type SkeletonProps, SkeletonText, type SkeletonTextProps, Spinner, type SpinnerProps, SponsorCard, type SponsorCardProps, type SponsorChannel, Stepper, type StepperProps, type StepperStep, StudyMark, Table, type TableProps, TaskAssignmentPicker, type TaskAssignmentPickerProps, type TaskAssignmentSection, type TaskAssignmentTask, TechChips, type TechChipsProps, TextDiffView, type TextDiffViewLabels, type TextDiffViewProps, ThemeScope, type ThemeScopeProps, ThemeTokens, TimeList, type TimeListProps, TimePicker, TimePickerContent, type TimePickerContentProps, type TimePickerProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UndoNotice, type UndoNoticeProps, type UnitDiffOptions, UploadDropzone, type UploadDropzoneProps, type UseAiTextTransformOptions, type UseChatStreamOptions, type UseChatStreamResult, type UseDictationOptions, type UseMarqueeOptions, UserMenu, type UserMenuIcons, type UserMenuItem, type UserMenuLanguage, type UserMenuProps, type UserMenuStatus, type UserMenuStatusTone, type UserMenuTheme, type UserMenuUser, ViewToggle, type ViewToggleProps, type ViewToggleView, Wizard, type WizardContext, type WizardProps, type WizardStep, activePathSet, badgeVariants, buildBranchTree, buildChatMarkdown, buttonVariants, chatExportFileName, cn, computeLineDiff, computeUnitDiff, describeAdminUserError, describeInstanceModeError, downloadChatMarkdown, formatBytes, formatFlowLatency, hitTestIds, initialLiveTurnState, linearTree, liveTurnReducer, marqueeRect, modalContentVariants, rectsIntersect, scaleColorForValue, splitMarkdownBlocks, useAiTextTransform, useChatStream, useDictation, useLogoId, useMarquee, variantInfo, walkActivePath, wordSegments };
3695
+ export { AboutCard, type AboutCardProps, type AboutCreator, AboutFooterLine, type AboutFooterLineProps, type AboutLicense, type AboutLinkItem, AboutLinkList, type AboutLinkListProps, AboutNote, type AboutNoteContent, type AboutNoteProps, AboutPanel, type AboutPanelProps, type AboutSponsorContent, ActionMenu, type ActionMenuItem, type ActionMenuProps, type AdminUser, type AdminUserPatch, AdminUserTable, type AdminUserTableIcons, type AdminUserTableLabels, type AdminUserTableProps, type AiAction, AiActionsDropdown, type AiActionsDropdownProps, AiButton, type AiButtonProps, AiMagicFill, type AiMagicFillProps, type AiTextTransformEventHandlers, type AiTextTransformStatus, type AiTextTransformTransport, AuthGate, type AuthGateLabels, type AuthGateProps, type AuthGateStatus, Badge, type BadgeProps, type BranchNode, type BranchNodeInput, type BranchTree, type BreadcrumbItem, type BreadcrumbLinkProps, Breadcrumbs, type BreadcrumbsProps, Button, type ButtonProps, CUSTOM_PRESET_KEY, CapabilityChips, type CapabilityChipsProps, type CapabilityDescriptor, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CareerMark, type ChatAttachmentView, ChatBranchTree, type ChatBranchTreeIcons, type ChatBranchTreeLabels, type ChatBranchTreeNode, type ChatBranchTreeProps, ChatComposer, type ChatComposerIcons, type ChatComposerLabels, type ChatComposerProps, ChatDrawer, type ChatDrawerProps, type ChatError, type ChatExportMessage, type ChatExportOptions, ChatHistoryButton, type ChatHistoryButtonLabels, type ChatHistoryButtonProps, ChatLauncher, type ChatLauncherProps, ChatMessage, type ChatMessageAction, type ChatMessageActions, ChatMessageEditor, type ChatMessageEditorLabels, type ChatMessageEditorProps, type ChatMessageLabels, type ChatMessageProps, type ChatMessageStatus, type ChatMessageVariants, type ChatMessageView, ChatPanel, type ChatPanelProps, type ChatPanelVariant, ChatPending, type ChatPendingProps, ChatReasoning, type ChatReasoningLabels, type ChatReasoningProps, type ChatRole, ChatSearchField, type ChatSearchFieldLabels, type ChatSearchFieldProps, ChatSessionList, type ChatSessionListIcons, type ChatSessionListLabels, type ChatSessionListProps, type ChatSessionView, type ChatStreamEvent, type ChatStreamTransport, ChatSuggestionCard, type ChatSuggestionCardProps, ChatToolCard, type ChatToolCardLabels, type ChatToolCardProps, type ChatToolCatalogArgument, type ChatToolCatalogEntry, ChatToolsCatalog, type ChatToolsCatalogLabels, type ChatToolsCatalogProps, ChatTraceMeta, type ChatTraceMetaProps, ChatTraceTimeline, type ChatTraceTimelineEntry, type ChatTraceTimelineLabels, type ChatTraceTimelineProps, type ChatTraceTimelineTrace, ChatTranscript, type ChatTranscriptLabels, type ChatTranscriptProps, ChatTurnStatus, type ChatTurnStatusLabels, type ChatTurnStatusProps, ChatWelcome, type ChatWelcomeProps, CheckIndicator, type CheckIndicatorProps, ChipInput, type ChipInputProps, ChipList, type ChipListProps, type ChipVariant, Combobox, ComboboxMulti, type ComboboxMultiProps, type ComboboxOption, type ComboboxProps, ConfirmationModal, type ConfirmationModalProps, ConnectionTestRow, type ConnectionTestRowProps, type ConnectionTestStatus, ContextMenu, type ContextMenuItem, type ContextMenuProps, CopyButton, type CopyButtonProps, DEFAULT_SETUP_ERROR_COPY, DatePicker, type DatePickerProps, DesktopMark, DictationButton, type DictationButtonProps, type DictationError, type DictationResult, type DictationStatus, DictationStrip, type DictationStripLabels, type DictationStripProps, type DiffCell, type DiffRow, type DiffSegment, EmptyState, type EmptyStateProps, ErrorBanner, type ErrorBannerProps, ExpandableSearch, type ExpandableSearchProps, type FamilyApp, FamilyBadge, type FamilyBadgeProps, type FamilyCreator, type FamilyMember, FieldDiff, type FieldDiffLabels, type FieldDiffProps, type FieldDiffValue, FieldLabel, type FieldLabelProps, FieldSummary, type FieldSummaryProps, FileCard, type FileCardProps, type FileCardStatus, FileQueue, type FileQueueItem, type FileQueueProps, type FlowError, FlowStatusCard, type FlowStatusCardProps, type FlowStep, type FlowStepInfo, type FlowStepStatus, FlowTelemetryStrip, type FlowTelemetryStripProps, type FlowTrace, type FlowTraceCall, FlowTraceCard, type FlowTraceCardLabels, type FlowTraceCardProps, type FlowTraceStage, type FlowTraceToolOp, FormModal, type FormModalProps, HealthMark, type HitlProposalAction, HitlProposalCard, type HitlProposalCardLabels, type HitlProposalCardProps, type HitlProposalStatus, HoverCard, HoverCardContent, HoverCardPortal, type HoverCardProps, HoverCardTrigger, InfoButton, type InfoButtonProps, InfoTooltip, type InfoTooltipProps, Input, type InputProps, type InstanceAuthMode, InstanceModeControl, type InstanceModeControlIcons, type InstanceModeControlLabels, type InstanceModeControlProps, type LineDiffOptions, type LineDiffResult, type LiveNodeState, type LiveToolCall, type LiveTurnAction, type LiveTurnState, type LiveTurnStatus, LoginForm, type LoginFormFieldOverrides, type LoginFormFields, type LoginFormIcons, type LoginFormLabels, type LoginFormProps, type LogoProps, type LogoTheme, MarkdownCodeBlock, type MarkdownCodeBlockLabels, type MarkdownCodeBlockProps, type MarkdownComponents, MarkdownDiffView, type MarkdownDiffViewLabels, type MarkdownDiffViewProps, MarkdownSurface, type MarkdownSurfaceProps, MarqueeBand, type MarqueePhase, type MarqueeSelection, MarqueeSurface, type MarqueeSurfaceProps, Menu, MenuCheckboxItem, type MenuCheckboxItemProps, MenuContent, MenuGroup, MenuItem, type MenuItemProps, MenuLabel, MenuSeparator, MenuSub, MenuSubContent, MenuSubTrigger, MenuTrigger, MermaidDiagram, type MermaidDiagramProps, MessageVariantSwitcher, type MessageVariantSwitcherLabels, type MessageVariantSwitcherProps, Modal, ModalBody, ModalClose, ModalContent, type ModalContentProps, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, ModelPicker, type ModelPickerModel, type ModelPickerProps, type ModelPickerProvider, ModelRegistry, type ModelRegistryDraft, type ModelRegistryModel, type ModelRegistryPatch, type ModelRegistryProps, type ModelRegistryProvider, type ModelRegistryRemoteModel, type ModelRegistryRemoteState, type NavChild, type NavItem, NeuronectionMark, NeuronectionWordmark, type NeuronectionWordmarkProps, PanelModal, type PanelModalProps, Popover, PopoverAnchor, PopoverButton, type PopoverButtonProps, PopoverClose, PopoverContent, PopoverTrigger, Portal, type PortalProps, type ProfileItem, ProfileSwitcher, type ProfileSwitcherIcons, type ProfileSwitcherLabels, type ProfileSwitcherProps, ProviderForm, type ProviderFormProps, ProviderLogo, type ProviderLogoProps, type ProviderPresetOption, ProviderSetupForm, type ProviderSetupFormError, type ProviderSetupFormPreset, type ProviderSetupFormProps, type ProviderSetupFormValue, ProviderSetupManualTile, type ProviderSetupTileData, ProviderSetupTiles, type ProviderSetupTilesProps, RangeBar, type RangeBarProps, type Rect, RegisterForm, type RegisterFormFieldOverrides, type RegisterFormFields, type RegisterFormIcons, type RegisterFormLabels, type RegisterFormProps, RichTextEditor, type RichTextEditorIcons, type RichTextEditorLabels, type RichTextEditorProps, type RichTextToolbarGroup, SETUP_ERROR_CODES, ScaleSlider, type ScaleSliderProps, SearchInput, type SearchInputProps, SegmentedTabs, type SegmentedTabsItem, type SegmentedTabsProps, SelectionBar, type SelectionBarProps, type SettingsNavItem, SettingsShell, type SettingsShellProps, type SetupErrorCode, SetupFirstRunCard, type SetupFirstRunCardProps, SetupReview, type SetupReviewModel, type SetupReviewOptions, type SetupReviewOptionsKey, type SetupReviewProps, type SetupReviewSlot, SidebarNav, type SidebarNavLabels, type SidebarNavProps, Skeleton, type SkeletonProps, SkeletonText, type SkeletonTextProps, Spinner, type SpinnerProps, SponsorCard, type SponsorCardProps, type SponsorChannel, Stepper, type StepperProps, type StepperStep, StudyMark, SwitchRow, type SwitchRowProps, Table, type TableProps, TaskAssignmentPicker, type TaskAssignmentPickerProps, type TaskAssignmentSection, type TaskAssignmentTask, TechChips, type TechChipsProps, TextDiffView, type TextDiffViewLabels, type TextDiffViewProps, ThemeScope, type ThemeScopeProps, ThemeTokens, TimeList, type TimeListProps, TimePicker, TimePickerContent, type TimePickerContentProps, type TimePickerProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UndoNotice, type UndoNoticeProps, type UnitDiffOptions, UploadDropzone, type UploadDropzoneProps, type UseAiTextTransformOptions, type UseChatStreamOptions, type UseChatStreamResult, type UseDictationOptions, type UseMarqueeOptions, UserMenu, type UserMenuIcons, type UserMenuItem, type UserMenuLanguage, type UserMenuProps, type UserMenuStatus, type UserMenuStatusTone, type UserMenuTheme, type UserMenuUser, ViewToggle, type ViewToggleProps, type ViewToggleView, Wizard, type WizardContext, type WizardProps, type WizardStep, activePathSet, badgeVariants, buildBranchTree, buildChatMarkdown, buttonVariants, chatExportFileName, cn, computeLineDiff, computeUnitDiff, describeAdminUserError, describeInstanceModeError, downloadChatMarkdown, formatBytes, formatFlowLatency, hitTestIds, initialLiveTurnState, linearTree, liveTurnReducer, marqueeRect, modalContentVariants, rectsIntersect, scaleColorForValue, splitMarkdownBlocks, useAiTextTransform, useChatStream, useDictation, useLogoId, useMarquee, variantInfo, walkActivePath, wordSegments };
package/dist/index.js CHANGED
@@ -1,26 +1,32 @@
1
- export { UndoNotice } from './chunk-AT32ANZW.js';
2
- export { ViewToggle } from './chunk-XZIJIGEB.js';
3
1
  export { Stepper, Wizard } from './chunk-ZNVWHGKM.js';
4
- export { TaskAssignmentPicker } from './chunk-3YIVKKT6.js';
5
- export { SettingsShell } from './chunk-YPDIA54W.js';
6
2
  export { SidebarNav } from './chunk-VAUB5TDF.js';
7
3
  export { UserMenu } from './chunk-CYK3ZLAB.js';
8
4
  export { ThemeScope } from './chunk-TGU3PKNM.js';
9
5
  export { TimeList } from './chunk-67W2OLOQ.js';
10
6
  export { TimePicker, TimePickerContent } from './chunk-WQ5MPOYG.js';
11
7
  export { InfoTooltip, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './chunk-NDZ22QGX.js';
12
- export { ModelRegistry } from './chunk-I5H4KYEZ.js';
13
- export { CapabilityChips } from './chunk-SY5FR4HC.js';
8
+ export { UndoNotice } from './chunk-AT32ANZW.js';
9
+ export { ViewToggle } from './chunk-XZIJIGEB.js';
14
10
  export { SegmentedTabs } from './chunk-5IEBIDXQ.js';
15
11
  export { SelectionBar } from './chunk-LXKRUJIS.js';
16
12
  export { Skeleton, SkeletonText } from './chunk-4OJXAFGA.js';
17
13
  export { HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger } from './chunk-PNYJ5VX2.js';
18
14
  export { Table } from './chunk-53JFRZAO.js';
19
- export { ProfileSwitcher } from './chunk-6ANLDUGL.js';
20
- export { CUSTOM_PRESET_KEY, ProviderForm } from './chunk-UMI4M4MF.js';
15
+ export { TaskAssignmentPicker } from './chunk-3YIVKKT6.js';
16
+ export { SettingsShell } from './chunk-YPDIA54W.js';
21
17
  export { RangeBar } from './chunk-3UDWLHLD.js';
22
18
  export { ScaleSlider, scaleColorForValue } from './chunk-NLHODVBI.js';
23
19
  export { SearchInput } from './chunk-UUIMMMSJ.js';
20
+ export { ModelRegistry } from './chunk-I5H4KYEZ.js';
21
+ export { CapabilityChips } from './chunk-SY5FR4HC.js';
22
+ export { ProfileSwitcher } from './chunk-6ANLDUGL.js';
23
+ export { CUSTOM_PRESET_KEY, ProviderForm } from './chunk-UMI4M4MF.js';
24
+ export { DEFAULT_SETUP_ERROR_COPY, ProviderSetupForm, SETUP_ERROR_CODES } from './chunk-6G7H6YP6.js';
25
+ export { ProviderSetupManualTile, ProviderSetupTiles } from './chunk-65JY3ATO.js';
26
+ export { ProviderLogo } from './chunk-7IP3JP3Z.js';
27
+ export { SetupFirstRunCard } from './chunk-YDQW2WJH.js';
28
+ export { SetupReview } from './chunk-FY3NCPFO.js';
29
+ export { SwitchRow } from './chunk-FQXVZVA5.js';
24
30
  export { MarqueeBand, MarqueeSurface, hitTestIds, marqueeRect, rectsIntersect, useMarquee } from './chunk-RU3DEF2O.js';
25
31
  export { MarkdownDiffView, splitMarkdownBlocks } from './chunk-TLFEVL42.js';
26
32
  export { ModelPicker } from './chunk-CCFVDJHU.js';
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+
3
+ interface ProviderLogoProps extends React.ComponentProps<'span'> {
4
+ /** Preset key (`'openai'`, `'gemini'`, …) — unknown/unshipped marks fall
5
+ * back to a monogram of the key's first letter. */
6
+ preset: string;
7
+ /** Square icon size in px. */
8
+ size?: number;
9
+ }
10
+ /** Provider mark for setup tiles and rows: simple-icons path data keyed by
11
+ * preset key, monogram fallback (openai/groq marks are gone upstream),
12
+ * `currentColor` so it inherits app identity. Decorative by default
13
+ * (`aria-hidden`) — name the tile/button it lives in. */
14
+ declare const ProviderLogo: React.ForwardRefExoticComponent<Omit<ProviderLogoProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
15
+
16
+ export { ProviderLogo, type ProviderLogoProps };
@@ -0,0 +1,3 @@
1
+ export { ProviderLogo } from './chunk-7IP3JP3Z.js';
2
+ //# sourceMappingURL=provider-logo.js.map
3
+ //# sourceMappingURL=provider-logo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"provider-logo.js"}
@@ -0,0 +1,74 @@
1
+ import * as React from 'react';
2
+
3
+ /** The shared §15 error-routing enum (family contract — apps key their i18n
4
+ * off exactly these codes). */
5
+ declare const SETUP_ERROR_CODES: readonly ["invalid_key", "insufficient_credit", "new_user_quota", "region_unavailable", "timeout", "local_not_running", "unknown"];
6
+ type SetupErrorCode = (typeof SETUP_ERROR_CODES)[number];
7
+ /** English fallback copy per code — apps inject translated labels via
8
+ * `errorLabels` (the library ships no i18n engine, ADR-006). */
9
+ declare const DEFAULT_SETUP_ERROR_COPY: Record<SetupErrorCode, string>;
10
+ /** Guided-setup preset slice (app data; snake_case API fields map app-side). */
11
+ interface ProviderSetupFormPreset {
12
+ name: string;
13
+ keyUrl?: string;
14
+ steps?: string[];
15
+ freeTierNote?: string;
16
+ fixedBase?: boolean;
17
+ baseUrl: string;
18
+ /** Keyless local preset — renders `noKeyLabel` instead of the key field. */
19
+ local?: boolean;
20
+ }
21
+ interface ProviderSetupFormValue {
22
+ name: string;
23
+ apiKey: string;
24
+ baseUrl?: string;
25
+ }
26
+ /** Classified setup failure (§15 error routing) — copy comes from
27
+ * `errorLabels`, keyed off the code. */
28
+ interface ProviderSetupFormError {
29
+ code: SetupErrorCode | string;
30
+ suspectedVendor?: string | null;
31
+ }
32
+ interface ProviderSetupFormProps extends Omit<React.ComponentProps<'form'>, 'onChange' | 'onSubmit'> {
33
+ preset: ProviderSetupFormPreset;
34
+ /** Controlled field values. */
35
+ value: ProviderSetupFormValue;
36
+ error?: ProviderSetupFormError | null;
37
+ /** Validation/connection test in flight — disables + marks the submit. */
38
+ testing?: boolean;
39
+ onSubmit: (value: ProviderSetupFormValue) => void;
40
+ onCancel?: () => void;
41
+ onChange: (value: ProviderSetupFormValue) => void;
42
+ /** Translated error copy per §15 code (`{vendor}` interpolates in the hint). */
43
+ errorLabels?: Partial<Record<string, string>>;
44
+ suspectedVendorHint?: string;
45
+ /** Notified when a checklist step is copied (Electron apps mirror the copy
46
+ * through their IPC clipboard; the browser write always happens). */
47
+ onCopyStep?: (step: string) => void;
48
+ /** Opens the key page — render an anchor by default; Electron apps pass
49
+ * their `openExternal` bridge to get a button instead. */
50
+ onOpenKeyUrl?: (url: string) => void;
51
+ /** Extra app content inside the Advanced disclosure (hosting toggle,
52
+ * country select — study/health pattern). */
53
+ advancedExtra?: React.ReactNode;
54
+ checklistLabel?: string;
55
+ copyLabel?: string;
56
+ getKeyLabel?: string;
57
+ nameLabel?: string;
58
+ apiKeyLabel?: string;
59
+ keyPlaceholder?: string;
60
+ noKeyLabel?: string;
61
+ advancedLabel?: string;
62
+ baseUrlLabel?: string;
63
+ baseUrlHint?: string;
64
+ submitLabel?: string;
65
+ cancelLabel?: string;
66
+ }
67
+ /** Guided one-click setup form (plan 26 §6): vendor checklist with copy
68
+ * buttons and key link, connection name, write-only API key
69
+ * (`autoComplete="new-password"`), and an Advanced disclosure whose base URL
70
+ * is read-only for fixed-endpoint presets. Validation, secrets and IPC are
71
+ * the app's business (ADR-006) — the form reports `onSubmit`. */
72
+ declare const ProviderSetupForm: React.ForwardRefExoticComponent<Omit<ProviderSetupFormProps, "ref"> & React.RefAttributes<HTMLFormElement>>;
73
+
74
+ export { DEFAULT_SETUP_ERROR_COPY, ProviderSetupForm, type ProviderSetupFormError, type ProviderSetupFormPreset, type ProviderSetupFormProps, type ProviderSetupFormValue, SETUP_ERROR_CODES, type SetupErrorCode };
@@ -0,0 +1,3 @@
1
+ export { DEFAULT_SETUP_ERROR_COPY, ProviderSetupForm, SETUP_ERROR_CODES } from './chunk-6G7H6YP6.js';
2
+ //# sourceMappingURL=provider-setup-form.js.map
3
+ //# sourceMappingURL=provider-setup-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"provider-setup-form.js"}