@gram-ai/elements 1.27.4 → 1.27.6
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/README.md +72 -60
- package/README.typedoc.md +6 -6
- package/bin/cli.js +74 -74
- package/dist/compat-shims-CO9JXXV4.cjs.map +1 -1
- package/dist/{compat-shims-BPJ7Q68c.js → compat-shims-DxtUrORi.js} +4 -2
- package/dist/compat-shims-DxtUrORi.js.map +1 -0
- package/dist/components/ShareButton/index.d.ts +2 -2
- package/dist/components/assistant-ui/message-feedback.d.ts +1 -1
- package/dist/components/assistant-ui/tooltip-icon-button.d.ts +2 -2
- package/dist/components/ui/avatar.d.ts +2 -2
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/calendar.d.ts +1 -1
- package/dist/components/ui/collapsible.d.ts +1 -1
- package/dist/components/ui/dialog.d.ts +4 -4
- package/dist/components/ui/popover.d.ts +2 -2
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/time-range-picker.d.ts +1 -1
- package/dist/components/ui/tool-ui.d.ts +7 -7
- package/dist/components/ui/tooltip.d.ts +2 -2
- package/dist/contexts/ConnectionStatusContext.d.ts +1 -1
- package/dist/elements.cjs +1 -1
- package/dist/elements.css +1 -1
- package/dist/elements.js +2 -2
- package/dist/hooks/useDensity.d.ts +73 -73
- package/dist/hooks/useMCPTools.d.ts +1 -1
- package/dist/hooks/useRadius.d.ts +1 -1
- package/dist/{index-KSX4Qjip.cjs → index-A17b62wR.cjs} +10 -10
- package/dist/index-A17b62wR.cjs.map +1 -0
- package/dist/{index-BpJstUh1.cjs → index-C4bFBGfl.cjs} +4 -4
- package/dist/{index-BpJstUh1.cjs.map → index-C4bFBGfl.cjs.map} +1 -1
- package/dist/{index-CUitXazZ.js → index-D93pV0_o.js} +55 -55
- package/dist/{index-CUitXazZ.js.map → index-D93pV0_o.js.map} +1 -1
- package/dist/{index-D0bAYNQy.js → index-Dm2wLFTN.js} +304 -282
- package/dist/index-Dm2wLFTN.js.map +1 -0
- package/dist/lib/cassette.d.ts +4 -4
- package/dist/lib/errorTracking.d.ts +1 -1
- package/dist/lib/messageConverter.d.ts +1 -1
- package/dist/lib/models.d.ts +1 -1
- package/dist/plugins/chart/ui/bar-chart.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/accordion-wrapper.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/accordion.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/action-button.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/alert-wrapper.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/alert.d.ts +4 -4
- package/dist/plugins/generative-ui/ui/avatar.d.ts +5 -5
- package/dist/plugins/generative-ui/ui/badge.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/button-wrapper.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/button.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/card-wrapper.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/card.d.ts +8 -8
- package/dist/plugins/generative-ui/ui/checkbox.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/data-table.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/dialog.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/dropdown-menu.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/grid.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/input-wrapper.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/input.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/label.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/metric.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/pagination.d.ts +6 -6
- package/dist/plugins/generative-ui/ui/popover.d.ts +4 -4
- package/dist/plugins/generative-ui/ui/progress.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/radio-group.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/select.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/separator.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/skeleton.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/stack.d.ts +6 -6
- package/dist/plugins/generative-ui/ui/switch.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/table.d.ts +9 -9
- package/dist/plugins/generative-ui/ui/tabs-wrapper.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/tabs.d.ts +1 -1
- package/dist/plugins/generative-ui/ui/text.d.ts +3 -3
- package/dist/plugins/generative-ui/ui/textarea.d.ts +2 -2
- package/dist/plugins/generative-ui/ui/tooltip.d.ts +1 -1
- package/dist/plugins.cjs +1 -1
- package/dist/plugins.js +1 -1
- package/dist/{profiler-CyzxBxVz.cjs → profiler-Cbbf4eEX.cjs} +2 -2
- package/dist/{profiler-CyzxBxVz.cjs.map → profiler-Cbbf4eEX.cjs.map} +1 -1
- package/dist/{profiler-BFkhZRxj.js → profiler-mca4IXaY.js} +2 -2
- package/dist/{profiler-BFkhZRxj.js.map → profiler-mca4IXaY.js.map} +1 -1
- package/dist/react-shim.js +1 -1
- package/dist/server/express.cjs.map +1 -1
- package/dist/server/express.js.map +1 -1
- package/dist/{startRecording-C-PPAs_Z.js → startRecording-BCafdS7B.js} +2 -2
- package/dist/{startRecording-C-PPAs_Z.js.map → startRecording-BCafdS7B.js.map} +1 -1
- package/dist/{startRecording-Dq92sEHf.cjs → startRecording-Eb5f7wqP.cjs} +2 -2
- package/dist/{startRecording-Dq92sEHf.cjs.map → startRecording-Eb5f7wqP.cjs.map} +1 -1
- package/dist/types/index.d.ts +4 -4
- package/package.json +1 -5
- package/src/compat-plugin.ts +14 -14
- package/src/compat-shims.ts +33 -31
- package/src/compat.test.ts +48 -48
- package/src/compat.ts +6 -6
- package/src/components/Chat/index.tsx +17 -17
- package/src/components/Chat/stories/Charts.stories.tsx +98 -98
- package/src/components/Chat/stories/Composer.stories.tsx +15 -15
- package/src/components/Chat/stories/ConnectionConfiguration.stories.tsx +44 -44
- package/src/components/Chat/stories/CustomComponents.stories.tsx +17 -17
- package/src/components/Chat/stories/Density.stories.tsx +20 -20
- package/src/components/Chat/stories/ErrorBoundary.stories.tsx +47 -47
- package/src/components/Chat/stories/FrontendTools.stories.tsx +39 -39
- package/src/components/Chat/stories/GenerativeUI.stories.tsx +48 -48
- package/src/components/Chat/stories/MessageFeedback.stories.tsx +52 -52
- package/src/components/Chat/stories/Modal.stories.tsx +28 -28
- package/src/components/Chat/stories/Model.stories.tsx +11 -11
- package/src/components/Chat/stories/Radius.stories.tsx +20 -20
- package/src/components/Chat/stories/Sidecar.stories.tsx +13 -13
- package/src/components/Chat/stories/StyleIsolation.stories.tsx +11 -11
- package/src/components/Chat/stories/Theme.stories.tsx +25 -25
- package/src/components/Chat/stories/Thread.stories.tsx +25 -25
- package/src/components/Chat/stories/ToolApproval.stories.tsx +55 -55
- package/src/components/Chat/stories/ToolMentions.stories.tsx +17 -17
- package/src/components/Chat/stories/Tools.stories.tsx +88 -88
- package/src/components/Chat/stories/Variants.stories.tsx +32 -32
- package/src/components/Chat/stories/Welcome.stories.tsx +14 -14
- package/src/components/ChatHistory.tsx +7 -7
- package/src/components/FrontendTools/index.tsx +5 -5
- package/src/components/Replay.stories.tsx +157 -157
- package/src/components/Replay.tsx +76 -73
- package/src/components/ShadowRoot.tsx +40 -40
- package/src/components/ShareButton/index.tsx +32 -32
- package/src/components/assistant-ui/assistant-modal.tsx +92 -87
- package/src/components/assistant-ui/assistant-sidecar.tsx +35 -35
- package/src/components/assistant-ui/attachment.tsx +80 -80
- package/src/components/assistant-ui/connection-status-indicator.tsx +33 -33
- package/src/components/assistant-ui/error-boundary.tsx +34 -34
- package/src/components/assistant-ui/follow-on-suggestions.tsx +26 -26
- package/src/components/assistant-ui/markdown-text.tsx +69 -69
- package/src/components/assistant-ui/mentioned-tools-badges.tsx +38 -38
- package/src/components/assistant-ui/message-feedback.tsx +57 -50
- package/src/components/assistant-ui/reasoning.tsx +83 -83
- package/src/components/assistant-ui/thread-list.tsx +45 -45
- package/src/components/assistant-ui/thread.tsx +278 -278
- package/src/components/assistant-ui/tool-fallback.tsx +37 -37
- package/src/components/assistant-ui/tool-group.tsx +26 -26
- package/src/components/assistant-ui/tool-mention-autocomplete.tsx +122 -122
- package/src/components/assistant-ui/tooltip-icon-button.tsx +18 -18
- package/src/components/ui/avatar.tsx +12 -12
- package/src/components/ui/button.tsx +12 -12
- package/src/components/ui/buttonVariants.ts +17 -17
- package/src/components/ui/calendar.tsx +106 -106
- package/src/components/ui/charts.stories.tsx +56 -56
- package/src/components/ui/collapsible.tsx +5 -5
- package/src/components/ui/dialog.tsx +30 -30
- package/src/components/ui/generative-ui.stories.tsx +200 -200
- package/src/components/ui/generative-ui.tsx +26 -26
- package/src/components/ui/popover.tsx +14 -14
- package/src/components/ui/skeleton.tsx +5 -5
- package/src/components/ui/time-range-picker.stories.tsx +80 -80
- package/src/components/ui/time-range-picker.tsx +248 -246
- package/src/components/ui/tool-ui.stories.tsx +37 -37
- package/src/components/ui/tool-ui.tsx +221 -215
- package/src/components/ui/tooltip.tsx +15 -15
- package/src/constants/tailwind.ts +1 -1
- package/src/contexts/ChatIdContext.tsx +7 -7
- package/src/contexts/ConnectionStatusContext.tsx +64 -64
- package/src/contexts/ElementsProvider.tsx +214 -213
- package/src/contexts/ReplayContext.ts +3 -3
- package/src/contexts/ToolApprovalContext.tsx +54 -54
- package/src/contexts/ToolExecutionContext.tsx +34 -34
- package/src/contexts/contexts.ts +7 -7
- package/src/contexts/portal-container-context.ts +2 -2
- package/src/contexts/portal-container.tsx +7 -7
- package/src/embedded.ts +1 -1
- package/src/global.css +25 -25
- package/src/hooks/useAuth.ts +72 -72
- package/src/hooks/useDensity.ts +79 -79
- package/src/hooks/useElements.ts +6 -6
- package/src/hooks/useExpanded.ts +12 -12
- package/src/hooks/useFollowOnSuggestions.ts +83 -83
- package/src/hooks/useGramThreadListAdapter.tsx +99 -99
- package/src/hooks/useMCPTools.ts +47 -47
- package/src/hooks/useModel.ts +14 -14
- package/src/hooks/usePluginComponents.ts +11 -11
- package/src/hooks/usePortalContainer.ts +5 -5
- package/src/hooks/useRadius.ts +23 -23
- package/src/hooks/useRecordCassette.ts +34 -34
- package/src/hooks/useSession.ts +11 -11
- package/src/hooks/useThemeProps.ts +13 -13
- package/src/hooks/useThreadId.ts +4 -4
- package/src/hooks/useToolApproval.ts +7 -7
- package/src/hooks/useToolMentions.ts +40 -40
- package/src/index.ts +26 -26
- package/src/lib/api.test.ts +61 -61
- package/src/lib/api.ts +4 -3
- package/src/lib/auth.ts +13 -13
- package/src/lib/cassette.ts +84 -84
- package/src/lib/easing.ts +1 -1
- package/src/lib/errorTracking.config.ts +5 -5
- package/src/lib/errorTracking.ts +29 -29
- package/src/lib/generative-ui.ts +7 -7
- package/src/lib/humanize.ts +3 -3
- package/src/lib/messageConverter.test.ts +130 -127
- package/src/lib/messageConverter.ts +196 -196
- package/src/lib/models.ts +28 -20
- package/src/lib/token.test.ts +56 -56
- package/src/lib/token.ts +14 -14
- package/src/lib/tool-mentions.ts +45 -45
- package/src/lib/tools.ts +66 -62
- package/src/lib/utils.ts +5 -5
- package/src/lib.d.ts +1 -1
- package/src/plugins/README.md +5 -5
- package/src/plugins/chart/catalog.ts +18 -18
- package/src/plugins/chart/chart.test.ts +31 -31
- package/src/plugins/chart/component.tsx +34 -34
- package/src/plugins/chart/index.ts +4 -4
- package/src/plugins/chart/ui/area-chart.tsx +42 -42
- package/src/plugins/chart/ui/bar-chart.tsx +46 -46
- package/src/plugins/chart/ui/donut-chart.tsx +48 -48
- package/src/plugins/chart/ui/index.ts +7 -7
- package/src/plugins/chart/ui/line-chart.tsx +43 -43
- package/src/plugins/chart/ui/pie-chart.tsx +44 -44
- package/src/plugins/chart/ui/radar-chart.tsx +33 -33
- package/src/plugins/chart/ui/scatter-chart.tsx +43 -43
- package/src/plugins/components/MacOSWindowFrame.tsx +15 -15
- package/src/plugins/components/PluginLoadingState.tsx +10 -10
- package/src/plugins/components/index.ts +1 -1
- package/src/plugins/generative-ui/catalog.ts +54 -54
- package/src/plugins/generative-ui/component.tsx +85 -85
- package/src/plugins/generative-ui/index.ts +4 -4
- package/src/plugins/generative-ui/ui/accordion-wrapper.tsx +16 -16
- package/src/plugins/generative-ui/ui/accordion.tsx +16 -16
- package/src/plugins/generative-ui/ui/action-button.tsx +28 -28
- package/src/plugins/generative-ui/ui/alert-wrapper.tsx +8 -8
- package/src/plugins/generative-ui/ui/alert.tsx +20 -20
- package/src/plugins/generative-ui/ui/avatar-wrapper.tsx +7 -7
- package/src/plugins/generative-ui/ui/avatar.tsx +30 -30
- package/src/plugins/generative-ui/ui/badge.tsx +22 -22
- package/src/plugins/generative-ui/ui/button-wrapper.tsx +12 -12
- package/src/plugins/generative-ui/ui/button.tsx +28 -28
- package/src/plugins/generative-ui/ui/card-wrapper.tsx +8 -8
- package/src/plugins/generative-ui/ui/card.tsx +27 -27
- package/src/plugins/generative-ui/ui/checkbox-wrapper.tsx +9 -9
- package/src/plugins/generative-ui/ui/checkbox.tsx +9 -9
- package/src/plugins/generative-ui/ui/data-table.tsx +8 -8
- package/src/plugins/generative-ui/ui/dialog.tsx +31 -31
- package/src/plugins/generative-ui/ui/dropdown-menu.tsx +44 -44
- package/src/plugins/generative-ui/ui/grid.tsx +12 -12
- package/src/plugins/generative-ui/ui/index.ts +40 -40
- package/src/plugins/generative-ui/ui/input-wrapper.tsx +11 -11
- package/src/plugins/generative-ui/ui/input.tsx +9 -9
- package/src/plugins/generative-ui/ui/label.tsx +8 -8
- package/src/plugins/generative-ui/ui/list.tsx +11 -11
- package/src/plugins/generative-ui/ui/metric.tsx +23 -23
- package/src/plugins/generative-ui/ui/pagination.tsx +28 -28
- package/src/plugins/generative-ui/ui/popover.tsx +21 -21
- package/src/plugins/generative-ui/ui/progress.tsx +13 -13
- package/src/plugins/generative-ui/ui/radio-group.tsx +12 -12
- package/src/plugins/generative-ui/ui/select-wrapper.tsx +7 -7
- package/src/plugins/generative-ui/ui/select.tsx +37 -37
- package/src/plugins/generative-ui/ui/separator.tsx +9 -9
- package/src/plugins/generative-ui/ui/skeleton-wrapper.tsx +10 -10
- package/src/plugins/generative-ui/ui/skeleton.tsx +5 -5
- package/src/plugins/generative-ui/ui/stack.tsx +28 -28
- package/src/plugins/generative-ui/ui/switch.tsx +11 -11
- package/src/plugins/generative-ui/ui/table.tsx +32 -32
- package/src/plugins/generative-ui/ui/tabs-wrapper.tsx +11 -11
- package/src/plugins/generative-ui/ui/tabs.tsx +26 -26
- package/src/plugins/generative-ui/ui/text.tsx +12 -12
- package/src/plugins/generative-ui/ui/textarea.tsx +7 -7
- package/src/plugins/generative-ui/ui/tooltip.tsx +12 -12
- package/src/plugins/index.ts +7 -7
- package/src/react-shim.ts +6 -6
- package/src/server/bun.ts +12 -12
- package/src/server/core.ts +25 -25
- package/src/server/express.ts +17 -15
- package/src/server/fastify.ts +14 -14
- package/src/server/hono.ts +9 -9
- package/src/server/nextjs.ts +12 -12
- package/src/server/tanstack-start.ts +12 -12
- package/src/server.ts +27 -27
- package/src/storybook.d.ts +4 -4
- package/src/types/index.ts +124 -124
- package/src/types/plugins.ts +7 -7
- package/src/vite-env.d.ts +12 -12
- package/dist/compat-shims-BPJ7Q68c.js.map +0 -1
- package/dist/index-D0bAYNQy.js.map +0 -1
- package/dist/index-KSX4Qjip.cjs.map +0 -1
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
3
|
+
import * as React from "react";
|
|
4
4
|
import {
|
|
5
5
|
Accordion as AccordionPrimitive,
|
|
6
6
|
AccordionItem as AccordionItemPrimitive,
|
|
7
7
|
AccordionTrigger,
|
|
8
8
|
AccordionContent,
|
|
9
|
-
} from
|
|
9
|
+
} from "./accordion";
|
|
10
10
|
|
|
11
11
|
export interface AccordionWrapperProps {
|
|
12
|
-
type?:
|
|
13
|
-
children?: React.ReactNode
|
|
12
|
+
type?: "single" | "multiple";
|
|
13
|
+
children?: React.ReactNode;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Accordion wrapper that adapts the compound Accordion to the catalog's props-based API.
|
|
18
18
|
*/
|
|
19
19
|
export function AccordionWrapper({
|
|
20
|
-
type =
|
|
20
|
+
type = "single",
|
|
21
21
|
children,
|
|
22
22
|
}: AccordionWrapperProps) {
|
|
23
23
|
// Type assertion needed because Radix types are complex
|
|
24
24
|
const AccordionRoot = AccordionPrimitive as React.FC<{
|
|
25
|
-
type:
|
|
26
|
-
collapsible?: boolean
|
|
27
|
-
children?: React.ReactNode
|
|
28
|
-
}
|
|
25
|
+
type: "single" | "multiple";
|
|
26
|
+
collapsible?: boolean;
|
|
27
|
+
children?: React.ReactNode;
|
|
28
|
+
}>;
|
|
29
29
|
|
|
30
30
|
return (
|
|
31
|
-
<AccordionRoot type={type} collapsible={type ===
|
|
31
|
+
<AccordionRoot type={type} collapsible={type === "single"}>
|
|
32
32
|
{children}
|
|
33
33
|
</AccordionRoot>
|
|
34
|
-
)
|
|
34
|
+
);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export interface AccordionItemWrapperProps {
|
|
38
|
-
value: string
|
|
39
|
-
title: string
|
|
40
|
-
children?: React.ReactNode
|
|
38
|
+
value: string;
|
|
39
|
+
title: string;
|
|
40
|
+
children?: React.ReactNode;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
/**
|
|
@@ -53,5 +53,5 @@ export function AccordionItemWrapper({
|
|
|
53
53
|
<AccordionTrigger>{title}</AccordionTrigger>
|
|
54
54
|
<AccordionContent>{children}</AccordionContent>
|
|
55
55
|
</AccordionItemPrimitive>
|
|
56
|
-
)
|
|
56
|
+
);
|
|
57
57
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
4
|
-
import { ChevronDownIcon } from
|
|
5
|
-
import { Accordion as AccordionPrimitive } from
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
5
|
+
import { Accordion as AccordionPrimitive } from "radix-ui";
|
|
6
6
|
|
|
7
|
-
import { cn } from
|
|
7
|
+
import { cn } from "@/lib/utils";
|
|
8
8
|
|
|
9
9
|
function Accordion({
|
|
10
10
|
...props
|
|
11
11
|
}: React.ComponentProps<typeof AccordionPrimitive.Root>) {
|
|
12
|
-
return <AccordionPrimitive.Root data-slot="accordion" {...props}
|
|
12
|
+
return <AccordionPrimitive.Root data-slot="accordion" {...props} />;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
function AccordionItem({
|
|
@@ -19,10 +19,10 @@ function AccordionItem({
|
|
|
19
19
|
return (
|
|
20
20
|
<AccordionPrimitive.Item
|
|
21
21
|
data-slot="accordion-item"
|
|
22
|
-
className={cn(
|
|
22
|
+
className={cn("border-b last:border-b-0", className)}
|
|
23
23
|
{...props}
|
|
24
24
|
/>
|
|
25
|
-
)
|
|
25
|
+
);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
function AccordionTrigger({
|
|
@@ -35,16 +35,16 @@ function AccordionTrigger({
|
|
|
35
35
|
<AccordionPrimitive.Trigger
|
|
36
36
|
data-slot="accordion-trigger"
|
|
37
37
|
className={cn(
|
|
38
|
-
|
|
39
|
-
className
|
|
38
|
+
"flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium text-foreground transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
|
|
39
|
+
className,
|
|
40
40
|
)}
|
|
41
41
|
{...props}
|
|
42
42
|
>
|
|
43
43
|
{children}
|
|
44
|
-
<ChevronDownIcon className="
|
|
44
|
+
<ChevronDownIcon className="pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200" />
|
|
45
45
|
</AccordionPrimitive.Trigger>
|
|
46
46
|
</AccordionPrimitive.Header>
|
|
47
|
-
)
|
|
47
|
+
);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
function AccordionContent({
|
|
@@ -55,12 +55,12 @@ function AccordionContent({
|
|
|
55
55
|
return (
|
|
56
56
|
<AccordionPrimitive.Content
|
|
57
57
|
data-slot="accordion-content"
|
|
58
|
-
className="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down
|
|
58
|
+
className="overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
|
|
59
59
|
{...props}
|
|
60
60
|
>
|
|
61
|
-
<div className={cn(
|
|
61
|
+
<div className={cn("pt-0 pb-4", className)}>{children}</div>
|
|
62
62
|
</AccordionPrimitive.Content>
|
|
63
|
-
)
|
|
63
|
+
);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }
|
|
66
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
4
|
-
import { Button, buttonVariants } from
|
|
5
|
-
import type { VariantProps } from
|
|
6
|
-
import { cn } from
|
|
7
|
-
import { useToolExecution } from
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Button, buttonVariants } from "./button";
|
|
5
|
+
import type { VariantProps } from "class-variance-authority";
|
|
6
|
+
import { cn } from "@/lib/utils";
|
|
7
|
+
import { useToolExecution } from "@/contexts/ToolExecutionContext";
|
|
8
8
|
|
|
9
9
|
export interface ActionButtonProps
|
|
10
10
|
extends
|
|
11
|
-
Omit<React.ComponentProps<
|
|
11
|
+
Omit<React.ComponentProps<"button">, "onClick">,
|
|
12
12
|
VariantProps<typeof buttonVariants> {
|
|
13
|
-
label: string
|
|
13
|
+
label: string;
|
|
14
14
|
/** Tool name to invoke when clicked (matches LLM prompt) */
|
|
15
|
-
action: string
|
|
16
|
-
args?: Record<string, unknown
|
|
15
|
+
action: string;
|
|
16
|
+
args?: Record<string, unknown>;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export function ActionButton({
|
|
20
20
|
label,
|
|
21
21
|
action,
|
|
22
22
|
args,
|
|
23
|
-
variant =
|
|
24
|
-
size =
|
|
23
|
+
variant = "default",
|
|
24
|
+
size = "default",
|
|
25
25
|
className,
|
|
26
26
|
disabled,
|
|
27
27
|
...props
|
|
28
28
|
}: ActionButtonProps) {
|
|
29
|
-
const { executeTool, isToolAvailable } = useToolExecution()
|
|
30
|
-
const [isLoading, setIsLoading] = React.useState(false)
|
|
29
|
+
const { executeTool, isToolAvailable } = useToolExecution();
|
|
30
|
+
const [isLoading, setIsLoading] = React.useState(false);
|
|
31
31
|
|
|
32
|
-
const toolAvailable = isToolAvailable(action)
|
|
32
|
+
const toolAvailable = isToolAvailable(action);
|
|
33
33
|
|
|
34
|
-
const [error, setError] = React.useState<string | null>(null)
|
|
34
|
+
const [error, setError] = React.useState<string | null>(null);
|
|
35
35
|
|
|
36
36
|
const handleClick = React.useCallback(async () => {
|
|
37
|
-
if (!toolAvailable || isLoading) return
|
|
37
|
+
if (!toolAvailable || isLoading) return;
|
|
38
38
|
|
|
39
|
-
setIsLoading(true)
|
|
40
|
-
setError(null)
|
|
39
|
+
setIsLoading(true);
|
|
40
|
+
setError(null);
|
|
41
41
|
try {
|
|
42
|
-
const result = await executeTool(action, args ?? {})
|
|
42
|
+
const result = await executeTool(action, args ?? {});
|
|
43
43
|
if (!result.success && result.error) {
|
|
44
|
-
setError(result.error)
|
|
44
|
+
setError(result.error);
|
|
45
45
|
}
|
|
46
46
|
} catch (err) {
|
|
47
|
-
setError(err instanceof Error ? err.message :
|
|
47
|
+
setError(err instanceof Error ? err.message : "Unknown error");
|
|
48
48
|
} finally {
|
|
49
|
-
setIsLoading(false)
|
|
49
|
+
setIsLoading(false);
|
|
50
50
|
}
|
|
51
|
-
}, [action, args, executeTool, isLoading, toolAvailable])
|
|
51
|
+
}, [action, args, executeTool, isLoading, toolAvailable]);
|
|
52
52
|
|
|
53
53
|
return (
|
|
54
54
|
<div className="inline-flex flex-col gap-1">
|
|
55
55
|
<Button
|
|
56
|
-
variant={error ?
|
|
56
|
+
variant={error ? "destructive" : variant}
|
|
57
57
|
size={size}
|
|
58
58
|
className={cn(className)}
|
|
59
59
|
onClick={handleClick}
|
|
60
60
|
disabled={disabled || isLoading || !toolAvailable}
|
|
61
61
|
{...props}
|
|
62
62
|
>
|
|
63
|
-
{isLoading ?
|
|
63
|
+
{isLoading ? "Loading..." : label}
|
|
64
64
|
</Button>
|
|
65
|
-
{error && <span className="text-
|
|
65
|
+
{error && <span className="text-xs text-destructive">{error}</span>}
|
|
66
66
|
</div>
|
|
67
|
-
)
|
|
67
|
+
);
|
|
68
68
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
4
|
-
import { Alert, AlertTitle, AlertDescription } from
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Alert, AlertTitle, AlertDescription } from "./alert";
|
|
5
5
|
|
|
6
6
|
export interface AlertWrapperProps {
|
|
7
|
-
title: string
|
|
8
|
-
description?: string
|
|
9
|
-
variant?:
|
|
7
|
+
title: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
variant?: "default" | "destructive";
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -15,12 +15,12 @@ export interface AlertWrapperProps {
|
|
|
15
15
|
export function AlertWrapper({
|
|
16
16
|
title,
|
|
17
17
|
description,
|
|
18
|
-
variant =
|
|
18
|
+
variant = "default",
|
|
19
19
|
}: AlertWrapperProps) {
|
|
20
20
|
return (
|
|
21
21
|
<Alert variant={variant}>
|
|
22
22
|
<AlertTitle>{title}</AlertTitle>
|
|
23
23
|
{description && <AlertDescription>{description}</AlertDescription>}
|
|
24
24
|
</Alert>
|
|
25
|
-
)
|
|
25
|
+
);
|
|
26
26
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import { cva, type VariantProps } from
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
3
3
|
|
|
4
|
-
import { cn } from
|
|
4
|
+
import { cn } from "@/lib/utils";
|
|
5
5
|
|
|
6
6
|
const alertVariants = cva(
|
|
7
|
-
|
|
7
|
+
"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
|
|
8
8
|
{
|
|
9
9
|
variants: {
|
|
10
10
|
variant: {
|
|
11
|
-
default:
|
|
11
|
+
default: "bg-card text-card-foreground",
|
|
12
12
|
destructive:
|
|
13
|
-
|
|
13
|
+
"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
16
|
defaultVariants: {
|
|
17
|
-
variant:
|
|
17
|
+
variant: "default",
|
|
18
18
|
},
|
|
19
|
-
}
|
|
20
|
-
)
|
|
19
|
+
},
|
|
20
|
+
);
|
|
21
21
|
|
|
22
22
|
function Alert({
|
|
23
23
|
className,
|
|
24
24
|
variant,
|
|
25
25
|
...props
|
|
26
|
-
}: React.ComponentProps<
|
|
26
|
+
}: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>) {
|
|
27
27
|
return (
|
|
28
28
|
<div
|
|
29
29
|
data-slot="alert"
|
|
@@ -31,36 +31,36 @@ function Alert({
|
|
|
31
31
|
className={cn(alertVariants({ variant }), className)}
|
|
32
32
|
{...props}
|
|
33
33
|
/>
|
|
34
|
-
)
|
|
34
|
+
);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
function AlertTitle({ className, ...props }: React.ComponentProps<
|
|
37
|
+
function AlertTitle({ className, ...props }: React.ComponentProps<"div">) {
|
|
38
38
|
return (
|
|
39
39
|
<div
|
|
40
40
|
data-slot="alert-title"
|
|
41
41
|
className={cn(
|
|
42
|
-
|
|
43
|
-
className
|
|
42
|
+
"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
|
|
43
|
+
className,
|
|
44
44
|
)}
|
|
45
45
|
{...props}
|
|
46
46
|
/>
|
|
47
|
-
)
|
|
47
|
+
);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
function AlertDescription({
|
|
51
51
|
className,
|
|
52
52
|
...props
|
|
53
|
-
}: React.ComponentProps<
|
|
53
|
+
}: React.ComponentProps<"div">) {
|
|
54
54
|
return (
|
|
55
55
|
<div
|
|
56
56
|
data-slot="alert-description"
|
|
57
57
|
className={cn(
|
|
58
|
-
|
|
59
|
-
className
|
|
58
|
+
"col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed",
|
|
59
|
+
className,
|
|
60
60
|
)}
|
|
61
61
|
{...props}
|
|
62
62
|
/>
|
|
63
|
-
)
|
|
63
|
+
);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
export { Alert, AlertTitle, AlertDescription }
|
|
66
|
+
export { Alert, AlertTitle, AlertDescription };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
4
|
-
import { Avatar, AvatarImage, AvatarFallback } from
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Avatar, AvatarImage, AvatarFallback } from "./avatar";
|
|
5
5
|
|
|
6
6
|
export interface AvatarWrapperProps {
|
|
7
|
-
src?: string
|
|
8
|
-
alt?: string
|
|
9
|
-
fallback: string
|
|
7
|
+
src?: string;
|
|
8
|
+
alt?: string;
|
|
9
|
+
fallback: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -18,5 +18,5 @@ export function AvatarWrapper({ src, alt, fallback }: AvatarWrapperProps) {
|
|
|
18
18
|
{src && <AvatarImage src={src} alt={alt} />}
|
|
19
19
|
<AvatarFallback>{fallback}</AvatarFallback>
|
|
20
20
|
</Avatar>
|
|
21
|
-
)
|
|
21
|
+
);
|
|
22
22
|
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
4
|
-
import { Avatar as AvatarPrimitive } from
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Avatar as AvatarPrimitive } from "radix-ui";
|
|
5
5
|
|
|
6
|
-
import { cn } from
|
|
6
|
+
import { cn } from "@/lib/utils";
|
|
7
7
|
|
|
8
8
|
function Avatar({
|
|
9
9
|
className,
|
|
10
|
-
size =
|
|
10
|
+
size = "default",
|
|
11
11
|
...props
|
|
12
12
|
}: React.ComponentProps<typeof AvatarPrimitive.Root> & {
|
|
13
|
-
size?:
|
|
13
|
+
size?: "default" | "sm" | "lg";
|
|
14
14
|
}) {
|
|
15
15
|
return (
|
|
16
16
|
<AvatarPrimitive.Root
|
|
17
17
|
data-slot="avatar"
|
|
18
18
|
data-size={size}
|
|
19
19
|
className={cn(
|
|
20
|
-
|
|
21
|
-
className
|
|
20
|
+
"group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",
|
|
21
|
+
className,
|
|
22
22
|
)}
|
|
23
23
|
{...props}
|
|
24
24
|
/>
|
|
25
|
-
)
|
|
25
|
+
);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
function AvatarImage({
|
|
@@ -32,10 +32,10 @@ function AvatarImage({
|
|
|
32
32
|
return (
|
|
33
33
|
<AvatarPrimitive.Image
|
|
34
34
|
data-slot="avatar-image"
|
|
35
|
-
className={cn(
|
|
35
|
+
className={cn("aspect-square size-full", className)}
|
|
36
36
|
{...props}
|
|
37
37
|
/>
|
|
38
|
-
)
|
|
38
|
+
);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
function AvatarFallback({
|
|
@@ -46,57 +46,57 @@ function AvatarFallback({
|
|
|
46
46
|
<AvatarPrimitive.Fallback
|
|
47
47
|
data-slot="avatar-fallback"
|
|
48
48
|
className={cn(
|
|
49
|
-
|
|
50
|
-
className
|
|
49
|
+
"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",
|
|
50
|
+
className,
|
|
51
51
|
)}
|
|
52
52
|
{...props}
|
|
53
53
|
/>
|
|
54
|
-
)
|
|
54
|
+
);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
function AvatarBadge({ className, ...props }: React.ComponentProps<
|
|
57
|
+
function AvatarBadge({ className, ...props }: React.ComponentProps<"span">) {
|
|
58
58
|
return (
|
|
59
59
|
<span
|
|
60
60
|
data-slot="avatar-badge"
|
|
61
61
|
className={cn(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
className
|
|
62
|
+
"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none",
|
|
63
|
+
"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
|
|
64
|
+
"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
|
|
65
|
+
"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2",
|
|
66
|
+
className,
|
|
67
67
|
)}
|
|
68
68
|
{...props}
|
|
69
69
|
/>
|
|
70
|
-
)
|
|
70
|
+
);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
function AvatarGroup({ className, ...props }: React.ComponentProps<
|
|
73
|
+
function AvatarGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
74
74
|
return (
|
|
75
75
|
<div
|
|
76
76
|
data-slot="avatar-group"
|
|
77
77
|
className={cn(
|
|
78
|
-
|
|
79
|
-
className
|
|
78
|
+
"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
|
|
79
|
+
className,
|
|
80
80
|
)}
|
|
81
81
|
{...props}
|
|
82
82
|
/>
|
|
83
|
-
)
|
|
83
|
+
);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
function AvatarGroupCount({
|
|
87
87
|
className,
|
|
88
88
|
...props
|
|
89
|
-
}: React.ComponentProps<
|
|
89
|
+
}: React.ComponentProps<"div">) {
|
|
90
90
|
return (
|
|
91
91
|
<div
|
|
92
92
|
data-slot="avatar-group-count"
|
|
93
93
|
className={cn(
|
|
94
|
-
|
|
95
|
-
className
|
|
94
|
+
"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",
|
|
95
|
+
className,
|
|
96
96
|
)}
|
|
97
97
|
{...props}
|
|
98
98
|
/>
|
|
99
|
-
)
|
|
99
|
+
);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
export {
|
|
@@ -106,4 +106,4 @@ export {
|
|
|
106
106
|
AvatarBadge,
|
|
107
107
|
AvatarGroup,
|
|
108
108
|
AvatarGroupCount,
|
|
109
|
-
}
|
|
109
|
+
};
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import { cva, type VariantProps } from
|
|
3
|
-
import { Slot } from
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
3
|
+
import { Slot } from "radix-ui";
|
|
4
4
|
|
|
5
|
-
import { cn } from
|
|
5
|
+
import { cn } from "@/lib/utils";
|
|
6
6
|
|
|
7
7
|
const badgeVariants = cva(
|
|
8
|
-
|
|
8
|
+
"inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
9
9
|
{
|
|
10
10
|
variants: {
|
|
11
11
|
variant: {
|
|
12
|
-
default:
|
|
12
|
+
default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
13
13
|
secondary:
|
|
14
|
-
|
|
14
|
+
"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
15
15
|
/** Matches LLM prompt variant */
|
|
16
16
|
success:
|
|
17
|
-
|
|
17
|
+
"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-100",
|
|
18
18
|
/** Matches LLM prompt variant */
|
|
19
19
|
warning:
|
|
20
|
-
|
|
20
|
+
"bg-amber-100 text-amber-800 dark:bg-amber-900 dark:text-amber-100",
|
|
21
21
|
/** Matches LLM prompt variant */
|
|
22
|
-
error:
|
|
22
|
+
error: "bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-100",
|
|
23
23
|
destructive:
|
|
24
|
-
|
|
24
|
+
"bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
25
25
|
outline:
|
|
26
|
-
|
|
26
|
+
"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
29
|
defaultVariants: {
|
|
30
|
-
variant:
|
|
30
|
+
variant: "default",
|
|
31
31
|
},
|
|
32
|
-
}
|
|
33
|
-
)
|
|
32
|
+
},
|
|
33
|
+
);
|
|
34
34
|
|
|
35
35
|
interface BadgeProps
|
|
36
|
-
extends React.ComponentProps<
|
|
37
|
-
asChild?: boolean
|
|
36
|
+
extends React.ComponentProps<"span">, VariantProps<typeof badgeVariants> {
|
|
37
|
+
asChild?: boolean;
|
|
38
38
|
/** Content text (matches LLM prompt) - rendered as children */
|
|
39
|
-
content?: string
|
|
39
|
+
content?: string;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
function Badge({
|
|
43
43
|
className,
|
|
44
|
-
variant =
|
|
44
|
+
variant = "default",
|
|
45
45
|
asChild = false,
|
|
46
46
|
content,
|
|
47
47
|
children,
|
|
48
48
|
...props
|
|
49
49
|
}: BadgeProps) {
|
|
50
|
-
const Comp = asChild ? Slot.Root :
|
|
50
|
+
const Comp = asChild ? Slot.Root : "span";
|
|
51
51
|
|
|
52
52
|
return (
|
|
53
53
|
<Comp
|
|
@@ -58,8 +58,8 @@ function Badge({
|
|
|
58
58
|
>
|
|
59
59
|
{content ?? children}
|
|
60
60
|
</Comp>
|
|
61
|
-
)
|
|
61
|
+
);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
// eslint-disable-next-line react-refresh/only-export-components
|
|
65
|
-
export { Badge, badgeVariants }
|
|
65
|
+
export { Badge, badgeVariants };
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
4
|
-
import { Button } from
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Button } from "./button";
|
|
5
5
|
|
|
6
6
|
export interface ButtonWrapperProps {
|
|
7
|
-
label: string
|
|
8
|
-
variant?:
|
|
9
|
-
size?:
|
|
10
|
-
disabled?: boolean
|
|
7
|
+
label: string;
|
|
8
|
+
variant?: "default" | "secondary" | "destructive" | "outline" | "ghost";
|
|
9
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
10
|
+
disabled?: boolean;
|
|
11
11
|
/** Backend action to trigger (future use) */
|
|
12
|
-
action?: string
|
|
12
|
+
action?: string;
|
|
13
13
|
/** Parameters for the action (future use) */
|
|
14
|
-
actionParams?: Record<string, unknown
|
|
14
|
+
actionParams?: Record<string, unknown>;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -20,13 +20,13 @@ export interface ButtonWrapperProps {
|
|
|
20
20
|
*/
|
|
21
21
|
export function ButtonWrapper({
|
|
22
22
|
label,
|
|
23
|
-
variant =
|
|
24
|
-
size =
|
|
23
|
+
variant = "default",
|
|
24
|
+
size = "default",
|
|
25
25
|
disabled = false,
|
|
26
26
|
}: ButtonWrapperProps) {
|
|
27
27
|
return (
|
|
28
28
|
<Button variant={variant} size={size} disabled={disabled}>
|
|
29
29
|
{label}
|
|
30
30
|
</Button>
|
|
31
|
-
)
|
|
31
|
+
);
|
|
32
32
|
}
|