@botpress/webchat 0.5.1 → 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 -49
  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 -41
  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 -107
  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 -148
  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 -2
  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 -89
  272. package/dist/store/index.js +0 -604
  273. package/dist/store/view.d.ts +0 -61
  274. package/dist/store/view.js +0 -365
  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 -410
  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,277 @@
1
+ import { clsx } from 'clsx'
2
+ import { Theme } from '../schemas'
3
+ import { buildColorPalette, selectGrayFromColor } from '../Utils'
4
+
5
+ export function buildDawnTheme(color: string): Theme {
6
+ const { primary, primaryHover, onPrimary, primaryHoverDark, primaryContainer, onPrimaryContainer } =
7
+ buildColorPalette(color)
8
+
9
+ const gray = selectGrayFromColor(color)
10
+
11
+ const textBoldColor = `${gray}-900`
12
+ const textSemiBoldColor = `${gray}-800`
13
+ const textMediumColor = `${gray}-700`
14
+ const textLightColor = `${gray}-600`
15
+ const textExtraLightColor = `${gray}-500`
16
+ const textPlaceholderColor = `${gray}-400`
17
+ const focusColor = `${gray}-300`
18
+ const borderColor = `${gray}-200`
19
+ const bgLightColor = `${gray}-100`
20
+ const bgColor = 'white'
21
+
22
+ return {
23
+ container: {
24
+ className: `w-full bg-${bgColor} h-full border border-${borderColor} rounded-lg flex flex-col @container relative overflow-hidden`,
25
+ },
26
+ modal: {
27
+ container: {
28
+ className: `absolute inset-0 z-30 flex p-2 pointer-events-none`,
29
+ },
30
+ overlay: {
31
+ className: `absolute inset-0 z-30 bg-black/30 backdrop-blur-[1px]`,
32
+ },
33
+ dialog: {
34
+ container: {
35
+ className: `mx-auto mt-auto rounded-md bg-${bgColor} p-6 text-${textBoldColor} shadow w-full @md:(w-auto mb-auto) pointer-events-auto bg-${color}-500`,
36
+ },
37
+ title: {
38
+ container: {
39
+ className: `flex items-center justify-between mb-2`,
40
+ },
41
+ text: {
42
+ className: `text-(base ${textBoldColor})`,
43
+ },
44
+ closeIcon: {
45
+ className: `h-5 cursor-pointer text-(${textExtraLightColor} hover:${textMediumColor})`,
46
+ },
47
+ },
48
+ content: {
49
+ className: `text-sm text-${textLightColor} flex flex-col`,
50
+ },
51
+ },
52
+ },
53
+ notification: {
54
+ container: {
55
+ className: `group/toast grid w-full grid-cols-[auto_1fr_auto] items-center gap-x-2 rounded-md border border-${borderColor} bg-${bgColor} p-4 shadow-md`,
56
+ },
57
+ title: {
58
+ className: `col-start-2 text-sm font-medium text-${textBoldColor}`,
59
+ },
60
+ description: {
61
+ className: `col-start-2 mt-1 text-sm text-${textExtraLightColor}`,
62
+ },
63
+ icon: {
64
+ className: `aspect-square h-5 group-data-[type=error]/toast:text-red-500 group-data-[type=success]/toast:text-green-500`,
65
+ },
66
+ closeIcon: {
67
+ className: `col-start-3 row-start-1 aspect-square h-5 hover:cursor-pointer`,
68
+ },
69
+ },
70
+ header: {
71
+ container: {
72
+ className: `rounded-t-md p-1 mb-auto group/header flex flex-col shadow bg-[${primary}]`,
73
+ },
74
+ content: {
75
+ container: {
76
+ className: `grid grow cursor-pointer grid-cols-[auto_1fr_auto] items-center gap-x-2 rounded-md p-1 text-left transition-colors hover:bg-[${primaryHover}] text-[${onPrimary}]`,
77
+ },
78
+ title: { className: `text-base font-medium` },
79
+ description: {
80
+ className: `text-sm group-data-[state=closed]/header:hidden col-start-2`,
81
+ },
82
+ avatar: {
83
+ container: {
84
+ className: `row-span-1 group-data-[state=open]/header:row-span-2 mr-2 p-px pl-2 rounded-full overflow-hidden group-data-[state=open]/header:m-2`,
85
+ },
86
+ image: {
87
+ className: `aspect-square h-8 rounded-full group-data-[state=open]/header:h-12`,
88
+ },
89
+ fallback: {
90
+ className: `bg-${borderColor} flex h-full w-full items-center justify-center rounded-full`,
91
+ },
92
+ },
93
+ actions: {
94
+ container: {
95
+ className: `col-start-3 row-span-1 group-data-[state=open]/header:row-span-2 !row-start-1 flex`,
96
+ },
97
+ icons: {
98
+ className: `h-9 w-9 cursor-pointer rounded-md p-2 text-[${onPrimary}] transition-colors hover:bg-[${primaryHoverDark}]`,
99
+ },
100
+ },
101
+ },
102
+ expandedContent: {
103
+ container: {
104
+ className: `flex justify-center @md:justify-start @md:ml-[5.5rem] gap-4 text-sm items-center group-data-[state=open]/header:py-4`,
105
+ },
106
+ descriptionItems: {
107
+ container: {
108
+ className: `flex data-[email]:col-span-2 cursor-pointer`,
109
+ },
110
+ icon: {
111
+ className: `mr-3 h-5 w-5 text-[${onPrimary}]`,
112
+ },
113
+ text: {
114
+ className: `hidden`,
115
+ },
116
+ link: {
117
+ className: `hidden`,
118
+ },
119
+ },
120
+ },
121
+ },
122
+ composer: {
123
+ container: {
124
+ className: `group/composer-container shadow border border-(${bgLightColor} focus-within:${focusColor}) m-2 rounded-md transition-colors flex items-center `,
125
+ },
126
+ input: {
127
+ className: `flex-grow outline-none px-2 m-0.5 rounded-md placeholder-${textPlaceholderColor} text-sm resize-none h-[3em]`,
128
+ },
129
+ button: {
130
+ container: {
131
+ className: `group-data-[disabled=true]/composer-container:hidden h-11 p-2 rounded-full transition-colors text-([${primary}] hover:[${primaryHover}]) disabled:hidden flex items-center justify-center`,
132
+ },
133
+ icon: {
134
+ className: `h-full w-full`,
135
+ },
136
+ },
137
+ },
138
+ messageList: {
139
+ className: `flex flex-col gap-2 p-4 overflow-y-auto overflow-x-hidden scroll-smooth`,
140
+ },
141
+ message: {
142
+ container: {
143
+ className: clsx(
144
+ `flex group gap-2 text-sm text-${textMediumColor}`,
145
+ `data-[direction=incoming]:justify-start data-[direction=outgoing]:justify-end data-[loaded=false]:hidden`
146
+ ),
147
+ },
148
+ avatar: {
149
+ container: {
150
+ className: `relative h-6 w-6 shrink-0 overflow-hidden rounded-full hidden self-end group-data-[direction=incoming]:flex`,
151
+ },
152
+ image: {
153
+ className: `aspect-square h-full w-full`,
154
+ },
155
+ fallback: {
156
+ className: `bg-${borderColor} flex h-full w-full items-center justify-center rounded-full`,
157
+ },
158
+ },
159
+ blocks: {
160
+ text: {
161
+ heading1: {
162
+ className: `text-xl font-medium text-${textBoldColor} group-data-[direction=outgoing]:text-[${onPrimaryContainer}]`,
163
+ },
164
+ heading2: {
165
+ className: `text-lg text-${textBoldColor} group-data-[direction=outgoing]:text-[${onPrimaryContainer}]`,
166
+ },
167
+ heading3: {
168
+ className: `text-base`,
169
+ },
170
+ unorderedList: {
171
+ className: `list-disc list-inside marker:text-${textExtraLightColor} group-data-[direction=outgoing]:marker:text-[${onPrimaryContainer}]`,
172
+ },
173
+ orderedList: {
174
+ className: `list-decimal list-inside marker:text-${textLightColor} group-data-[direction=outgoing]:marker:text-[${onPrimaryContainer}]`,
175
+ },
176
+ },
177
+ button: {
178
+ className: `bg-[${primary}] rounded-2xl p-1 text-sm px-3 text-[${onPrimary}] data-[activated]:hidden data-[group-activated]:hidden`,
179
+ },
180
+ image: {
181
+ image: {
182
+ className: clsx(
183
+ `border border-${borderColor} rounded-2xl object-cover w-[95%]`,
184
+ `data-[orientation=landscape]:aspect-[4/3]`,
185
+ `data-[orientation=portrait]:aspect-[3/4]`,
186
+ `data-[orientation=square]:aspect-square`,
187
+ `@xs:w-56`,
188
+ `data-[loaded=false]:hidden`
189
+ ),
190
+ },
191
+ placeholder: {
192
+ className: clsx(
193
+ `border border-${borderColor} rounded-2xl bg-${bgLightColor} animate-pulse`,
194
+ `data-[orientation=landscape]:aspect-[4/3]`,
195
+ `data-[orientation=portrait]:aspect-[3/4]`,
196
+ `data-[orientation=square]:aspect-square`,
197
+ `@xs:w-56`
198
+ ),
199
+ },
200
+ },
201
+ video: {
202
+ className: `border border-${borderColor} rounded-2xl`,
203
+ },
204
+ location: {
205
+ container: {
206
+ className: `flex gap-2 group items-center p-1`,
207
+ },
208
+ title: {
209
+ className: `text-sm text-[${primaryHover}] font-medium group-hover:underline`,
210
+ },
211
+ icon: {
212
+ className: `h-5 w-5 text-[${primary}]`,
213
+ },
214
+ },
215
+ row: {
216
+ className: clsx(
217
+ `flex gap-2 flex-wrap`,
218
+ `data-[horizontal=center]:justify-center`,
219
+ `data-[horizontal=right]:justify-end`,
220
+ `data-[horizontal=stretch]:justify-between`,
221
+ `data-[vertical=center]:items-center`,
222
+ `data-[vertical=bottom]:items-end`
223
+ ),
224
+ },
225
+ column: {
226
+ className: clsx(
227
+ `flex flex-col gap-2 w-fit group/container`,
228
+ `data-[horizontal=center]:items-center`,
229
+ `data-[horizontal=right]:items-end`,
230
+ `data-[vertical=center]:justify-center`,
231
+ `data-[vertical=bottom]:justify-end`,
232
+ `data-[vertical=stretch]:justify-between`
233
+ ),
234
+ },
235
+ bubble: {
236
+ className: clsx(
237
+ 'rounded-2xl p-2 max-w-[85%]',
238
+ `group-data-[direction=incoming]:(rounded-bl-sm bg-${bgLightColor} border-${borderColor} text-${textSemiBoldColor})`,
239
+ `group-data-[direction=outgoing]:(rounded-br-sm text-[${onPrimaryContainer}]) bg-[${primaryContainer}]`
240
+ ),
241
+ },
242
+ carousel: {
243
+ container: {
244
+ className: `group relative overflow-hidden`,
245
+ },
246
+ slidesContainer: {
247
+ className: `grid auto-cols-[90%] grid-flow-col gap-x-2 object-cover px-2 @md:auto-cols-max [&>*]:max-w-[26rem]`,
248
+ },
249
+ backButton: {
250
+ className: clsx(
251
+ `absolute left-1 top-1/2 h-7 -translate-y-1/2 rounded-full bg-${textMediumColor} bg-opacity-20 p-0.5 text-${borderColor} shadow transition-all`,
252
+ `hover:(scale-110 cursor-pointer) group-hover:(bg-opacity-80 text-${bgLightColor}) data-[disabled]:hidden`
253
+ ),
254
+ },
255
+ nextButton: {
256
+ className: clsx(
257
+ `absolute right-1 top-1/2 h-7 -translate-y-1/2 rounded-full bg-${textMediumColor} bg-opacity-20 p-0.5 text-${borderColor} shadow transition-all`,
258
+ `hover:(scale-110 cursor-pointer) group-hover:(bg-opacity-80 text-${bgLightColor}) data-[disabled]:hidden`
259
+ ),
260
+ },
261
+ },
262
+ },
263
+ },
264
+ loadingIndicator: {
265
+ container: {
266
+ className: clsx(
267
+ `flex items-end gap-1.5 border bg-${bgLightColor} border-${borderColor} rounded-lg p-2`,
268
+ `before:(animate-jump h-1.5 w-1.5 rounded-full bg-${textMediumColor})`,
269
+ `after:(animate-jump h-1.5 w-1.5 rounded-full bg-${textMediumColor} [animation-delay:0.2s])`
270
+ ),
271
+ },
272
+ loader: {
273
+ className: clsx(`animate-jump h-1.5 w-1.5 rounded-full bg-${textMediumColor} [animation-delay:0.1s]`),
274
+ },
275
+ },
276
+ }
277
+ }
@@ -0,0 +1,349 @@
1
+ import { Theme } from '../schemas'
2
+
3
+ import { clsx } from 'clsx'
4
+
5
+ export const duskTheme: Theme = {
6
+ container: {
7
+ className:
8
+ 'w-full h-full border border-zinc-700 bg-zinc-800 rounded-lg flex flex-col @container relative overflow-hidden font-plex [color-scheme:dark]',
9
+ },
10
+ modal: {
11
+ container: {
12
+ className: 'absolute inset-0 z-30 flex p-2 pointer-events-none',
13
+ },
14
+ overlay: {
15
+ className: 'absolute inset-0 z-30 bg-black/30 backdrop-blur-[1px]',
16
+ },
17
+ dialog: {
18
+ container: {
19
+ className:
20
+ 'mx-auto mt-auto rounded-md bg-white p-6 text-zinc-900 shadow w-full @md:w-auto @md:mb-auto pointer-events-auto',
21
+ },
22
+ title: {
23
+ container: {
24
+ className: 'flex items-center justify-between mb-2',
25
+ },
26
+ text: {
27
+ className: 'text-base text-zinc-900',
28
+ },
29
+ closeIcon: {
30
+ className: ' h-5 cursor-pointer text-zinc-500 hover:text-zinc-700',
31
+ },
32
+ },
33
+ content: {
34
+ className: 'text-sm text-zinc-600 flex flex-col',
35
+ },
36
+ },
37
+ },
38
+ notification: {
39
+ container: {
40
+ className:
41
+ 'group/toast grid w-full grid-cols-[auto_1fr_auto] items-center gap-x-2 rounded-md border border-zinc-200 bg-white p-4 shadow-md',
42
+ },
43
+ title: {
44
+ className: 'col-start-2 text-sm font-medium text-zinc-900',
45
+ },
46
+ description: {
47
+ className: 'col-start-2 mt-1 text-sm text-zinc-500',
48
+ },
49
+ icon: {
50
+ className:
51
+ 'aspect-square h-5 group-data-[type=error]/toast:text-red-500 group-data-[type=success]/toast:text-green-500',
52
+ },
53
+ closeIcon: {
54
+ className: 'col-start-3 row-start-1 aspect-square h-5 hover:cursor-pointer',
55
+ },
56
+ },
57
+ header: {
58
+ container: {
59
+ className: 'rounded-t-md p-1 mb-auto group/header flex flex-col shadow border-b border-zinc-700',
60
+ },
61
+ content: {
62
+ container: {
63
+ className: clsx(
64
+ 'grid grow cursor-pointer grid-cols-[auto_1fr_auto] items-center gap-x-2 rounded-md p-1 px-3 text-left transition-colors hover:bg-zinc-700 ',
65
+ 'group-data-[state=open]/header:grid-cols-1',
66
+ 'group-data-[state=open]/header:justify-items-center'
67
+ ),
68
+ },
69
+ title: { className: 'text-base text-zinc-100 py-0.5 font-medium' },
70
+ description: {
71
+ className: clsx(
72
+ 'text-sm text-zinc-300 py-0.5',
73
+ 'group-data-[state=closed]/header:truncate',
74
+ 'group-data-[state=closed]/header:col-start-2',
75
+ 'group-data-[state=open]/header:text-center'
76
+ ),
77
+ },
78
+ avatar: {
79
+ container: {
80
+ className: clsx(
81
+ 'mr-2 p-px rounded-full overflow-hidden',
82
+ 'group-data-[state=closed]/header:row-span-2',
83
+ 'group-data-[state=open]/header:mt-6',
84
+ 'group-data-[state=open]/header:mb-2'
85
+ ),
86
+ },
87
+ image: {
88
+ className: 'aspect-square h-8 rounded-full group-data-[state=open]/header:h-16',
89
+ },
90
+ fallback: {
91
+ className: 'bg-zinc-400 flex h-full w-full items-center justify-center rounded-full',
92
+ },
93
+ },
94
+ actions: {
95
+ container: {
96
+ className: clsx(
97
+ 'flex',
98
+ 'group-data-[state=closed]/header:col-start-3',
99
+ 'group-data-[state=closed]/header:row-span-2',
100
+ 'group-data-[state=open]/header:hidden',
101
+ 'group-data-[state=closed]/header:!row-start-1'
102
+ ),
103
+ },
104
+ icons: {
105
+ className: 'h-9 w-9 cursor-pointer rounded-md p-2 text-zinc-300 transition-colors hover:bg-zinc-600 ',
106
+ },
107
+ },
108
+ },
109
+ expandedContent: {
110
+ container: {
111
+ className:
112
+ 'grid grid-cols-[auto_auto] gap-y-2 text-sm items-center group-data-[state=open]/header:py-2 mx-auto ',
113
+ },
114
+ descriptionItems: {
115
+ container: {
116
+ className: clsx(
117
+ 'flex items-center gap-2 group/description-item peer text-sm text-indigo-100 col-span-2 hover:cursor-pointer relative',
118
+ 'data-[terms]:col-span-1',
119
+ 'data-[terms]:justify-self-end',
120
+ 'data-[terms]:pr-2',
121
+ 'data-[terms]:mt-4',
122
+ 'data-[terms]:text-xs',
123
+ 'data-[terms]:text-indigo-300',
124
+ 'data-[terms]:last-of-type:col-span-full',
125
+ 'data-[terms]:last-of-type:justify-self-center',
126
+ 'data-[privacy]:justify-self-center',
127
+ 'data-[privacy]:col-span-full',
128
+ 'data-[privacy]:mt-4',
129
+ 'data-[privacy]:text-xs',
130
+ 'data-[privacy]:text-indigo-300',
131
+ 'data-[privacy]:peer-data-[terms]:justify-self-start',
132
+ 'data-[privacy]:peer-data-[terms]:col-span-1',
133
+ 'data-[privacy]:peer-data-[terms]:pl-2',
134
+ 'data-[privacy]:peer-data-[terms]:before:absolute',
135
+ 'data-[privacy]:peer-data-[terms]:before:w-px',
136
+ 'data-[privacy]:peer-data-[terms]:before:h-2/3',
137
+ 'data-[privacy]:peer-data-[terms]:before:bg-zinc-300',
138
+ 'data-[privacy]:peer-data-[terms]:before:left-0',
139
+ 'data-[privacy]:peer-data-[terms]:before:bg-indigo-300',
140
+ 'data-[privacy]:peer-data-[terms]:before:inset-auto'
141
+ ),
142
+ },
143
+ icon: {
144
+ className: clsx(
145
+ 'h-5 text-indigo-200 rounded-full',
146
+ 'group-data-[terms]/description-item:hidden',
147
+ 'group-data-[privacy]/description-item:hidden'
148
+ ),
149
+ },
150
+ text: {
151
+ className: clsx(
152
+ 'truncate pt-1',
153
+ 'group-data-[terms]/description-item:pt-0',
154
+ 'group-data-[privacy]/description-item:pt-0'
155
+ ),
156
+ },
157
+ link: {
158
+ className: clsx(
159
+ 'truncate group-hover/description-item:underline pt-1',
160
+ 'group-data-[terms]/description-item:pt-0',
161
+ 'group-data-[privacy]/description-item:pt-0'
162
+ ),
163
+ },
164
+ },
165
+ },
166
+ newConversationIcon: {
167
+ className:
168
+ 'h-9 w-9 text-zinc-500 p-2 cursor-pointer ml-auto hover:text-zinc-700 transition-colors row-span-2 row-start-1 col-start-6',
169
+ },
170
+ },
171
+ composer: {
172
+ container: {
173
+ className:
174
+ 'group/composer-container shadow border border-transparent bg-zinc-700 m-2 text-zinc-100 rounded transition-colors flex gap-2 items-center focus-within:border-zinc-500',
175
+ },
176
+ input: {
177
+ className:
178
+ 'flex-grow outline-none bg-inherit px-2 m-3 rounded-md placeholder-zinc-400 text-sm resize-none h-[1.5em]',
179
+ },
180
+ button: {
181
+ container: {
182
+ className: clsx(
183
+ 'relative transition-colors bg-indigo-300 flex items-center justify-center px-2 py-1 rounded text-sm font-medium text-indigo-900 m-2',
184
+ 'hover:bg-indigo-200 hover:cursor-pointer',
185
+ 'group-data-[disabled=true]/composer-container:hidden',
186
+ "after:content-['Send']",
187
+ 'disabled:hidden '
188
+ ),
189
+ },
190
+ icon: {
191
+ className: 'hidden',
192
+ },
193
+ },
194
+ },
195
+ messageList: {
196
+ className: 'flex flex-col gap-2 p-2 overflow-y-auto overflow-x-hidden scroll-smooth ',
197
+ },
198
+ message: {
199
+ container: {
200
+ className: clsx(
201
+ 'flex group gap-2 text-sm text-zinc-100',
202
+ 'data-[direction=incoming]:justify-start data-[direction=outgoing]:justify-end data-[loaded=false]:hidden'
203
+ ),
204
+ },
205
+ avatar: {
206
+ container: {
207
+ className:
208
+ 'relative h-7 w-7 shrink-0 overflow-hidden rounded-full hidden q group-data-[direction=incoming]:flex',
209
+ },
210
+ image: {
211
+ className: 'aspect-square h-full w-full',
212
+ },
213
+ fallback: {
214
+ className: 'bg-zinc-200 flex h-full w-full items-center justify-center rounded-full',
215
+ },
216
+ },
217
+ blocks: {
218
+ text: {
219
+ heading1: {
220
+ className: 'text-xl font-medium text-zinc-50 group-data-[direction=outgoing]:text-indigo-100',
221
+ },
222
+ heading2: {
223
+ className: 'text-lg text-zinc-50 group-data-[direction=outgoing]:text-indigo-100',
224
+ },
225
+ heading3: {
226
+ className: 'text-base',
227
+ },
228
+ unorderedList: {
229
+ className:
230
+ 'list-disc list-inside marker:text-zinc-200 group-data-[direction=outgoing]:marker:text-indigo-100',
231
+ },
232
+ orderedList: {
233
+ className:
234
+ 'list-decimal list-inside marker:text-zinc-300 group-data-[direction=outgoing]:marker:text-indigo-100',
235
+ },
236
+ },
237
+ button: {
238
+ className: clsx(
239
+ 'bg-indigo-300 hover:bg-indigo-200 rounded p-1 text-sm font-medium px-2 text-indigo-800',
240
+ 'data-[activated]:text-indigo-100',
241
+ 'data-[activated]:bg-indigo-500',
242
+ 'data-[activated]:font-normal',
243
+ 'data-[group-activated]:text-zinc-400',
244
+ 'data-[group-activated]:bg-zinc-600',
245
+ 'data-[group-activated]:font-normal'
246
+ ),
247
+ },
248
+ image: {
249
+ image: {
250
+ className: clsx(
251
+ 'rounded-2xl object-cover w-[95%]',
252
+ 'data-[orientation=landscape]:aspect-[4/3]',
253
+ 'data-[orientation=portrait]:aspect-[3/4]',
254
+ 'data-[orientation=square]:aspect-square',
255
+ '@xs:w-56',
256
+ 'data-[loaded=false]:hidden'
257
+ ),
258
+ },
259
+ placeholder: {
260
+ className: clsx(
261
+ 'border border-zinc-200 rounded-2xl bg-red-300 animate-pulse',
262
+ 'data-[orientation=landscape]:aspect-[4/3]',
263
+ 'data-[orientation=portrait]:aspect-[3/4]',
264
+ 'data-[orientation=square]:aspect-square',
265
+ '@xs:w-56'
266
+ ),
267
+ },
268
+ },
269
+ video: {
270
+ className: 'border border-zinc-200 rounded-2xl',
271
+ },
272
+ location: {
273
+ container: {
274
+ className: 'flex gap-2 group items-center p-1 bg-zinc-700 py-2 px-4 rounded',
275
+ },
276
+ title: {
277
+ className: 'text-indigo-200 group-hover:underline mt-1',
278
+ },
279
+ icon: {
280
+ className: 'h-5 w-5 text-indigo-400',
281
+ },
282
+ },
283
+ row: {
284
+ className: clsx(
285
+ 'flex gap-2 flex-wrap',
286
+ 'data-[horizontal=center]:justify-center',
287
+ 'data-[horizontal=right]:justify-end',
288
+ 'data-[horizontal=stretch]:justify-between',
289
+ 'data-[vertical=center]:items-center',
290
+ 'data-[vertical=bottom]:items-end'
291
+ ),
292
+ },
293
+ column: {
294
+ className: clsx(
295
+ 'flex flex-col gap-2 w-fit group/container',
296
+ 'data-[horizontal=center]:items-center',
297
+ 'data-[horizontal=right]:items-end',
298
+ 'data-[vertical=center]:justify-center',
299
+ 'data-[vertical=bottom]:justify-end',
300
+ 'data-[vertical=stretch]:justify-between'
301
+ ),
302
+ },
303
+ bubble: {
304
+ className: clsx(
305
+ 'rounded p-2 px-4 max-w-[85%]',
306
+ 'group-data-[direction=outgoing]:bg-indigo-800',
307
+ 'group-data-[direction=outgoing]:text-indigo-100',
308
+ 'group-data-[direction=outgoing]:rounded-br-md',
309
+ 'group-data-[direction=incoming]:rounded-bl-md',
310
+ 'group-data-[direction=incoming]:bg-zinc-700',
311
+ 'group-data-[direction=incoming]:text-zinc-100'
312
+ ),
313
+ },
314
+ carousel: {
315
+ container: {
316
+ className: 'group relative overflow-hidden',
317
+ },
318
+ slidesContainer: {
319
+ className:
320
+ 'grid auto-cols-[90%] grid-flow-col gap-x-2 object-cover px-2 @md:auto-cols-max [&>*]:max-w-[26rem]',
321
+ },
322
+ backButton: {
323
+ className: clsx(
324
+ 'absolute left-1 top-1/2 h-7 -translate-y-1/2 rounded-full bg-zinc-700 bg-opacity-20 p-0.5 text-zinc-200 shadow transition-all',
325
+ 'hover:scale-110 hover:cursor-pointer group-hover:bg-opacity-80 group-hover:text-zinc-100 data-[disabled]:hidden'
326
+ ),
327
+ },
328
+ nextButton: {
329
+ className: clsx(
330
+ 'absolute right-1 top-1/2 h-7 -translate-y-1/2 rounded-full bg-zinc-700 bg-opacity-20 p-0.5 text-zinc-200 shadow transition-all',
331
+ 'hover:scale-110 hover:cursor-pointer group-hover:bg-opacity-80 group-hover:text-zinc-100 data-[disabled]:hidden'
332
+ ),
333
+ },
334
+ },
335
+ },
336
+ },
337
+ loadingIndicator: {
338
+ container: {
339
+ className: clsx(
340
+ 'flex items-end gap-1.5 bg-zinc-700 rounded p-2',
341
+ 'before:(animate-jump h-1.5 w-1.5 rounded-full bg-zinc-400)',
342
+ 'after:(animate-jump h-1.5 w-1.5 rounded-full bg-zinc-400 [animation-delay:0.2s])'
343
+ ),
344
+ },
345
+ loader: {
346
+ className: clsx('animate-jump h-1.5 w-1.5 rounded-full bg-zinc-400 [animation-delay:0.1s]'),
347
+ },
348
+ },
349
+ }