@gram-ai/elements 1.27.4 → 1.27.5
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.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-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-DuCQRbcQ.js} +279 -265
- package/dist/index-DuCQRbcQ.js.map +1 -0
- package/dist/{index-KSX4Qjip.cjs → index-y_PNN5vK.cjs} +10 -10
- package/dist/index-y_PNN5vK.cjs.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-BFkhZRxj.js → profiler-FpBY9eRv.js} +2 -2
- package/dist/{profiler-BFkhZRxj.js.map → profiler-FpBY9eRv.js.map} +1 -1
- package/dist/{profiler-CyzxBxVz.cjs → profiler-_mthyjvo.cjs} +2 -2
- package/dist/{profiler-CyzxBxVz.cjs.map → profiler-_mthyjvo.cjs.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-Dq92sEHf.cjs → startRecording-NJcpiHw-.cjs} +2 -2
- package/dist/{startRecording-Dq92sEHf.cjs.map → startRecording-NJcpiHw-.cjs.map} +1 -1
- package/dist/{startRecording-C-PPAs_Z.js → startRecording-r5MXQ2Dm.js} +2 -2
- package/dist/{startRecording-C-PPAs_Z.js.map → startRecording-r5MXQ2Dm.js.map} +1 -1
- package/dist/types/index.d.ts +2 -2
- 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 +245 -244
- 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 +21 -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 +122 -122
- 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,80 +1,80 @@
|
|
|
1
|
-
import { MessageFeedback } from
|
|
2
|
-
import type { Meta, StoryFn } from
|
|
3
|
-
import { LazyMotion, domAnimation } from
|
|
4
|
-
import { Chat } from
|
|
1
|
+
import { MessageFeedback } from "@/components/assistant-ui/message-feedback";
|
|
2
|
+
import type { Meta, StoryFn } from "@storybook/react-vite";
|
|
3
|
+
import { LazyMotion, domAnimation } from "motion/react";
|
|
4
|
+
import { Chat } from "..";
|
|
5
5
|
|
|
6
6
|
const meta: Meta<typeof Chat> = {
|
|
7
|
-
title:
|
|
7
|
+
title: "Chat/Message Feedback",
|
|
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
18
|
/**
|
|
19
19
|
* The feedback buttons appear on the last assistant message after it finishes streaming.
|
|
20
20
|
* Send a message to see the feedback UI animate in.
|
|
21
21
|
*/
|
|
22
|
-
export const Default: Story = () => <Chat
|
|
22
|
+
export const Default: Story = () => <Chat />;
|
|
23
23
|
Default.parameters = {
|
|
24
24
|
elements: {
|
|
25
25
|
config: {
|
|
26
|
-
variant:
|
|
26
|
+
variant: "standalone",
|
|
27
27
|
thread: {
|
|
28
28
|
showFeedback: true,
|
|
29
29
|
},
|
|
30
30
|
welcome: {
|
|
31
|
-
title:
|
|
32
|
-
subtitle:
|
|
31
|
+
title: "Message Feedback Demo",
|
|
32
|
+
subtitle: "Send a message to see the feedback buttons",
|
|
33
33
|
suggestions: [
|
|
34
34
|
{
|
|
35
|
-
title:
|
|
36
|
-
label:
|
|
37
|
-
prompt:
|
|
35
|
+
title: "Say hello",
|
|
36
|
+
label: "A simple greeting",
|
|
37
|
+
prompt: "Hello!",
|
|
38
38
|
},
|
|
39
39
|
],
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
42
|
},
|
|
43
|
-
}
|
|
43
|
+
};
|
|
44
44
|
Default.decorators = [
|
|
45
45
|
(Story) => (
|
|
46
46
|
<div className="m-auto flex h-screen w-full max-w-3xl flex-col">
|
|
47
47
|
<Story />
|
|
48
48
|
</div>
|
|
49
49
|
),
|
|
50
|
-
]
|
|
50
|
+
];
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Widget variant with feedback buttons.
|
|
54
54
|
*/
|
|
55
|
-
export const Widget: Story = () => <Chat
|
|
55
|
+
export const Widget: Story = () => <Chat />;
|
|
56
56
|
Widget.parameters = {
|
|
57
57
|
elements: {
|
|
58
58
|
config: {
|
|
59
|
-
variant:
|
|
59
|
+
variant: "widget",
|
|
60
60
|
modal: { defaultOpen: true },
|
|
61
61
|
thread: {
|
|
62
62
|
showFeedback: true,
|
|
63
63
|
},
|
|
64
64
|
welcome: {
|
|
65
|
-
title:
|
|
66
|
-
subtitle:
|
|
65
|
+
title: "Message Feedback Demo",
|
|
66
|
+
subtitle: "Send a message to see the feedback buttons",
|
|
67
67
|
suggestions: [
|
|
68
68
|
{
|
|
69
|
-
title:
|
|
70
|
-
label:
|
|
71
|
-
prompt:
|
|
69
|
+
title: "Say hello",
|
|
70
|
+
label: "A simple greeting",
|
|
71
|
+
prompt: "Hello!",
|
|
72
72
|
},
|
|
73
73
|
],
|
|
74
74
|
},
|
|
75
75
|
},
|
|
76
76
|
},
|
|
77
|
-
}
|
|
77
|
+
};
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
80
|
* Sidecar variant with feedback buttons.
|
|
@@ -85,85 +85,85 @@ export const Sidecar: Story = () => (
|
|
|
85
85
|
<p>The sidebar is always visible on the right.</p>
|
|
86
86
|
<Chat />
|
|
87
87
|
</div>
|
|
88
|
-
)
|
|
88
|
+
);
|
|
89
89
|
Sidecar.parameters = {
|
|
90
90
|
elements: {
|
|
91
91
|
config: {
|
|
92
|
-
variant:
|
|
92
|
+
variant: "sidecar",
|
|
93
93
|
thread: {
|
|
94
94
|
showFeedback: true,
|
|
95
95
|
},
|
|
96
96
|
welcome: {
|
|
97
|
-
title:
|
|
98
|
-
subtitle:
|
|
97
|
+
title: "Message Feedback Demo",
|
|
98
|
+
subtitle: "Send a message to see the feedback buttons",
|
|
99
99
|
suggestions: [
|
|
100
100
|
{
|
|
101
|
-
title:
|
|
102
|
-
label:
|
|
103
|
-
prompt:
|
|
101
|
+
title: "Say hello",
|
|
102
|
+
label: "A simple greeting",
|
|
103
|
+
prompt: "Hello!",
|
|
104
104
|
},
|
|
105
105
|
],
|
|
106
106
|
},
|
|
107
107
|
},
|
|
108
108
|
},
|
|
109
|
-
}
|
|
109
|
+
};
|
|
110
110
|
|
|
111
111
|
/**
|
|
112
112
|
* Demonstrates feedback UI combined with follow-up suggestions.
|
|
113
113
|
* After the assistant responds, you'll see both AI-generated follow-up questions
|
|
114
114
|
* and feedback buttons (like/dislike) to mark the conversation as resolved.
|
|
115
115
|
*/
|
|
116
|
-
export const WithFollowUpSuggestions: Story = () => <Chat
|
|
116
|
+
export const WithFollowUpSuggestions: Story = () => <Chat />;
|
|
117
117
|
WithFollowUpSuggestions.parameters = {
|
|
118
118
|
elements: {
|
|
119
119
|
config: {
|
|
120
|
-
variant:
|
|
120
|
+
variant: "widget",
|
|
121
121
|
modal: { defaultOpen: true },
|
|
122
122
|
systemPrompt:
|
|
123
|
-
|
|
123
|
+
"You are a helpful customer support assistant. Keep ALL responses extremely brief - 1-2 sentences only. No lists, no elaboration.",
|
|
124
124
|
thread: {
|
|
125
125
|
showFeedback: true,
|
|
126
126
|
followUpSuggestions: true,
|
|
127
127
|
},
|
|
128
128
|
welcome: {
|
|
129
|
-
title:
|
|
130
|
-
subtitle:
|
|
129
|
+
title: "Support Chat",
|
|
130
|
+
subtitle: "How can we help you today?",
|
|
131
131
|
suggestions: [
|
|
132
132
|
{
|
|
133
|
-
title:
|
|
134
|
-
label:
|
|
135
|
-
prompt:
|
|
133
|
+
title: "Order status",
|
|
134
|
+
label: "Where is my package?",
|
|
135
|
+
prompt: "Where is my package?",
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
|
-
title:
|
|
139
|
-
label:
|
|
140
|
-
prompt:
|
|
138
|
+
title: "Returns",
|
|
139
|
+
label: "How do I return an item?",
|
|
140
|
+
prompt: "How do I return an item?",
|
|
141
141
|
},
|
|
142
142
|
],
|
|
143
143
|
},
|
|
144
144
|
},
|
|
145
145
|
},
|
|
146
|
-
}
|
|
146
|
+
};
|
|
147
147
|
|
|
148
148
|
/**
|
|
149
149
|
* Standalone component demo showing the feedback buttons in isolation.
|
|
150
150
|
*/
|
|
151
151
|
export const ComponentOnly: StoryFn = () => (
|
|
152
152
|
<LazyMotion features={domAnimation}>
|
|
153
|
-
<div className="
|
|
153
|
+
<div className="flex min-h-screen items-center justify-center bg-background p-10">
|
|
154
154
|
<div className="flex flex-col items-center gap-8">
|
|
155
|
-
<h2 className="text-
|
|
155
|
+
<h2 className="text-lg font-semibold text-foreground">
|
|
156
156
|
Message Feedback Buttons
|
|
157
157
|
</h2>
|
|
158
158
|
<MessageFeedback
|
|
159
159
|
onFeedback={(type) => {
|
|
160
|
-
console.log(
|
|
160
|
+
console.log("Feedback:", type);
|
|
161
161
|
}}
|
|
162
162
|
/>
|
|
163
163
|
</div>
|
|
164
164
|
</div>
|
|
165
165
|
</LazyMotion>
|
|
166
|
-
)
|
|
166
|
+
);
|
|
167
167
|
ComponentOnly.parameters = {
|
|
168
|
-
layout:
|
|
169
|
-
}
|
|
168
|
+
layout: "fullscreen",
|
|
169
|
+
};
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { Chat } from
|
|
3
|
-
import type { Meta, StoryFn } from
|
|
4
|
-
import { ZapIcon } from
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Chat } from "..";
|
|
3
|
+
import type { Meta, StoryFn } from "@storybook/react-vite";
|
|
4
|
+
import { ZapIcon } from "lucide-react";
|
|
5
5
|
|
|
6
6
|
const meta: Meta<typeof Chat> = {
|
|
7
|
-
title:
|
|
7
|
+
title: "Chat/Modal",
|
|
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 CustomIcon: Story = () => <Chat
|
|
18
|
+
export const CustomIcon: Story = () => <Chat />;
|
|
19
19
|
CustomIcon.parameters = {
|
|
20
20
|
elements: {
|
|
21
21
|
config: {
|
|
22
22
|
modal: {
|
|
23
23
|
defaultOpen: false,
|
|
24
|
-
icon: (state:
|
|
24
|
+
icon: (state: "open" | "closed" | undefined) => (
|
|
25
25
|
<ZapIcon
|
|
26
26
|
data-state={state}
|
|
27
27
|
className="aui-modal-button-closed-icon absolute transition-all data-[state=closed]:scale-100 data-[state=closed]:rotate-0 data-[state=open]:scale-0 data-[state=open]:rotate-90"
|
|
@@ -30,55 +30,55 @@ CustomIcon.parameters = {
|
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
32
|
},
|
|
33
|
-
}
|
|
33
|
+
};
|
|
34
34
|
|
|
35
|
-
export const Expandable: Story = () => <Chat
|
|
35
|
+
export const Expandable: Story = () => <Chat />;
|
|
36
36
|
Expandable.parameters = {
|
|
37
37
|
elements: {
|
|
38
38
|
config: {
|
|
39
39
|
modal: {
|
|
40
40
|
expandable: true,
|
|
41
41
|
dimensions: {
|
|
42
|
-
default: { width:
|
|
43
|
-
expanded: { width:
|
|
42
|
+
default: { width: "500px", height: "600px", maxHeight: "100vh" },
|
|
43
|
+
expanded: { width: "80vw", height: "90vh" },
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
46
|
},
|
|
47
47
|
},
|
|
48
|
-
}
|
|
48
|
+
};
|
|
49
49
|
|
|
50
|
-
export const PositionTopRight: Story = () => <Chat
|
|
50
|
+
export const PositionTopRight: Story = () => <Chat />;
|
|
51
51
|
PositionTopRight.parameters = {
|
|
52
52
|
elements: {
|
|
53
53
|
config: {
|
|
54
|
-
modal: { position:
|
|
54
|
+
modal: { position: "top-right" },
|
|
55
55
|
},
|
|
56
56
|
},
|
|
57
|
-
}
|
|
57
|
+
};
|
|
58
58
|
|
|
59
|
-
export const PositionBottomRight: Story = () => <Chat
|
|
59
|
+
export const PositionBottomRight: Story = () => <Chat />;
|
|
60
60
|
PositionBottomRight.parameters = {
|
|
61
61
|
elements: {
|
|
62
62
|
config: {
|
|
63
|
-
modal: { position:
|
|
63
|
+
modal: { position: "bottom-right" },
|
|
64
64
|
},
|
|
65
65
|
},
|
|
66
|
-
}
|
|
66
|
+
};
|
|
67
67
|
|
|
68
|
-
export const PositionBottomLeft: Story = () => <Chat
|
|
68
|
+
export const PositionBottomLeft: Story = () => <Chat />;
|
|
69
69
|
PositionBottomLeft.parameters = {
|
|
70
70
|
elements: {
|
|
71
71
|
config: {
|
|
72
|
-
modal: { position:
|
|
72
|
+
modal: { position: "bottom-left" },
|
|
73
73
|
},
|
|
74
74
|
},
|
|
75
|
-
}
|
|
75
|
+
};
|
|
76
76
|
|
|
77
|
-
export const PositionTopLeft: Story = () => <Chat
|
|
77
|
+
export const PositionTopLeft: Story = () => <Chat />;
|
|
78
78
|
PositionTopLeft.parameters = {
|
|
79
79
|
elements: {
|
|
80
80
|
config: {
|
|
81
|
-
modal: { position:
|
|
81
|
+
modal: { position: "top-left" },
|
|
82
82
|
},
|
|
83
83
|
},
|
|
84
|
-
}
|
|
84
|
+
};
|
|
@@ -1,25 +1,25 @@
|
|
|
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/Model",
|
|
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 ModelPicker: Story = () => <Chat
|
|
17
|
+
export const ModelPicker: Story = () => <Chat />;
|
|
18
18
|
ModelPicker.parameters = {
|
|
19
19
|
elements: {
|
|
20
20
|
config: {
|
|
21
|
-
variant:
|
|
21
|
+
variant: "standalone",
|
|
22
22
|
model: { showModelPicker: true },
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
|
-
}
|
|
25
|
+
};
|
|
@@ -1,45 +1,45 @@
|
|
|
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/Radius",
|
|
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 Round: Story = () => <Chat
|
|
17
|
+
export const Round: Story = () => <Chat />;
|
|
18
18
|
Round.parameters = {
|
|
19
19
|
elements: {
|
|
20
20
|
config: {
|
|
21
|
-
variant:
|
|
22
|
-
theme: { radius:
|
|
21
|
+
variant: "standalone",
|
|
22
|
+
theme: { radius: "round" },
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
|
-
}
|
|
25
|
+
};
|
|
26
26
|
|
|
27
|
-
export const Soft: Story = () => <Chat
|
|
27
|
+
export const Soft: Story = () => <Chat />;
|
|
28
28
|
Soft.parameters = {
|
|
29
29
|
elements: {
|
|
30
30
|
config: {
|
|
31
|
-
variant:
|
|
32
|
-
theme: { radius:
|
|
31
|
+
variant: "standalone",
|
|
32
|
+
theme: { radius: "soft" },
|
|
33
33
|
},
|
|
34
34
|
},
|
|
35
|
-
}
|
|
35
|
+
};
|
|
36
36
|
|
|
37
|
-
export const Sharp: Story = () => <Chat
|
|
37
|
+
export const Sharp: Story = () => <Chat />;
|
|
38
38
|
Sharp.parameters = {
|
|
39
39
|
elements: {
|
|
40
40
|
config: {
|
|
41
|
-
variant:
|
|
42
|
-
theme: { radius:
|
|
41
|
+
variant: "standalone",
|
|
42
|
+
theme: { radius: "sharp" },
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
|
-
}
|
|
45
|
+
};
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { Chat } from
|
|
2
|
-
import type { Meta, StoryFn } from
|
|
1
|
+
import { Chat } from "..";
|
|
2
|
+
import type { Meta, StoryFn } from "@storybook/react-vite";
|
|
3
3
|
|
|
4
4
|
const meta: Meta<typeof Chat> = {
|
|
5
|
-
title:
|
|
5
|
+
title: "Chat/Sidecar",
|
|
6
6
|
component: Chat,
|
|
7
|
-
} satisfies Meta<typeof Chat
|
|
7
|
+
} satisfies Meta<typeof Chat>;
|
|
8
8
|
|
|
9
|
-
export default meta
|
|
9
|
+
export default meta;
|
|
10
10
|
|
|
11
11
|
export const Sidecar: StoryFn<typeof Chat> = () => {
|
|
12
|
-
return <Chat
|
|
13
|
-
}
|
|
12
|
+
return <Chat />;
|
|
13
|
+
};
|
|
14
14
|
|
|
15
15
|
Sidecar.parameters = {
|
|
16
|
-
elements: { config: { variant:
|
|
17
|
-
}
|
|
16
|
+
elements: { config: { variant: "sidecar" } },
|
|
17
|
+
};
|
|
18
18
|
|
|
19
19
|
export const SidecarWithTitle: StoryFn<typeof Chat> = () => {
|
|
20
|
-
return <Chat
|
|
21
|
-
}
|
|
20
|
+
return <Chat />;
|
|
21
|
+
};
|
|
22
22
|
|
|
23
23
|
SidecarWithTitle.parameters = {
|
|
24
24
|
elements: {
|
|
25
|
-
config: { variant:
|
|
25
|
+
config: { variant: "sidecar", sidecar: { title: "Chat with me" } },
|
|
26
26
|
},
|
|
27
|
-
}
|
|
27
|
+
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { Chat } from
|
|
2
|
-
import type { Meta, StoryFn } from
|
|
1
|
+
import { Chat } from "..";
|
|
2
|
+
import type { Meta, StoryFn } from "@storybook/react-vite";
|
|
3
3
|
|
|
4
4
|
const meta: Meta<typeof Chat> = {
|
|
5
|
-
title:
|
|
5
|
+
title: "Chat/Style Isolation",
|
|
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
|
export const Default: Story = () => (
|
|
17
17
|
<div>
|
|
@@ -28,14 +28,14 @@ export const Default: Story = () => (
|
|
|
28
28
|
</style>
|
|
29
29
|
<Chat />
|
|
30
30
|
</div>
|
|
31
|
-
)
|
|
31
|
+
);
|
|
32
32
|
Default.parameters = {
|
|
33
33
|
elements: {
|
|
34
34
|
config: {
|
|
35
35
|
welcome: {
|
|
36
|
-
title:
|
|
37
|
-
subtitle:
|
|
36
|
+
title: "Style isolation via Shadow DOM",
|
|
37
|
+
subtitle: "Demo of style isolation via Shadow DOM",
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
40
|
},
|
|
41
|
-
}
|
|
41
|
+
};
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
import { Chat } from
|
|
2
|
-
import type { Meta, StoryFn } from
|
|
1
|
+
import { Chat } from "..";
|
|
2
|
+
import type { Meta, StoryFn } from "@storybook/react-vite";
|
|
3
3
|
|
|
4
4
|
const meta: Meta<typeof Chat> = {
|
|
5
|
-
title:
|
|
5
|
+
title: "Chat/Theme",
|
|
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
|
const StoryWrapper = ({ children }: { children: React.ReactNode }) => (
|
|
17
17
|
<div className="m-auto flex h-screen w-full max-w-3xl flex-col">
|
|
18
18
|
{children}
|
|
19
19
|
</div>
|
|
20
|
-
)
|
|
20
|
+
);
|
|
21
21
|
|
|
22
22
|
export const Light: Story = () => (
|
|
23
23
|
<StoryWrapper>
|
|
24
24
|
<Chat />
|
|
25
25
|
</StoryWrapper>
|
|
26
|
-
)
|
|
26
|
+
);
|
|
27
27
|
Light.parameters = {
|
|
28
28
|
elements: {
|
|
29
29
|
config: {
|
|
30
|
-
variant:
|
|
31
|
-
theme: { colorScheme:
|
|
30
|
+
variant: "standalone",
|
|
31
|
+
theme: { colorScheme: "light" },
|
|
32
32
|
},
|
|
33
33
|
},
|
|
34
34
|
// Disable Chromatic's automatic dark mode snapshot for this story
|
|
35
|
-
chromatic: { modes: {
|
|
36
|
-
}
|
|
35
|
+
chromatic: { modes: { "light desktop": { theme: "light" } } },
|
|
36
|
+
};
|
|
37
37
|
|
|
38
38
|
export const Dark: Story = () => (
|
|
39
39
|
<StoryWrapper>
|
|
40
40
|
<Chat />
|
|
41
41
|
</StoryWrapper>
|
|
42
|
-
)
|
|
42
|
+
);
|
|
43
43
|
Dark.parameters = {
|
|
44
44
|
elements: {
|
|
45
45
|
config: {
|
|
46
|
-
variant:
|
|
47
|
-
theme: { colorScheme:
|
|
46
|
+
variant: "standalone",
|
|
47
|
+
theme: { colorScheme: "dark" },
|
|
48
48
|
},
|
|
49
49
|
},
|
|
50
|
-
backgrounds: { default:
|
|
50
|
+
backgrounds: { default: "dark" },
|
|
51
51
|
// Only capture dark mode for this story
|
|
52
|
-
chromatic: { modes: {
|
|
53
|
-
}
|
|
52
|
+
chromatic: { modes: { "dark desktop": { theme: "dark" } } },
|
|
53
|
+
};
|
|
54
54
|
|
|
55
55
|
export const System: Story = () => (
|
|
56
56
|
<StoryWrapper>
|
|
57
57
|
<Chat />
|
|
58
58
|
</StoryWrapper>
|
|
59
|
-
)
|
|
59
|
+
);
|
|
60
60
|
System.parameters = {
|
|
61
61
|
elements: {
|
|
62
62
|
config: {
|
|
63
|
-
variant:
|
|
64
|
-
theme: { colorScheme:
|
|
63
|
+
variant: "standalone",
|
|
64
|
+
theme: { colorScheme: "system" },
|
|
65
65
|
},
|
|
66
66
|
},
|
|
67
67
|
// System will follow browser preference, test both modes
|
|
68
68
|
chromatic: {
|
|
69
69
|
modes: {
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
"light desktop": { theme: "light" },
|
|
71
|
+
"dark desktop": { theme: "dark" },
|
|
72
72
|
},
|
|
73
73
|
},
|
|
74
|
-
}
|
|
74
|
+
};
|