@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,36 +1,36 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import { useElements } from
|
|
4
|
-
import { AssistantModal } from
|
|
5
|
-
import { AssistantSidecar } from
|
|
6
|
-
import { ErrorBoundary } from
|
|
7
|
-
import { Thread } from
|
|
8
|
-
import { ShadowRoot } from
|
|
3
|
+
import { useElements } from "@/hooks/useElements";
|
|
4
|
+
import { AssistantModal } from "../assistant-ui/assistant-modal";
|
|
5
|
+
import { AssistantSidecar } from "../assistant-ui/assistant-sidecar";
|
|
6
|
+
import { ErrorBoundary } from "../assistant-ui/error-boundary";
|
|
7
|
+
import { Thread } from "../assistant-ui/thread";
|
|
8
|
+
import { ShadowRoot } from "@/components/ShadowRoot";
|
|
9
9
|
|
|
10
10
|
interface ChatProps {
|
|
11
|
-
className?: string
|
|
11
|
+
className?: string;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export const Chat = ({ className }: ChatProps) => {
|
|
15
|
-
const { config } = useElements()
|
|
15
|
+
const { config } = useElements();
|
|
16
16
|
|
|
17
17
|
switch (config.variant) {
|
|
18
|
-
case
|
|
18
|
+
case "standalone":
|
|
19
19
|
// Standalone variant wraps Thread with ErrorBoundary at this level
|
|
20
20
|
return (
|
|
21
21
|
<ErrorBoundary>
|
|
22
|
-
<ShadowRoot hostStyle={{ height:
|
|
22
|
+
<ShadowRoot hostStyle={{ height: "100%", width: "100%" }}>
|
|
23
23
|
<Thread />
|
|
24
24
|
</ShadowRoot>
|
|
25
25
|
</ErrorBoundary>
|
|
26
|
-
)
|
|
27
|
-
case
|
|
26
|
+
);
|
|
27
|
+
case "sidecar":
|
|
28
28
|
// Sidecar has its own internal ErrorBoundary around Thread
|
|
29
29
|
return (
|
|
30
|
-
<ShadowRoot hostStyle={{ height:
|
|
30
|
+
<ShadowRoot hostStyle={{ height: "inherit", width: "inherit" }}>
|
|
31
31
|
<AssistantSidecar />
|
|
32
32
|
</ShadowRoot>
|
|
33
|
-
)
|
|
33
|
+
);
|
|
34
34
|
|
|
35
35
|
// If no variant is provided then fallback to the modal
|
|
36
36
|
// Modal has its own internal ErrorBoundary around Thread
|
|
@@ -39,6 +39,6 @@ export const Chat = ({ className }: ChatProps) => {
|
|
|
39
39
|
<ShadowRoot>
|
|
40
40
|
<AssistantModal className={className} />
|
|
41
41
|
</ShadowRoot>
|
|
42
|
-
)
|
|
42
|
+
);
|
|
43
43
|
}
|
|
44
|
-
}
|
|
44
|
+
};
|
|
@@ -1,260 +1,260 @@
|
|
|
1
|
-
import type { Meta, StoryFn } from
|
|
2
|
-
import { Chat } from
|
|
1
|
+
import type { Meta, StoryFn } from "@storybook/react-vite";
|
|
2
|
+
import { Chat } from "..";
|
|
3
3
|
|
|
4
4
|
const meta: Meta<typeof Chat> = {
|
|
5
|
-
title:
|
|
5
|
+
title: "Chat/Plugins/Charts",
|
|
6
6
|
component: Chat,
|
|
7
7
|
parameters: {
|
|
8
|
-
layout:
|
|
8
|
+
layout: "fullscreen",
|
|
9
9
|
},
|
|
10
|
-
} satisfies Meta<typeof Chat
|
|
10
|
+
} satisfies Meta<typeof Chat>;
|
|
11
11
|
|
|
12
|
-
export default meta
|
|
12
|
+
export default meta;
|
|
13
13
|
|
|
14
|
-
type Story = StoryFn<typeof Chat
|
|
14
|
+
type Story = StoryFn<typeof Chat>;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Bar chart demo - comparing categorical data using orders summary
|
|
18
18
|
*/
|
|
19
|
-
export const BarChart: Story = () => <Chat
|
|
19
|
+
export const BarChart: Story = () => <Chat />;
|
|
20
20
|
BarChart.parameters = {
|
|
21
21
|
elements: {
|
|
22
22
|
config: {
|
|
23
|
-
variant:
|
|
23
|
+
variant: "standalone",
|
|
24
24
|
welcome: {
|
|
25
|
-
title:
|
|
26
|
-
subtitle:
|
|
25
|
+
title: "Orders Analytics",
|
|
26
|
+
subtitle: "Bar Chart Visualizations",
|
|
27
27
|
suggestions: [
|
|
28
28
|
{
|
|
29
|
-
title:
|
|
30
|
-
label:
|
|
29
|
+
title: "Revenue by Category",
|
|
30
|
+
label: "Bar chart",
|
|
31
31
|
prompt:
|
|
32
|
-
|
|
32
|
+
"Get the orders summary and show me a bar chart of revenue by product category",
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
|
-
title:
|
|
36
|
-
label:
|
|
35
|
+
title: "Orders by Region",
|
|
36
|
+
label: "Regional comparison",
|
|
37
37
|
prompt:
|
|
38
|
-
|
|
38
|
+
"Fetch the orders summary and create a horizontal bar chart comparing orders by region",
|
|
39
39
|
},
|
|
40
40
|
],
|
|
41
41
|
},
|
|
42
42
|
},
|
|
43
43
|
},
|
|
44
|
-
}
|
|
44
|
+
};
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Line chart demo - showing trends over time
|
|
48
48
|
*/
|
|
49
|
-
export const LineChart: Story = () => <Chat
|
|
49
|
+
export const LineChart: Story = () => <Chat />;
|
|
50
50
|
LineChart.parameters = {
|
|
51
51
|
elements: {
|
|
52
52
|
config: {
|
|
53
|
-
variant:
|
|
53
|
+
variant: "standalone",
|
|
54
54
|
welcome: {
|
|
55
|
-
title:
|
|
56
|
-
subtitle:
|
|
55
|
+
title: "Orders Analytics",
|
|
56
|
+
subtitle: "Line Chart Visualizations",
|
|
57
57
|
suggestions: [
|
|
58
58
|
{
|
|
59
|
-
title:
|
|
60
|
-
label:
|
|
59
|
+
title: "Daily Orders Trend",
|
|
60
|
+
label: "Line chart",
|
|
61
61
|
prompt:
|
|
62
|
-
|
|
62
|
+
"Get the orders summary grouped by day and show me a line chart of daily order counts",
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
|
-
title:
|
|
66
|
-
label:
|
|
65
|
+
title: "Revenue vs Orders",
|
|
66
|
+
label: "Multiple series",
|
|
67
67
|
prompt:
|
|
68
|
-
|
|
68
|
+
"Fetch weekly orders data and create a line chart showing both revenue and order count trends",
|
|
69
69
|
},
|
|
70
70
|
],
|
|
71
71
|
},
|
|
72
72
|
},
|
|
73
73
|
},
|
|
74
|
-
}
|
|
74
|
+
};
|
|
75
75
|
|
|
76
76
|
/**
|
|
77
77
|
* Area chart demo - showing volume over time
|
|
78
78
|
*/
|
|
79
|
-
export const AreaChart: Story = () => <Chat
|
|
79
|
+
export const AreaChart: Story = () => <Chat />;
|
|
80
80
|
AreaChart.parameters = {
|
|
81
81
|
elements: {
|
|
82
82
|
config: {
|
|
83
|
-
variant:
|
|
83
|
+
variant: "standalone",
|
|
84
84
|
welcome: {
|
|
85
|
-
title:
|
|
86
|
-
subtitle:
|
|
85
|
+
title: "Orders Analytics",
|
|
86
|
+
subtitle: "Area Chart Visualizations",
|
|
87
87
|
suggestions: [
|
|
88
88
|
{
|
|
89
|
-
title:
|
|
90
|
-
label:
|
|
89
|
+
title: "Monthly Revenue",
|
|
90
|
+
label: "Area chart",
|
|
91
91
|
prompt:
|
|
92
|
-
|
|
92
|
+
"Get the orders summary grouped by month and show me an area chart of revenue over time",
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
|
-
title:
|
|
96
|
-
label:
|
|
95
|
+
title: "Order Growth",
|
|
96
|
+
label: "Trend visualization",
|
|
97
97
|
prompt:
|
|
98
|
-
|
|
98
|
+
"Fetch monthly orders data and create an area chart showing order volume growth",
|
|
99
99
|
},
|
|
100
100
|
],
|
|
101
101
|
},
|
|
102
102
|
},
|
|
103
103
|
},
|
|
104
|
-
}
|
|
104
|
+
};
|
|
105
105
|
|
|
106
106
|
/**
|
|
107
107
|
* Pie chart demo - showing proportions
|
|
108
108
|
*/
|
|
109
|
-
export const PieChart: Story = () => <Chat
|
|
109
|
+
export const PieChart: Story = () => <Chat />;
|
|
110
110
|
PieChart.parameters = {
|
|
111
111
|
elements: {
|
|
112
112
|
config: {
|
|
113
|
-
variant:
|
|
113
|
+
variant: "standalone",
|
|
114
114
|
welcome: {
|
|
115
|
-
title:
|
|
116
|
-
subtitle:
|
|
115
|
+
title: "Orders Analytics",
|
|
116
|
+
subtitle: "Pie Chart Visualizations",
|
|
117
117
|
suggestions: [
|
|
118
118
|
{
|
|
119
|
-
title:
|
|
120
|
-
label:
|
|
119
|
+
title: "Category Distribution",
|
|
120
|
+
label: "Pie chart",
|
|
121
121
|
prompt:
|
|
122
|
-
|
|
122
|
+
"Get the orders summary and show me a pie chart of order distribution by category",
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
|
-
title:
|
|
126
|
-
label:
|
|
125
|
+
title: "Order Status",
|
|
126
|
+
label: "Status breakdown",
|
|
127
127
|
prompt:
|
|
128
|
-
|
|
128
|
+
"Fetch the orders summary and create a pie chart showing the breakdown of order statuses",
|
|
129
129
|
},
|
|
130
130
|
],
|
|
131
131
|
},
|
|
132
132
|
},
|
|
133
133
|
},
|
|
134
|
-
}
|
|
134
|
+
};
|
|
135
135
|
|
|
136
136
|
/**
|
|
137
137
|
* Donut chart demo - proportions with center metric
|
|
138
138
|
*/
|
|
139
|
-
export const DonutChart: Story = () => <Chat
|
|
139
|
+
export const DonutChart: Story = () => <Chat />;
|
|
140
140
|
DonutChart.parameters = {
|
|
141
141
|
elements: {
|
|
142
142
|
config: {
|
|
143
|
-
variant:
|
|
143
|
+
variant: "standalone",
|
|
144
144
|
welcome: {
|
|
145
|
-
title:
|
|
146
|
-
subtitle:
|
|
145
|
+
title: "Orders Analytics",
|
|
146
|
+
subtitle: "Donut Chart Visualizations",
|
|
147
147
|
suggestions: [
|
|
148
148
|
{
|
|
149
|
-
title:
|
|
150
|
-
label:
|
|
149
|
+
title: "Revenue Share",
|
|
150
|
+
label: "Donut with total",
|
|
151
151
|
prompt:
|
|
152
|
-
|
|
152
|
+
"Get the orders summary and show a donut chart of revenue by category with the total revenue in the center",
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
|
-
title:
|
|
156
|
-
label:
|
|
155
|
+
title: "Order Completion",
|
|
156
|
+
label: "Status donut",
|
|
157
157
|
prompt:
|
|
158
|
-
|
|
158
|
+
"Fetch the orders summary and create a donut chart showing order status distribution with completion rate in the center",
|
|
159
159
|
},
|
|
160
160
|
],
|
|
161
161
|
},
|
|
162
162
|
},
|
|
163
163
|
},
|
|
164
|
-
}
|
|
164
|
+
};
|
|
165
165
|
|
|
166
166
|
/**
|
|
167
167
|
* Scatter chart demo - showing correlation
|
|
168
168
|
*/
|
|
169
|
-
export const ScatterChart: Story = () => <Chat
|
|
169
|
+
export const ScatterChart: Story = () => <Chat />;
|
|
170
170
|
ScatterChart.parameters = {
|
|
171
171
|
elements: {
|
|
172
172
|
config: {
|
|
173
|
-
variant:
|
|
173
|
+
variant: "standalone",
|
|
174
174
|
welcome: {
|
|
175
|
-
title:
|
|
176
|
-
subtitle:
|
|
175
|
+
title: "Orders Analytics",
|
|
176
|
+
subtitle: "Scatter Chart Visualizations",
|
|
177
177
|
suggestions: [
|
|
178
178
|
{
|
|
179
|
-
title:
|
|
180
|
-
label:
|
|
179
|
+
title: "Orders vs Revenue",
|
|
180
|
+
label: "Correlation",
|
|
181
181
|
prompt:
|
|
182
|
-
|
|
182
|
+
"Get the orders summary and create a scatter chart showing the relationship between order count and revenue by region",
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
|
-
title:
|
|
186
|
-
label:
|
|
185
|
+
title: "Category Performance",
|
|
186
|
+
label: "Orders vs AOV",
|
|
187
187
|
prompt:
|
|
188
|
-
|
|
188
|
+
"Fetch the orders summary and show a scatter plot of order count vs average order value for each category",
|
|
189
189
|
},
|
|
190
190
|
],
|
|
191
191
|
},
|
|
192
192
|
},
|
|
193
193
|
},
|
|
194
|
-
}
|
|
194
|
+
};
|
|
195
195
|
|
|
196
196
|
/**
|
|
197
197
|
* Radar chart demo - multi-dimensional comparison
|
|
198
198
|
*/
|
|
199
|
-
export const RadarChart: Story = () => <Chat
|
|
199
|
+
export const RadarChart: Story = () => <Chat />;
|
|
200
200
|
RadarChart.parameters = {
|
|
201
201
|
elements: {
|
|
202
202
|
config: {
|
|
203
|
-
variant:
|
|
203
|
+
variant: "standalone",
|
|
204
204
|
welcome: {
|
|
205
|
-
title:
|
|
206
|
-
subtitle:
|
|
205
|
+
title: "Orders Analytics",
|
|
206
|
+
subtitle: "Radar Chart Visualizations",
|
|
207
207
|
suggestions: [
|
|
208
208
|
{
|
|
209
|
-
title:
|
|
210
|
-
label:
|
|
209
|
+
title: "Regional Performance",
|
|
210
|
+
label: "Radar chart",
|
|
211
211
|
prompt:
|
|
212
|
-
|
|
212
|
+
"Get the orders summary and create a radar chart comparing regions across orders, revenue, and average order value",
|
|
213
213
|
},
|
|
214
214
|
{
|
|
215
|
-
title:
|
|
216
|
-
label:
|
|
215
|
+
title: "Category Analysis",
|
|
216
|
+
label: "Multi-metric",
|
|
217
217
|
prompt:
|
|
218
|
-
|
|
218
|
+
"Fetch the orders summary and show a radar chart comparing categories by order volume, revenue share, and growth",
|
|
219
219
|
},
|
|
220
220
|
],
|
|
221
221
|
},
|
|
222
222
|
},
|
|
223
223
|
},
|
|
224
|
-
}
|
|
224
|
+
};
|
|
225
225
|
|
|
226
226
|
/**
|
|
227
227
|
* All chart types overview
|
|
228
228
|
*/
|
|
229
|
-
export const AllCharts: Story = () => <Chat
|
|
229
|
+
export const AllCharts: Story = () => <Chat />;
|
|
230
230
|
AllCharts.parameters = {
|
|
231
231
|
elements: {
|
|
232
232
|
config: {
|
|
233
|
-
variant:
|
|
233
|
+
variant: "standalone",
|
|
234
234
|
welcome: {
|
|
235
|
-
title:
|
|
236
|
-
subtitle:
|
|
235
|
+
title: "Orders Dashboard",
|
|
236
|
+
subtitle: "Explore order analytics with different chart types",
|
|
237
237
|
suggestions: [
|
|
238
238
|
{
|
|
239
|
-
title:
|
|
240
|
-
label:
|
|
239
|
+
title: "Revenue Trend",
|
|
240
|
+
label: "Line chart",
|
|
241
241
|
prompt:
|
|
242
|
-
|
|
242
|
+
"Get the monthly orders summary and show me a line chart of revenue trends",
|
|
243
243
|
},
|
|
244
244
|
{
|
|
245
|
-
title:
|
|
246
|
-
label:
|
|
245
|
+
title: "Category Breakdown",
|
|
246
|
+
label: "Bar chart",
|
|
247
247
|
prompt:
|
|
248
|
-
|
|
248
|
+
"Fetch the orders summary and create a bar chart of orders by category",
|
|
249
249
|
},
|
|
250
250
|
{
|
|
251
|
-
title:
|
|
252
|
-
label:
|
|
251
|
+
title: "Status Distribution",
|
|
252
|
+
label: "Pie chart",
|
|
253
253
|
prompt:
|
|
254
|
-
|
|
254
|
+
"Get the orders summary and show a pie chart of order status distribution",
|
|
255
255
|
},
|
|
256
256
|
],
|
|
257
257
|
},
|
|
258
258
|
},
|
|
259
259
|
},
|
|
260
|
-
}
|
|
260
|
+
};
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { Chat } from
|
|
3
|
-
import type { Meta, StoryFn } from
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Chat } from "..";
|
|
3
|
+
import type { Meta, StoryFn } from "@storybook/react-vite";
|
|
4
4
|
|
|
5
5
|
const meta: Meta<typeof Chat> = {
|
|
6
|
-
title:
|
|
6
|
+
title: "Chat/Composer",
|
|
7
7
|
component: Chat,
|
|
8
8
|
parameters: {
|
|
9
|
-
layout:
|
|
9
|
+
layout: "fullscreen",
|
|
10
10
|
},
|
|
11
|
-
} satisfies Meta<typeof Chat
|
|
11
|
+
} satisfies Meta<typeof Chat>;
|
|
12
12
|
|
|
13
|
-
export default meta
|
|
13
|
+
export default meta;
|
|
14
14
|
|
|
15
|
-
type Story = StoryFn<typeof Chat
|
|
15
|
+
type Story = StoryFn<typeof Chat>;
|
|
16
16
|
|
|
17
|
-
export const CustomPlaceholder: Story = () => <Chat
|
|
17
|
+
export const CustomPlaceholder: Story = () => <Chat />;
|
|
18
18
|
CustomPlaceholder.parameters = {
|
|
19
19
|
elements: {
|
|
20
20
|
config: {
|
|
21
|
-
variant:
|
|
22
|
-
composer: { placeholder:
|
|
21
|
+
variant: "standalone",
|
|
22
|
+
composer: { placeholder: "What would you like to know?" },
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
|
-
}
|
|
25
|
+
};
|
|
26
26
|
|
|
27
|
-
export const AttachmentsDisabled: Story = () => <Chat
|
|
27
|
+
export const AttachmentsDisabled: Story = () => <Chat />;
|
|
28
28
|
AttachmentsDisabled.parameters = {
|
|
29
29
|
elements: {
|
|
30
30
|
config: {
|
|
31
|
-
variant:
|
|
31
|
+
variant: "standalone",
|
|
32
32
|
composer: { attachments: false },
|
|
33
33
|
},
|
|
34
34
|
},
|
|
35
|
-
}
|
|
35
|
+
};
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { GetSessionFn } from
|
|
2
|
-
import { google } from
|
|
3
|
-
import type { Meta, StoryFn } from
|
|
4
|
-
import { Chat } from
|
|
1
|
+
import { GetSessionFn } from "@/types";
|
|
2
|
+
import { google } from "@ai-sdk/google";
|
|
3
|
+
import type { Meta, StoryFn } from "@storybook/react-vite";
|
|
4
|
+
import { Chat } from "..";
|
|
5
5
|
|
|
6
6
|
const meta: Meta<typeof Chat> = {
|
|
7
|
-
title:
|
|
7
|
+
title: "Chat/Connection Configuration",
|
|
8
8
|
component: Chat,
|
|
9
9
|
parameters: {
|
|
10
|
-
layout:
|
|
10
|
+
layout: "fullscreen",
|
|
11
11
|
},
|
|
12
|
-
} satisfies Meta<typeof Chat
|
|
12
|
+
} satisfies Meta<typeof Chat>;
|
|
13
13
|
|
|
14
|
-
export default meta
|
|
14
|
+
export default meta;
|
|
15
15
|
|
|
16
|
-
type Story = StoryFn<typeof Chat
|
|
16
|
+
type Story = StoryFn<typeof Chat>;
|
|
17
17
|
|
|
18
|
-
export const SystemPrompt: Story = () => <Chat
|
|
19
|
-
SystemPrompt.storyName =
|
|
18
|
+
export const SystemPrompt: Story = () => <Chat />;
|
|
19
|
+
SystemPrompt.storyName = "Custom System Prompt";
|
|
20
20
|
SystemPrompt.parameters = {
|
|
21
21
|
elements: {
|
|
22
22
|
config: {
|
|
23
|
-
variant:
|
|
24
|
-
systemPrompt:
|
|
23
|
+
variant: "standalone",
|
|
24
|
+
systemPrompt: "Please speak like a pirate",
|
|
25
25
|
},
|
|
26
26
|
},
|
|
27
|
-
}
|
|
27
|
+
};
|
|
28
28
|
|
|
29
|
-
export const WithImplicitSessionAuth: Story = () => <Chat
|
|
30
|
-
WithImplicitSessionAuth.storyName =
|
|
29
|
+
export const WithImplicitSessionAuth: Story = () => <Chat />;
|
|
30
|
+
WithImplicitSessionAuth.storyName = "With Implicit Session Auth";
|
|
31
31
|
WithImplicitSessionAuth.parameters = {
|
|
32
32
|
elements: {
|
|
33
33
|
config: {
|
|
@@ -35,64 +35,64 @@ WithImplicitSessionAuth.parameters = {
|
|
|
35
35
|
api: undefined,
|
|
36
36
|
},
|
|
37
37
|
},
|
|
38
|
-
}
|
|
38
|
+
};
|
|
39
39
|
|
|
40
40
|
const session: GetSessionFn = async () => {
|
|
41
|
-
const response = await fetch(
|
|
42
|
-
method:
|
|
41
|
+
const response = await fetch("/chat/session", {
|
|
42
|
+
method: "POST",
|
|
43
43
|
headers: {
|
|
44
|
-
|
|
45
|
-
import.meta.env.VITE_GRAM_ELEMENTS_STORYBOOK_PROJECT_SLUG ??
|
|
44
|
+
"Gram-Project":
|
|
45
|
+
import.meta.env.VITE_GRAM_ELEMENTS_STORYBOOK_PROJECT_SLUG ?? "",
|
|
46
46
|
},
|
|
47
|
-
})
|
|
48
|
-
const data = await response.json()
|
|
49
|
-
return data.client_token
|
|
50
|
-
}
|
|
47
|
+
});
|
|
48
|
+
const data = await response.json();
|
|
49
|
+
return data.client_token;
|
|
50
|
+
};
|
|
51
51
|
|
|
52
|
-
export const WithExplicitSessionAuth: Story = () => <Chat
|
|
53
|
-
WithExplicitSessionAuth.storyName =
|
|
52
|
+
export const WithExplicitSessionAuth: Story = () => <Chat />;
|
|
53
|
+
WithExplicitSessionAuth.storyName = "With Explicit Session Auth";
|
|
54
54
|
WithExplicitSessionAuth.parameters = {
|
|
55
55
|
elements: {
|
|
56
56
|
config: {
|
|
57
57
|
api: { session },
|
|
58
58
|
},
|
|
59
59
|
},
|
|
60
|
-
}
|
|
60
|
+
};
|
|
61
61
|
|
|
62
|
-
export const WithDangerousApiKey: Story = () => <Chat
|
|
63
|
-
WithDangerousApiKey.storyName =
|
|
62
|
+
export const WithDangerousApiKey: Story = () => <Chat />;
|
|
63
|
+
WithDangerousApiKey.storyName = "With Dangerous API Key Warning";
|
|
64
64
|
WithDangerousApiKey.parameters = {
|
|
65
65
|
elements: {
|
|
66
66
|
config: {
|
|
67
|
-
api: { dangerousApiKey:
|
|
67
|
+
api: { dangerousApiKey: "test" },
|
|
68
68
|
},
|
|
69
69
|
},
|
|
70
|
-
}
|
|
70
|
+
};
|
|
71
71
|
|
|
72
72
|
// NOTE: add Gemini API key to .env.local with the key VITE_GOOGLE_GENERATIVE_AI_API_KEY
|
|
73
|
-
export const LanguageModel: Story = () => <Chat
|
|
74
|
-
LanguageModel.storyName =
|
|
73
|
+
export const LanguageModel: Story = () => <Chat />;
|
|
74
|
+
LanguageModel.storyName = "Custom Language Model (Gemini)";
|
|
75
75
|
LanguageModel.parameters = {
|
|
76
76
|
elements: {
|
|
77
77
|
config: {
|
|
78
|
-
variant:
|
|
78
|
+
variant: "standalone",
|
|
79
79
|
welcome: {
|
|
80
|
-
title:
|
|
81
|
-
subtitle:
|
|
80
|
+
title: "Using Google Gemini",
|
|
81
|
+
subtitle: "Using Google Gemini 3 Flash Preview",
|
|
82
82
|
suggestions: [
|
|
83
83
|
{
|
|
84
|
-
title:
|
|
84
|
+
title: "Browse Products",
|
|
85
85
|
label: "See what's available",
|
|
86
|
-
prompt:
|
|
86
|
+
prompt: "What products do you have?",
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
|
-
title:
|
|
90
|
-
label:
|
|
91
|
-
prompt:
|
|
89
|
+
title: "Sales Chart",
|
|
90
|
+
label: "Visualize data",
|
|
91
|
+
prompt: "Show me a chart of product prices",
|
|
92
92
|
},
|
|
93
93
|
],
|
|
94
94
|
},
|
|
95
|
-
languageModel: google(
|
|
95
|
+
languageModel: google("gemini-3-flash-preview"),
|
|
96
96
|
},
|
|
97
97
|
},
|
|
98
|
-
}
|
|
98
|
+
};
|