@botpress/webchat 0.5.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/dist/App.d.ts +10 -0
  2. package/dist/Utils/colors.d.ts +18 -0
  3. package/dist/Utils/eventEmitter.d.ts +12 -0
  4. package/dist/Utils/index.d.ts +2 -0
  5. package/dist/client/MessagingClient.d.ts +27 -0
  6. package/dist/client/adapters/Audio.d.ts +19 -0
  7. package/dist/client/adapters/Card.d.ts +188 -0
  8. package/dist/client/adapters/Carousel.d.ts +147 -0
  9. package/dist/client/adapters/Choice.d.ts +45 -0
  10. package/dist/client/adapters/Dropdown.d.ts +46 -0
  11. package/dist/client/adapters/File.d.ts +19 -0
  12. package/dist/client/adapters/Image.d.ts +19 -0
  13. package/dist/client/adapters/Location.d.ts +27 -0
  14. package/dist/client/adapters/Message.d.ts +433 -0
  15. package/dist/client/adapters/Text.d.ts +20 -0
  16. package/dist/client/adapters/Utils.d.ts +5 -0
  17. package/dist/client/adapters/Video.d.ts +19 -0
  18. package/dist/client/adapters/Voice.d.ts +15 -0
  19. package/dist/client/adapters/index.d.ts +12 -0
  20. package/dist/client/index.d.ts +2 -0
  21. package/dist/components/Avatar.d.ts +6 -0
  22. package/dist/components/Block.d.ts +4 -0
  23. package/dist/components/Composer.d.ts +12 -14
  24. package/dist/components/Container.d.ts +2 -12
  25. package/dist/components/Header.d.ts +36 -26
  26. package/dist/components/LoadingIndicator.d.ts +2 -0
  27. package/dist/components/Message.d.ts +7 -0
  28. package/dist/components/MessageList.d.ts +2 -0
  29. package/dist/components/Modal.d.ts +17 -0
  30. package/dist/components/RestartConversation.d.ts +5 -0
  31. package/dist/components/Webchat.d.ts +6 -0
  32. package/dist/components/dev-tools/DevTools.d.ts +1 -0
  33. package/dist/components/dev-tools/configuration.d.ts +2 -0
  34. package/dist/components/dev-tools/helpers.d.ts +5 -0
  35. package/dist/components/index.d.ts +12 -0
  36. package/dist/components/renderers/Audio.d.ts +3 -0
  37. package/dist/components/renderers/Bubble.d.ts +5 -0
  38. package/dist/components/renderers/Button.d.ts +4 -0
  39. package/dist/components/renderers/Carousel.d.ts +3 -0
  40. package/dist/components/renderers/Column.d.ts +5 -0
  41. package/dist/components/renderers/Dropdown.d.ts +5 -0
  42. package/dist/components/renderers/File.d.ts +3 -0
  43. package/dist/components/renderers/Image.d.ts +3 -0
  44. package/dist/components/renderers/Location.d.ts +3 -0
  45. package/dist/components/renderers/Row.d.ts +5 -0
  46. package/dist/components/renderers/Text.d.ts +4 -0
  47. package/dist/components/renderers/Video.d.ts +3 -0
  48. package/dist/components/renderers/index.d.ts +2 -0
  49. package/dist/contexts/ComposerContext.d.ts +8 -0
  50. package/dist/contexts/MessageContext.d.ts +8 -0
  51. package/dist/contexts/ModalContext.d.ts +14 -0
  52. package/dist/contexts/WebchatContext.d.ts +56 -0
  53. package/dist/contexts/index.d.ts +4 -0
  54. package/dist/hooks/index.d.ts +3 -0
  55. package/dist/hooks/useImageSize.d.ts +2 -0
  56. package/dist/hooks/useRefresh.d.ts +10 -0
  57. package/dist/hooks/useWebchatStore.d.ts +30 -0
  58. package/dist/index.d.ts +3 -17
  59. package/dist/index.js +43569 -48
  60. package/dist/index.umd.cjs +702 -0
  61. package/dist/main.d.ts +11 -13
  62. package/dist/providers/ModalProvider.d.ts +8 -0
  63. package/dist/providers/WebchatProvider.d.ts +13 -0
  64. package/dist/providers/index.d.ts +2 -0
  65. package/dist/schemas/index.d.ts +1 -0
  66. package/dist/schemas/theme.d.ts +3371 -0
  67. package/dist/services/clipboard.d.ts +1 -0
  68. package/dist/services/images.d.ts +2 -0
  69. package/dist/services/index.d.ts +3 -0
  70. package/dist/services/toast.d.ts +17 -0
  71. package/dist/themes/dawn.d.ts +2 -0
  72. package/dist/themes/duskTheme.d.ts +2 -0
  73. package/dist/themes/eggplant.d.ts +2 -0
  74. package/dist/themes/galaxy.d.ts +2 -0
  75. package/dist/themes/index.d.ts +6 -0
  76. package/dist/themes/midnight.d.ts +2 -0
  77. package/dist/themes/prism.d.ts +2 -0
  78. package/dist/twind.config.d.ts +9 -0
  79. package/dist/types/block-type.d.ts +93 -0
  80. package/dist/types/image.d.ts +11 -0
  81. package/dist/types/index.d.ts +2 -0
  82. package/dist/vite.svg +1 -0
  83. package/index.html +18 -0
  84. package/package.json +60 -48
  85. package/public/vite.svg +1 -0
  86. package/src/App.tsx +41 -0
  87. package/src/Utils/colors.ts +45 -0
  88. package/src/Utils/eventEmitter.ts +31 -0
  89. package/src/Utils/index.ts +2 -0
  90. package/src/assets/check-circle-bold.svg +5 -0
  91. package/src/assets/chevron-up.svg +3 -0
  92. package/src/assets/file-05.svg +6 -0
  93. package/src/assets/globe-02.svg +6 -0
  94. package/src/assets/help-circle.svg +3 -0
  95. package/src/assets/info-circle.svg +3 -0
  96. package/src/assets/lock-01.svg +4 -0
  97. package/src/assets/mail-01.svg +6 -0
  98. package/src/assets/minus-circle.svg +3 -0
  99. package/src/assets/phone.svg +6 -0
  100. package/src/assets/send-03.svg +4 -0
  101. package/src/assets/share-04.svg +5 -0
  102. package/src/assets/slash-circle-01.svg +3 -0
  103. package/src/assets/x-circle-bold.svg +5 -0
  104. package/src/assets/x-close.svg +3 -0
  105. package/src/assets/x.svg +3 -0
  106. package/src/client/MessagingClient.ts +87 -0
  107. package/src/client/adapters/Audio.ts +10 -0
  108. package/src/client/adapters/Card.ts +104 -0
  109. package/src/client/adapters/Carousel.ts +11 -0
  110. package/src/client/adapters/Choice.ts +48 -0
  111. package/src/client/adapters/Dropdown.ts +39 -0
  112. package/src/client/adapters/File.ts +10 -0
  113. package/src/client/adapters/Image.ts +10 -0
  114. package/src/client/adapters/Location.ts +18 -0
  115. package/src/client/adapters/Message.ts +26 -0
  116. package/src/client/adapters/Text.ts +11 -0
  117. package/src/client/adapters/Utils.ts +11 -0
  118. package/src/client/adapters/Video.ts +10 -0
  119. package/src/client/adapters/Voice.ts +9 -0
  120. package/src/client/adapters/index.ts +12 -0
  121. package/src/client/index.ts +2 -0
  122. package/src/components/Avatar.tsx +22 -0
  123. package/src/components/Block.tsx +17 -0
  124. package/src/components/Composer.tsx +115 -0
  125. package/src/components/Container.tsx +17 -0
  126. package/src/components/Header.tsx +141 -0
  127. package/src/components/LoadingIndicator.tsx +15 -0
  128. package/src/components/Message.tsx +52 -0
  129. package/src/components/MessageList.tsx +75 -0
  130. package/src/components/Modal.tsx +49 -0
  131. package/src/components/RestartConversation.tsx +52 -0
  132. package/src/components/Webchat.tsx +68 -0
  133. package/src/components/dev-tools/DevTools.tsx +496 -0
  134. package/src/components/dev-tools/configuration.tsx +27 -0
  135. package/src/components/dev-tools/helpers.ts +21 -0
  136. package/src/components/index.ts +12 -0
  137. package/src/components/renderers/Audio.tsx +11 -0
  138. package/src/components/renderers/Bubble.tsx +12 -0
  139. package/src/components/renderers/Button.tsx +59 -0
  140. package/src/components/renderers/Carousel.tsx +51 -0
  141. package/src/components/renderers/Column.tsx +22 -0
  142. package/src/components/renderers/Dropdown.tsx +170 -0
  143. package/src/components/renderers/File.tsx +13 -0
  144. package/src/components/renderers/Image.tsx +63 -0
  145. package/src/components/renderers/Location.tsx +16 -0
  146. package/src/components/renderers/Row.tsx +22 -0
  147. package/src/components/renderers/Text.tsx +32 -0
  148. package/src/components/renderers/Video.tsx +11 -0
  149. package/src/components/renderers/index.ts +28 -0
  150. package/src/contexts/ComposerContext.ts +16 -0
  151. package/src/contexts/MessageContext.ts +16 -0
  152. package/src/contexts/ModalContext.ts +19 -0
  153. package/src/contexts/WebchatContext.ts +61 -0
  154. package/src/contexts/index.ts +4 -0
  155. package/src/hooks/index.ts +3 -0
  156. package/src/hooks/useImageSize.ts +30 -0
  157. package/src/hooks/useRefresh.ts +33 -0
  158. package/src/hooks/useWebchatStore.ts +45 -0
  159. package/src/index.css +18 -0
  160. package/src/index.ts +3 -0
  161. package/src/main.tsx +33 -0
  162. package/src/providers/ModalProvider.tsx +35 -0
  163. package/src/providers/WebchatProvider.tsx +107 -0
  164. package/src/providers/index.ts +2 -0
  165. package/src/schemas/index.ts +1 -0
  166. package/src/schemas/theme.ts +188 -0
  167. package/src/services/clipboard.ts +8 -0
  168. package/src/services/images.ts +39 -0
  169. package/src/services/index.ts +3 -0
  170. package/src/services/toast.tsx +71 -0
  171. package/src/themes/dawn.ts +277 -0
  172. package/src/themes/duskTheme.ts +349 -0
  173. package/src/themes/eggplant.ts +353 -0
  174. package/src/themes/galaxy.ts +323 -0
  175. package/src/themes/index.ts +6 -0
  176. package/src/themes/midnight.ts +276 -0
  177. package/src/themes/prism.ts +349 -0
  178. package/src/twind.config.ts +31 -0
  179. package/src/types/block-type.ts +150 -0
  180. package/src/types/image.ts +10 -0
  181. package/src/types/index.ts +2 -0
  182. package/src/vite-env.d.ts +1 -0
  183. package/tailwind.config.js +0 -0
  184. package/tsconfig.json +30 -0
  185. package/tsconfig.node.json +10 -0
  186. package/vite.config.ts +31 -0
  187. package/README.md +0 -31
  188. package/assets/fonts/roboto/roboto.woff2 +0 -0
  189. package/assets/fonts/roboto/roboto500.woff2 +0 -0
  190. package/assets/fonts/roboto.css +0 -128
  191. package/assets/notification.mp3 +0 -0
  192. package/dist/components/Composer.js +0 -118
  193. package/dist/components/Container.js +0 -62
  194. package/dist/components/ConversationList.d.ts +0 -10
  195. package/dist/components/ConversationList.js +0 -41
  196. package/dist/components/Footer.d.ts +0 -3
  197. package/dist/components/Footer.js +0 -21
  198. package/dist/components/Header.js +0 -181
  199. package/dist/components/VoiceRecorder.d.ts +0 -10
  200. package/dist/components/VoiceRecorder.js +0 -137
  201. package/dist/components/common/Avatar/index.d.ts +0 -9
  202. package/dist/components/common/Avatar/index.js +0 -13
  203. package/dist/components/common/BotInfo/index.d.ts +0 -10
  204. package/dist/components/common/BotInfo/index.js +0 -102
  205. package/dist/components/common/BotInfo/style.scss +0 -88
  206. package/dist/components/common/ConfirmDialog/index.d.ts +0 -11
  207. package/dist/components/common/ConfirmDialog/index.js +0 -78
  208. package/dist/components/common/ConfirmDialog/style.module.scss +0 -48
  209. package/dist/components/common/Dialog/index.d.ts +0 -17
  210. package/dist/components/common/Dialog/index.js +0 -57
  211. package/dist/components/common/Dialog/style.module.scss +0 -29
  212. package/dist/components/common/ToolTip/index.d.ts +0 -10
  213. package/dist/components/common/ToolTip/index.js +0 -163
  214. package/dist/components/common/ToolTip/style.module.scss +0 -108
  215. package/dist/components/common/ToolTip/utils.d.ts +0 -15
  216. package/dist/components/common/ToolTip/utils.js +0 -78
  217. package/dist/components/common/variables.scss +0 -38
  218. package/dist/components/messages/InlineFeedback.d.ts +0 -11
  219. package/dist/components/messages/InlineFeedback.js +0 -56
  220. package/dist/components/messages/Message.d.ts +0 -11
  221. package/dist/components/messages/Message.js +0 -106
  222. package/dist/components/messages/MessageGroup.d.ts +0 -23
  223. package/dist/components/messages/MessageGroup.js +0 -63
  224. package/dist/components/messages/MessageList.d.ts +0 -10
  225. package/dist/components/messages/MessageList.js +0 -154
  226. package/dist/core/api.d.ts +0 -23
  227. package/dist/core/api.js +0 -117
  228. package/dist/core/constants.d.ts +0 -14
  229. package/dist/core/constants.js +0 -29
  230. package/dist/core/socket.d.ts +0 -14
  231. package/dist/core/socket.js +0 -57
  232. package/dist/declaration.d.ts +0 -1
  233. package/dist/declaration.js +0 -1
  234. package/dist/fonts/roboto.d.ts +0 -4
  235. package/dist/fonts/roboto.js +0 -9
  236. package/dist/globals.d.ts +0 -7
  237. package/dist/globals.js +0 -2
  238. package/dist/icons/Add.d.ts +0 -6
  239. package/dist/icons/Add.js +0 -10
  240. package/dist/icons/Cancel.d.ts +0 -5
  241. package/dist/icons/Cancel.js +0 -10
  242. package/dist/icons/Chat.d.ts +0 -6
  243. package/dist/icons/Chat.js +0 -9
  244. package/dist/icons/Close.d.ts +0 -3
  245. package/dist/icons/Close.js +0 -10
  246. package/dist/icons/Delete.d.ts +0 -3
  247. package/dist/icons/Delete.js +0 -11
  248. package/dist/icons/Download.d.ts +0 -3
  249. package/dist/icons/Download.js +0 -10
  250. package/dist/icons/Email.d.ts +0 -3
  251. package/dist/icons/Email.js +0 -8
  252. package/dist/icons/Information.d.ts +0 -3
  253. package/dist/icons/Information.js +0 -12
  254. package/dist/icons/List.d.ts +0 -3
  255. package/dist/icons/List.js +0 -15
  256. package/dist/icons/Microphone.d.ts +0 -5
  257. package/dist/icons/Microphone.js +0 -12
  258. package/dist/icons/Phone.d.ts +0 -3
  259. package/dist/icons/Phone.js +0 -8
  260. package/dist/icons/Reload.d.ts +0 -3
  261. package/dist/icons/Reload.js +0 -10
  262. package/dist/icons/ThumbsDown.d.ts +0 -3
  263. package/dist/icons/ThumbsDown.js +0 -11
  264. package/dist/icons/ThumbsUp.d.ts +0 -3
  265. package/dist/icons/ThumbsUp.js +0 -11
  266. package/dist/icons/Website.d.ts +0 -3
  267. package/dist/icons/Website.js +0 -8
  268. package/dist/main.js +0 -336
  269. package/dist/store/composer.d.ts +0 -17
  270. package/dist/store/composer.js +0 -98
  271. package/dist/store/index.d.ts +0 -82
  272. package/dist/store/index.js +0 -576
  273. package/dist/store/view.d.ts +0 -61
  274. package/dist/store/view.js +0 -361
  275. package/dist/translations/ar.json +0 -30
  276. package/dist/translations/de.json +0 -32
  277. package/dist/translations/en.json +0 -40
  278. package/dist/translations/es.json +0 -19
  279. package/dist/translations/fr.json +0 -40
  280. package/dist/translations/index.d.ts +0 -9
  281. package/dist/translations/index.js +0 -95
  282. package/dist/translations/it.json +0 -38
  283. package/dist/translations/pt.json +0 -19
  284. package/dist/translations/ru.json +0 -24
  285. package/dist/translations/uk.json +0 -24
  286. package/dist/typings.d.ts +0 -378
  287. package/dist/typings.js +0 -2
  288. package/dist/utils/analytics.d.ts +0 -5
  289. package/dist/utils/analytics.js +0 -37
  290. package/dist/utils/index.d.ts +0 -3
  291. package/dist/utils/index.js +0 -27
  292. package/dist/utils/storage.d.ts +0 -16
  293. package/dist/utils/storage.js +0 -129
  294. package/dist/utils/webchatEvents.d.ts +0 -2
  295. package/dist/utils/webchatEvents.js +0 -14
@@ -0,0 +1 @@
1
+ export declare function copyToClipboard(value: string, description?: string): Promise<string>;
@@ -0,0 +1,2 @@
1
+ import { Dimensions, Options } from '../types';
2
+ export declare const getImageSize: (url: string, options?: Options) => Promise<Dimensions>;
@@ -0,0 +1,3 @@
1
+ export * from './clipboard';
2
+ export * from './images';
3
+ export * from './toast';
@@ -0,0 +1,17 @@
1
+ import { FC, ReactNode } from 'react';
2
+ type ToastType = ToastProps['type'] | CustomToastProps['type'];
3
+ type CustomToastProps = {
4
+ type: 'custom';
5
+ content?: ReactNode;
6
+ };
7
+ type ToastProps = {
8
+ type?: 'success' | 'error' | 'neutral';
9
+ title: string;
10
+ icon?: FC<{
11
+ className?: string;
12
+ type?: ToastType;
13
+ }>;
14
+ description?: string;
15
+ };
16
+ export declare function showToast(props: ToastProps | CustomToastProps): string;
17
+ export {};
@@ -0,0 +1,2 @@
1
+ import { Theme } from '../schemas';
2
+ export declare function buildDawnTheme(color: string): Theme;
@@ -0,0 +1,2 @@
1
+ import { Theme } from '../schemas';
2
+ export declare const duskTheme: Theme;
@@ -0,0 +1,2 @@
1
+ import { Theme } from '../schemas';
2
+ export declare const eggplantTheme: Theme;
@@ -0,0 +1,2 @@
1
+ import { Theme } from '../schemas';
2
+ export declare const galaxyTheme: Theme;
@@ -0,0 +1,6 @@
1
+ export * from './dawn';
2
+ export * from './midnight';
3
+ export * from './duskTheme';
4
+ export * from './eggplant';
5
+ export * from './galaxy';
6
+ export * from './prism';
@@ -0,0 +1,2 @@
1
+ import { Theme } from '../schemas';
2
+ export declare function buildMidnightTheme(color: string): Theme;
@@ -0,0 +1,2 @@
1
+ import { Theme } from '../schemas';
2
+ export declare const prismTheme: Theme;
@@ -0,0 +1,9 @@
1
+ export declare const config: import("@twind/core").TwindConfig<import("@twind/core").BaseTheme & import("@twind/preset-tailwind").TailwindTheme & import("@twind/preset-container-queries").ContainerQueriesTheme & {
2
+ fontFamily: {
3
+ sans: string[];
4
+ rubik: string[];
5
+ plex: string[];
6
+ mono: string[];
7
+ };
8
+ extend: never;
9
+ }>;
@@ -0,0 +1,93 @@
1
+ import type { Theme } from '../schemas';
2
+ export declare const blockTypes: readonly ["button", "text", "image", "audio", "video", "file", "location", "column", "row", "bubble", "carousel", "dropdown"];
3
+ export declare const markdownTypes: readonly ["heading1", "heading2", "heading3", "text", "horizontalRule", "link", "italic", "bold", "orderedList", "unorderedList", "listItem", "lineBreak", "pre"];
4
+ export type MarkdownTypes = (typeof markdownTypes)[number];
5
+ export type BlockTypes = (typeof blockTypes)[number];
6
+ export type BlockStyles = NonNullable<Theme['message']>['blocks'];
7
+ export type BlockObject = DropdownBlock | ButtonBlock | TextBlock | ImageBlock | AudioBlock | VideoBlock | FileBlock | LocationBlock | ColumnBlock | RowBlock | BubbleBlock | CarouselBlock;
8
+ export type Sender = {
9
+ name: string;
10
+ avatar?: string;
11
+ };
12
+ export type MessageObject = {
13
+ direction: 'incoming' | 'outgoing' | 'system';
14
+ disableInput?: boolean;
15
+ sender: Sender;
16
+ timestamp: Date;
17
+ block: BlockObject;
18
+ };
19
+ export type ButtonBlock = {
20
+ type: 'button';
21
+ variant: 'action' | 'link';
22
+ reusable?: boolean;
23
+ groupId?: string;
24
+ text: string;
25
+ buttonValue: string;
26
+ };
27
+ export type TextBlock = {
28
+ type: 'text';
29
+ text: string;
30
+ };
31
+ export type ImageBlock = {
32
+ type: 'image';
33
+ orientation?: 'portrait' | 'landscape' | 'square' | 'auto';
34
+ url: string;
35
+ };
36
+ export type AudioBlock = {
37
+ type: 'audio';
38
+ url: string;
39
+ };
40
+ export type VideoBlock = {
41
+ type: 'video';
42
+ url: string;
43
+ };
44
+ export type FileBlock = {
45
+ type: 'file';
46
+ url: string;
47
+ title?: string;
48
+ };
49
+ type DropdownChoice = {
50
+ label: string;
51
+ value: string;
52
+ };
53
+ export type DropdownBlock = {
54
+ label?: string;
55
+ type: 'dropdown';
56
+ reusable?: boolean;
57
+ options: DropdownChoice[];
58
+ };
59
+ export type LocationBlock = {
60
+ type: 'location';
61
+ latitude: number;
62
+ longitude: number;
63
+ title?: string;
64
+ };
65
+ export type ColumnBlock = {
66
+ type: 'column';
67
+ blocks: BlockObject[];
68
+ horizontalAlignment?: 'left' | 'center' | 'right';
69
+ verticalAlignment?: 'top' | 'center' | 'bottom' | 'stretch';
70
+ };
71
+ export type RowBlock = {
72
+ type: 'row';
73
+ blocks: BlockObject[];
74
+ horizontalAlignment?: 'left' | 'center' | 'right' | 'stretch';
75
+ verticalAlignment?: 'top' | 'center' | 'bottom';
76
+ };
77
+ export type CarouselBlock = {
78
+ type: 'carousel';
79
+ blocks: BlockObject[];
80
+ };
81
+ export type BubbleBlock = {
82
+ type: 'bubble';
83
+ block: BlockObject;
84
+ };
85
+ export type CommonBlockProps = {
86
+ styles?: BlockStyles;
87
+ };
88
+ export type BlockMap<P extends BlockObject = BlockObject> = {
89
+ [T in P['type']]: Extract<P, {
90
+ type: T;
91
+ }>;
92
+ };
93
+ export {};
@@ -0,0 +1,11 @@
1
+ export type Options = {
2
+ timeout?: number;
3
+ };
4
+ export type Dimensions = {
5
+ width: number;
6
+ height: number;
7
+ };
8
+ export type UseImageSizeResult = [Dimensions | null, {
9
+ loading: boolean;
10
+ error: string | null;
11
+ }];
@@ -0,0 +1,2 @@
1
+ export * from './block-type';
2
+ export * from './image';
package/dist/vite.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
package/index.html ADDED
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
6
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
7
+ <link
8
+ href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600;700&family=IBM+Plex+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Inter:wght@100;200;300;400;500;600;700;800;900&family=Rubik:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
9
+ rel="stylesheet"
10
+ />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
+ <title>Echo</title>
13
+ </head>
14
+ <body>
15
+ <div id="root"></div>
16
+ <script type="module" src="/src/main.tsx"></script>
17
+ </body>
18
+ </html>
package/package.json CHANGED
@@ -1,54 +1,66 @@
1
1
  {
2
2
  "name": "@botpress/webchat",
3
- "version": "0.5.0",
4
- "main": "dist/index.js",
5
- "types": "dist/index.d.ts",
6
- "source": "src/index.tsx",
7
- "license": "AGPL-3.0",
8
- "scripts": {
9
- "build": "yarn && yarn run -T tsc --build",
10
- "watch": "yarn && yarn run -T tsc --build --watch",
11
- "dev": "yarn run -T parcel test/index.html",
12
- "copy:scss": "yarn run -T copyfiles -u 1 ./src/**/*.scss dist",
13
- "prepublish": "yarn run -T rimraf dist && yarn --immutable && yarn run -T tsc --build && yarn run -T rimraf dist/.tsbuildinfo && yarn copy:scss"
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "./dist/index.umd.cjs",
6
+ "module": "./dist/index.js",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "require": "./dist/index.umd.cjs"
11
+ }
14
12
  },
15
- "files": [
16
- "dist",
17
- "assets"
18
- ],
19
- "devDependencies": {
20
- "@types/crypto-js": "^4.1.1",
21
- "@types/js-cookie": "^3.0.1",
22
- "@types/lodash": "^4.14.178",
23
- "@types/mime": "^2.0.3",
24
- "@types/node": "^16.11.13",
25
- "@types/react": "^17.0.38",
26
- "@types/react-dom": "^17.0.11",
27
- "@types/uuid": "^8.3.4",
28
- "prop-types": "^15.8.1"
13
+ "scripts": {
14
+ "type:check": "tsc --noEmit",
15
+ "dev": "vite",
16
+ "build": "pnpm type:check && vite build",
17
+ "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
18
+ "preview": "vite preview"
29
19
  },
30
20
  "dependencies": {
31
- "@blueprintjs/core": "^3.23.1",
32
- "@botpress/messaging-components": "0.4.2",
33
- "@botpress/messaging-socket": "1.2.0",
34
- "@formatjs/intl-pluralrules": "^4.1.6",
35
- "@formatjs/intl-utils": "^3.8.4",
36
- "@juggle/resize-observer": "^3.0.2",
37
- "axios": "^0.25.0",
38
- "classnames": "^2.3.1",
39
- "crypto-js": "^4.1.1",
40
- "date-fns": "^1.30.1",
41
- "js-cookie": "^3.0.1",
42
- "lodash": "^4.17.21",
43
- "mime": "^3.0.0",
44
- "mobx": "5.15.7",
45
- "mobx-react": "^6.2.1",
46
- "query-string": "^7.1.0",
47
- "react": "^17.0.2",
48
- "react-dom": "^17.0.2",
49
- "react-ga": "^2.7.0",
50
- "react-intl": "^3.12.1",
51
- "snarkdown": "^2.0.0",
52
- "uuid": "^8.3.2"
21
+ "@botpress/messaging-socket": "^1.2.0",
22
+ "@floating-ui/react": "^0.25.4",
23
+ "@headlessui/react": "1.7.11",
24
+ "@heroicons/react": "^2.0.18",
25
+ "@material/material-color-utilities": "^0.2.7",
26
+ "@radix-ui/react-avatar": "^1.0.3",
27
+ "@radix-ui/react-collapsible": "^1.0.3",
28
+ "@radix-ui/react-dialog": "^1.0.4",
29
+ "@radix-ui/react-icons": "^1.3.0",
30
+ "@tailwindcss/container-queries": "^0.1.1",
31
+ "@twind/core": "^1.1.3",
32
+ "@twind/intellisense": "^1.1.3",
33
+ "@twind/preset-autoprefix": "^1.0.7",
34
+ "@twind/preset-container-queries": "^1.0.7",
35
+ "@twind/preset-tailwind": "^1.1.4",
36
+ "@twind/with-react": "^1.1.3",
37
+ "@types/color-convert": "^2.0.1",
38
+ "@types/uuid": "^9.0.3",
39
+ "classnames": "^2.3.2",
40
+ "clsx": "^2.0.0",
41
+ "color-convert": "^2.0.1",
42
+ "embla-carousel-react": "8.0.0-rc11",
43
+ "google-map-react": "^2.2.1",
44
+ "react": "^18.2.0",
45
+ "react-colorful": "^5.6.1",
46
+ "react-dom": "^18.2.0",
47
+ "react-hot-toast": "^2.4.1",
48
+ "react-markdown": "^8.0.7",
49
+ "react-use": "^17.4.0",
50
+ "tailwind-scrollbar": "^3.0.4",
51
+ "uuid": "^9.0.0",
52
+ "vite-plugin-svgr": "^3.2.0",
53
+ "zod": "^3.21.4",
54
+ "zustand": "^4.4.1"
55
+ },
56
+ "devDependencies": {
57
+ "@types/react": "^18.0.37",
58
+ "@types/react-dom": "^18.0.11",
59
+ "@vitejs/plugin-react-swc": "^3.0.0",
60
+ "autoprefixer": "^10.4.14",
61
+ "tailwindcss": "^3.3.2",
62
+ "typescript": "^5.0.2",
63
+ "vite": "^4.3.9",
64
+ "vite-plugin-dts": "^3.5.4"
53
65
  }
54
- }
66
+ }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
package/src/App.tsx ADDED
@@ -0,0 +1,41 @@
1
+ /// <reference types="vite-plugin-svgr/client" />
2
+
3
+ import { GlobeAltIcon } from '@heroicons/react/24/outline'
4
+ import { DocumentTextIcon, EnvelopeIcon, LockClosedIcon, PhoneIcon } from '@heroicons/react/24/solid'
5
+ import { ComponentProps } from 'react'
6
+ import { Toaster } from 'react-hot-toast'
7
+ import { WebchatClient } from './client'
8
+ import {
9
+ Composer,
10
+ ComposerButton,
11
+ ComposerInput,
12
+ Container,
13
+ Header,
14
+ MessageList,
15
+ RestartConversation,
16
+ Webchat,
17
+ } from './components'
18
+ import { WebchatProvider } from './providers'
19
+ import { Theme } from './schemas'
20
+ import { DevTools } from './components/dev-tools/DevTools'
21
+ import { defaultConfiguration } from './components/dev-tools/configuration'
22
+ // import { getSheet, stringify } from '@twind/core'
23
+ // import { twObject } from './main'
24
+
25
+ type Props = {
26
+ theme: Theme
27
+ client: WebchatClient
28
+ } & ComponentProps<typeof Container>
29
+
30
+ export const App = ({ theme, client }: Props) => {
31
+ return (
32
+ <WebchatProvider client={client} styles={theme} configuration={defaultConfiguration}>
33
+ {(configuration) => (
34
+ <>
35
+ <DevTools />
36
+ <Webchat configuration={configuration} />
37
+ </>
38
+ )}
39
+ </WebchatProvider>
40
+ )
41
+ }
@@ -0,0 +1,45 @@
1
+ import { argbFromHex, hexFromArgb, themeFromSourceColor } from '@material/material-color-utilities'
2
+ import convert from 'color-convert'
3
+ import colors from 'tailwindcss/colors'
4
+
5
+ export function buildColorPalette(color: string, theme: 'light' | 'dark' = 'light') {
6
+ const {
7
+ palettes: { primary: primaryPalette, secondary: secondaryPalette },
8
+ schemes,
9
+ } = themeFromSourceColor(argbFromHex(color))
10
+
11
+ const scheme = schemes[theme]
12
+
13
+ return {
14
+ primary: hexFromArgb(scheme.primary),
15
+ primaryHover: hexFromArgb(primaryPalette.tone(theme === 'light' ? 30 : 90)),
16
+ primaryHoverDark: hexFromArgb(primaryPalette.tone(theme === 'light' ? 20 : 95)),
17
+ onPrimary: hexFromArgb(scheme.onPrimary),
18
+ primaryContainer: hexFromArgb(scheme.primaryContainer),
19
+ primaryContainerHover: hexFromArgb(primaryPalette.tone(theme === 'light' ? 80 : 40)),
20
+ onPrimaryContainer: hexFromArgb(scheme.onPrimaryContainer),
21
+ secondary: hexFromArgb(scheme.secondary),
22
+ secondaryHover: hexFromArgb(secondaryPalette.tone(theme === 'light' ? 30 : 90)),
23
+ onSecondary: hexFromArgb(scheme.onSecondary),
24
+ secondaryContainer: hexFromArgb(scheme.secondaryContainer),
25
+ secondaryContainerHover: hexFromArgb(secondaryPalette.tone(theme === 'light' ? 80 : 40)),
26
+ onSecondaryContainer: hexFromArgb(scheme.onSecondaryContainer),
27
+ }
28
+ }
29
+
30
+ type Grays = 'gray' | 'stone' | 'slate' | 'zinc' | 'neutral'
31
+ export function selectGrayFromColor(color: string, omit?: Grays[]) {
32
+ const [primaryHue, ,] = convert.hex.hsl(color)
33
+
34
+ const grays: { name: Grays; HSL: [number, number, number] }[] = [
35
+ { name: 'gray' as const, HSL: convert.hex.hsl(colors.gray[500]) },
36
+ { name: 'stone' as const, HSL: convert.hex.hsl(colors.stone[500]) },
37
+ { name: 'slate' as const, HSL: convert.hex.hsl(colors.slate[500]) },
38
+ { name: 'zinc' as const, HSL: convert.hex.hsl(colors.zinc[500]) },
39
+ { name: 'neutral' as const, HSL: convert.hex.hsl(colors.neutral[500]) },
40
+ ].filter((gray) => !omit?.includes(gray.name))
41
+
42
+ const hueDiffs = grays.map((gray) => Math.abs(gray.HSL[0] - primaryHue))
43
+ const closestHueIndex = hueDiffs.indexOf(Math.min(...hueDiffs))
44
+ return grays[closestHueIndex].name
45
+ }
@@ -0,0 +1,31 @@
1
+ type CallbackFn<T> = (args: T) => void
2
+
3
+ export class EventEmitter<T extends Record<string, any>> {
4
+ private readonly eventMap: Partial<Record<keyof T, Set<CallbackFn<any>>>>
5
+
6
+ constructor() {
7
+ this.eventMap = {}
8
+ }
9
+
10
+ on<U extends keyof T>(event: U, callback: CallbackFn<T[U]>): () => void {
11
+ if (!this.eventMap[event]) {
12
+ this.eventMap[event] = new Set<CallbackFn<T[U]>>()
13
+ }
14
+ this.eventMap[event]?.add(callback)
15
+
16
+ return () => {
17
+ this.eventMap[event]?.delete(callback)
18
+ }
19
+ }
20
+
21
+ emit<U extends keyof T>(event: U, arg?: T[U]): void {
22
+ this.eventMap[event]?.forEach((callback) => {
23
+ callback(arg)
24
+ })
25
+ }
26
+ }
27
+
28
+ export type Events = {
29
+ [key: string]: undefined
30
+ }
31
+ export const eventEmitter = new EventEmitter<Events>()
@@ -0,0 +1,2 @@
1
+ export * from './colors'
2
+ export * from './eventEmitter'
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"
2
+ stroke-width="1.5">
3
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
4
+ d="m7.5 12 3 3 6-6m5.5 3c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z" />
5
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m18 15-6-6-6 6" />
3
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"
2
+ stroke-width="1.5"
3
+ >
4
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
5
+ d="M14 2.27V6.4c0 .56 0 .84.109 1.054a1 1 0 0 0 .437.437c.214.11.494.11 1.054.11h4.13M14 17H8m8-4H8m12-3.012V17.2c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311C17.72 22 16.88 22 15.2 22H8.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C4 19.72 4 18.88 4 17.2V6.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C6.28 2 7.12 2 8.8 2h3.212c.733 0 1.1 0 1.446.083.306.073.598.195.867.36.303.185.562.444 1.08.963l3.19 3.188c.518.519.777.778.963 1.081a3 3 0 0 1 .36.867c.082.346.082.712.082 1.446Z" />
6
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" stroke-width="1.5" height="18" fill="none"
2
+ viewBox="0 0 18 18"
3
+ >
4
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
5
+ d="M9 .667A12.75 12.75 0 0 1 12.333 9 12.75 12.75 0 0 1 9 17.333M9 .667A12.75 12.75 0 0 0 5.667 9 12.75 12.75 0 0 0 9 17.333M9 .667a8.333 8.333 0 0 0 0 16.666M9 .667a8.333 8.333 0 0 1 0 16.666M1.083 6.5h15.834m-15.834 5h15.834" />
6
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3m.08 4h.01M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12 16v-4m0-4h.01M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"
3
+ d="M17 10V8A5 5 0 0 0 7 8v2m5 4.5v2M8.8 21h6.4c1.68 0 2.52 0 3.162-.327a3 3 0 0 0 1.311-1.311C20 18.72 20 17.88 20 16.2v-1.4c0-1.68 0-2.52-.327-3.162a3 3 0 0 0-1.311-1.311C17.72 10 16.88 10 15.2 10H8.8c-1.68 0-2.52 0-3.162.327a3 3 0 0 0-1.311 1.311C4 12.28 4 13.12 4 14.8v1.4c0 1.68 0 2.52.327 3.162a3 3 0 0 0 1.311 1.311C6.28 21 7.12 21 8.8 21Z" />
4
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" width="18" height="16" fill="none"
2
+ viewBox="0 0 18 16"
3
+ >
4
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
5
+ d="M.667 3.833 7.47 8.596c.55.386.826.579 1.126.653.265.066.541.066.806 0 .3-.074.575-.267 1.126-.653l6.804-4.763M4.667 14.667h8.666c1.4 0 2.1 0 2.635-.273a2.5 2.5 0 0 0 1.093-1.092c.272-.535.272-1.235.272-2.635V5.333c0-1.4 0-2.1-.272-2.635a2.5 2.5 0 0 0-1.093-1.092c-.534-.273-1.235-.273-2.635-.273H4.667c-1.4 0-2.1 0-2.635.273A2.5 2.5 0 0 0 .939 2.698C.667 3.233.667 3.933.667 5.333v5.334c0 1.4 0 2.1.272 2.635a2.5 2.5 0 0 0 1.093 1.092c.534.273 1.234.273 2.635.273Z" />
6
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z"/>
3
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" width="18" height="18" fill="none"
2
+ viewBox="0 0 18 18"
3
+ >
4
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
5
+ d="M5.984 6.378c.58 1.208 1.37 2.34 2.372 3.341a12.17 12.17 0 0 0 3.341 2.372c.104.05.156.075.222.094a.87.87 0 0 0 .718-.122c.056-.04.103-.088.199-.183.29-.291.437-.437.583-.532a1.667 1.667 0 0 1 1.817 0c.146.095.292.24.584.532l.162.162c.443.443.664.665.785.903a1.667 1.667 0 0 1 0 1.504c-.12.238-.342.46-.785.902l-.131.131c-.442.442-.662.663-.963.831-.332.187-.85.322-1.231.32-.344 0-.58-.067-1.05-.2a15.866 15.866 0 0 1-6.903-4.062 15.866 15.866 0 0 1-4.061-6.903c-.134-.47-.2-.706-.202-1.05a2.814 2.814 0 0 1 .32-1.232c.17-.3.39-.52.831-.962l.132-.131c.443-.443.664-.664.902-.785a1.667 1.667 0 0 1 1.504 0c.238.12.46.342.902.785l.163.162c.291.292.437.437.532.584.36.552.36 1.264 0 1.817-.095.146-.24.292-.532.583a1.682 1.682 0 0 0-.183.199.872.872 0 0 0-.122.718c.019.066.044.118.094.222Z" />
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"
3
+ d="M10.5 12H5m-.084.291L2.58 19.267c-.184.548-.275.822-.21.99a.5.5 0 0 0 .332.3c.174.05.438-.07.965-.306l16.711-7.52c.515-.232.772-.348.851-.508a.5.5 0 0 0 0-.444c-.08-.16-.336-.276-.85-.508L3.661 3.748c-.525-.237-.788-.355-.962-.306a.5.5 0 0 0-.332.299c-.066.168.025.442.206.988l2.342 7.057c.032.094.047.14.053.188a.5.5 0 0 1 0 .129c-.006.048-.022.095-.053.188Z" />
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"
2
+ >
3
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
4
+ d="M15.5 5.5v-5m0 0h-5m5 0L8.833 7.167m-2.5-5H4.5c-1.4 0-2.1 0-2.635.272A2.5 2.5 0 0 0 .772 3.532C.5 4.066.5 4.767.5 6.167V11.5c0 1.4 0 2.1.272 2.635a2.5 2.5 0 0 0 1.093 1.092C2.4 15.5 3.1 15.5 4.5 15.5h5.333c1.4 0 2.1 0 2.635-.273a2.5 2.5 0 0 0 1.093-1.092c.272-.535.272-1.235.272-2.635V9.667" />
5
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m4.93 4.93 14.14 14.14M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z"/>
3
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"
2
+ stroke-width="1.5">
3
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
4
+ d="m15 9-6 6m0-6 6 6m7-3c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z" />
5
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M18 6 6 18M6 6l12 12"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
2
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M17 7 7 17M7 7l10 10"/>
3
+ </svg>