@gram-ai/elements 1.27.3 → 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.
Files changed (278) hide show
  1. package/README.md +72 -60
  2. package/README.typedoc.md +6 -6
  3. package/bin/cli.js +74 -74
  4. package/dist/compat-shims-CO9JXXV4.cjs.map +1 -1
  5. package/dist/{compat-shims-BPJ7Q68c.js → compat-shims-DxtUrORi.js} +4 -2
  6. package/dist/compat-shims-DxtUrORi.js.map +1 -0
  7. package/dist/components/ShareButton/index.d.ts +2 -2
  8. package/dist/components/assistant-ui/message-feedback.d.ts +1 -1
  9. package/dist/components/assistant-ui/tooltip-icon-button.d.ts +2 -2
  10. package/dist/components/ui/avatar.d.ts +2 -2
  11. package/dist/components/ui/button.d.ts +1 -1
  12. package/dist/components/ui/calendar.d.ts +1 -1
  13. package/dist/components/ui/collapsible.d.ts +1 -1
  14. package/dist/components/ui/dialog.d.ts +4 -4
  15. package/dist/components/ui/popover.d.ts +2 -2
  16. package/dist/components/ui/skeleton.d.ts +1 -1
  17. package/dist/components/ui/time-range-picker.d.ts +4 -2
  18. package/dist/components/ui/tool-ui.d.ts +7 -7
  19. package/dist/components/ui/tooltip.d.ts +2 -2
  20. package/dist/contexts/ConnectionStatusContext.d.ts +1 -1
  21. package/dist/elements.cjs +1 -1
  22. package/dist/elements.css +1 -1
  23. package/dist/elements.js +2 -2
  24. package/dist/hooks/useDensity.d.ts +73 -73
  25. package/dist/hooks/useMCPTools.d.ts +1 -1
  26. package/dist/hooks/useRadius.d.ts +1 -1
  27. package/dist/{index-BpJstUh1.cjs → index-C4bFBGfl.cjs} +4 -4
  28. package/dist/{index-BpJstUh1.cjs.map → index-C4bFBGfl.cjs.map} +1 -1
  29. package/dist/{index-CUitXazZ.js → index-D93pV0_o.js} +55 -55
  30. package/dist/{index-CUitXazZ.js.map → index-D93pV0_o.js.map} +1 -1
  31. package/dist/{index-DBrhzauj.js → index-DuCQRbcQ.js} +6386 -6337
  32. package/dist/index-DuCQRbcQ.js.map +1 -0
  33. package/dist/{index-DxfW52oA.cjs → index-y_PNN5vK.cjs} +64 -46
  34. package/dist/index-y_PNN5vK.cjs.map +1 -0
  35. package/dist/lib/cassette.d.ts +4 -4
  36. package/dist/lib/errorTracking.d.ts +1 -1
  37. package/dist/lib/messageConverter.d.ts +1 -1
  38. package/dist/lib/models.d.ts +1 -1
  39. package/dist/plugins/chart/ui/bar-chart.d.ts +1 -1
  40. package/dist/plugins/generative-ui/ui/accordion-wrapper.d.ts +2 -2
  41. package/dist/plugins/generative-ui/ui/accordion.d.ts +1 -1
  42. package/dist/plugins/generative-ui/ui/action-button.d.ts +2 -2
  43. package/dist/plugins/generative-ui/ui/alert-wrapper.d.ts +1 -1
  44. package/dist/plugins/generative-ui/ui/alert.d.ts +4 -4
  45. package/dist/plugins/generative-ui/ui/avatar.d.ts +5 -5
  46. package/dist/plugins/generative-ui/ui/badge.d.ts +2 -2
  47. package/dist/plugins/generative-ui/ui/button-wrapper.d.ts +2 -2
  48. package/dist/plugins/generative-ui/ui/button.d.ts +2 -2
  49. package/dist/plugins/generative-ui/ui/card-wrapper.d.ts +2 -2
  50. package/dist/plugins/generative-ui/ui/card.d.ts +8 -8
  51. package/dist/plugins/generative-ui/ui/checkbox.d.ts +1 -1
  52. package/dist/plugins/generative-ui/ui/data-table.d.ts +2 -2
  53. package/dist/plugins/generative-ui/ui/dialog.d.ts +3 -3
  54. package/dist/plugins/generative-ui/ui/dropdown-menu.d.ts +3 -3
  55. package/dist/plugins/generative-ui/ui/grid.d.ts +3 -3
  56. package/dist/plugins/generative-ui/ui/input-wrapper.d.ts +1 -1
  57. package/dist/plugins/generative-ui/ui/input.d.ts +2 -2
  58. package/dist/plugins/generative-ui/ui/label.d.ts +1 -1
  59. package/dist/plugins/generative-ui/ui/metric.d.ts +3 -3
  60. package/dist/plugins/generative-ui/ui/pagination.d.ts +6 -6
  61. package/dist/plugins/generative-ui/ui/popover.d.ts +4 -4
  62. package/dist/plugins/generative-ui/ui/progress.d.ts +2 -2
  63. package/dist/plugins/generative-ui/ui/radio-group.d.ts +1 -1
  64. package/dist/plugins/generative-ui/ui/select.d.ts +2 -2
  65. package/dist/plugins/generative-ui/ui/separator.d.ts +1 -1
  66. package/dist/plugins/generative-ui/ui/skeleton.d.ts +1 -1
  67. package/dist/plugins/generative-ui/ui/stack.d.ts +6 -6
  68. package/dist/plugins/generative-ui/ui/switch.d.ts +2 -2
  69. package/dist/plugins/generative-ui/ui/table.d.ts +9 -9
  70. package/dist/plugins/generative-ui/ui/tabs-wrapper.d.ts +1 -1
  71. package/dist/plugins/generative-ui/ui/tabs.d.ts +1 -1
  72. package/dist/plugins/generative-ui/ui/text.d.ts +3 -3
  73. package/dist/plugins/generative-ui/ui/textarea.d.ts +2 -2
  74. package/dist/plugins/generative-ui/ui/tooltip.d.ts +1 -1
  75. package/dist/plugins.cjs +1 -1
  76. package/dist/plugins.js +1 -1
  77. package/dist/{profiler-D6ndqfsd.js → profiler-FpBY9eRv.js} +2 -2
  78. package/dist/{profiler-D6ndqfsd.js.map → profiler-FpBY9eRv.js.map} +1 -1
  79. package/dist/{profiler-DhnzZ34c.cjs → profiler-_mthyjvo.cjs} +2 -2
  80. package/dist/{profiler-DhnzZ34c.cjs.map → profiler-_mthyjvo.cjs.map} +1 -1
  81. package/dist/react-shim.js +1 -1
  82. package/dist/server/express.cjs.map +1 -1
  83. package/dist/server/express.js.map +1 -1
  84. package/dist/{startRecording-BwXmdmy1.cjs → startRecording-NJcpiHw-.cjs} +2 -2
  85. package/dist/{startRecording-BwXmdmy1.cjs.map → startRecording-NJcpiHw-.cjs.map} +1 -1
  86. package/dist/{startRecording-B_9CRZ_P.js → startRecording-r5MXQ2Dm.js} +2 -2
  87. package/dist/{startRecording-B_9CRZ_P.js.map → startRecording-r5MXQ2Dm.js.map} +1 -1
  88. package/dist/types/index.d.ts +2 -2
  89. package/package.json +1 -5
  90. package/src/compat-plugin.ts +14 -14
  91. package/src/compat-shims.ts +33 -31
  92. package/src/compat.test.ts +48 -48
  93. package/src/compat.ts +6 -6
  94. package/src/components/Chat/index.tsx +17 -17
  95. package/src/components/Chat/stories/Charts.stories.tsx +98 -98
  96. package/src/components/Chat/stories/Composer.stories.tsx +15 -15
  97. package/src/components/Chat/stories/ConnectionConfiguration.stories.tsx +44 -44
  98. package/src/components/Chat/stories/CustomComponents.stories.tsx +17 -17
  99. package/src/components/Chat/stories/Density.stories.tsx +20 -20
  100. package/src/components/Chat/stories/ErrorBoundary.stories.tsx +47 -47
  101. package/src/components/Chat/stories/FrontendTools.stories.tsx +39 -39
  102. package/src/components/Chat/stories/GenerativeUI.stories.tsx +48 -48
  103. package/src/components/Chat/stories/MessageFeedback.stories.tsx +52 -52
  104. package/src/components/Chat/stories/Modal.stories.tsx +28 -28
  105. package/src/components/Chat/stories/Model.stories.tsx +11 -11
  106. package/src/components/Chat/stories/Radius.stories.tsx +20 -20
  107. package/src/components/Chat/stories/Sidecar.stories.tsx +13 -13
  108. package/src/components/Chat/stories/StyleIsolation.stories.tsx +11 -11
  109. package/src/components/Chat/stories/Theme.stories.tsx +25 -25
  110. package/src/components/Chat/stories/Thread.stories.tsx +25 -25
  111. package/src/components/Chat/stories/ToolApproval.stories.tsx +55 -55
  112. package/src/components/Chat/stories/ToolMentions.stories.tsx +17 -17
  113. package/src/components/Chat/stories/Tools.stories.tsx +88 -88
  114. package/src/components/Chat/stories/Variants.stories.tsx +32 -32
  115. package/src/components/Chat/stories/Welcome.stories.tsx +14 -14
  116. package/src/components/ChatHistory.tsx +7 -7
  117. package/src/components/FrontendTools/index.tsx +5 -5
  118. package/src/components/Replay.stories.tsx +157 -157
  119. package/src/components/Replay.tsx +76 -73
  120. package/src/components/ShadowRoot.tsx +40 -40
  121. package/src/components/ShareButton/index.tsx +32 -32
  122. package/src/components/assistant-ui/assistant-modal.tsx +92 -87
  123. package/src/components/assistant-ui/assistant-sidecar.tsx +35 -35
  124. package/src/components/assistant-ui/attachment.tsx +80 -80
  125. package/src/components/assistant-ui/connection-status-indicator.tsx +33 -33
  126. package/src/components/assistant-ui/error-boundary.tsx +34 -34
  127. package/src/components/assistant-ui/follow-on-suggestions.tsx +26 -26
  128. package/src/components/assistant-ui/markdown-text.tsx +69 -69
  129. package/src/components/assistant-ui/mentioned-tools-badges.tsx +38 -38
  130. package/src/components/assistant-ui/message-feedback.tsx +74 -61
  131. package/src/components/assistant-ui/reasoning.tsx +83 -83
  132. package/src/components/assistant-ui/thread-list.tsx +45 -45
  133. package/src/components/assistant-ui/thread.tsx +278 -278
  134. package/src/components/assistant-ui/tool-fallback.tsx +37 -37
  135. package/src/components/assistant-ui/tool-group.tsx +26 -26
  136. package/src/components/assistant-ui/tool-mention-autocomplete.tsx +122 -122
  137. package/src/components/assistant-ui/tooltip-icon-button.tsx +18 -18
  138. package/src/components/ui/avatar.tsx +12 -12
  139. package/src/components/ui/button.tsx +12 -12
  140. package/src/components/ui/buttonVariants.ts +17 -17
  141. package/src/components/ui/calendar.tsx +106 -106
  142. package/src/components/ui/charts.stories.tsx +56 -56
  143. package/src/components/ui/collapsible.tsx +5 -5
  144. package/src/components/ui/dialog.tsx +30 -30
  145. package/src/components/ui/generative-ui.stories.tsx +200 -200
  146. package/src/components/ui/generative-ui.tsx +26 -26
  147. package/src/components/ui/popover.tsx +14 -14
  148. package/src/components/ui/skeleton.tsx +5 -5
  149. package/src/components/ui/time-range-picker.stories.tsx +80 -80
  150. package/src/components/ui/time-range-picker.tsx +272 -235
  151. package/src/components/ui/tool-ui.stories.tsx +37 -37
  152. package/src/components/ui/tool-ui.tsx +221 -215
  153. package/src/components/ui/tooltip.tsx +15 -15
  154. package/src/constants/tailwind.ts +1 -1
  155. package/src/contexts/ChatIdContext.tsx +7 -7
  156. package/src/contexts/ConnectionStatusContext.tsx +64 -64
  157. package/src/contexts/ElementsProvider.tsx +222 -211
  158. package/src/contexts/ReplayContext.ts +3 -3
  159. package/src/contexts/ToolApprovalContext.tsx +54 -54
  160. package/src/contexts/ToolExecutionContext.tsx +34 -34
  161. package/src/contexts/contexts.ts +7 -7
  162. package/src/contexts/portal-container-context.ts +2 -2
  163. package/src/contexts/portal-container.tsx +7 -7
  164. package/src/embedded.ts +1 -1
  165. package/src/global.css +25 -25
  166. package/src/hooks/useAuth.ts +72 -72
  167. package/src/hooks/useDensity.ts +79 -79
  168. package/src/hooks/useElements.ts +6 -6
  169. package/src/hooks/useExpanded.ts +12 -12
  170. package/src/hooks/useFollowOnSuggestions.ts +87 -82
  171. package/src/hooks/useGramThreadListAdapter.tsx +99 -99
  172. package/src/hooks/useMCPTools.ts +47 -47
  173. package/src/hooks/useModel.ts +14 -14
  174. package/src/hooks/usePluginComponents.ts +11 -11
  175. package/src/hooks/usePortalContainer.ts +5 -5
  176. package/src/hooks/useRadius.ts +23 -23
  177. package/src/hooks/useRecordCassette.ts +34 -34
  178. package/src/hooks/useSession.ts +11 -11
  179. package/src/hooks/useThemeProps.ts +13 -13
  180. package/src/hooks/useThreadId.ts +4 -4
  181. package/src/hooks/useToolApproval.ts +7 -7
  182. package/src/hooks/useToolMentions.ts +40 -40
  183. package/src/index.ts +26 -26
  184. package/src/lib/api.test.ts +61 -61
  185. package/src/lib/api.ts +4 -3
  186. package/src/lib/auth.ts +13 -13
  187. package/src/lib/cassette.ts +84 -84
  188. package/src/lib/easing.ts +1 -1
  189. package/src/lib/errorTracking.config.ts +5 -5
  190. package/src/lib/errorTracking.ts +29 -29
  191. package/src/lib/generative-ui.ts +7 -7
  192. package/src/lib/humanize.ts +3 -3
  193. package/src/lib/messageConverter.test.ts +130 -127
  194. package/src/lib/messageConverter.ts +196 -196
  195. package/src/lib/models.ts +21 -20
  196. package/src/lib/token.test.ts +56 -56
  197. package/src/lib/token.ts +14 -14
  198. package/src/lib/tool-mentions.ts +45 -45
  199. package/src/lib/tools.ts +66 -62
  200. package/src/lib/utils.ts +5 -5
  201. package/src/lib.d.ts +1 -1
  202. package/src/plugins/README.md +5 -5
  203. package/src/plugins/chart/catalog.ts +18 -18
  204. package/src/plugins/chart/chart.test.ts +31 -31
  205. package/src/plugins/chart/component.tsx +34 -34
  206. package/src/plugins/chart/index.ts +4 -4
  207. package/src/plugins/chart/ui/area-chart.tsx +42 -42
  208. package/src/plugins/chart/ui/bar-chart.tsx +46 -46
  209. package/src/plugins/chart/ui/donut-chart.tsx +48 -48
  210. package/src/plugins/chart/ui/index.ts +7 -7
  211. package/src/plugins/chart/ui/line-chart.tsx +43 -43
  212. package/src/plugins/chart/ui/pie-chart.tsx +44 -44
  213. package/src/plugins/chart/ui/radar-chart.tsx +33 -33
  214. package/src/plugins/chart/ui/scatter-chart.tsx +43 -43
  215. package/src/plugins/components/MacOSWindowFrame.tsx +15 -15
  216. package/src/plugins/components/PluginLoadingState.tsx +10 -10
  217. package/src/plugins/components/index.ts +1 -1
  218. package/src/plugins/generative-ui/catalog.ts +54 -54
  219. package/src/plugins/generative-ui/component.tsx +85 -85
  220. package/src/plugins/generative-ui/index.ts +4 -4
  221. package/src/plugins/generative-ui/ui/accordion-wrapper.tsx +16 -16
  222. package/src/plugins/generative-ui/ui/accordion.tsx +16 -16
  223. package/src/plugins/generative-ui/ui/action-button.tsx +28 -28
  224. package/src/plugins/generative-ui/ui/alert-wrapper.tsx +8 -8
  225. package/src/plugins/generative-ui/ui/alert.tsx +20 -20
  226. package/src/plugins/generative-ui/ui/avatar-wrapper.tsx +7 -7
  227. package/src/plugins/generative-ui/ui/avatar.tsx +30 -30
  228. package/src/plugins/generative-ui/ui/badge.tsx +22 -22
  229. package/src/plugins/generative-ui/ui/button-wrapper.tsx +12 -12
  230. package/src/plugins/generative-ui/ui/button.tsx +28 -28
  231. package/src/plugins/generative-ui/ui/card-wrapper.tsx +8 -8
  232. package/src/plugins/generative-ui/ui/card.tsx +27 -27
  233. package/src/plugins/generative-ui/ui/checkbox-wrapper.tsx +9 -9
  234. package/src/plugins/generative-ui/ui/checkbox.tsx +9 -9
  235. package/src/plugins/generative-ui/ui/data-table.tsx +8 -8
  236. package/src/plugins/generative-ui/ui/dialog.tsx +31 -31
  237. package/src/plugins/generative-ui/ui/dropdown-menu.tsx +44 -44
  238. package/src/plugins/generative-ui/ui/grid.tsx +12 -12
  239. package/src/plugins/generative-ui/ui/index.ts +40 -40
  240. package/src/plugins/generative-ui/ui/input-wrapper.tsx +11 -11
  241. package/src/plugins/generative-ui/ui/input.tsx +9 -9
  242. package/src/plugins/generative-ui/ui/label.tsx +8 -8
  243. package/src/plugins/generative-ui/ui/list.tsx +11 -11
  244. package/src/plugins/generative-ui/ui/metric.tsx +23 -23
  245. package/src/plugins/generative-ui/ui/pagination.tsx +28 -28
  246. package/src/plugins/generative-ui/ui/popover.tsx +21 -21
  247. package/src/plugins/generative-ui/ui/progress.tsx +13 -13
  248. package/src/plugins/generative-ui/ui/radio-group.tsx +12 -12
  249. package/src/plugins/generative-ui/ui/select-wrapper.tsx +7 -7
  250. package/src/plugins/generative-ui/ui/select.tsx +37 -37
  251. package/src/plugins/generative-ui/ui/separator.tsx +9 -9
  252. package/src/plugins/generative-ui/ui/skeleton-wrapper.tsx +10 -10
  253. package/src/plugins/generative-ui/ui/skeleton.tsx +5 -5
  254. package/src/plugins/generative-ui/ui/stack.tsx +28 -28
  255. package/src/plugins/generative-ui/ui/switch.tsx +11 -11
  256. package/src/plugins/generative-ui/ui/table.tsx +32 -32
  257. package/src/plugins/generative-ui/ui/tabs-wrapper.tsx +11 -11
  258. package/src/plugins/generative-ui/ui/tabs.tsx +26 -26
  259. package/src/plugins/generative-ui/ui/text.tsx +12 -12
  260. package/src/plugins/generative-ui/ui/textarea.tsx +7 -7
  261. package/src/plugins/generative-ui/ui/tooltip.tsx +12 -12
  262. package/src/plugins/index.ts +7 -7
  263. package/src/react-shim.ts +6 -6
  264. package/src/server/bun.ts +12 -12
  265. package/src/server/core.ts +25 -25
  266. package/src/server/express.ts +17 -15
  267. package/src/server/fastify.ts +14 -14
  268. package/src/server/hono.ts +9 -9
  269. package/src/server/nextjs.ts +12 -12
  270. package/src/server/tanstack-start.ts +12 -12
  271. package/src/server.ts +27 -27
  272. package/src/storybook.d.ts +4 -4
  273. package/src/types/index.ts +122 -122
  274. package/src/types/plugins.ts +7 -7
  275. package/src/vite-env.d.ts +12 -12
  276. package/dist/compat-shims-BPJ7Q68c.js.map +0 -1
  277. package/dist/index-DBrhzauj.js.map +0 -1
  278. package/dist/index-DxfW52oA.cjs.map +0 -1
@@ -1,80 +1,80 @@
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 '..'
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: 'Chat/Message Feedback',
7
+ title: "Chat/Message Feedback",
8
8
  component: Chat,
9
9
  parameters: {
10
- layout: 'fullscreen',
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: 'standalone',
26
+ variant: "standalone",
27
27
  thread: {
28
28
  showFeedback: true,
29
29
  },
30
30
  welcome: {
31
- title: 'Message Feedback Demo',
32
- subtitle: 'Send a message to see the feedback buttons',
31
+ title: "Message Feedback Demo",
32
+ subtitle: "Send a message to see the feedback buttons",
33
33
  suggestions: [
34
34
  {
35
- title: 'Say hello',
36
- label: 'A simple greeting',
37
- prompt: 'Hello!',
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: 'widget',
59
+ variant: "widget",
60
60
  modal: { defaultOpen: true },
61
61
  thread: {
62
62
  showFeedback: true,
63
63
  },
64
64
  welcome: {
65
- title: 'Message Feedback Demo',
66
- subtitle: 'Send a message to see the feedback buttons',
65
+ title: "Message Feedback Demo",
66
+ subtitle: "Send a message to see the feedback buttons",
67
67
  suggestions: [
68
68
  {
69
- title: 'Say hello',
70
- label: 'A simple greeting',
71
- prompt: 'Hello!',
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: 'sidecar',
92
+ variant: "sidecar",
93
93
  thread: {
94
94
  showFeedback: true,
95
95
  },
96
96
  welcome: {
97
- title: 'Message Feedback Demo',
98
- subtitle: 'Send a message to see the feedback buttons',
97
+ title: "Message Feedback Demo",
98
+ subtitle: "Send a message to see the feedback buttons",
99
99
  suggestions: [
100
100
  {
101
- title: 'Say hello',
102
- label: 'A simple greeting',
103
- prompt: 'Hello!',
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: 'widget',
120
+ variant: "widget",
121
121
  modal: { defaultOpen: true },
122
122
  systemPrompt:
123
- 'You are a helpful customer support assistant. Keep ALL responses extremely brief - 1-2 sentences only. No lists, no elaboration.',
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: 'Support Chat',
130
- subtitle: 'How can we help you today?',
129
+ title: "Support Chat",
130
+ subtitle: "How can we help you today?",
131
131
  suggestions: [
132
132
  {
133
- title: 'Order status',
134
- label: 'Where is my package?',
135
- prompt: 'Where is my package?',
133
+ title: "Order status",
134
+ label: "Where is my package?",
135
+ prompt: "Where is my package?",
136
136
  },
137
137
  {
138
- title: 'Returns',
139
- label: 'How do I return an item?',
140
- prompt: 'How do I return an item?',
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="bg-background flex min-h-screen items-center justify-center p-10">
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-foreground text-lg font-semibold">
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('Feedback:', type)
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: 'fullscreen',
169
- }
168
+ layout: "fullscreen",
169
+ };
@@ -1,27 +1,27 @@
1
- import React from 'react'
2
- import { Chat } from '..'
3
- import type { Meta, StoryFn } from '@storybook/react-vite'
4
- import { ZapIcon } from 'lucide-react'
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: 'Chat/Modal',
7
+ title: "Chat/Modal",
8
8
  component: Chat,
9
9
  parameters: {
10
- layout: 'fullscreen',
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: 'open' | 'closed' | undefined) => (
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: '500px', height: '600px', maxHeight: '100vh' },
43
- expanded: { width: '80vw', height: '90vh' },
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: 'top-right' },
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: 'bottom-right' },
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: 'bottom-left' },
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: 'top-left' },
81
+ modal: { position: "top-left" },
82
82
  },
83
83
  },
84
- }
84
+ };
@@ -1,25 +1,25 @@
1
- import React from 'react'
2
- import { Chat } from '..'
3
- import type { Meta, StoryFn } from '@storybook/react-vite'
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: 'Chat/Model',
6
+ title: "Chat/Model",
7
7
  component: Chat,
8
8
  parameters: {
9
- layout: 'fullscreen',
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: 'standalone',
21
+ variant: "standalone",
22
22
  model: { showModelPicker: true },
23
23
  },
24
24
  },
25
- }
25
+ };
@@ -1,45 +1,45 @@
1
- import React from 'react'
2
- import { Chat } from '..'
3
- import type { Meta, StoryFn } from '@storybook/react-vite'
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: 'Chat/Radius',
6
+ title: "Chat/Radius",
7
7
  component: Chat,
8
8
  parameters: {
9
- layout: 'fullscreen',
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: 'standalone',
22
- theme: { radius: 'round' },
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: 'standalone',
32
- theme: { radius: 'soft' },
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: 'standalone',
42
- theme: { radius: 'sharp' },
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 '@storybook/react-vite'
1
+ import { Chat } from "..";
2
+ import type { Meta, StoryFn } from "@storybook/react-vite";
3
3
 
4
4
  const meta: Meta<typeof Chat> = {
5
- title: 'Chat/Sidecar',
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: 'sidecar' } },
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: 'sidecar', sidecar: { title: 'Chat with me' } },
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 '@storybook/react-vite'
1
+ import { Chat } from "..";
2
+ import type { Meta, StoryFn } from "@storybook/react-vite";
3
3
 
4
4
  const meta: Meta<typeof Chat> = {
5
- title: 'Chat/Style Isolation',
5
+ title: "Chat/Style Isolation",
6
6
  component: Chat,
7
7
  parameters: {
8
- layout: 'fullscreen',
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: 'Style isolation via Shadow DOM',
37
- subtitle: 'Demo of style isolation via Shadow DOM',
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 '@storybook/react-vite'
1
+ import { Chat } from "..";
2
+ import type { Meta, StoryFn } from "@storybook/react-vite";
3
3
 
4
4
  const meta: Meta<typeof Chat> = {
5
- title: 'Chat/Theme',
5
+ title: "Chat/Theme",
6
6
  component: Chat,
7
7
  parameters: {
8
- layout: 'fullscreen',
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: 'standalone',
31
- theme: { colorScheme: 'light' },
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: { 'light desktop': { theme: 'light' } } },
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: 'standalone',
47
- theme: { colorScheme: 'dark' },
46
+ variant: "standalone",
47
+ theme: { colorScheme: "dark" },
48
48
  },
49
49
  },
50
- backgrounds: { default: 'dark' },
50
+ backgrounds: { default: "dark" },
51
51
  // Only capture dark mode for this story
52
- chromatic: { modes: { 'dark desktop': { theme: 'dark' } } },
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: 'standalone',
64
- theme: { colorScheme: 'system' },
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
- 'light desktop': { theme: 'light' },
71
- 'dark desktop': { theme: 'dark' },
70
+ "light desktop": { theme: "light" },
71
+ "dark desktop": { theme: "dark" },
72
72
  },
73
73
  },
74
- }
74
+ };