@100mslive/roomkit-react 0.3.23 → 0.3.24-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (194) hide show
  1. package/dist/Accordion/Accordion.d.ts +134 -322
  2. package/dist/Accordion/index.d.ts +134 -322
  3. package/dist/Avatar/Avatar.d.ts +47 -141
  4. package/dist/Button/Button.d.ts +47 -141
  5. package/dist/Checkbox/Checkbox.d.ts +134 -322
  6. package/dist/Collapsible/Collapsible.d.ts +201 -483
  7. package/dist/ConferenceScreen-CLPW3BGP.css +2780 -0
  8. package/dist/{HLSView-S4NJF7Q2.css.map → ConferenceScreen-CLPW3BGP.css.map} +1 -1
  9. package/dist/ConferenceScreen-M6RBPTAJ.js +1774 -0
  10. package/dist/ConferenceScreen-M6RBPTAJ.js.map +7 -0
  11. package/dist/Divider/Divider.d.ts +134 -322
  12. package/dist/Dropdown/Dropdown.d.ts +804 -1932
  13. package/dist/EmbedView-DDSO7ZCV.js +17 -0
  14. package/dist/EmbedView-DDSO7ZCV.js.map +7 -0
  15. package/dist/EmbedView-HGIUZHKA.css +2780 -0
  16. package/dist/EmbedView-HGIUZHKA.css.map +7 -0
  17. package/dist/EmojiReaction-23JDKJD4.js +11 -0
  18. package/dist/EmojiReaction-23JDKJD4.js.map +7 -0
  19. package/dist/Fieldset/Fieldset.d.ts +47 -141
  20. package/dist/Footer/Footer.d.ts +536 -1288
  21. package/dist/{HLSView-S4NJF7Q2.css → HLSView-OW77EAAO.css} +3 -3
  22. package/dist/HLSView-OW77EAAO.css.map +7 -0
  23. package/dist/{HLSView-HYI6LLL6.js → HLSView-Q6GEB3UM.js} +38 -24
  24. package/dist/HLSView-Q6GEB3UM.js.map +7 -0
  25. package/dist/IconButton/IconButton.d.ts +47 -141
  26. package/dist/Input/Input.d.ts +362 -926
  27. package/dist/Label/Label.d.ts +47 -141
  28. package/dist/Layout/Box.d.ts +47 -141
  29. package/dist/Layout/Flex.d.ts +47 -141
  30. package/dist/LeaveScreen-BYTE73MT.js +556 -0
  31. package/dist/LeaveScreen-BYTE73MT.js.map +7 -0
  32. package/dist/LeaveScreen-P7AATEIF.css +2780 -0
  33. package/dist/LeaveScreen-P7AATEIF.css.map +7 -0
  34. package/dist/Link/Link.d.ts +47 -141
  35. package/dist/Modal/Dialog.d.ts +329 -987
  36. package/dist/Modal/DialogContent.d.ts +469 -1127
  37. package/dist/MoreSettings-LV5X2U6K.css +2780 -0
  38. package/dist/MoreSettings-LV5X2U6K.css.map +7 -0
  39. package/dist/MoreSettings-WSHMMNOC.js +16 -0
  40. package/dist/MoreSettings-WSHMMNOC.js.map +7 -0
  41. package/dist/PDFView-RIPRIIH6.css +2780 -0
  42. package/dist/PDFView-RIPRIIH6.css.map +7 -0
  43. package/dist/PDFView-ZFSG2ESE.js +84 -0
  44. package/dist/PDFView-ZFSG2ESE.js.map +7 -0
  45. package/dist/Pagination/StyledPagination.d.ts +268 -644
  46. package/dist/Polls-QWW5LTTB.js +1584 -0
  47. package/dist/Polls-QWW5LTTB.js.map +7 -0
  48. package/dist/Polls-ULYGUPPF.css +2780 -0
  49. package/dist/Polls-ULYGUPPF.css.map +7 -0
  50. package/dist/Popover/index.d.ts +201 -483
  51. package/dist/Prebuilt/IconButton.d.ts +134 -322
  52. package/dist/Prebuilt/components/Chat/ChatBody.d.ts +134 -322
  53. package/dist/Prebuilt/components/Leave/LeaveAtoms.d.ts +335 -805
  54. package/dist/Prebuilt/components/Notifications/DeviceChangeNotifications.d.ts +1 -0
  55. package/dist/Prebuilt/components/Notifications/ErrorNotifications.d.ts +1 -0
  56. package/dist/Prebuilt/components/Notifications/MessageNotifications.d.ts +1 -0
  57. package/dist/Prebuilt/components/Notifications/PollNotificationModal.d.ts +1 -0
  58. package/dist/Prebuilt/components/Notifications/RoleChangeNotification.d.ts +1 -0
  59. package/dist/Prebuilt/components/Settings/common.d.ts +134 -322
  60. package/dist/Progress/index.d.ts +134 -322
  61. package/dist/RadioGroup/RadioGroup.d.ts +201 -483
  62. package/dist/RaiseHand-K7NFLH7H.js +10 -0
  63. package/dist/RaiseHand-K7NFLH7H.js.map +7 -0
  64. package/dist/ReactSelect/ReactSelect.d.ts +670 -1610
  65. package/dist/RoleProminence-235AFT7F.js +116 -0
  66. package/dist/RoleProminence-235AFT7F.js.map +7 -0
  67. package/dist/RoleProminence-6XN3POS5.css +2780 -0
  68. package/dist/RoleProminence-6XN3POS5.css.map +7 -0
  69. package/dist/RoomDetailsPane-O5TFMTPI.css +2780 -0
  70. package/dist/RoomDetailsPane-O5TFMTPI.css.map +7 -0
  71. package/dist/RoomDetailsPane-RF3D3TDR.js +53 -0
  72. package/dist/RoomDetailsPane-RF3D3TDR.js.map +7 -0
  73. package/dist/ScreenshareLayout-KNEB3AJJ.css +2780 -0
  74. package/dist/ScreenshareLayout-KNEB3AJJ.css.map +7 -0
  75. package/dist/ScreenshareLayout-PSQMS3NC.js +358 -0
  76. package/dist/ScreenshareLayout-PSQMS3NC.js.map +7 -0
  77. package/dist/Select/Select.d.ts +201 -483
  78. package/dist/Sheet/Sheet.d.ts +329 -987
  79. package/dist/SidePaneTabs-I6DECE5R.css +2780 -0
  80. package/dist/SidePaneTabs-I6DECE5R.css.map +7 -0
  81. package/dist/SidePaneTabs-NXHBI2JB.js +1354 -0
  82. package/dist/SidePaneTabs-NXHBI2JB.js.map +7 -0
  83. package/dist/Slider/Slider.d.ts +47 -141
  84. package/dist/Stats/StyledStats.d.ts +402 -966
  85. package/dist/Switch/Switch.d.ts +47 -141
  86. package/dist/Tabs/Tabs.d.ts +268 -644
  87. package/dist/Text/Text.d.ts +47 -141
  88. package/dist/TextArea/TextArea.d.ts +47 -141
  89. package/dist/Theme/base.config.d.ts +26 -78
  90. package/dist/Theme/stitches.config.d.ts +1046 -1493
  91. package/dist/TileMenu/StyledMenuTile.d.ts +469 -1127
  92. package/dist/Toast/Toast.d.ts +382 -946
  93. package/dist/VBPicker-2CQ3IIO7.js +322 -0
  94. package/dist/VBPicker-2CQ3IIO7.js.map +7 -0
  95. package/dist/VBPicker-DCNYGO23.css +2780 -0
  96. package/dist/VBPicker-DCNYGO23.css.map +7 -0
  97. package/dist/Video/Video.d.ts +47 -141
  98. package/dist/VideoList/StyledVideoList.d.ts +201 -483
  99. package/dist/VideoTile/StyledVideoTile.d.ts +670 -1610
  100. package/dist/WaitingView-NZIUOXBI.js +10 -0
  101. package/dist/WaitingView-NZIUOXBI.js.map +7 -0
  102. package/dist/WhiteboardLayout-4YLFM3EY.js +96 -0
  103. package/dist/WhiteboardLayout-4YLFM3EY.js.map +7 -0
  104. package/dist/WhiteboardLayout-JUOBDFKY.css +2780 -0
  105. package/dist/WhiteboardLayout-JUOBDFKY.css.map +7 -0
  106. package/dist/android-perm-1.png +0 -0
  107. package/dist/audio-level.png +0 -0
  108. package/dist/chunk-3C7IESSI.js +254 -0
  109. package/dist/chunk-3C7IESSI.js.map +7 -0
  110. package/dist/chunk-7FD3VT6Q.js +114 -0
  111. package/dist/chunk-7FD3VT6Q.js.map +7 -0
  112. package/dist/chunk-AHI4HCY3.js +62 -0
  113. package/dist/chunk-AHI4HCY3.js.map +7 -0
  114. package/dist/chunk-BGSYLCVD.js +6337 -0
  115. package/dist/chunk-BGSYLCVD.js.map +7 -0
  116. package/dist/chunk-DANANDDE.js +418 -0
  117. package/dist/chunk-DANANDDE.js.map +7 -0
  118. package/dist/chunk-ETRNLEWQ.js +2658 -0
  119. package/dist/chunk-ETRNLEWQ.js.map +7 -0
  120. package/dist/chunk-EWPHJFZJ.js +487 -0
  121. package/dist/chunk-EWPHJFZJ.js.map +7 -0
  122. package/dist/chunk-F63YJBI4.js +98 -0
  123. package/dist/chunk-F63YJBI4.js.map +7 -0
  124. package/dist/chunk-GLAJUP3O.js +576 -0
  125. package/dist/chunk-GLAJUP3O.js.map +7 -0
  126. package/dist/chunk-GOXRTCTY.js +90 -0
  127. package/dist/chunk-GOXRTCTY.js.map +7 -0
  128. package/dist/chunk-HMCBZI3A.js +59 -0
  129. package/dist/chunk-HMCBZI3A.js.map +7 -0
  130. package/dist/chunk-HVYTC3PX.js +171 -0
  131. package/dist/chunk-HVYTC3PX.js.map +7 -0
  132. package/dist/chunk-LJVP6AWF.js +262 -0
  133. package/dist/chunk-LJVP6AWF.js.map +7 -0
  134. package/dist/chunk-LXJGCRKM.js +30 -0
  135. package/dist/chunk-LXJGCRKM.js.map +7 -0
  136. package/dist/chunk-MG3UGW66.js +16800 -0
  137. package/dist/chunk-MG3UGW66.js.map +7 -0
  138. package/dist/chunk-MUKUP7JU.js +161 -0
  139. package/dist/chunk-MUKUP7JU.js.map +7 -0
  140. package/dist/chunk-OV6MVDCL.js +41 -0
  141. package/dist/chunk-OV6MVDCL.js.map +7 -0
  142. package/dist/chunk-P6NV2XO4.js +178 -0
  143. package/dist/chunk-P6NV2XO4.js.map +7 -0
  144. package/dist/chunk-REL3HBSD.js +71 -0
  145. package/dist/chunk-REL3HBSD.js.map +7 -0
  146. package/dist/chunk-U4SQBXPZ.js +830 -0
  147. package/dist/chunk-U4SQBXPZ.js.map +7 -0
  148. package/dist/chunk-YEL5ZTFU.js +136 -0
  149. package/dist/chunk-YEL5ZTFU.js.map +7 -0
  150. package/dist/empty-chat.svg +12 -0
  151. package/dist/index.cjs.css +2 -2
  152. package/dist/index.cjs.css.map +1 -1
  153. package/dist/index.cjs.js +21713 -21508
  154. package/dist/index.cjs.js.map +4 -4
  155. package/dist/index.css +2 -2
  156. package/dist/index.css.map +1 -1
  157. package/dist/index.js +25 -15
  158. package/dist/ios-perm-0.png +0 -0
  159. package/dist/meta.cjs.json +5515 -5153
  160. package/dist/meta.esbuild.json +8998 -6138
  161. package/dist/pdf-share.png +0 -0
  162. package/dist/screen-share.png +0 -0
  163. package/dist/transaction_error.svg +12 -0
  164. package/package.json +8 -8
  165. package/src/Avatar/Avatar.tsx +1 -1
  166. package/src/Popover/Popover.stories.tsx +1 -1
  167. package/src/Prebuilt/App.tsx +6 -2
  168. package/src/Prebuilt/components/Chat/Chat.tsx +12 -8
  169. package/src/Prebuilt/components/Chat/ChatFooter.tsx +1 -1
  170. package/src/Prebuilt/components/MoreSettings/SplitComponents/MwebOptions.tsx +14 -1
  171. package/src/Prebuilt/components/Notifications/DeviceChangeNotifications.tsx +18 -0
  172. package/src/Prebuilt/components/Notifications/ErrorNotifications.tsx +56 -0
  173. package/src/Prebuilt/components/Notifications/MessageNotifications.tsx +24 -0
  174. package/src/Prebuilt/components/Notifications/Notifications.tsx +13 -171
  175. package/src/Prebuilt/components/Notifications/PeerNotifications.tsx +9 -2
  176. package/src/Prebuilt/components/Notifications/PollNotificationModal.tsx +71 -0
  177. package/src/Prebuilt/components/Notifications/ReconnectNotifications.tsx +1 -5
  178. package/src/Prebuilt/components/Notifications/RoleChangeNotification.tsx +24 -0
  179. package/src/Prebuilt/components/Notifications/TrackBulkUnmuteModal.tsx +7 -5
  180. package/src/Prebuilt/components/Notifications/TrackNotifications.tsx +23 -1
  181. package/src/Prebuilt/components/Notifications/TrackUnmuteModal.tsx +13 -5
  182. package/src/Prebuilt/components/StatsForNerds.jsx +122 -9
  183. package/src/Prebuilt/components/VideoLayouts/GridLayout.tsx +43 -31
  184. package/src/Prebuilt/components/VideoLayouts/ProminenceLayout.tsx +2 -2
  185. package/src/Prebuilt/components/VirtualBackground/VBOption.tsx +3 -1
  186. package/src/Prebuilt/components/VirtualBackground/VBPicker.tsx +6 -0
  187. package/src/Prebuilt/layouts/HLSView.jsx +1 -0
  188. package/src/Prebuilt/layouts/PDFView.jsx +1 -0
  189. package/src/Prebuilt/layouts/SidePane.tsx +12 -6
  190. package/src/Prebuilt/layouts/VideoStreamingSection.tsx +35 -34
  191. package/src/Prebuilt/layouts/WaitingView.tsx +2 -2
  192. package/dist/HLSView-HYI6LLL6.js.map +0 -7
  193. package/dist/chunk-LRJSQMZ4.js +0 -34759
  194. package/dist/chunk-LRJSQMZ4.js.map +0 -7
@@ -0,0 +1,556 @@
1
+ import {
2
+ Header
3
+ } from "./chunk-LJVP6AWF.js";
4
+ import "./chunk-3C7IESSI.js";
5
+ import {
6
+ Button,
7
+ Checkbox,
8
+ Dialog,
9
+ Label,
10
+ Sheet,
11
+ TextArea,
12
+ useHMSAppStateContext,
13
+ useHMSPrebuiltContext
14
+ } from "./chunk-MG3UGW66.js";
15
+ import {
16
+ Text
17
+ } from "./chunk-MUKUP7JU.js";
18
+ import {
19
+ ToastManager
20
+ } from "./chunk-DANANDDE.js";
21
+ import {
22
+ Box,
23
+ Flex
24
+ } from "./chunk-GOXRTCTY.js";
25
+ import {
26
+ UserPreferencesKeys,
27
+ defaultPreviewPreference,
28
+ textEllipsis,
29
+ useRoomLayoutLeaveScreen,
30
+ useUserPreferences
31
+ } from "./chunk-BGSYLCVD.js";
32
+ import {
33
+ __async,
34
+ __spreadValues,
35
+ config,
36
+ init_define_process_env
37
+ } from "./chunk-GLAJUP3O.js";
38
+
39
+ // src/Prebuilt/components/LeaveScreen.tsx
40
+ init_define_process_env();
41
+ import React4 from "react";
42
+ import { ExitIcon } from "@100mslive/react-icons";
43
+
44
+ // src/Prebuilt/components/EndCallFeedback/Feedback.tsx
45
+ init_define_process_env();
46
+ import React3, { useState as useState2 } from "react";
47
+ import { useMedia as useMedia3 } from "react-use";
48
+
49
+ // src/Prebuilt/components/EndCallFeedback/FeedbackForm.tsx
50
+ init_define_process_env();
51
+ import React, { useState } from "react";
52
+ import { useMedia } from "react-use";
53
+ import { useHMSActions } from "@100mslive/react-sdk";
54
+ import { CheckIcon, CrossIcon } from "@100mslive/react-icons";
55
+ var FEEBACK_INDEX = {
56
+ THANK_YOU: -10,
57
+ INIT: -1
58
+ };
59
+ var FeedbackModal = ({
60
+ ratings,
61
+ index,
62
+ setIndex
63
+ }) => {
64
+ const isMobile = useMedia(config.media.md);
65
+ const onOpenChange = () => {
66
+ setIndex(FEEBACK_INDEX.INIT);
67
+ };
68
+ const avoidDefaultDomBehavior = (e) => {
69
+ e.preventDefault();
70
+ };
71
+ if (isMobile) {
72
+ return /* @__PURE__ */ React.createElement(Sheet.Root, { open: index !== FEEBACK_INDEX.INIT, onOpenChange }, /* @__PURE__ */ React.createElement(
73
+ Sheet.Content,
74
+ {
75
+ css: { bg: "$surface_dim", p: "$10", overflowY: "auto" },
76
+ onPointerDownOutside: avoidDefaultDomBehavior,
77
+ onInteractOutside: avoidDefaultDomBehavior
78
+ },
79
+ /* @__PURE__ */ React.createElement(FeedbackContent, { ratings, indexSelected: index, setIndex })
80
+ ));
81
+ }
82
+ return /* @__PURE__ */ React.createElement(Dialog.Root, { open: index !== FEEBACK_INDEX.INIT, onOpenChange }, /* @__PURE__ */ React.createElement(Dialog.Portal, null, /* @__PURE__ */ React.createElement(Dialog.Overlay, null), /* @__PURE__ */ React.createElement(
83
+ Dialog.Content,
84
+ {
85
+ css: { bg: "$surface_dim", width: "528px", p: "$12" },
86
+ onPointerDownOutside: avoidDefaultDomBehavior,
87
+ onInteractOutside: avoidDefaultDomBehavior
88
+ },
89
+ /* @__PURE__ */ React.createElement(FeedbackContent, { ratings, indexSelected: index, setIndex })
90
+ )));
91
+ };
92
+ var FeedbackContent = ({
93
+ ratings,
94
+ indexSelected,
95
+ setIndex
96
+ }) => {
97
+ const { feedback } = useRoomLayoutLeaveScreen();
98
+ const { endpoints } = useHMSPrebuiltContext();
99
+ const isMobile = useMedia(config.media.md);
100
+ const hmsActions = useHMSActions();
101
+ const [comment, setComment] = useState("");
102
+ const [selectedReasons, setSelectedReasons] = useState(/* @__PURE__ */ new Set());
103
+ const handleCheckedChange = (checked, index) => {
104
+ const newSelected = new Set(selectedReasons);
105
+ if (checked) {
106
+ newSelected.add(index);
107
+ } else {
108
+ newSelected.delete(index);
109
+ }
110
+ setSelectedReasons(newSelected);
111
+ };
112
+ const submitFeedback = () => __async(void 0, null, function* () {
113
+ if (indexSelected < 0 || ratings.length <= indexSelected) {
114
+ return;
115
+ }
116
+ try {
117
+ const reasons = [...selectedReasons].map((value) => {
118
+ var _a, _b;
119
+ return ((_b = (_a = ratings[indexSelected]) == null ? void 0 : _a.reasons) == null ? void 0 : _b[value]) || "";
120
+ });
121
+ yield hmsActions.submitSessionFeedback(
122
+ {
123
+ question: `${feedback == null ? void 0 : feedback.title} | ${ratings[indexSelected].question || ""}`,
124
+ rating: ratings[indexSelected].value || 1,
125
+ min_rating: 1,
126
+ max_rating: ratings.length,
127
+ reasons: selectedReasons.size === 0 ? [] : reasons,
128
+ comment
129
+ },
130
+ endpoints == null ? void 0 : endpoints.event
131
+ );
132
+ } catch (e) {
133
+ console.error(e);
134
+ }
135
+ setIndex(FEEBACK_INDEX.THANK_YOU);
136
+ });
137
+ return /* @__PURE__ */ React.createElement(
138
+ Flex,
139
+ {
140
+ css: {
141
+ p: indexSelected === FEEBACK_INDEX.INIT ? "$12 !important" : "0",
142
+ bg: "$surface_dim",
143
+ r: "$3",
144
+ gap: "$10"
145
+ },
146
+ direction: "column"
147
+ },
148
+ /* @__PURE__ */ React.createElement(
149
+ FeedbackHeader,
150
+ {
151
+ ratings,
152
+ indexSelected,
153
+ onEmojiClicked: (value) => {
154
+ setSelectedReasons(/* @__PURE__ */ new Set());
155
+ setIndex(value);
156
+ }
157
+ }
158
+ ),
159
+ /* @__PURE__ */ React.createElement(
160
+ FeedbackForm,
161
+ {
162
+ rating: ratings[indexSelected],
163
+ comment,
164
+ setComment,
165
+ selectedReasons,
166
+ handleCheckedChange
167
+ }
168
+ ),
169
+ /* @__PURE__ */ React.createElement(
170
+ Button,
171
+ {
172
+ type: "submit",
173
+ icon: true,
174
+ css: {
175
+ alignSelf: isMobile ? "" : "end"
176
+ },
177
+ onClick: submitFeedback
178
+ },
179
+ (feedback == null ? void 0 : feedback.submit_btn_label) || "Submit Feedback"
180
+ )
181
+ );
182
+ };
183
+ var FeedbackHeader = ({
184
+ onEmojiClicked,
185
+ ratings,
186
+ indexSelected = FEEBACK_INDEX.INIT
187
+ }) => {
188
+ const isMobile = useMedia(config.media.md);
189
+ const { feedback } = useRoomLayoutLeaveScreen();
190
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Flex, { align: "center" }, /* @__PURE__ */ React.createElement(
191
+ Flex,
192
+ {
193
+ direction: "column",
194
+ css: {
195
+ flex: "1 1 0"
196
+ }
197
+ },
198
+ /* @__PURE__ */ React.createElement(
199
+ Text,
200
+ {
201
+ variant: isMobile ? "h6" : "h5",
202
+ css: {
203
+ c: "$on_surface_high",
204
+ fontStyle: "normal"
205
+ }
206
+ },
207
+ (feedback == null ? void 0 : feedback.title) || "How was your experience?"
208
+ ),
209
+ /* @__PURE__ */ React.createElement(
210
+ Text,
211
+ {
212
+ variant: isMobile ? "body2" : "body1",
213
+ css: {
214
+ c: "$on_surface_medium",
215
+ opacity: 0.9,
216
+ fontWeight: "$regular"
217
+ }
218
+ },
219
+ (feedback == null ? void 0 : feedback.sub_title) || "Your answers help us improve the quality."
220
+ )
221
+ ), indexSelected !== FEEBACK_INDEX.INIT ? /* @__PURE__ */ React.createElement(CrossIcon, { width: "24px", height: "24px", color: "white", onClick: () => onEmojiClicked(FEEBACK_INDEX.INIT) }) : null), /* @__PURE__ */ React.createElement(
222
+ Flex,
223
+ {
224
+ justify: "between",
225
+ css: {
226
+ gap: "$17",
227
+ c: "$on_surface_high",
228
+ "@md": {
229
+ gap: "0"
230
+ }
231
+ }
232
+ },
233
+ ratings.map((element, index) => {
234
+ return /* @__PURE__ */ React.createElement(
235
+ Flex,
236
+ {
237
+ align: "center",
238
+ direction: "column",
239
+ css: {
240
+ c: indexSelected === index || indexSelected === FEEBACK_INDEX.INIT ? "$on_surface_high" : "$on_surface_default",
241
+ gap: "$4"
242
+ },
243
+ onClick: () => onEmojiClicked(index),
244
+ key: `${index}`
245
+ },
246
+ /* @__PURE__ */ React.createElement(
247
+ Text,
248
+ {
249
+ css: {
250
+ fontWeight: "$semiBold",
251
+ fontSize: "$h4",
252
+ pb: "$1",
253
+ cursor: "pointer",
254
+ opacity: indexSelected === index || indexSelected === FEEBACK_INDEX.INIT ? 1 : 0.2,
255
+ "@md": {
256
+ fontSize: "$h5"
257
+ }
258
+ }
259
+ },
260
+ element.emoji
261
+ ),
262
+ /* @__PURE__ */ React.createElement(
263
+ Text,
264
+ {
265
+ variant: isMobile ? "body2" : "body1",
266
+ css: {
267
+ c: indexSelected === index || indexSelected === FEEBACK_INDEX.INIT ? "$on_surface_medium" : "$on_surface_low",
268
+ fontWeight: "$regular"
269
+ }
270
+ },
271
+ element.label
272
+ )
273
+ );
274
+ })
275
+ ));
276
+ };
277
+ var FeedbackForm = ({
278
+ rating,
279
+ comment,
280
+ setComment,
281
+ selectedReasons,
282
+ handleCheckedChange
283
+ }) => {
284
+ const { feedback } = useRoomLayoutLeaveScreen();
285
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, rating.reasons && rating.reasons.length > 0 && /* @__PURE__ */ React.createElement(
286
+ Flex,
287
+ {
288
+ direction: "column",
289
+ css: {
290
+ gap: "$4"
291
+ }
292
+ },
293
+ /* @__PURE__ */ React.createElement(
294
+ Text,
295
+ {
296
+ variant: "sub2",
297
+ css: {
298
+ c: "$on_surface_high",
299
+ fontWeight: "$semiBold",
300
+ fontSize: "$sm",
301
+ px: "$2"
302
+ }
303
+ },
304
+ rating.question || "What do you like/dislike here?"
305
+ ),
306
+ /* @__PURE__ */ React.createElement(
307
+ Flex,
308
+ {
309
+ css: {
310
+ alignItems: "flex-start",
311
+ alignSelf: "stretch",
312
+ flexWrap: "wrap",
313
+ gap: "$6",
314
+ flex: "1 1 calc(25% - 12px)",
315
+ "@md": {
316
+ flex: "1 1 calc(50% - 12px)"
317
+ },
318
+ "@sm": {
319
+ flex: "1 1 100%"
320
+ }
321
+ }
322
+ },
323
+ rating.reasons.map((option, index) => {
324
+ return /* @__PURE__ */ React.createElement(
325
+ Flex,
326
+ {
327
+ align: "center",
328
+ gap: "2",
329
+ key: index,
330
+ css: {
331
+ border: "1px solid $border_bright",
332
+ r: "$1",
333
+ p: "$6"
334
+ }
335
+ },
336
+ /* @__PURE__ */ React.createElement(
337
+ Checkbox.Root,
338
+ {
339
+ id: `${option}-${index}`,
340
+ checked: selectedReasons.has(index),
341
+ onCheckedChange: (checked) => handleCheckedChange(checked, index),
342
+ css: {
343
+ cursor: "pointer",
344
+ flexShrink: 0,
345
+ bg: "$on_secondary_low",
346
+ border: "1px solid $border_bright"
347
+ }
348
+ },
349
+ /* @__PURE__ */ React.createElement(Checkbox.Indicator, null, /* @__PURE__ */ React.createElement(CheckIcon, { width: 12, height: 12 }))
350
+ ),
351
+ /* @__PURE__ */ React.createElement(
352
+ Label,
353
+ {
354
+ htmlFor: `${option}-${index}`,
355
+ css: {
356
+ color: "$on_surface_high",
357
+ fontSize: "$sm",
358
+ fontWeight: "$regular",
359
+ lineHeight: "20px"
360
+ }
361
+ },
362
+ option
363
+ )
364
+ );
365
+ })
366
+ )
367
+ ), (feedback == null ? void 0 : feedback.comment) && /* @__PURE__ */ React.createElement(
368
+ Flex,
369
+ {
370
+ direction: "column",
371
+ css: {
372
+ gap: "$4"
373
+ }
374
+ },
375
+ /* @__PURE__ */ React.createElement(
376
+ Text,
377
+ {
378
+ variant: "body2",
379
+ css: {
380
+ c: "$on_surface_high",
381
+ fontWeight: "$regular",
382
+ fontSize: "$sm"
383
+ }
384
+ },
385
+ (feedback == null ? void 0 : feedback.comment.label) || "Additional comments (optional)"
386
+ ),
387
+ /* @__PURE__ */ React.createElement(
388
+ TextArea,
389
+ {
390
+ maxLength: 1024,
391
+ placeholder: (feedback == null ? void 0 : feedback.comment.placeholder) || "Tell us more...",
392
+ css: {
393
+ backgroundColor: "$surface_bright",
394
+ border: "1px solid $border_bright",
395
+ resize: "none",
396
+ height: "$36",
397
+ display: "flex"
398
+ },
399
+ value: comment,
400
+ onChange: (event) => setComment(event.target.value.trimStart())
401
+ }
402
+ )
403
+ ));
404
+ };
405
+
406
+ // src/Prebuilt/components/EndCallFeedback/ThankyouView.tsx
407
+ init_define_process_env();
408
+ import React2 from "react";
409
+ import { useMedia as useMedia2 } from "react-use";
410
+ import { UserMusicIcon } from "@100mslive/react-icons";
411
+ var ThankyouView = () => {
412
+ const isMobile = useMedia2(config.media.md);
413
+ return /* @__PURE__ */ React2.createElement(
414
+ Flex,
415
+ {
416
+ direction: isMobile ? "column" : "row",
417
+ align: "center",
418
+ css: {
419
+ gap: "$10",
420
+ border: "1px solid $border_default",
421
+ borderRadius: !isMobile ? "$3" : "$3 $3 0 0",
422
+ bg: "$surface_dim",
423
+ w: !isMobile ? "528px" : "410px",
424
+ p: "$12",
425
+ pb: isMobile ? "$16" : "$12",
426
+ "@md": {
427
+ position: "absolute",
428
+ bottom: "0"
429
+ }
430
+ }
431
+ },
432
+ /* @__PURE__ */ React2.createElement(UserMusicIcon, { width: "64px", height: "64px" }),
433
+ /* @__PURE__ */ React2.createElement(Flex, { direction: "column", align: isMobile ? "center" : "start" }, /* @__PURE__ */ React2.createElement(Text, { variant: "h5" }, "Thank you for your feedback"), /* @__PURE__ */ React2.createElement(
434
+ Text,
435
+ {
436
+ variant: "body1",
437
+ css: {
438
+ fontWeight: "$regular",
439
+ fontSize: "$md",
440
+ opacity: "0.9"
441
+ }
442
+ },
443
+ "Your answers help us improve."
444
+ ))
445
+ );
446
+ };
447
+
448
+ // src/Prebuilt/components/EndCallFeedback/Feedback.tsx
449
+ var Feedback = () => {
450
+ const { feedback } = useRoomLayoutLeaveScreen();
451
+ const [index, setIndex] = useState2(FEEBACK_INDEX.INIT);
452
+ const isMobile = useMedia3(config.media.md);
453
+ if (!feedback) {
454
+ return null;
455
+ }
456
+ const { ratings } = feedback;
457
+ if (!ratings) {
458
+ return null;
459
+ }
460
+ ratings.sort((a, b) => {
461
+ if (!a.value || !b.value) {
462
+ return 0;
463
+ }
464
+ return a.value - b.value;
465
+ });
466
+ if (index === FEEBACK_INDEX.THANK_YOU) {
467
+ return /* @__PURE__ */ React3.createElement(
468
+ Flex,
469
+ {
470
+ justify: "center",
471
+ css: {
472
+ pt: "$16"
473
+ }
474
+ },
475
+ /* @__PURE__ */ React3.createElement(ThankyouView, null)
476
+ );
477
+ }
478
+ return /* @__PURE__ */ React3.createElement(
479
+ Flex,
480
+ {
481
+ justify: "center",
482
+ css: {
483
+ pt: "$16",
484
+ w: isMobile ? "100%" : "528px"
485
+ }
486
+ },
487
+ index === FEEBACK_INDEX.INIT ? /* @__PURE__ */ React3.createElement(
488
+ Flex,
489
+ {
490
+ css: {
491
+ p: isMobile ? "$10" : "$12",
492
+ border: "1px solid $border_default",
493
+ bg: "$surface_dim",
494
+ borderRadius: !isMobile ? "$3" : "$3 $3 0 0",
495
+ gap: "$10",
496
+ "@md": {
497
+ position: "absolute",
498
+ bottom: "0",
499
+ w: "100%"
500
+ }
501
+ },
502
+ direction: "column"
503
+ },
504
+ /* @__PURE__ */ React3.createElement(FeedbackHeader, { ratings, onEmojiClicked: setIndex })
505
+ ) : /* @__PURE__ */ React3.createElement(FeedbackModal, { ratings, index, setIndex })
506
+ );
507
+ };
508
+
509
+ // src/Prebuilt/components/LeaveScreen.tsx
510
+ var LeaveScreen = () => {
511
+ const { rejoin } = useHMSAppStateContext();
512
+ const [previewPreference] = useUserPreferences(UserPreferencesKeys.PREVIEW, defaultPreviewPreference);
513
+ return /* @__PURE__ */ React4.createElement(Flex, { direction: "column", css: { size: "100%" } }, /* @__PURE__ */ React4.createElement(Box, { css: { h: "$18", "@md": { h: "$17" } }, "data-testid": "header" }, /* @__PURE__ */ React4.createElement(Header, null)), /* @__PURE__ */ React4.createElement(
514
+ Flex,
515
+ {
516
+ justify: "center",
517
+ direction: "column",
518
+ align: "center",
519
+ css: { bg: "$background_dim", flex: "1 1 0", position: "relative" }
520
+ },
521
+ /* @__PURE__ */ React4.createElement(Text, { variant: "h2", css: { fontWeight: "$semiBold" } }, "\u{1F44B}"),
522
+ /* @__PURE__ */ React4.createElement(Text, { variant: "h4", css: { color: "$on_surface_high", fontWeight: "$semiBold", mt: "$12" } }, "You left the room"),
523
+ /* @__PURE__ */ React4.createElement(
524
+ Text,
525
+ {
526
+ variant: "body1",
527
+ css: {
528
+ color: "$on_surface_medium",
529
+ mt: "$8",
530
+ fontWeight: "$regular",
531
+ textAlign: "center"
532
+ }
533
+ },
534
+ "Have a nice day",
535
+ previewPreference.name && /* @__PURE__ */ React4.createElement(Box, { as: "span", css: __spreadValues({}, textEllipsis(100)) }, ", ", previewPreference.name),
536
+ "!"
537
+ ),
538
+ /* @__PURE__ */ React4.createElement(Flex, { css: { mt: "$14", gap: "$10", alignItems: "center" } }, /* @__PURE__ */ React4.createElement(Text, { variant: "body1", css: { color: "$on_surface_medium", fontWeight: "$regular" } }, "Left by mistake?"), /* @__PURE__ */ React4.createElement(
539
+ Button,
540
+ {
541
+ onClick: () => {
542
+ rejoin();
543
+ ToastManager.clearAllToast();
544
+ },
545
+ "data-testid": "join_again_btn"
546
+ },
547
+ /* @__PURE__ */ React4.createElement(ExitIcon, null),
548
+ /* @__PURE__ */ React4.createElement(Text, { css: { ml: "$3", fontWeight: "$semiBold", color: "inherit" } }, "Rejoin")
549
+ )),
550
+ /* @__PURE__ */ React4.createElement(Feedback, null)
551
+ ));
552
+ };
553
+ export {
554
+ LeaveScreen
555
+ };
556
+ //# sourceMappingURL=LeaveScreen-BYTE73MT.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/Prebuilt/components/LeaveScreen.tsx", "../src/Prebuilt/components/EndCallFeedback/Feedback.tsx", "../src/Prebuilt/components/EndCallFeedback/FeedbackForm.tsx", "../src/Prebuilt/components/EndCallFeedback/ThankyouView.tsx"],
4
+ "sourcesContent": ["import React from 'react';\nimport { ExitIcon } from '@100mslive/react-icons';\nimport { Feedback } from './EndCallFeedback/Feedback';\n// @ts-ignore: No implicit Any\nimport { ToastManager } from './Toast/ToastManager';\nimport { Button } from '../../Button';\nimport { Box, Flex } from '../../Layout';\nimport { Text } from '../../Text';\nimport { useHMSAppStateContext } from '../AppStateContext';\nimport { Header } from './Header';\n// @ts-ignore: No implicit Any\nimport { defaultPreviewPreference, UserPreferencesKeys, useUserPreferences } from './hooks/useUserPreferences';\nimport { textEllipsis } from '../../utils';\n\nexport const LeaveScreen = () => {\n const { rejoin } = useHMSAppStateContext();\n const [previewPreference] = useUserPreferences(UserPreferencesKeys.PREVIEW, defaultPreviewPreference);\n return (\n <Flex direction=\"column\" css={{ size: '100%' }}>\n <Box css={{ h: '$18', '@md': { h: '$17' } }} data-testid=\"header\">\n <Header />\n </Box>\n <Flex\n justify=\"center\"\n direction=\"column\"\n align=\"center\"\n css={{ bg: '$background_dim', flex: '1 1 0', position: 'relative' }}\n >\n <Text variant=\"h2\" css={{ fontWeight: '$semiBold' }}>\n \uD83D\uDC4B\n </Text>\n <Text variant=\"h4\" css={{ color: '$on_surface_high', fontWeight: '$semiBold', mt: '$12' }}>\n You left the room\n </Text>\n <Text\n variant=\"body1\"\n css={{\n color: '$on_surface_medium',\n mt: '$8',\n fontWeight: '$regular',\n textAlign: 'center',\n }}\n >\n Have a nice day\n {previewPreference.name && (\n <Box as=\"span\" css={{ ...textEllipsis(100) }}>\n , {previewPreference.name}\n </Box>\n )}\n !\n </Text>\n <Flex css={{ mt: '$14', gap: '$10', alignItems: 'center' }}>\n <Text variant=\"body1\" css={{ color: '$on_surface_medium', fontWeight: '$regular' }}>\n Left by mistake?\n </Text>\n <Button\n onClick={() => {\n rejoin();\n ToastManager.clearAllToast();\n }}\n data-testid=\"join_again_btn\"\n >\n <ExitIcon />\n <Text css={{ ml: '$3', fontWeight: '$semiBold', color: 'inherit' }}>Rejoin</Text>\n </Button>\n </Flex>\n <Feedback />\n </Flex>\n </Flex>\n );\n};\n", "import React, { useState } from 'react';\nimport { useMedia } from 'react-use';\nimport { Flex } from '../../../Layout';\nimport { config as cssConfig } from '../../../Theme';\nimport { FEEBACK_INDEX, FeedbackHeader, FeedbackModal } from './FeedbackForm';\nimport { ThankyouView } from './ThankyouView';\nimport { useRoomLayoutLeaveScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n\nexport const Feedback = () => {\n const { feedback } = useRoomLayoutLeaveScreen();\n const [index, setIndex] = useState(FEEBACK_INDEX.INIT);\n const isMobile = useMedia(cssConfig.media.md);\n\n if (!feedback) {\n return null;\n }\n const { ratings } = feedback;\n if (!ratings) {\n return null;\n }\n ratings.sort((a, b) => {\n if (!a.value || !b.value) {\n return 0;\n }\n return a.value - b.value;\n });\n // TO show thank ypu page\n if (index === FEEBACK_INDEX.THANK_YOU) {\n return (\n <Flex\n justify=\"center\"\n css={{\n pt: '$16',\n }}\n >\n <ThankyouView />\n </Flex>\n );\n }\n return (\n <Flex\n justify=\"center\"\n css={{\n pt: '$16',\n w: isMobile ? '100%' : '528px',\n }}\n >\n {index === FEEBACK_INDEX.INIT ? (\n <Flex\n css={{\n p: isMobile ? '$10' : '$12',\n border: '1px solid $border_default',\n bg: '$surface_dim',\n borderRadius: !isMobile ? '$3' : '$3 $3 0 0',\n gap: '$10',\n '@md': {\n position: 'absolute',\n bottom: '0',\n w: '100%',\n },\n }}\n direction=\"column\"\n >\n <FeedbackHeader ratings={ratings} onEmojiClicked={setIndex} />\n </Flex>\n ) : (\n <FeedbackModal ratings={ratings} index={index} setIndex={setIndex} />\n )}\n </Flex>\n );\n};\n", "import React, { useState } from 'react';\nimport { useMedia } from 'react-use';\nimport { Rating } from '@100mslive/types-prebuilt/elements/feedback';\nimport { useHMSActions } from '@100mslive/react-sdk';\nimport { CheckIcon, CrossIcon } from '@100mslive/react-icons';\nimport { Button } from '../../../Button';\nimport { Checkbox } from '../../../Checkbox';\nimport { Label } from '../../../Label';\nimport { Flex } from '../../../Layout';\nimport { Dialog } from '../../../Modal';\nimport { Sheet } from '../../../Sheet';\nimport { Text } from '../../../Text';\nimport { TextArea } from '../../../TextArea';\nimport { config as cssConfig } from '../../../Theme';\nimport { useHMSPrebuiltContext } from '../../AppContext';\nimport { useRoomLayoutLeaveScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n\nexport const FEEBACK_INDEX = {\n THANK_YOU: -10,\n INIT: -1,\n};\nexport const FeedbackModal = ({\n ratings,\n index,\n setIndex,\n}: {\n ratings: Rating[];\n index: number;\n setIndex: (index: number) => void;\n}) => {\n const isMobile = useMedia(cssConfig.media.md);\n const onOpenChange = () => {\n setIndex(FEEBACK_INDEX.INIT);\n };\n const avoidDefaultDomBehavior = (e: Event) => {\n e.preventDefault();\n };\n if (isMobile) {\n return (\n <Sheet.Root open={index !== FEEBACK_INDEX.INIT} onOpenChange={onOpenChange}>\n <Sheet.Content\n css={{ bg: '$surface_dim', p: '$10', overflowY: 'auto' }}\n onPointerDownOutside={avoidDefaultDomBehavior}\n onInteractOutside={avoidDefaultDomBehavior}\n >\n <FeedbackContent ratings={ratings} indexSelected={index} setIndex={setIndex} />\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n return (\n <Dialog.Root open={index !== FEEBACK_INDEX.INIT} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay />\n <Dialog.Content\n css={{ bg: '$surface_dim', width: '528px', p: '$12' }}\n onPointerDownOutside={avoidDefaultDomBehavior}\n onInteractOutside={avoidDefaultDomBehavior}\n >\n <FeedbackContent ratings={ratings} indexSelected={index} setIndex={setIndex} />\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n\nexport const FeedbackContent = ({\n ratings,\n indexSelected,\n setIndex,\n}: {\n ratings: Rating[];\n indexSelected: number;\n setIndex: (index: number) => void;\n}) => {\n const { feedback } = useRoomLayoutLeaveScreen();\n const { endpoints } = useHMSPrebuiltContext();\n const isMobile = useMedia(cssConfig.media.md);\n const hmsActions = useHMSActions();\n const [comment, setComment] = useState('');\n const [selectedReasons, setSelectedReasons] = useState(new Set<number>());\n const handleCheckedChange = (checked: boolean | string, index: number) => {\n const newSelected = new Set(selectedReasons);\n if (checked) {\n newSelected.add(index);\n } else {\n newSelected.delete(index);\n }\n setSelectedReasons(newSelected);\n };\n const submitFeedback = async () => {\n if (indexSelected < 0 || ratings.length <= indexSelected) {\n return;\n }\n try {\n const reasons = [...selectedReasons].map((value: number) => ratings[indexSelected]?.reasons?.[value] || '');\n await hmsActions.submitSessionFeedback(\n {\n question: `${feedback?.title} | ${ratings[indexSelected].question || ''}`,\n rating: ratings[indexSelected].value || 1,\n min_rating: 1,\n max_rating: ratings.length,\n reasons: selectedReasons.size === 0 ? [] : reasons,\n comment: comment,\n },\n endpoints?.event,\n );\n } catch (e) {\n console.error(e);\n }\n // always submit and take it to thankyou page\n setIndex(FEEBACK_INDEX.THANK_YOU);\n };\n return (\n <Flex\n css={{\n p: indexSelected === FEEBACK_INDEX.INIT ? '$12 !important' : '0',\n bg: '$surface_dim',\n r: '$3',\n gap: '$10',\n }}\n direction=\"column\"\n >\n <FeedbackHeader\n ratings={ratings}\n indexSelected={indexSelected}\n onEmojiClicked={(value: number) => {\n setSelectedReasons(new Set<number>());\n setIndex(value);\n }}\n />\n <FeedbackForm\n rating={ratings[indexSelected]}\n comment={comment}\n setComment={setComment}\n selectedReasons={selectedReasons}\n handleCheckedChange={handleCheckedChange}\n />\n <Button\n type=\"submit\"\n icon\n css={{\n alignSelf: isMobile ? '' : 'end',\n }}\n onClick={submitFeedback}\n >\n {feedback?.submit_btn_label || 'Submit Feedback'}\n </Button>\n </Flex>\n );\n};\nexport const FeedbackHeader = ({\n onEmojiClicked,\n ratings,\n indexSelected = FEEBACK_INDEX.INIT,\n}: {\n onEmojiClicked: (index: number) => void;\n ratings: Rating[];\n indexSelected?: number;\n}) => {\n const isMobile = useMedia(cssConfig.media.md);\n const { feedback } = useRoomLayoutLeaveScreen();\n return (\n <>\n <Flex align=\"center\">\n <Flex\n direction=\"column\"\n css={{\n flex: '1 1 0',\n }}\n >\n <Text\n variant={isMobile ? 'h6' : 'h5'}\n css={{\n c: '$on_surface_high',\n fontStyle: 'normal',\n }}\n >\n {feedback?.title || 'How was your experience?'}\n </Text>\n <Text\n variant={isMobile ? 'body2' : 'body1'}\n css={{\n c: '$on_surface_medium',\n opacity: 0.9,\n fontWeight: '$regular',\n }}\n >\n {feedback?.sub_title || 'Your answers help us improve the quality.'}\n </Text>\n </Flex>\n {indexSelected !== FEEBACK_INDEX.INIT ? (\n <CrossIcon width=\"24px\" height=\"24px\" color=\"white\" onClick={() => onEmojiClicked(FEEBACK_INDEX.INIT)} />\n ) : null}\n </Flex>\n <Flex\n justify=\"between\"\n css={{\n gap: '$17',\n c: '$on_surface_high',\n '@md': {\n gap: '0',\n },\n }}\n >\n {ratings.map((element, index) => {\n return (\n <Flex\n align=\"center\"\n direction=\"column\"\n css={{\n c:\n indexSelected === index || indexSelected === FEEBACK_INDEX.INIT\n ? '$on_surface_high'\n : '$on_surface_default',\n gap: '$4',\n }}\n onClick={() => onEmojiClicked(index)}\n key={`${index}`}\n >\n <Text\n css={{\n fontWeight: '$semiBold',\n fontSize: '$h4',\n pb: '$1',\n cursor: 'pointer',\n opacity: indexSelected === index || indexSelected === FEEBACK_INDEX.INIT ? 1 : 0.2,\n '@md': {\n fontSize: '$h5',\n },\n }}\n >\n {element.emoji}\n </Text>\n <Text\n variant={isMobile ? 'body2' : 'body1'}\n css={{\n c:\n indexSelected === index || indexSelected === FEEBACK_INDEX.INIT\n ? '$on_surface_medium'\n : '$on_surface_low',\n fontWeight: '$regular',\n }}\n >\n {element.label}\n </Text>\n </Flex>\n );\n })}\n </Flex>\n </>\n );\n};\nexport const FeedbackForm = ({\n rating,\n comment,\n setComment,\n selectedReasons,\n handleCheckedChange,\n}: {\n rating: Rating;\n comment: string;\n setComment: (value: string) => void;\n selectedReasons: Set<number>;\n handleCheckedChange: (checked: string | boolean, index: number) => void;\n}) => {\n const { feedback } = useRoomLayoutLeaveScreen();\n return (\n <>\n {rating.reasons && rating.reasons.length > 0 && (\n <Flex\n direction=\"column\"\n css={{\n gap: '$4',\n }}\n >\n <Text\n variant=\"sub2\"\n css={{\n c: '$on_surface_high',\n fontWeight: '$semiBold',\n fontSize: '$sm',\n px: '$2',\n }}\n >\n {rating.question || 'What do you like/dislike here?'}\n </Text>\n <Flex\n css={{\n alignItems: 'flex-start',\n alignSelf: 'stretch',\n flexWrap: 'wrap',\n gap: '$6',\n flex: '1 1 calc(25% - 12px)',\n '@md': {\n flex: '1 1 calc(50% - 12px)',\n },\n '@sm': {\n flex: '1 1 100%',\n },\n }}\n >\n {rating.reasons.map((option: string, index: number) => {\n return (\n <Flex\n align=\"center\"\n gap=\"2\"\n key={index}\n css={{\n border: '1px solid $border_bright',\n r: '$1',\n p: '$6',\n }}\n >\n <Checkbox.Root\n id={`${option}-${index}`}\n checked={selectedReasons.has(index)}\n onCheckedChange={checked => handleCheckedChange(checked, index)}\n css={{\n cursor: 'pointer',\n flexShrink: 0,\n bg: '$on_secondary_low',\n border: '1px solid $border_bright',\n }}\n >\n <Checkbox.Indicator>\n <CheckIcon width={12} height={12} />\n </Checkbox.Indicator>\n </Checkbox.Root>\n <Label\n htmlFor={`${option}-${index}`}\n css={{\n color: '$on_surface_high',\n fontSize: '$sm',\n fontWeight: '$regular',\n lineHeight: '20px' /* 142.857% */,\n }}\n >\n {option}\n </Label>\n </Flex>\n );\n })}\n </Flex>\n </Flex>\n )}\n {feedback?.comment && (\n <Flex\n direction=\"column\"\n css={{\n gap: '$4',\n }}\n >\n <Text\n variant=\"body2\"\n css={{\n c: '$on_surface_high',\n fontWeight: '$regular',\n fontSize: '$sm',\n }}\n >\n {feedback?.comment.label || 'Additional comments (optional)'}\n </Text>\n <TextArea\n maxLength={1024}\n placeholder={feedback?.comment.placeholder || 'Tell us more...'}\n css={{\n backgroundColor: '$surface_bright',\n border: '1px solid $border_bright',\n resize: 'none',\n height: '$36',\n display: 'flex',\n }}\n value={comment}\n onChange={event => setComment(event.target.value.trimStart())}\n />\n </Flex>\n )}\n </>\n );\n};\n", "import React from 'react';\nimport { useMedia } from 'react-use';\nimport { UserMusicIcon } from '@100mslive/react-icons';\nimport { Flex } from '../../../Layout';\nimport { Text } from '../../../Text';\nimport { config as cssConfig } from '../../../Theme';\n\nexport const ThankyouView = () => {\n const isMobile = useMedia(cssConfig.media.md);\n return (\n <Flex\n direction={isMobile ? 'column' : 'row'}\n align=\"center\"\n css={{\n gap: '$10',\n border: '1px solid $border_default',\n borderRadius: !isMobile ? '$3' : '$3 $3 0 0',\n bg: '$surface_dim',\n w: !isMobile ? '528px' : '410px',\n p: '$12',\n pb: isMobile ? '$16' : '$12',\n '@md': {\n position: 'absolute',\n bottom: '0',\n },\n }}\n >\n <UserMusicIcon width=\"64px\" height=\"64px\" />\n <Flex direction=\"column\" align={isMobile ? 'center' : 'start'}>\n <Text variant=\"h5\">Thank you for your feedback</Text>\n <Text\n variant=\"body1\"\n css={{\n fontWeight: '$regular',\n fontSize: '$md',\n opacity: '0.9',\n }}\n >\n Your answers help us improve.\n </Text>\n </Flex>\n </Flex>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "React", "useState", "useMedia", "React", "useMedia", "useMedia", "React", "useState", "useMedia", "React", "React"]
7
+ }