@nexub/react 4.6.0 → 4.8.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.
- package/accessibility.json +45 -1
- package/dist/components/AgentKit/AgentKit.d.ts +31 -0
- package/dist/components/AgentKit/AgentKit.js +78 -0
- package/dist/components/AgentKit/ApprovalCard.d.ts +12 -0
- package/dist/components/AgentKit/ApprovalCard.js +26 -0
- package/dist/components/AgentKit/index.d.ts +4 -0
- package/dist/components/AgentKit/index.js +8 -0
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
- package/dist/hooks/useScopedSeed.d.ts +11 -0
- package/dist/hooks/useScopedSeed.js +24 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/styles.css +1 -1
- package/package.json +6 -6
package/accessibility.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.
|
|
2
|
+
"version": "4.8.0",
|
|
3
3
|
"standard": "WCAG 2.2 Level AA",
|
|
4
4
|
"method": {
|
|
5
5
|
"automated": "axe-core rules tagged wcag2a, wcag2aa, wcag21a, wcag21aa and wcag22aa, run on every Storybook story in light and dark on every pull request; a new violation fails the build.",
|
|
@@ -69,6 +69,17 @@
|
|
|
69
69
|
"keyboard": [],
|
|
70
70
|
"screenReader": []
|
|
71
71
|
},
|
|
72
|
+
{
|
|
73
|
+
"slug": "approval-card",
|
|
74
|
+
"name": "Approval Card",
|
|
75
|
+
"package": "@nexub/react",
|
|
76
|
+
"automated": "pass",
|
|
77
|
+
"exceptions": [],
|
|
78
|
+
"keyboard": [],
|
|
79
|
+
"screenReader": [
|
|
80
|
+
"The outcome is announced in a polite live region and replaces the buttons."
|
|
81
|
+
]
|
|
82
|
+
},
|
|
72
83
|
{
|
|
73
84
|
"slug": "aurora",
|
|
74
85
|
"name": "Aurora",
|
|
@@ -329,6 +340,17 @@
|
|
|
329
340
|
"keyboard": [],
|
|
330
341
|
"screenReader": []
|
|
331
342
|
},
|
|
343
|
+
{
|
|
344
|
+
"slug": "diff-view",
|
|
345
|
+
"name": "Diff View",
|
|
346
|
+
"package": "@nexub/react",
|
|
347
|
+
"automated": "pass",
|
|
348
|
+
"exceptions": [],
|
|
349
|
+
"keyboard": [],
|
|
350
|
+
"screenReader": [
|
|
351
|
+
"Added and removed lines are spelled out for screen readers; colour is not the only cue."
|
|
352
|
+
]
|
|
353
|
+
},
|
|
332
354
|
{
|
|
333
355
|
"slug": "donut-chart",
|
|
334
356
|
"name": "Donut Chart",
|
|
@@ -719,6 +741,17 @@
|
|
|
719
741
|
"keyboard": [],
|
|
720
742
|
"screenReader": []
|
|
721
743
|
},
|
|
744
|
+
{
|
|
745
|
+
"slug": "plan-tracker",
|
|
746
|
+
"name": "Plan Tracker",
|
|
747
|
+
"package": "@nexub/react",
|
|
748
|
+
"automated": "pass",
|
|
749
|
+
"exceptions": [],
|
|
750
|
+
"keyboard": [],
|
|
751
|
+
"screenReader": [
|
|
752
|
+
"Each step reads its status in text; the active step has `aria-current=\"step\"`."
|
|
753
|
+
]
|
|
754
|
+
},
|
|
722
755
|
{
|
|
723
756
|
"slug": "popover",
|
|
724
757
|
"name": "Popover",
|
|
@@ -1027,6 +1060,17 @@
|
|
|
1027
1060
|
"keyboard": [],
|
|
1028
1061
|
"screenReader": []
|
|
1029
1062
|
},
|
|
1063
|
+
{
|
|
1064
|
+
"slug": "tool-call",
|
|
1065
|
+
"name": "Tool Call",
|
|
1066
|
+
"package": "@nexub/react",
|
|
1067
|
+
"automated": "pass",
|
|
1068
|
+
"exceptions": [],
|
|
1069
|
+
"keyboard": [],
|
|
1070
|
+
"screenReader": [
|
|
1071
|
+
"A native `<details>` disclosure: opens with Enter or Space."
|
|
1072
|
+
]
|
|
1073
|
+
},
|
|
1030
1074
|
{
|
|
1031
1075
|
"slug": "tooltip",
|
|
1032
1076
|
"name": "Tooltip",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export type PlanStepStatus = 'done' | 'active' | 'pending' | 'failed';
|
|
3
|
+
export interface PlanStep {
|
|
4
|
+
title: string;
|
|
5
|
+
status: PlanStepStatus;
|
|
6
|
+
detail?: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export interface PlanTrackerProps extends React.HTMLAttributes<HTMLOListElement> {
|
|
9
|
+
steps: PlanStep[];
|
|
10
|
+
}
|
|
11
|
+
/** An agent's plan: ordered steps with their status, announced in text. */
|
|
12
|
+
export declare function PlanTracker({ steps, className, ...props }: PlanTrackerProps): React.JSX.Element;
|
|
13
|
+
export interface ToolCallProps extends Omit<React.DetailsHTMLAttributes<HTMLDetailsElement>, 'title'> {
|
|
14
|
+
/** Tool name, e.g. "search_invoices". */
|
|
15
|
+
name: string;
|
|
16
|
+
status: 'running' | 'done' | 'failed';
|
|
17
|
+
/** Arguments, shown as JSON. */
|
|
18
|
+
input?: unknown;
|
|
19
|
+
/** Result, shown as given (string) or as JSON. */
|
|
20
|
+
output?: unknown;
|
|
21
|
+
}
|
|
22
|
+
/** One tool call: name and status, expandable to its input and output. */
|
|
23
|
+
export declare function ToolCall({ name, status, input, output, className, ...props }: ToolCallProps): React.JSX.Element;
|
|
24
|
+
export interface DiffViewProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
25
|
+
/** A unified diff (lines starting with "+", "-" or " "); "@@" lines become headers. */
|
|
26
|
+
diff: string;
|
|
27
|
+
/** File name shown above the diff. */
|
|
28
|
+
file?: string;
|
|
29
|
+
}
|
|
30
|
+
/** A unified diff, with added and removed lines spelled out for screen readers. */
|
|
31
|
+
export declare function DiffView({ diff, file, className, ...props }: DiffViewProps): React.JSX.Element;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../../utils/cn.js";
|
|
4
|
+
const STATUS_TEXT = { done: "Done", active: "In progress", pending: "Not started", failed: "Failed" };
|
|
5
|
+
function StepIcon({ status }) {
|
|
6
|
+
const ring = "flex size-5 shrink-0 items-center justify-center rounded-full";
|
|
7
|
+
if (status === "done")
|
|
8
|
+
return /* @__PURE__ */ jsx("span", { className: cn(ring, "bg-[var(--color-primary)] text-[var(--color-on-primary)]"), children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", className: "size-3", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" }) }) });
|
|
9
|
+
if (status === "failed")
|
|
10
|
+
return /* @__PURE__ */ jsx("span", { className: cn(ring, "bg-[var(--color-error)] text-label-sm font-bold text-[var(--color-on-error)]"), children: "!" });
|
|
11
|
+
if (status === "active")
|
|
12
|
+
return /* @__PURE__ */ jsx("span", { className: cn(ring, "border-2 border-[var(--color-primary)]"), children: /* @__PURE__ */ jsx("span", { className: "size-2 rounded-full bg-[var(--color-primary)] motion-safe:animate-pulse" }) });
|
|
13
|
+
return /* @__PURE__ */ jsx("span", { className: cn(ring, "border-2 border-[var(--color-outline-variant)]") });
|
|
14
|
+
}
|
|
15
|
+
function PlanTracker({ steps, className, ...props }) {
|
|
16
|
+
return /* @__PURE__ */ jsx("ol", { className: cn("m-0 flex list-none flex-col gap-3 p-0", className), ...props, children: steps.map((s, i) => /* @__PURE__ */ jsxs("li", { "aria-current": s.status === "active" ? "step" : void 0, className: "flex gap-3", children: [
|
|
17
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: /* @__PURE__ */ jsx(StepIcon, { status: s.status }) }),
|
|
18
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [
|
|
19
|
+
/* @__PURE__ */ jsxs("span", { className: cn("text-body-md", s.status === "pending" ? "text-[var(--color-on-surface-variant)]" : "text-[var(--color-on-surface)]"), children: [
|
|
20
|
+
s.title,
|
|
21
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: `, ${STATUS_TEXT[s.status]}` })
|
|
22
|
+
] }),
|
|
23
|
+
s.detail && /* @__PURE__ */ jsx("span", { className: "text-body-sm text-[var(--color-on-surface-variant)]", children: s.detail })
|
|
24
|
+
] })
|
|
25
|
+
] }, i)) });
|
|
26
|
+
}
|
|
27
|
+
const json = (v) => typeof v === "string" ? v : JSON.stringify(v, null, 2);
|
|
28
|
+
function ToolCall({ name, status, input, output, className, ...props }) {
|
|
29
|
+
return /* @__PURE__ */ jsxs("details", { className: cn("group rounded-shape-container border border-[var(--color-outline-variant)] bg-[var(--color-surface-container-low)]", className), ...props, children: [
|
|
30
|
+
/* @__PURE__ */ jsxs("summary", { className: "nx-state-layer flex cursor-pointer list-none items-center gap-2 rounded-shape-container px-3 py-2 text-label-lg", children: [
|
|
31
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "transition-transform group-open:rotate-90", children: "\u203A" }),
|
|
32
|
+
/* @__PURE__ */ jsx("code", { className: "font-mono text-label-md", children: name }),
|
|
33
|
+
/* @__PURE__ */ jsx("span", { className: cn("ms-auto rounded-full px-2 text-label-sm", status === "failed" ? "bg-[var(--color-error-container)] text-[var(--color-on-error-container)]" : status === "done" ? "bg-[var(--color-success-container)] text-[var(--color-on-success-container)]" : "bg-[var(--color-surface-container-high)] text-[var(--color-on-surface-variant)]"), children: status === "running" ? "Running" : status === "done" ? "Done" : "Failed" })
|
|
34
|
+
] }),
|
|
35
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 border-t border-[var(--color-outline-variant)] p-3", children: [
|
|
36
|
+
input !== void 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
37
|
+
/* @__PURE__ */ jsx("p", { className: "m-0 mb-1 text-label-sm text-[var(--color-on-surface-variant)]", children: "Input" }),
|
|
38
|
+
/* @__PURE__ */ jsx("pre", { className: "m-0 overflow-auto rounded-shape-field bg-[var(--color-surface)] p-2 text-body-sm", children: /* @__PURE__ */ jsx("code", { children: json(input) }) })
|
|
39
|
+
] }),
|
|
40
|
+
output !== void 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
41
|
+
/* @__PURE__ */ jsx("p", { className: "m-0 mb-1 text-label-sm text-[var(--color-on-surface-variant)]", children: "Output" }),
|
|
42
|
+
/* @__PURE__ */ jsx("pre", { className: "m-0 overflow-auto rounded-shape-field bg-[var(--color-surface)] p-2 text-body-sm", children: /* @__PURE__ */ jsx("code", { children: json(output) }) })
|
|
43
|
+
] })
|
|
44
|
+
] })
|
|
45
|
+
] });
|
|
46
|
+
}
|
|
47
|
+
function DiffView({ diff, file, className, ...props }) {
|
|
48
|
+
const lines = diff.replace(/\n$/, "").split("\n");
|
|
49
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("overflow-hidden rounded-shape-container border border-[var(--color-outline-variant)]", className), ...props, children: [
|
|
50
|
+
file && /* @__PURE__ */ jsx("div", { className: "border-b border-[var(--color-outline-variant)] bg-[var(--color-surface-container-low)] px-3 py-1.5 font-mono text-label-md", children: file }),
|
|
51
|
+
/* @__PURE__ */ jsx("pre", { className: "m-0 overflow-auto bg-[var(--color-surface)] py-1 text-body-sm", children: lines.map((line, i) => {
|
|
52
|
+
const kind = line.startsWith("@@") ? "hunk" : line.startsWith("+") ? "add" : line.startsWith("-") ? "del" : "ctx";
|
|
53
|
+
return /* @__PURE__ */ jsxs(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
className: cn(
|
|
57
|
+
"flex px-3 font-mono",
|
|
58
|
+
kind === "add" && "bg-[color-mix(in_oklab,var(--color-success)_14%,transparent)]",
|
|
59
|
+
kind === "del" && "bg-[color-mix(in_oklab,var(--color-error)_12%,transparent)]",
|
|
60
|
+
kind === "hunk" && "text-[var(--color-on-surface-variant)]"
|
|
61
|
+
),
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "w-4 shrink-0 select-none", children: kind === "add" ? "+" : kind === "del" ? "\u2212" : "" }),
|
|
64
|
+
kind === "add" && /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Added: " }),
|
|
65
|
+
kind === "del" && /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Removed: " }),
|
|
66
|
+
/* @__PURE__ */ jsx("span", { className: "whitespace-pre", children: kind === "hunk" ? line : line.slice(1) })
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
i
|
|
70
|
+
);
|
|
71
|
+
}) })
|
|
72
|
+
] });
|
|
73
|
+
}
|
|
74
|
+
export {
|
|
75
|
+
DiffView,
|
|
76
|
+
PlanTracker,
|
|
77
|
+
ToolCall
|
|
78
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface ApprovalCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
3
|
+
/** What the agent wants to do, e.g. "Send 3 invoices to Acme". */
|
|
4
|
+
title: string;
|
|
5
|
+
/** Details: who, how much, what changes. */
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
onApprove?: () => void;
|
|
8
|
+
onDeny?: () => void;
|
|
9
|
+
approveLabel?: string;
|
|
10
|
+
denyLabel?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function ApprovalCard({ title, children, onApprove, onDeny, approveLabel, denyLabel, className, ...props }: ApprovalCardProps): React.JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "../../utils/cn.js";
|
|
5
|
+
import { Button } from "../Button/Button.js";
|
|
6
|
+
function ApprovalCard({ title, children, onApprove, onDeny, approveLabel = "Approve", denyLabel = "Deny", className, ...props }) {
|
|
7
|
+
const [choice, setChoice] = React.useState(null);
|
|
8
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-3 rounded-shape-container border border-[var(--color-outline-variant)] bg-[var(--color-surface-elevated)] p-4", className), ...props, children: [
|
|
9
|
+
/* @__PURE__ */ jsx("p", { className: "m-0 text-title-sm text-[var(--color-on-surface)]", children: title }),
|
|
10
|
+
children && /* @__PURE__ */ jsx("div", { className: "text-body-sm text-[var(--color-on-surface-variant)]", children }),
|
|
11
|
+
/* @__PURE__ */ jsx("div", { role: "status", "aria-live": "polite", className: "text-label-md text-[var(--color-on-surface-variant)]", children: choice === "approved" ? "Approved" : choice === "denied" ? "Denied" : "" }),
|
|
12
|
+
!choice && /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
13
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", onClick: () => {
|
|
14
|
+
setChoice("approved");
|
|
15
|
+
onApprove?.();
|
|
16
|
+
}, children: approveLabel }),
|
|
17
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: "outlined", onClick: () => {
|
|
18
|
+
setChoice("denied");
|
|
19
|
+
onDeny?.();
|
|
20
|
+
}, children: denyLabel })
|
|
21
|
+
] })
|
|
22
|
+
] });
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
ApprovalCard
|
|
26
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { PlanTracker, ToolCall, DiffView } from './AgentKit.js';
|
|
2
|
+
export type { PlanTrackerProps, PlanStep, PlanStepStatus, ToolCallProps, DiffViewProps } from './AgentKit.js';
|
|
3
|
+
export { ApprovalCard } from './ApprovalCard.js';
|
|
4
|
+
export type { ApprovalCardProps } from './ApprovalCard.js';
|
|
@@ -4,7 +4,7 @@ import type { ToneValue } from '@nexub/core';
|
|
|
4
4
|
export type { ToneValue };
|
|
5
5
|
export { toneTextClasses } from '../../utils/control.js';
|
|
6
6
|
export declare const buttonVariants: (props?: ({
|
|
7
|
-
variant?: "accent" | "text" | "link" | "outline" | "glass" | "ghost" | "subtle" | "filled" | "tonal" | "outlined" | "hero" | "
|
|
7
|
+
variant?: "accent" | "text" | "link" | "outline" | "primary" | "glass" | "ghost" | "subtle" | "filled" | "tonal" | "outlined" | "hero" | "secondary" | "destructive" | null | undefined;
|
|
8
8
|
size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
|
|
9
9
|
fullWidth?: boolean | null | undefined;
|
|
10
10
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const useIsomorphicLayoutEffect: typeof
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
export declare const useIsomorphicLayoutEffect: typeof useEffect;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* 4.7: recolours one element (and everything inside it) from a brand seed, like
|
|
4
|
+
* <ThemeProvider seed> but scoped, e.g. to preview a customer's brand on one
|
|
5
|
+
* card or section. Writes the seeded role variables through the CSSOM (strict-
|
|
6
|
+
* CSP safe) and removes them when the seed is cleared or the component unmounts.
|
|
7
|
+
* Lazy-loads @nexub/tokens/seed, so the colour library stays out of the main bundle.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useScopedSeed<T extends HTMLElement>(ref: React.RefObject<T | null>, seed: string | null | undefined, options?: {
|
|
10
|
+
target?: 'primary' | 'tertiary';
|
|
11
|
+
}): void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
function useScopedSeed(ref, seed, options = {}) {
|
|
4
|
+
const { target = "primary" } = options;
|
|
5
|
+
React.useEffect(() => {
|
|
6
|
+
const el = ref.current;
|
|
7
|
+
if (!el || !seed) return;
|
|
8
|
+
let applied = [];
|
|
9
|
+
let cancelled = false;
|
|
10
|
+
import("@nexub/tokens/seed").then(({ createSeedTheme }) => {
|
|
11
|
+
if (cancelled) return;
|
|
12
|
+
const vars = createSeedTheme(seed, { target });
|
|
13
|
+
for (const [k, v] of Object.entries(vars)) el.style.setProperty(k, v);
|
|
14
|
+
applied = Object.keys(vars);
|
|
15
|
+
});
|
|
16
|
+
return () => {
|
|
17
|
+
cancelled = true;
|
|
18
|
+
for (const k of applied) el.style.removeProperty(k);
|
|
19
|
+
};
|
|
20
|
+
}, [ref, seed, target]);
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
useScopedSeed
|
|
24
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { cn } from './utils/cn.js';
|
|
2
2
|
export type { Size } from './utils/control.js';
|
|
3
3
|
export { startViewTransition } from './utils/viewTransition.js';
|
|
4
|
+
export { useScopedSeed } from './hooks/useScopedSeed.js';
|
|
4
5
|
export { useControllableState } from './hooks/useControllableState.js';
|
|
5
6
|
export { useDisclosure } from './hooks/useDisclosure.js';
|
|
6
7
|
export { useIsomorphicLayoutEffect } from './hooks/useIsomorphicLayoutEffect.js';
|
|
@@ -36,6 +37,8 @@ export type { NumberInputProps } from './components/NumberInput/index.js';
|
|
|
36
37
|
export { MoneyInput } from './components/MoneyInput/index.js';
|
|
37
38
|
export type { MoneyInputProps } from './components/MoneyInput/index.js';
|
|
38
39
|
export { Amount } from './components/Amount/index.js';
|
|
40
|
+
export { PlanTracker, ToolCall, DiffView, ApprovalCard } from './components/AgentKit/index.js';
|
|
41
|
+
export type { PlanTrackerProps, PlanStep, PlanStepStatus, ToolCallProps, DiffViewProps, ApprovalCardProps } from './components/AgentKit/index.js';
|
|
39
42
|
export { SharedElement, transitionName } from './components/SharedElement/index.js';
|
|
40
43
|
export type { SharedElementProps } from './components/SharedElement/index.js';
|
|
41
44
|
export { ScrollProgress } from './components/ScrollProgress/index.js';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { cn } from "./utils/cn.js";
|
|
2
2
|
import { startViewTransition } from "./utils/viewTransition.js";
|
|
3
|
+
import { useScopedSeed } from "./hooks/useScopedSeed.js";
|
|
3
4
|
import { useControllableState } from "./hooks/useControllableState.js";
|
|
4
5
|
import { useDisclosure } from "./hooks/useDisclosure.js";
|
|
5
6
|
import { useIsomorphicLayoutEffect } from "./hooks/useIsomorphicLayoutEffect.js";
|
|
@@ -21,6 +22,7 @@ import { Textarea, textareaVariants } from "./components/Textarea/index.js";
|
|
|
21
22
|
import { NumberInput } from "./components/NumberInput/index.js";
|
|
22
23
|
import { MoneyInput } from "./components/MoneyInput/index.js";
|
|
23
24
|
import { Amount } from "./components/Amount/index.js";
|
|
25
|
+
import { PlanTracker, ToolCall, DiffView, ApprovalCard } from "./components/AgentKit/index.js";
|
|
24
26
|
import { SharedElement, transitionName } from "./components/SharedElement/index.js";
|
|
25
27
|
import { ScrollProgress } from "./components/ScrollProgress/index.js";
|
|
26
28
|
import { FloatingInput } from "./components/FloatingInput/index.js";
|
|
@@ -124,6 +126,7 @@ export {
|
|
|
124
126
|
AlertDialog,
|
|
125
127
|
Amount,
|
|
126
128
|
AppShell,
|
|
129
|
+
ApprovalCard,
|
|
127
130
|
AspectRatio,
|
|
128
131
|
Aurora,
|
|
129
132
|
Autocomplete,
|
|
@@ -158,6 +161,7 @@ export {
|
|
|
158
161
|
DatePicker,
|
|
159
162
|
DateRangePicker,
|
|
160
163
|
Dialog,
|
|
164
|
+
DiffView,
|
|
161
165
|
DonutChart,
|
|
162
166
|
Drawer,
|
|
163
167
|
DropdownMenu,
|
|
@@ -205,6 +209,7 @@ export {
|
|
|
205
209
|
PageHeader,
|
|
206
210
|
Pagination,
|
|
207
211
|
PasswordInput,
|
|
212
|
+
PlanTracker,
|
|
208
213
|
Popover,
|
|
209
214
|
Progress,
|
|
210
215
|
PromptInput,
|
|
@@ -248,6 +253,7 @@ export {
|
|
|
248
253
|
Toaster,
|
|
249
254
|
Toggle,
|
|
250
255
|
ToggleGroup,
|
|
256
|
+
ToolCall,
|
|
251
257
|
Toolbar,
|
|
252
258
|
Tooltip,
|
|
253
259
|
Provider as TooltipProvider,
|
|
@@ -297,6 +303,7 @@ export {
|
|
|
297
303
|
useNexubMessages,
|
|
298
304
|
usePointerSheen,
|
|
299
305
|
usePrefersReducedMotion,
|
|
306
|
+
useScopedSeed,
|
|
300
307
|
useTheme,
|
|
301
308
|
useToastStore
|
|
302
309
|
};
|