@memori.ai/memori-react 1.2.0 → 2.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 (291) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +12 -2
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.d.ts +7 -0
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +39 -0
  5. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -0
  6. package/dist/components/AgeVerificationModal/AgeVerificationModal.test.d.ts +1 -0
  7. package/dist/components/AgeVerificationModal/AgeVerificationModal.test.js +27 -0
  8. package/dist/components/AgeVerificationModal/AgeVerificationModal.test.js.map +1 -0
  9. package/dist/components/AttachmentLinkModal/AttachmentLinkModal.stories.d.ts +2 -2
  10. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.stories.d.ts +2 -2
  11. package/dist/components/Auth/Auth.stories.d.ts +5 -5
  12. package/dist/components/Avatar/Avatar.js +2 -2
  13. package/dist/components/Avatar/Avatar.js.map +1 -1
  14. package/dist/components/Avatar/Avatar.stories.d.ts +5 -5
  15. package/dist/components/AvatarView/AvatarView.stories.d.ts +10 -10
  16. package/dist/components/AvatarView/components/fullbodyAvatar.d.ts +2 -1
  17. package/dist/components/AvatarView/components/fullbodyAvatar.js +6 -3
  18. package/dist/components/AvatarView/components/fullbodyAvatar.js.map +1 -1
  19. package/dist/components/AvatarView/components/loader.js +3 -1
  20. package/dist/components/AvatarView/components/loader.js.map +1 -1
  21. package/dist/components/AvatarView/index.d.ts +2 -1
  22. package/dist/components/AvatarView/index.js +2 -2
  23. package/dist/components/AvatarView/index.js.map +1 -1
  24. package/dist/components/AvatarView/utils/useMouthSpeaking.js +3 -1
  25. package/dist/components/AvatarView/utils/useMouthSpeaking.js.map +1 -1
  26. package/dist/components/Blob/Blob.stories.d.ts +4 -4
  27. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.d.ts +5 -5
  28. package/dist/components/ChangeMode/ChangeMode.stories.d.ts +3 -3
  29. package/dist/components/Chat/Chat.stories.d.ts +12 -12
  30. package/dist/components/ChatBubble/ChatBubble.stories.d.ts +7 -7
  31. package/dist/components/ChatInputs/ChatInputs.js +2 -1
  32. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  33. package/dist/components/ChatInputs/ChatInputs.stories.d.ts +9 -9
  34. package/dist/components/ChatTextArea/ChatTextArea.stories.d.ts +4 -4
  35. package/dist/components/CustomGLBModelViewer/ModelViewer.stories.d.ts +2 -2
  36. package/dist/components/DateSelector/DateSelector.d.ts +9 -0
  37. package/dist/components/DateSelector/DateSelector.js +61 -0
  38. package/dist/components/DateSelector/DateSelector.js.map +1 -0
  39. package/dist/components/DateSelector/DateSelector.test.d.ts +1 -0
  40. package/dist/components/DateSelector/DateSelector.test.js +24 -0
  41. package/dist/components/DateSelector/DateSelector.test.js.map +1 -0
  42. package/dist/components/ExportHistoryButton/ExportHistoryButton.stories.d.ts +5 -5
  43. package/dist/components/FeedbackButtons/FeedbackButtons.stories.d.ts +4 -4
  44. package/dist/components/Header/Header.d.ts +1 -0
  45. package/dist/components/Header/Header.js +26 -2
  46. package/dist/components/Header/Header.js.map +1 -1
  47. package/dist/components/Header/Header.stories.d.ts +7 -7
  48. package/dist/components/ImageUpload/ImageUpload.stories.d.ts +8 -8
  49. package/dist/components/MediaWidget/LinkItemWidget.d.ts +2 -1
  50. package/dist/components/MediaWidget/LinkItemWidget.js +10 -2
  51. package/dist/components/MediaWidget/LinkItemWidget.js.map +1 -1
  52. package/dist/components/MediaWidget/LinkItemWidget.stories.d.ts +2 -2
  53. package/dist/components/MediaWidget/MediaItemWidget.d.ts +3 -1
  54. package/dist/components/MediaWidget/MediaItemWidget.js +44 -72
  55. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  56. package/dist/components/MediaWidget/MediaItemWidget.stories.d.ts +3 -3
  57. package/dist/components/MediaWidget/MediaWidget.js +10 -7
  58. package/dist/components/MediaWidget/MediaWidget.js.map +1 -1
  59. package/dist/components/MediaWidget/MediaWidget.stories.d.ts +5 -5
  60. package/dist/components/MemoriWidget/MemoriWidget.d.ts +3 -2
  61. package/dist/components/MemoriWidget/MemoriWidget.js +92 -25
  62. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  63. package/dist/components/MemoriWidget/MemoriWidget.stories.d.ts +8 -8
  64. package/dist/components/PoweredBy/PoweredBy.stories.d.ts +4 -4
  65. package/dist/components/SendOnEnterMenu/SendOnEnterMenu.stories.d.ts +3 -3
  66. package/dist/components/SettingsDrawer/SettingsDrawer.d.ts +13 -0
  67. package/dist/components/SettingsDrawer/SettingsDrawer.js +27 -0
  68. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -0
  69. package/dist/components/SettingsDrawer/SettingsDrawer.test.d.ts +1 -0
  70. package/dist/components/SettingsDrawer/SettingsDrawer.test.js +27 -0
  71. package/dist/components/SettingsDrawer/SettingsDrawer.test.js.map +1 -0
  72. package/dist/components/ShareButton/ShareButton.stories.d.ts +4 -4
  73. package/dist/components/Snippet/Snippet.stories.d.ts +15 -15
  74. package/dist/components/StartPanel/StartPanel.d.ts +1 -1
  75. package/dist/components/StartPanel/StartPanel.js +10 -7
  76. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  77. package/dist/components/StartPanel/StartPanel.stories.d.ts +6 -6
  78. package/dist/components/StartPanel/StartPanel.test.js +7 -0
  79. package/dist/components/StartPanel/StartPanel.test.js.map +1 -1
  80. package/dist/components/UploadMenu/UploadMenu.stories.d.ts +4 -4
  81. package/dist/components/icons/Refresh.d.ts +5 -0
  82. package/dist/components/icons/Refresh.js +6 -0
  83. package/dist/components/icons/Refresh.js.map +1 -0
  84. package/dist/components/icons/SelectIcon.d.ts +5 -0
  85. package/dist/components/icons/SelectIcon.js +6 -0
  86. package/dist/components/icons/SelectIcon.js.map +1 -0
  87. package/dist/components/icons/icons.stories.d.ts +2 -2
  88. package/dist/components/layouts/FullPage.d.ts +17 -0
  89. package/dist/components/layouts/FullPage.js +8 -0
  90. package/dist/components/layouts/FullPage.js.map +1 -0
  91. package/dist/components/layouts/FullPage.test.d.ts +1 -0
  92. package/dist/components/layouts/FullPage.test.js +12 -0
  93. package/dist/components/layouts/FullPage.test.js.map +1 -0
  94. package/dist/components/layouts/Totem.d.ts +17 -0
  95. package/dist/components/layouts/Totem.js +8 -0
  96. package/dist/components/layouts/Totem.js.map +1 -0
  97. package/dist/components/layouts/Totem.test.d.ts +1 -0
  98. package/dist/components/layouts/Totem.test.js +12 -0
  99. package/dist/components/layouts/Totem.test.js.map +1 -0
  100. package/dist/components/ui/Button.stories.d.ts +14 -14
  101. package/dist/components/ui/Card.stories.d.ts +7 -7
  102. package/dist/components/ui/Checkbox.d.ts +2 -0
  103. package/dist/components/ui/Checkbox.js +2 -2
  104. package/dist/components/ui/Checkbox.js.map +1 -1
  105. package/dist/components/ui/Checkbox.stories.d.ts +5 -5
  106. package/dist/components/ui/Drawer.stories.d.ts +9 -9
  107. package/dist/components/ui/Modal.stories.d.ts +9 -9
  108. package/dist/components/ui/Select.d.ts +15 -0
  109. package/dist/components/ui/Select.js +17 -0
  110. package/dist/components/ui/Select.js.map +1 -0
  111. package/dist/components/ui/Select.test.d.ts +1 -0
  112. package/dist/components/ui/Select.test.js +47 -0
  113. package/dist/components/ui/Select.test.js.map +1 -0
  114. package/dist/components/ui/Spin.stories.d.ts +4 -4
  115. package/dist/components/ui/Tooltip.stories.d.ts +6 -6
  116. package/dist/components/ui/definitions.stories.d.ts +2 -3
  117. package/dist/helpers/configuration.js +2 -0
  118. package/dist/helpers/configuration.js.map +1 -1
  119. package/dist/helpers/utils.js +1 -1
  120. package/dist/helpers/utils.js.map +1 -1
  121. package/dist/index.d.ts +2 -0
  122. package/dist/index.js +2 -2
  123. package/dist/index.js.map +1 -1
  124. package/dist/index.stories.d.ts +2 -2
  125. package/dist/locales/en.json +17 -0
  126. package/dist/locales/it.json +17 -0
  127. package/dist/mocks/data.js +5 -2
  128. package/dist/mocks/data.js.map +1 -1
  129. package/esm/components/AgeVerificationModal/AgeVerificationModal.d.ts +7 -0
  130. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +36 -0
  131. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -0
  132. package/esm/components/AgeVerificationModal/AgeVerificationModal.test.d.ts +1 -0
  133. package/esm/components/AgeVerificationModal/AgeVerificationModal.test.js +24 -0
  134. package/esm/components/AgeVerificationModal/AgeVerificationModal.test.js.map +1 -0
  135. package/esm/components/Avatar/Avatar.js +2 -2
  136. package/esm/components/Avatar/Avatar.js.map +1 -1
  137. package/esm/components/AvatarView/components/fullbodyAvatar.d.ts +2 -1
  138. package/esm/components/AvatarView/components/fullbodyAvatar.js +7 -4
  139. package/esm/components/AvatarView/components/fullbodyAvatar.js.map +1 -1
  140. package/esm/components/AvatarView/components/loader.js +2 -1
  141. package/esm/components/AvatarView/components/loader.js.map +1 -1
  142. package/esm/components/AvatarView/index.d.ts +2 -1
  143. package/esm/components/AvatarView/index.js +2 -2
  144. package/esm/components/AvatarView/index.js.map +1 -1
  145. package/esm/components/AvatarView/utils/useMouthSpeaking.js +3 -1
  146. package/esm/components/AvatarView/utils/useMouthSpeaking.js.map +1 -1
  147. package/esm/components/ChatInputs/ChatInputs.js +2 -1
  148. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  149. package/esm/components/DateSelector/DateSelector.d.ts +9 -0
  150. package/esm/components/DateSelector/DateSelector.js +58 -0
  151. package/esm/components/DateSelector/DateSelector.js.map +1 -0
  152. package/esm/components/DateSelector/DateSelector.test.d.ts +1 -0
  153. package/esm/components/DateSelector/DateSelector.test.js +21 -0
  154. package/esm/components/DateSelector/DateSelector.test.js.map +1 -0
  155. package/esm/components/Header/Header.d.ts +1 -0
  156. package/esm/components/Header/Header.js +26 -2
  157. package/esm/components/Header/Header.js.map +1 -1
  158. package/esm/components/MediaWidget/LinkItemWidget.d.ts +2 -1
  159. package/esm/components/MediaWidget/LinkItemWidget.js +10 -2
  160. package/esm/components/MediaWidget/LinkItemWidget.js.map +1 -1
  161. package/esm/components/MediaWidget/MediaItemWidget.d.ts +3 -1
  162. package/esm/components/MediaWidget/MediaItemWidget.js +44 -72
  163. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  164. package/esm/components/MediaWidget/MediaWidget.js +11 -8
  165. package/esm/components/MediaWidget/MediaWidget.js.map +1 -1
  166. package/esm/components/MemoriWidget/MemoriWidget.d.ts +3 -2
  167. package/esm/components/MemoriWidget/MemoriWidget.js +92 -25
  168. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  169. package/esm/components/SettingsDrawer/SettingsDrawer.d.ts +13 -0
  170. package/esm/components/SettingsDrawer/SettingsDrawer.js +24 -0
  171. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -0
  172. package/esm/components/SettingsDrawer/SettingsDrawer.test.d.ts +1 -0
  173. package/esm/components/SettingsDrawer/SettingsDrawer.test.js +24 -0
  174. package/esm/components/SettingsDrawer/SettingsDrawer.test.js.map +1 -0
  175. package/esm/components/StartPanel/StartPanel.d.ts +1 -1
  176. package/esm/components/StartPanel/StartPanel.js +10 -7
  177. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  178. package/esm/components/StartPanel/StartPanel.test.js +7 -0
  179. package/esm/components/StartPanel/StartPanel.test.js.map +1 -1
  180. package/esm/components/icons/Refresh.d.ts +5 -0
  181. package/esm/components/icons/Refresh.js +4 -0
  182. package/esm/components/icons/Refresh.js.map +1 -0
  183. package/esm/components/icons/SelectIcon.d.ts +5 -0
  184. package/esm/components/icons/SelectIcon.js +4 -0
  185. package/esm/components/icons/SelectIcon.js.map +1 -0
  186. package/esm/components/layouts/FullPage.d.ts +17 -0
  187. package/esm/components/layouts/FullPage.js +5 -0
  188. package/esm/components/layouts/FullPage.js.map +1 -0
  189. package/esm/components/layouts/FullPage.test.d.ts +1 -0
  190. package/esm/components/layouts/FullPage.test.js +9 -0
  191. package/esm/components/layouts/FullPage.test.js.map +1 -0
  192. package/esm/components/layouts/Totem.d.ts +17 -0
  193. package/esm/components/layouts/Totem.js +5 -0
  194. package/esm/components/layouts/Totem.js.map +1 -0
  195. package/esm/components/layouts/Totem.test.d.ts +1 -0
  196. package/esm/components/layouts/Totem.test.js +9 -0
  197. package/esm/components/layouts/Totem.test.js.map +1 -0
  198. package/esm/components/ui/Checkbox.d.ts +2 -0
  199. package/esm/components/ui/Checkbox.js +2 -2
  200. package/esm/components/ui/Checkbox.js.map +1 -1
  201. package/esm/components/ui/Select.d.ts +15 -0
  202. package/esm/components/ui/Select.js +14 -0
  203. package/esm/components/ui/Select.js.map +1 -0
  204. package/esm/components/ui/Select.test.d.ts +1 -0
  205. package/esm/components/ui/Select.test.js +44 -0
  206. package/esm/components/ui/Select.test.js.map +1 -0
  207. package/esm/helpers/configuration.js +2 -0
  208. package/esm/helpers/configuration.js.map +1 -1
  209. package/esm/helpers/utils.js +1 -1
  210. package/esm/helpers/utils.js.map +1 -1
  211. package/esm/index.d.ts +2 -0
  212. package/esm/index.js +2 -2
  213. package/esm/index.js.map +1 -1
  214. package/esm/locales/en.json +17 -0
  215. package/esm/locales/it.json +17 -0
  216. package/esm/mocks/data.js +5 -2
  217. package/esm/mocks/data.js.map +1 -1
  218. package/package.json +20 -16
  219. package/src/components/AgeVerificationModal/AgeVerificationModal.css +63 -0
  220. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +41 -0
  221. package/src/components/AgeVerificationModal/AgeVerificationModal.test.tsx +33 -0
  222. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +89 -0
  223. package/src/components/AgeVerificationModal/__snapshots__/AgeVerificationModal.test.tsx.snap +19 -0
  224. package/src/components/Avatar/Avatar.stories.tsx +20 -1
  225. package/src/components/Avatar/Avatar.tsx +2 -1
  226. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +2 -2
  227. package/src/components/AvatarView/AvatarView.stories.tsx +31 -0
  228. package/src/components/AvatarView/components/fullbodyAvatar.tsx +8 -6
  229. package/src/components/AvatarView/components/loader.tsx +15 -12
  230. package/src/components/AvatarView/index.tsx +4 -1
  231. package/src/components/AvatarView/utils/useMouthSpeaking.ts +3 -1
  232. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +67 -67
  233. package/src/components/ChatBubble/ChatBubble.css +1 -2
  234. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +4 -4
  235. package/src/components/ChatInputs/ChatInputs.css +14 -3
  236. package/src/components/ChatInputs/ChatInputs.tsx +2 -0
  237. package/src/components/ChatInputs/__snapshots__/ChatInputs.test.tsx.snap +5 -5
  238. package/src/components/DateSelector/DateSelector.css +135 -0
  239. package/src/components/DateSelector/DateSelector.stories.tsx +34 -0
  240. package/src/components/DateSelector/DateSelector.test.tsx +38 -0
  241. package/src/components/DateSelector/DateSelector.tsx +203 -0
  242. package/src/components/DateSelector/__snapshots__/DateSelector.test.tsx.snap +14938 -0
  243. package/src/components/Header/Header.stories.tsx +23 -5
  244. package/src/components/Header/Header.tsx +47 -1
  245. package/src/components/MediaWidget/LinkItemWidget.tsx +20 -1
  246. package/src/components/MediaWidget/MediaItemWidget.css +67 -0
  247. package/src/components/MediaWidget/MediaItemWidget.tsx +72 -71
  248. package/src/components/MediaWidget/MediaWidget.css +9 -0
  249. package/src/components/MediaWidget/MediaWidget.stories.tsx +8 -0
  250. package/src/components/MediaWidget/MediaWidget.tsx +44 -27
  251. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +1 -1
  252. package/src/components/MemoriWidget/MemoriWidget.css +1 -1
  253. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +12 -0
  254. package/src/components/MemoriWidget/MemoriWidget.tsx +178 -33
  255. package/src/components/SettingsDrawer/SettingsDrawer.css +5 -0
  256. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +57 -0
  257. package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +61 -0
  258. package/src/components/SettingsDrawer/SettingsDrawer.tsx +108 -0
  259. package/src/components/SettingsDrawer/__snapshots__/SettingsDrawer.test.tsx.snap +19 -0
  260. package/src/components/StartPanel/StartPanel.css +8 -2
  261. package/src/components/StartPanel/StartPanel.stories.tsx +66 -2
  262. package/src/components/StartPanel/StartPanel.test.tsx +21 -0
  263. package/src/components/StartPanel/StartPanel.tsx +28 -23
  264. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +420 -67
  265. package/src/components/icons/Refresh.tsx +30 -0
  266. package/src/components/icons/SelectIcon.tsx +28 -0
  267. package/src/components/layouts/FullPage.test.tsx +17 -0
  268. package/src/components/layouts/{Default.tsx → FullPage.tsx} +2 -2
  269. package/src/components/layouts/Totem.test.tsx +17 -0
  270. package/src/components/layouts/Totem.tsx +52 -0
  271. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +391 -0
  272. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +422 -0
  273. package/src/components/layouts/layouts.stories.tsx +155 -0
  274. package/src/components/layouts/totem.css +148 -0
  275. package/src/components/ui/Button.css +4 -0
  276. package/src/components/ui/Checkbox.tsx +6 -0
  277. package/src/components/ui/Drawer.css +24 -2
  278. package/src/components/ui/Select.css +135 -0
  279. package/src/components/ui/Select.stories.tsx +79 -0
  280. package/src/components/ui/Select.test.tsx +84 -0
  281. package/src/components/ui/Select.tsx +73 -0
  282. package/src/components/ui/Spin.css +2 -0
  283. package/src/components/ui/__snapshots__/Select.test.tsx.snap +278 -0
  284. package/src/helpers/configuration.ts +4 -2
  285. package/src/helpers/utils.ts +3 -2
  286. package/src/index.stories.tsx +41 -1
  287. package/src/index.tsx +7 -2
  288. package/src/locales/en.json +17 -0
  289. package/src/locales/it.json +17 -0
  290. package/src/mocks/data.ts +5 -2
  291. package/src/styles.css +24 -2
@@ -0,0 +1,148 @@
1
+ .memori-widget.memori-layout-totem {
2
+ height: 100vh !important;
3
+ }
4
+
5
+ .memori-widget.memori-layout-totem .memori--global-background.no-background-image {
6
+ background: linear-gradient(#333, #eee);
7
+ }
8
+
9
+ .memori-widget > .memori-spin.memori-totem-layout {
10
+ display: flex;
11
+ height: 100%;
12
+ flex-direction: column;
13
+
14
+ /* --memori-text-color: #fff; */
15
+ }
16
+
17
+ .memori-totem-layout--header {
18
+ text-align: right;
19
+ }
20
+
21
+ .memori-totem-layout--avatar {
22
+ flex: 1;
23
+ }
24
+
25
+ .memori-totem-layout--avatar .memori--avatar-wrapper {
26
+ position: fixed;
27
+ z-index: 0;
28
+ top: 0;
29
+ left: 0;
30
+ overflow: hidden;
31
+ width: 100%;
32
+ }
33
+
34
+ .memori-totem-layout .memori-header {
35
+ position: relative;
36
+ z-index: 100;
37
+ display: inline-flex;
38
+ width: auto;
39
+ height: auto;
40
+ flex-direction: column;
41
+ }
42
+
43
+ .memori-totem-layout .memori-header .memori-share-button,
44
+ .memori-totem-layout .memori-header .memori-header--button + .memori-header--button {
45
+ margin-top: 0.25rem;
46
+ margin-left: 0;
47
+ }
48
+
49
+ .memori-totem-layout .memori-chat--cover {
50
+ display: none;
51
+ }
52
+
53
+ .memori-totem-layout .memori--cover {
54
+ padding: 0;
55
+ background: none;
56
+ }
57
+
58
+ .memori-totem-layout .memori--powered-by {
59
+ top: 0;
60
+ bottom: auto;
61
+ }
62
+
63
+ .memori-totem-layout--avatar .memori--avatar-wrapper > div {
64
+ overflow: visible !important;
65
+ /* width: 100% !important;
66
+ height: 100% !important; */
67
+ width: auto !important;
68
+ height: 90vh !important;
69
+ max-height: 90vh;
70
+ border-radius: 0;
71
+ transform: scale(1.7) translate(0px, 10vh);
72
+ }
73
+
74
+ .memori-totem-layout--avatar .memori--avatar-wrapper canvas {
75
+ width: auto !important;
76
+ max-width: 100%;
77
+ height: 100% !important;
78
+ max-height: 100%;
79
+ }
80
+
81
+ .memori-totem-layout--controls {
82
+ position: relative;
83
+ z-index: 5;
84
+ }
85
+
86
+ .memori-totem-layout--controls .memori--start-panel,
87
+ .memori-totem-layout--controls .memori-chat--history,
88
+ .memori-totem-layout--controls .memori-chat--content {
89
+ background: transparent;
90
+ }
91
+
92
+ .memori-totem-layout--controls .memori--start-panel,
93
+ .memori-totem-layout--controls .memori-chat--wrapper {
94
+ width: 80vw;
95
+ max-width: 800px;
96
+ padding: 1rem;
97
+ margin: 0 auto;
98
+ }
99
+
100
+ .memori-totem-layout .memori--avatar-toggle {
101
+ display: none;
102
+ width: 100%;
103
+ justify-content: center;
104
+ }
105
+
106
+ .memori-totem-layout .memori--title,
107
+ .memori-totem-layout .memori--description,
108
+ .memori-totem-layout .memori--needsPosition {
109
+ color: var(--memori-text-color);
110
+ }
111
+
112
+ .memori-totem-layout .memori--global-background-image {
113
+ background-image: linear-gradient(rgba(0, 0, 0, 0.8), rgba(200, 200, 200, 0.8));
114
+ }
115
+
116
+ .memori-widget.memori-controls-center .memori-totem-layout--controls {
117
+ position: absolute;
118
+ top: 40%;
119
+ width: 100%;
120
+ }
121
+
122
+ .memori-totem-layout .memori-chat-inputs--mic {
123
+ font-size: 125%;
124
+ }
125
+
126
+ .memori-totem-layout--avatar .memori--avatar-wrapper > div canvas + div {
127
+ position: absolute !important;
128
+ width: 100%;
129
+ height: 100%;
130
+ transform: none !important;
131
+ }
132
+
133
+ .memori-totem-layout--avatar .memori--avatar-wrapper .avatar-loader {
134
+ display: flex;
135
+ width: 100%;
136
+ height: 100%;
137
+ align-items: center;
138
+ justify-content: center;
139
+ transform: none !important;
140
+ }
141
+
142
+ .memori-totem-layout--avatar .memori--avatar-wrapper .avatar-loader figure {
143
+ text-align: center;
144
+ }
145
+
146
+ .memori-totem-layout--avatar .memori--avatar-wrapper .avatar-loader .memori-spin--spinner {
147
+ background: none;
148
+ }
@@ -118,6 +118,10 @@
118
118
  line-height: 1;
119
119
  }
120
120
 
121
+ .memori-button--icon svg[fill="none"] {
122
+ fill: none;
123
+ }
124
+
121
125
  .memori-button--with-icon .memori-button--icon {
122
126
  margin-right: 0.5em;
123
127
  }
@@ -5,6 +5,8 @@ export interface Props extends React.HTMLAttributes<HTMLInputElement> {
5
5
  label: string;
6
6
  checked?: boolean;
7
7
  disabled?: boolean;
8
+ name?: string;
9
+ onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
8
10
  }
9
11
 
10
12
  const Checkbox: FC<Props> = ({
@@ -13,6 +15,8 @@ const Checkbox: FC<Props> = ({
13
15
  disabled = false,
14
16
  checked,
15
17
  children,
18
+ onChange,
19
+ name,
16
20
  ...props
17
21
  }) => (
18
22
  <label
@@ -24,9 +28,11 @@ const Checkbox: FC<Props> = ({
24
28
  <input
25
29
  type="checkbox"
26
30
  {...props}
31
+ name={name}
27
32
  disabled={disabled}
28
33
  defaultChecked={checked}
29
34
  className="memori-checkbox--input"
35
+ onChange={onChange}
30
36
  />
31
37
  <span className="memori-checkbox--inner" />
32
38
  </span>
@@ -1,6 +1,6 @@
1
1
  .memori-drawer {
2
2
  position: relative;
3
- z-index: 60;
3
+ z-index: 1000;
4
4
  }
5
5
 
6
6
  .memori-drawer--backdrop {
@@ -34,7 +34,9 @@
34
34
  position: relative;
35
35
  width: var(--memori-drawer--width, 100%);
36
36
  height: 100%;
37
- padding: 1.5rem 2rem;
37
+ height: 100vh;
38
+ box-sizing: border-box;
39
+ padding: 3rem 2rem 1.5rem;
38
40
  margin-right: 0;
39
41
  margin-left: auto;
40
42
  background-color: #fff;
@@ -44,6 +46,7 @@
44
46
  @media (min-width: 768px) {
45
47
  .memori-drawer--panel {
46
48
  width: var(--memori-drawer--width--md, 80%);
49
+ padding-top: 1.5rem;
47
50
  }
48
51
  }
49
52
 
@@ -77,16 +80,35 @@
77
80
  padding: 0.5rem;
78
81
  }
79
82
 
83
+ @media (max-width: 767px) {
84
+ .memori-drawer--close {
85
+ left: 0.5rem;
86
+ }
87
+ }
88
+
80
89
  .memori-drawer--close button {
81
90
  border-color: #fff;
82
91
  color: #fff;
83
92
  }
84
93
 
94
+ @media (max-width: 767px) {
95
+ .memori-drawer--close button {
96
+ color: #000;
97
+ }
98
+ }
99
+
85
100
  .memori-drawer--panel-left .memori-drawer--close {
86
101
  right: -3.5rem;
87
102
  left: auto;
88
103
  }
89
104
 
105
+ @media (max-width: 767px) {
106
+ .memori-drawer--panel-left .memori-drawer--close {
107
+ right: 0.5rem;
108
+ left: auto;
109
+ }
110
+ }
111
+
90
112
  .memori-drawer--footer {
91
113
  position: sticky;
92
114
  bottom: 0;
@@ -0,0 +1,135 @@
1
+ .memori-select {
2
+ max-width: 240px;
3
+ min-height: 38px;
4
+ }
5
+
6
+ .memori-select--button {
7
+ position: relative;
8
+ width: 100%;
9
+ min-height: 38px;
10
+ padding-top: .5rem;
11
+ padding-right: 2.5rem;
12
+ padding-bottom: .5rem;
13
+ padding-left: .75rem;
14
+ border: 1px solid #e5e7eb;
15
+ border-radius: .5rem;
16
+ background: #fff;
17
+ box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.1) 0px 2px 4px -2px;
18
+ cursor: pointer;
19
+ text-align: left;
20
+ }
21
+
22
+ .memori-select--button:focus {
23
+ border-color: #cbd5e0;
24
+ box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5);
25
+ }
26
+
27
+ .memori-select--button:focus-visible {
28
+ border-color: #63b3ed;
29
+ box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5);
30
+ }
31
+
32
+ .memori-select--button:hover {
33
+ border-color: #e2e8f0;
34
+ }
35
+
36
+ .memori-select--button:active {
37
+ border-color: #e2e8f0;
38
+ }
39
+
40
+ .memori-select--button:disabled {
41
+ border-color: #e2e8f0;
42
+ background-color: #f7fafc;
43
+ color: #a0aec0;
44
+ cursor: not-allowed;
45
+ }
46
+
47
+ @media (min-width: 640px) {
48
+ .memori-select--button {
49
+ font-size: .875rem;
50
+ line-height: 1.25rem;
51
+ }
52
+ }
53
+
54
+ .memori-select--label {
55
+ display: inline-block;
56
+ margin-bottom: 0.25rem;
57
+ }
58
+
59
+ .memori-select--value {
60
+ display: block;
61
+ overflow: hidden;
62
+ text-overflow: ellipsis;
63
+ white-space: nowrap;
64
+ }
65
+
66
+ .memori-select--value.memori-select--value-placeholder {
67
+ color: #a0aec0;
68
+ }
69
+
70
+ .memori-select--icon {
71
+ position: absolute;
72
+ top: 0;
73
+ right: 0;
74
+ bottom: 0;
75
+ display: flex;
76
+ align-items: center;
77
+ padding-right: .5rem;
78
+ pointer-events: none;
79
+ }
80
+
81
+ .memori-select--icon svg {
82
+ width: 1.25rem;
83
+ height: 1.25rem;
84
+ color: rgb(156 163 175/1);
85
+ }
86
+
87
+ ul.memori-select--options {
88
+ position: absolute;
89
+ z-index: 1;
90
+ overflow: auto;
91
+ width: 100%;
92
+ max-width: min(18rem, 30%);
93
+ max-height: 15rem;
94
+ padding-top: .25rem;
95
+ padding-right: 0;
96
+ padding-bottom: .25rem;
97
+ padding-left: 0;
98
+ border-radius: .375rem;
99
+ margin-top: .25rem;
100
+ margin-right: 0;
101
+ margin-bottom: 0;
102
+ margin-left: 0;
103
+ background: #fff;
104
+ box-shadow: rgb(255, 255, 255) 0px 0px 0px 0px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px, rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.1) 0px 4px 6px -4px;
105
+ list-style: none;
106
+ }
107
+
108
+ @media (min-width: 640px) {
109
+ .memori-select--options {
110
+ font-size: .875rem;
111
+ line-height: 1.25rem;
112
+ }
113
+ }
114
+
115
+ li.memori-select--option {
116
+ position: relative;
117
+ padding-top: .5rem;
118
+ padding-right: 1rem;
119
+ padding-bottom: .5rem;
120
+ padding-left: 1rem;
121
+ color: rgb(17 24 39/1);
122
+ cursor: pointer;
123
+ user-select: none;
124
+ }
125
+
126
+ li.memori-select--option:hover,
127
+ li.memori-select--option:focus {
128
+ background-color: #f7fafc;
129
+ }
130
+
131
+ li.memori-select--option:focus {
132
+ outline: 2px solid #63b3ed;
133
+ outline-offset: 2px;
134
+ }
135
+
@@ -0,0 +1,79 @@
1
+ import React from 'react';
2
+ import { Meta, Story } from '@storybook/react';
3
+ import Select, { Props } from './Select';
4
+ import './Select.css';
5
+
6
+ const meta: Meta = {
7
+ title: 'UI/Select',
8
+ component: Select,
9
+ argTypes: {
10
+ label: {
11
+ control: {
12
+ type: 'text',
13
+ },
14
+ },
15
+ className: {
16
+ control: {
17
+ type: 'text',
18
+ },
19
+ },
20
+ disabled: {
21
+ control: {
22
+ type: 'boolean',
23
+ },
24
+ },
25
+ },
26
+ parameters: {
27
+ controls: { expanded: true },
28
+ },
29
+ };
30
+
31
+ export default meta;
32
+
33
+ const Template: Story<Props> = args => <Select {...args} />;
34
+
35
+ // By passing using the Args format for exported stories, you can control the props for a component for reuse in a test
36
+ // https://storybook.js.org/docs/react/workflows/unit-testing
37
+ export const Default = Template.bind({});
38
+ Default.args = {
39
+ label: 'Select me',
40
+ options: [
41
+ { value: '1', label: '1' },
42
+ { value: '2', label: '2' },
43
+ { value: '3', label: '3' },
44
+ ],
45
+ };
46
+
47
+ export const Placeholder = Template.bind({});
48
+ Placeholder.args = {
49
+ label: 'Select me',
50
+ placeholder: 'Select me',
51
+ options: [
52
+ { value: '1', label: '1' },
53
+ { value: '2', label: '2' },
54
+ { value: '3', label: '3' },
55
+ ],
56
+ };
57
+
58
+ export const WithValue = Template.bind({});
59
+ WithValue.args = {
60
+ label: 'Select me',
61
+ value: '2',
62
+ options: [
63
+ { value: '1', label: '1' },
64
+ { value: '2', label: '2' },
65
+ { value: '3', label: '3' },
66
+ ],
67
+ };
68
+
69
+ export const Disabled = Template.bind({});
70
+ Disabled.args = {
71
+ label: `You can't select me`,
72
+ options: [
73
+ { value: '1', label: '1' },
74
+ { value: '2', label: '2' },
75
+ { value: '3', label: '3' },
76
+ ],
77
+ value: 2,
78
+ disabled: true,
79
+ };
@@ -0,0 +1,84 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import Select from './Select';
4
+
5
+ it('renders Select unchanged', () => {
6
+ const { container } = render(
7
+ <Select
8
+ label="Select me"
9
+ options={[
10
+ { value: '1', label: '1' },
11
+ { value: '2', label: '2' },
12
+ { value: '3', label: '3' },
13
+ ]}
14
+ onChange={jest.fn()}
15
+ />
16
+ );
17
+ expect(container).toMatchSnapshot();
18
+ });
19
+
20
+ it('renders Select with placeholder unchanged', () => {
21
+ const { container } = render(
22
+ <Select
23
+ label="Select me"
24
+ placeholder="Select me"
25
+ options={[
26
+ { value: '1', label: '1' },
27
+ { value: '2', label: '2' },
28
+ { value: '3', label: '3' },
29
+ ]}
30
+ onChange={jest.fn()}
31
+ />
32
+ );
33
+ expect(container).toMatchSnapshot();
34
+ });
35
+
36
+ it('renders Select with value unchanged', () => {
37
+ const { container } = render(
38
+ <Select
39
+ label="Select me"
40
+ value="2"
41
+ options={[
42
+ { value: '1', label: '1' },
43
+ { value: '2', label: '2' },
44
+ { value: '3', label: '3' },
45
+ ]}
46
+ onChange={jest.fn()}
47
+ />
48
+ );
49
+ expect(container).toMatchSnapshot();
50
+ });
51
+
52
+ it('renders Select with custom value display unchanged', () => {
53
+ const { container } = render(
54
+ <Select
55
+ label="Select me"
56
+ value="2"
57
+ displayValue="Two"
58
+ options={[
59
+ { value: '1', label: 'One' },
60
+ { value: '2', label: 'Two' },
61
+ { value: '3', label: 'Three' },
62
+ ]}
63
+ onChange={jest.fn()}
64
+ />
65
+ );
66
+ expect(container).toMatchSnapshot();
67
+ });
68
+
69
+ it('renders Select disabled unchanged', () => {
70
+ const { container } = render(
71
+ <Select
72
+ label="Select me"
73
+ value="2"
74
+ options={[
75
+ { value: '1', label: '1' },
76
+ { value: '2', label: '2' },
77
+ { value: '3', label: '3' },
78
+ ]}
79
+ disabled
80
+ onChange={jest.fn()}
81
+ />
82
+ );
83
+ expect(container).toMatchSnapshot();
84
+ });
@@ -0,0 +1,73 @@
1
+ import React, { Fragment } from 'react';
2
+ import cx from 'classnames';
3
+ import { Listbox, Transition } from '@headlessui/react';
4
+ import SelectIcon from '../icons/SelectIcon';
5
+
6
+ export interface Props<T = any> {
7
+ className?: string;
8
+ value?: T;
9
+ displayValue?: string;
10
+ onChange: (value: T) => void;
11
+ options: { value: T; label: any }[];
12
+ disabled?: boolean;
13
+ label?: string;
14
+ placeholder?: string;
15
+ }
16
+
17
+ const Select = ({
18
+ className,
19
+ value,
20
+ displayValue,
21
+ options,
22
+ onChange,
23
+ disabled = false,
24
+ label,
25
+ placeholder,
26
+ }: Props) => {
27
+ return (
28
+ <div className={cx('memori-select', className)}>
29
+ <Listbox
30
+ value={value}
31
+ onChange={value => {
32
+ onChange(value);
33
+ }}
34
+ disabled={disabled}
35
+ name="day"
36
+ >
37
+ <Listbox.Label className="memori-select--label">{label}:</Listbox.Label>
38
+ <Listbox.Button aria-label={label} className="memori-select--button">
39
+ <span
40
+ className={cx('memori-select--value', {
41
+ 'memori-select--value-placeholder': !value,
42
+ })}
43
+ >
44
+ {value ? displayValue || value : placeholder}
45
+ </span>
46
+ <span className="memori-select--icon">
47
+ <SelectIcon />
48
+ </span>
49
+ </Listbox.Button>
50
+ <Transition
51
+ as={Fragment}
52
+ leave="transition ease-in duration-100"
53
+ leaveFrom="opacity-100"
54
+ leaveTo="opacity-0"
55
+ >
56
+ <Listbox.Options className="memori-select--options">
57
+ {options.map(opt => (
58
+ <Listbox.Option
59
+ key={opt.value}
60
+ value={opt.value}
61
+ className="memori-select--option"
62
+ >
63
+ {opt.label}
64
+ </Listbox.Option>
65
+ ))}
66
+ </Listbox.Options>
67
+ </Transition>
68
+ </Listbox>
69
+ </div>
70
+ );
71
+ };
72
+
73
+ export default Select;
@@ -21,7 +21,9 @@
21
21
 
22
22
  .memori-spin--spinner svg {
23
23
  width: 30%;
24
+ max-width: 5rem;
24
25
  height: 30%;
26
+ max-height: 5rem;
25
27
  }
26
28
 
27
29
  .memori-spin--primary svg {