@stack-spot/portal-layout 0.0.64 → 1.0.0-dev.1768482785050

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 (383) hide show
  1. package/CHANGELOG.md +779 -0
  2. package/dist/Layout.d.ts +60 -8
  3. package/dist/Layout.d.ts.map +1 -1
  4. package/dist/Layout.js +59 -24
  5. package/dist/Layout.js.map +1 -1
  6. package/dist/LayoutOverlayManager.d.ts +274 -19
  7. package/dist/LayoutOverlayManager.d.ts.map +1 -1
  8. package/dist/LayoutOverlayManager.js +373 -82
  9. package/dist/LayoutOverlayManager.js.map +1 -1
  10. package/dist/WelcomeTour.d.ts +2 -0
  11. package/dist/WelcomeTour.d.ts.map +1 -0
  12. package/dist/WelcomeTour.js +8 -0
  13. package/dist/WelcomeTour.js.map +1 -0
  14. package/dist/components/Backdrop.d.ts +75 -0
  15. package/dist/components/Backdrop.d.ts.map +1 -0
  16. package/dist/components/Backdrop.js +69 -0
  17. package/dist/components/Backdrop.js.map +1 -0
  18. package/dist/components/Contact/show-contact-modal.d.ts +5 -0
  19. package/dist/components/Contact/show-contact-modal.d.ts.map +1 -0
  20. package/dist/components/Contact/show-contact-modal.js +37 -0
  21. package/dist/components/Contact/show-contact-modal.js.map +1 -0
  22. package/dist/components/ContactModal.d.ts +1 -0
  23. package/dist/components/ContactModal.d.ts.map +1 -0
  24. package/dist/components/ContactModal.js +2 -0
  25. package/dist/components/ContactModal.js.map +1 -0
  26. package/dist/components/Dialog.d.ts +54 -7
  27. package/dist/components/Dialog.d.ts.map +1 -1
  28. package/dist/components/Dialog.js +8 -2
  29. package/dist/components/Dialog.js.map +1 -1
  30. package/dist/components/Header.d.ts +38 -2
  31. package/dist/components/Header.d.ts.map +1 -1
  32. package/dist/components/Header.js +9 -4
  33. package/dist/components/Header.js.map +1 -1
  34. package/dist/components/NotificationCenter/NotificationPanel.d.ts +3 -0
  35. package/dist/components/NotificationCenter/NotificationPanel.d.ts.map +1 -0
  36. package/dist/components/NotificationCenter/NotificationPanel.js +19 -0
  37. package/dist/components/NotificationCenter/NotificationPanel.js.map +1 -0
  38. package/dist/components/NotificationCenter/NotificationPanelHeader.d.ts +3 -0
  39. package/dist/components/NotificationCenter/NotificationPanelHeader.d.ts.map +1 -0
  40. package/dist/components/NotificationCenter/NotificationPanelHeader.js +16 -0
  41. package/dist/components/NotificationCenter/NotificationPanelHeader.js.map +1 -0
  42. package/dist/components/NotificationCenter/NotificationsPanelFooter.d.ts +4 -0
  43. package/dist/components/NotificationCenter/NotificationsPanelFooter.d.ts.map +1 -0
  44. package/dist/components/NotificationCenter/NotificationsPanelFooter.js +12 -0
  45. package/dist/components/NotificationCenter/NotificationsPanelFooter.js.map +1 -0
  46. package/dist/components/NotificationCenter/dictionary.d.ts +2 -0
  47. package/dist/components/NotificationCenter/dictionary.d.ts.map +1 -0
  48. package/dist/components/NotificationCenter/dictionary.js +43 -0
  49. package/dist/components/NotificationCenter/dictionary.js.map +1 -0
  50. package/dist/components/NotificationCenter/index.d.ts +2 -0
  51. package/dist/components/NotificationCenter/index.d.ts.map +1 -0
  52. package/dist/components/NotificationCenter/index.js +34 -0
  53. package/dist/components/NotificationCenter/index.js.map +1 -0
  54. package/dist/components/NotificationCenter/styled.d.ts +3 -0
  55. package/dist/components/NotificationCenter/styled.d.ts.map +1 -0
  56. package/dist/components/NotificationCenter/styled.js +74 -0
  57. package/dist/components/NotificationCenter/styled.js.map +1 -0
  58. package/dist/components/NotificationCenter/types.d.ts +21 -0
  59. package/dist/components/NotificationCenter/types.d.ts.map +1 -0
  60. package/dist/components/NotificationCenter/types.js.map +1 -0
  61. package/dist/components/NotificationCenter/utils.d.ts +5 -0
  62. package/dist/components/NotificationCenter/utils.d.ts.map +1 -0
  63. package/dist/components/NotificationCenter/utils.js +18 -0
  64. package/dist/components/NotificationCenter/utils.js.map +1 -0
  65. package/dist/components/OverlayContent.d.ts +27 -1
  66. package/dist/components/OverlayContent.d.ts.map +1 -1
  67. package/dist/components/OverlayContent.js +8 -4
  68. package/dist/components/OverlayContent.js.map +1 -1
  69. package/dist/components/PortalSwitcher.d.ts +19 -1
  70. package/dist/components/PortalSwitcher.d.ts.map +1 -1
  71. package/dist/components/PortalSwitcher.js +16 -31
  72. package/dist/components/PortalSwitcher.js.map +1 -1
  73. package/dist/components/PrivacyPolicyMessage/hooks.d.ts +10 -0
  74. package/dist/components/PrivacyPolicyMessage/hooks.d.ts.map +1 -0
  75. package/dist/components/PrivacyPolicyMessage/hooks.js +33 -0
  76. package/dist/components/PrivacyPolicyMessage/hooks.js.map +1 -0
  77. package/dist/components/PrivacyPolicyMessage/index.d.ts +7 -0
  78. package/dist/components/PrivacyPolicyMessage/index.d.ts.map +1 -0
  79. package/dist/components/PrivacyPolicyMessage/index.js +5 -0
  80. package/dist/components/PrivacyPolicyMessage/index.js.map +1 -0
  81. package/dist/components/Rate/FeedbackModal.d.ts +8 -0
  82. package/dist/components/Rate/FeedbackModal.d.ts.map +1 -0
  83. package/dist/components/Rate/FeedbackModal.js +52 -0
  84. package/dist/components/Rate/FeedbackModal.js.map +1 -0
  85. package/dist/components/Rate/hook.d.ts +3 -0
  86. package/dist/components/Rate/hook.d.ts.map +1 -0
  87. package/dist/components/Rate/hook.js +48 -0
  88. package/dist/components/Rate/hook.js.map +1 -0
  89. package/dist/components/Rate/index.d.ts +10 -0
  90. package/dist/components/Rate/index.d.ts.map +1 -0
  91. package/dist/components/Rate/index.js +16 -0
  92. package/dist/components/Rate/index.js.map +1 -0
  93. package/dist/components/Rate/on-nps-submit.d.ts +7 -0
  94. package/dist/components/Rate/on-nps-submit.d.ts.map +1 -0
  95. package/dist/components/Rate/on-nps-submit.js +8 -0
  96. package/dist/components/Rate/on-nps-submit.js.map +1 -0
  97. package/dist/components/Rate/show-rate-us-modals.d.ts +17 -0
  98. package/dist/components/Rate/show-rate-us-modals.d.ts.map +1 -0
  99. package/dist/components/Rate/show-rate-us-modals.js +14 -0
  100. package/dist/components/Rate/show-rate-us-modals.js.map +1 -0
  101. package/dist/components/Rate/utils.d.ts +2 -0
  102. package/dist/components/Rate/utils.d.ts.map +1 -0
  103. package/dist/components/Rate/utils.js +10 -0
  104. package/dist/components/Rate/utils.js.map +1 -0
  105. package/dist/components/Toaster.d.ts +35 -0
  106. package/dist/components/Toaster.d.ts.map +1 -1
  107. package/dist/components/Toaster.js +32 -4
  108. package/dist/components/Toaster.js.map +1 -1
  109. package/dist/components/TypeForm/hook.d.ts +2 -0
  110. package/dist/components/TypeForm/hook.d.ts.map +1 -0
  111. package/dist/components/TypeForm/hook.js +11 -0
  112. package/dist/components/TypeForm/hook.js.map +1 -0
  113. package/dist/components/TypeForm/index.d.ts +6 -0
  114. package/dist/components/TypeForm/index.d.ts.map +1 -0
  115. package/dist/components/TypeForm/index.js +23 -0
  116. package/dist/components/TypeForm/index.js.map +1 -0
  117. package/dist/components/TypeForm/show-typeform-modal.d.ts +5 -0
  118. package/dist/components/TypeForm/show-typeform-modal.d.ts.map +1 -0
  119. package/dist/components/TypeForm/show-typeform-modal.js +11 -0
  120. package/dist/components/TypeForm/show-typeform-modal.js.map +1 -0
  121. package/dist/components/TypeForm/utils.d.ts +2 -0
  122. package/dist/components/TypeForm/utils.d.ts.map +1 -0
  123. package/dist/components/TypeForm/utils.js +9 -0
  124. package/dist/components/TypeForm/utils.js.map +1 -0
  125. package/dist/components/UserMenu.d.ts +19 -2
  126. package/dist/components/UserMenu.d.ts.map +1 -1
  127. package/dist/components/UserMenu.js +12 -6
  128. package/dist/components/UserMenu.js.map +1 -1
  129. package/dist/components/error/ErrorBoundary.d.ts +25 -4
  130. package/dist/components/error/ErrorBoundary.d.ts.map +1 -1
  131. package/dist/components/error/ErrorBoundary.js +10 -1
  132. package/dist/components/error/ErrorBoundary.js.map +1 -1
  133. package/dist/components/error/ErrorManager.d.ts +22 -6
  134. package/dist/components/error/ErrorManager.d.ts.map +1 -1
  135. package/dist/components/error/ErrorManager.js +21 -1
  136. package/dist/components/error/ErrorManager.js.map +1 -1
  137. package/dist/components/error/SilentErrorBoundary.d.ts +26 -5
  138. package/dist/components/error/SilentErrorBoundary.d.ts.map +1 -1
  139. package/dist/components/error/SilentErrorBoundary.js +10 -0
  140. package/dist/components/error/SilentErrorBoundary.js.map +1 -1
  141. package/dist/components/menu/MenuContent.d.ts +20 -547
  142. package/dist/components/menu/MenuContent.d.ts.map +1 -1
  143. package/dist/components/menu/MenuContent.js +89 -88
  144. package/dist/components/menu/MenuContent.js.map +1 -1
  145. package/dist/components/menu/MenuSectionGroup.d.ts +2 -0
  146. package/dist/components/menu/MenuSectionGroup.d.ts.map +1 -0
  147. package/dist/components/menu/MenuSectionGroup.js +121 -0
  148. package/dist/components/menu/MenuSectionGroup.js.map +1 -0
  149. package/dist/components/menu/MenuSections.d.ts +17 -0
  150. package/dist/components/menu/MenuSections.d.ts.map +1 -1
  151. package/dist/components/menu/MenuSections.js +159 -39
  152. package/dist/components/menu/MenuSections.js.map +1 -1
  153. package/dist/components/menu/PageSelector.d.ts +5 -0
  154. package/dist/components/menu/PageSelector.d.ts.map +1 -1
  155. package/dist/components/menu/PageSelector.js +9 -4
  156. package/dist/components/menu/PageSelector.js.map +1 -1
  157. package/dist/components/menu/types.d.ts +219 -8
  158. package/dist/components/menu/types.d.ts.map +1 -1
  159. package/dist/components/tour/StepContainer.d.ts +37 -0
  160. package/dist/components/tour/StepContainer.d.ts.map +1 -0
  161. package/dist/components/tour/StepContainer.js +51 -0
  162. package/dist/components/tour/StepContainer.js.map +1 -0
  163. package/dist/components/tour/StepNavigation.d.ts +29 -0
  164. package/dist/components/tour/StepNavigation.d.ts.map +1 -0
  165. package/dist/components/tour/StepNavigation.js +37 -0
  166. package/dist/components/tour/StepNavigation.js.map +1 -0
  167. package/dist/components/tour/StepTitle.d.ts +17 -0
  168. package/dist/components/tour/StepTitle.d.ts.map +1 -0
  169. package/dist/components/tour/StepTitle.js +10 -0
  170. package/dist/components/tour/StepTitle.js.map +1 -0
  171. package/dist/components/tour/hook.d.ts +3 -0
  172. package/dist/components/tour/hook.d.ts.map +1 -0
  173. package/dist/components/tour/hook.js +10 -0
  174. package/dist/components/tour/hook.js.map +1 -0
  175. package/dist/components/tour/index.d.ts +5 -0
  176. package/dist/components/tour/index.d.ts.map +1 -0
  177. package/dist/components/tour/index.js +5 -0
  178. package/dist/components/tour/index.js.map +1 -0
  179. package/dist/components/tour/manager.d.ts +34 -0
  180. package/dist/components/tour/manager.d.ts.map +1 -0
  181. package/dist/components/tour/manager.js +104 -0
  182. package/dist/components/tour/manager.js.map +1 -0
  183. package/dist/components/tour/utils.d.ts +66 -8
  184. package/dist/components/tour/utils.d.ts.map +1 -1
  185. package/dist/components/tour/utils.js +57 -45
  186. package/dist/components/tour/utils.js.map +1 -1
  187. package/dist/components/user-menu-manager.d.ts +13 -0
  188. package/dist/components/user-menu-manager.d.ts.map +1 -0
  189. package/dist/components/user-menu-manager.js +36 -0
  190. package/dist/components/user-menu-manager.js.map +1 -0
  191. package/dist/dictionary.d.ts +6 -1
  192. package/dist/dictionary.d.ts.map +1 -1
  193. package/dist/dictionary.js +7 -2
  194. package/dist/dictionary.js.map +1 -1
  195. package/dist/elements.d.ts +7 -0
  196. package/dist/elements.d.ts.map +1 -1
  197. package/dist/elements.js +7 -0
  198. package/dist/elements.js.map +1 -1
  199. package/dist/index.d.ts +15 -8
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +15 -8
  202. package/dist/index.js.map +1 -1
  203. package/dist/layout.css +190 -35
  204. package/dist/svg/StarFillWithGradient.d.ts +6 -0
  205. package/dist/svg/StarFillWithGradient.d.ts.map +1 -0
  206. package/dist/svg/StarFillWithGradient.js +4 -0
  207. package/dist/svg/StarFillWithGradient.js.map +1 -0
  208. package/dist/toaster.d.ts +55 -9
  209. package/dist/toaster.d.ts.map +1 -1
  210. package/dist/toaster.js +34 -6
  211. package/dist/toaster.js.map +1 -1
  212. package/dist/types.d.ts +5 -0
  213. package/dist/types.d.ts.map +1 -0
  214. package/dist/types.js +2 -0
  215. package/dist/types.js.map +1 -0
  216. package/dist/utils.d.ts +6 -69
  217. package/dist/utils.d.ts.map +1 -1
  218. package/dist/utils.js +9 -130
  219. package/dist/utils.js.map +1 -1
  220. package/package.dev.json +3 -0
  221. package/package.json +26 -15
  222. package/package.stg.json +3 -0
  223. package/readme.md +147 -0
  224. package/src/Layout.tsx +166 -57
  225. package/src/LayoutOverlayManager.tsx +499 -85
  226. package/src/WelcomeTour.tsx +8 -0
  227. package/src/components/Backdrop.tsx +116 -0
  228. package/src/components/Contact/show-contact-modal.tsx +71 -0
  229. package/src/components/Dialog.tsx +58 -9
  230. package/src/components/Header.tsx +53 -5
  231. package/src/components/NotificationCenter/NotificationPanel.tsx +40 -0
  232. package/src/components/NotificationCenter/NotificationPanelHeader.tsx +53 -0
  233. package/src/components/NotificationCenter/NotificationsPanelFooter.tsx +25 -0
  234. package/src/components/NotificationCenter/dictionary.ts +44 -0
  235. package/src/components/NotificationCenter/index.tsx +58 -0
  236. package/src/components/NotificationCenter/styled.ts +75 -0
  237. package/src/components/NotificationCenter/types.ts +24 -0
  238. package/src/components/NotificationCenter/utils.ts +20 -0
  239. package/src/components/OverlayContent.tsx +40 -5
  240. package/src/components/PortalSwitcher.tsx +33 -39
  241. package/src/components/PrivacyPolicyMessage/hooks.tsx +49 -0
  242. package/src/components/PrivacyPolicyMessage/index.tsx +21 -0
  243. package/src/components/Rate/FeedbackModal.tsx +86 -0
  244. package/src/components/Rate/hook.tsx +61 -0
  245. package/src/components/Rate/index.tsx +36 -0
  246. package/src/components/Rate/on-nps-submit.ts +18 -0
  247. package/src/components/Rate/show-rate-us-modals.tsx +29 -0
  248. package/src/components/Rate/utils.ts +11 -0
  249. package/src/components/Toaster.tsx +82 -3
  250. package/src/components/TypeForm/hook.tsx +13 -0
  251. package/src/components/TypeForm/index.tsx +50 -0
  252. package/src/components/TypeForm/show-typeform-modal.tsx +10 -0
  253. package/src/components/TypeForm/utils.ts +8 -0
  254. package/src/components/UserMenu.tsx +32 -8
  255. package/src/components/error/ErrorBoundary.tsx +11 -2
  256. package/src/components/error/ErrorManager.ts +22 -6
  257. package/src/components/error/SilentErrorBoundary.tsx +12 -2
  258. package/src/components/menu/MenuContent.tsx +102 -110
  259. package/src/components/menu/MenuSectionGroup.tsx +121 -0
  260. package/src/components/menu/MenuSections.tsx +342 -93
  261. package/src/components/menu/PageSelector.tsx +16 -4
  262. package/src/components/menu/types.ts +221 -9
  263. package/src/components/tour/StepContainer.tsx +92 -0
  264. package/src/components/tour/StepNavigation.tsx +72 -0
  265. package/src/components/tour/StepTitle.tsx +28 -0
  266. package/src/components/tour/hook.ts +12 -0
  267. package/src/components/tour/index.ts +6 -0
  268. package/src/components/tour/manager.tsx +119 -0
  269. package/src/components/tour/utils.tsx +119 -0
  270. package/src/components/user-menu-manager.ts +31 -0
  271. package/src/dictionary.ts +7 -2
  272. package/src/elements.ts +7 -0
  273. package/src/index.ts +15 -8
  274. package/src/layout.css +190 -35
  275. package/src/svg/StarFillWithGradient.tsx +14 -0
  276. package/src/toaster.tsx +90 -13
  277. package/src/types.ts +4 -0
  278. package/src/utils.ts +9 -142
  279. package/dist/components/BottomNotification.d.ts +0 -1
  280. package/dist/components/BottomNotification.d.ts.map +0 -1
  281. package/dist/components/BottomNotification.js +0 -2
  282. package/dist/components/BottomNotification.js.map +0 -1
  283. package/dist/components/BottomPanel.d.ts +0 -1
  284. package/dist/components/BottomPanel.d.ts.map +0 -1
  285. package/dist/components/BottomPanel.js +0 -2
  286. package/dist/components/BottomPanel.js.map +0 -1
  287. package/dist/components/SelectionList.d.ts +0 -36
  288. package/dist/components/SelectionList.d.ts.map +0 -1
  289. package/dist/components/SelectionList.js +0 -140
  290. package/dist/components/SelectionList.js.map +0 -1
  291. package/dist/components/error/ErrorDescriptor.d.ts +0 -12
  292. package/dist/components/error/ErrorDescriptor.d.ts.map +0 -1
  293. package/dist/components/error/ErrorDescriptor.js +0 -17
  294. package/dist/components/error/ErrorDescriptor.js.map +0 -1
  295. package/dist/components/error/ErrorFeedback.d.ts +0 -3
  296. package/dist/components/error/ErrorFeedback.d.ts.map +0 -1
  297. package/dist/components/error/ErrorFeedback.js +0 -66
  298. package/dist/components/error/ErrorFeedback.js.map +0 -1
  299. package/dist/components/menu/use-check-text-overflow.d.ts +0 -6
  300. package/dist/components/menu/use-check-text-overflow.d.ts.map +0 -1
  301. package/dist/components/menu/use-check-text-overflow.js +0 -20
  302. package/dist/components/menu/use-check-text-overflow.js.map +0 -1
  303. package/dist/components/menu/use-keyboard-controls.d.ts +0 -23
  304. package/dist/components/menu/use-keyboard-controls.d.ts.map +0 -1
  305. package/dist/components/menu/use-keyboard-controls.js +0 -49
  306. package/dist/components/menu/use-keyboard-controls.js.map +0 -1
  307. package/dist/components/menu/useCheckTextOverflow.d.ts +0 -6
  308. package/dist/components/menu/useCheckTextOverflow.d.ts.map +0 -1
  309. package/dist/components/menu/useCheckTextOverflow.js +0 -20
  310. package/dist/components/menu/useCheckTextOverflow.js.map +0 -1
  311. package/dist/components/tour/Navigation.d.ts +0 -8
  312. package/dist/components/tour/Navigation.d.ts.map +0 -1
  313. package/dist/components/tour/Navigation.js +0 -15
  314. package/dist/components/tour/Navigation.js.map +0 -1
  315. package/dist/components/tour/PortalSwitcherStep.d.ts +0 -3
  316. package/dist/components/tour/PortalSwitcherStep.d.ts.map +0 -1
  317. package/dist/components/tour/PortalSwitcherStep.js +0 -29
  318. package/dist/components/tour/PortalSwitcherStep.js.map +0 -1
  319. package/dist/components/tour/config.d.ts +0 -3
  320. package/dist/components/tour/config.d.ts.map +0 -1
  321. package/dist/components/tour/config.js +0 -22
  322. package/dist/components/tour/config.js.map +0 -1
  323. package/dist/components/tour/steps/PortalSwitcherStep.d.ts +0 -3
  324. package/dist/components/tour/steps/PortalSwitcherStep.d.ts.map +0 -1
  325. package/dist/components/tour/steps/PortalSwitcherStep.js +0 -30
  326. package/dist/components/tour/steps/PortalSwitcherStep.js.map +0 -1
  327. package/dist/components/types.d.ts +0 -15
  328. package/dist/components/types.d.ts.map +0 -1
  329. package/dist/components/types.js.map +0 -1
  330. package/dist/layout-context.d.ts +0 -10
  331. package/dist/layout-context.d.ts.map +0 -1
  332. package/dist/layout-context.js +0 -11
  333. package/dist/layout-context.js.map +0 -1
  334. package/dist/svg/AI.d.ts +0 -6
  335. package/dist/svg/AI.d.ts.map +0 -1
  336. package/dist/svg/AI.js +0 -9
  337. package/dist/svg/AI.js.map +0 -1
  338. package/dist/svg/EDP.d.ts +0 -6
  339. package/dist/svg/EDP.d.ts.map +0 -1
  340. package/dist/svg/EDP.js +0 -5
  341. package/dist/svg/EDP.js.map +0 -1
  342. package/dist/svg/Forbidden.d.ts +0 -6
  343. package/dist/svg/Forbidden.d.ts.map +0 -1
  344. package/dist/svg/Forbidden.js +0 -4
  345. package/dist/svg/Forbidden.js.map +0 -1
  346. package/dist/svg/HUB.d.ts +0 -6
  347. package/dist/svg/HUB.d.ts.map +0 -1
  348. package/dist/svg/HUB.js +0 -5
  349. package/dist/svg/HUB.js.map +0 -1
  350. package/dist/svg/Logo.d.ts +0 -2
  351. package/dist/svg/Logo.d.ts.map +0 -1
  352. package/dist/svg/Logo.js +0 -4
  353. package/dist/svg/Logo.js.map +0 -1
  354. package/dist/svg/NotFound.d.ts +0 -6
  355. package/dist/svg/NotFound.d.ts.map +0 -1
  356. package/dist/svg/NotFound.js +0 -4
  357. package/dist/svg/NotFound.js.map +0 -1
  358. package/dist/svg/ServerError.d.ts +0 -6
  359. package/dist/svg/ServerError.d.ts.map +0 -1
  360. package/dist/svg/ServerError.js +0 -4
  361. package/dist/svg/ServerError.js.map +0 -1
  362. package/dist/svg/Unauthenticated.d.ts +0 -6
  363. package/dist/svg/Unauthenticated.d.ts.map +0 -1
  364. package/dist/svg/Unauthenticated.js +0 -4
  365. package/dist/svg/Unauthenticated.js.map +0 -1
  366. package/src/components/BottomPanel.tsx +0 -0
  367. package/src/components/SelectionList.tsx +0 -272
  368. package/src/components/error/ErrorFeedback.tsx +0 -114
  369. package/src/components/menu/use-check-text-overflow.tsx +0 -26
  370. package/src/components/menu/use-keyboard-controls.tsx +0 -70
  371. package/src/components/tour/PortalSwitcherStep.tsx +0 -36
  372. package/src/components/types.ts +0 -15
  373. package/src/layout-context.tsx +0 -22
  374. package/src/svg/AI.tsx +0 -37
  375. package/src/svg/EDP.tsx +0 -35
  376. package/src/svg/Forbidden.tsx +0 -22
  377. package/src/svg/HUB.tsx +0 -35
  378. package/src/svg/Logo.tsx +0 -35
  379. package/src/svg/NotFound.tsx +0 -16
  380. package/src/svg/ServerError.tsx +0 -33
  381. package/src/svg/Unauthenticated.tsx +0 -16
  382. /package/dist/components/{types.js → NotificationCenter/types.js} +0 -0
  383. /package/src/components/{BottomNotification.tsx → ContactModal.tsx} +0 -0
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ onClick: () => void;
3
+ portal: 'EDP' | 'AI';
4
+ customShouldShowNpsModal?: () => boolean;
5
+ }
6
+ export declare const FeedbackModal: ({ onClick, portal, customShouldShowNpsModal }: Props) => import("react/jsx-runtime").JSX.Element | null;
7
+ export {};
8
+ //# sourceMappingURL=FeedbackModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackModal.d.ts","sourceRoot":"","sources":["../../../src/components/Rate/FeedbackModal.tsx"],"names":[],"mappings":"AAuBA,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,OAAO,CAAC;CAC1C;AAED,eAAO,MAAM,aAAa,GAAI,+CAA+C,KAAK,mDA0CjF,CAAA"}
@@ -0,0 +1,52 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Button, Flex, IconBox, Text } from '@citric/core';
3
+ import { ArrowRight, TimesMini } from '@citric/icons';
4
+ import { IconButton } from '@citric/ui';
5
+ import { theme } from '@stack-spot/portal-theme';
6
+ import { useTranslate } from '@stack-spot/portal-translate';
7
+ import { useCallback, useEffect, useState } from 'react';
8
+ import { shouldShowNpsModal } from './hook.js';
9
+ import { checkVisibility } from './utils.js';
10
+ const style = {
11
+ box: {
12
+ width: '438px',
13
+ bg: 'light.500',
14
+ position: 'absolute',
15
+ top: 0,
16
+ right: 0,
17
+ p: 5,
18
+ zIndex: 1,
19
+ borderRadius: '16px',
20
+ boxShadow: `4px 4px 48px 0px ${theme.color.light[300]}`,
21
+ },
22
+ };
23
+ export const FeedbackModal = ({ onClick, portal, customShouldShowNpsModal }) => {
24
+ const t = useTranslate(dictionary);
25
+ const [isNpsVisible, setIsNpsVisible] = useState(customShouldShowNpsModal ? customShouldShowNpsModal() : shouldShowNpsModal());
26
+ const handleClose = () => {
27
+ localStorage.setItem('RATED_US_IN', Date.now().toString());
28
+ setIsNpsVisible(false);
29
+ };
30
+ const visibilityCheck = useCallback((event) => checkVisibility(event, setIsNpsVisible, customShouldShowNpsModal), []);
31
+ useEffect(() => {
32
+ checkVisibility({ key: 'RATED_US_IN' }, setIsNpsVisible, customShouldShowNpsModal);
33
+ window.addEventListener('storage', visibilityCheck);
34
+ return () => {
35
+ window.removeEventListener('storage', visibilityCheck);
36
+ };
37
+ }, []);
38
+ return isNpsVisible ? (_jsxs(Box, { sx: style.box, id: "feedback-modal", children: [_jsxs(Flex, { justifyContent: "space-between", flexWrap: "nowrap", children: [_jsxs(Text, { appearance: "h5", mb: 6, children: [t.title, portal, "?"] }), _jsx(IconButton, { onClick: handleClose, id: "feedback-modal-close-icon", children: _jsx(TimesMini, {}) })] }), _jsx(Text, { sx: { lineHeight: '24px' }, children: t.description }), _jsx(Flex, { flexDirection: "row-reverse", mt: 7, mb: 4, children: _jsxs(Button, { onClick: onClick, size: "md", children: [t.buttonText, _jsx(IconBox, { colorIcon: "inverse.contrastText", ml: 2, children: _jsx(ArrowRight, {}) })] }) })] })) : null;
39
+ };
40
+ const dictionary = {
41
+ en: {
42
+ title: 'How’s your experience with StackSpot ',
43
+ description: 'Your feedback helps us make the platform more useful and intuitive for you. It only takes a few minutes.',
44
+ buttonText: 'Share your feedback',
45
+ },
46
+ pt: {
47
+ title: 'Como está sua experiência com StackSpot ',
48
+ description: 'Seu feedback nos ajuda a tornar a plataforma mais útil e intuitiva para você. Leva apenas alguns minutos.',
49
+ buttonText: 'Compartilhe seu feedback',
50
+ },
51
+ };
52
+ //# sourceMappingURL=FeedbackModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackModal.js","sourceRoot":"","sources":["../../../src/components/Rate/FeedbackModal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function isLessThan30Days(date1: Date, date2: Date): boolean;
2
+ export declare const shouldShowNpsModal: () => boolean;
3
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/components/Rate/hook.tsx"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,WAaxD;AASD,eAAO,MAAM,kBAAkB,QAAO,OAoCrC,CAAA"}
@@ -0,0 +1,48 @@
1
+ // Function to check if the difference between two dates is greater than 30 days
2
+ export function isLessThan30Days(date1, date2) {
3
+ // Get the timestamps of the dates
4
+ const timestamp1 = date1.getTime();
5
+ const timestamp2 = date2.getTime();
6
+ // Calculate the difference in milliseconds
7
+ const differenceInMilliseconds = Math.abs(timestamp2 - timestamp1);
8
+ // Convert milliseconds to days
9
+ const differenceInDays = differenceInMilliseconds / (1000 * 60 * 60 * 24);
10
+ // Check if the difference is fewer than 30 days
11
+ return differenceInDays < 30;
12
+ }
13
+ // Function to check if a day is business day
14
+ const isBusinessDay = (date) => {
15
+ const dayOfWeek = date.getDay();
16
+ return dayOfWeek !== 0 && dayOfWeek !== 6; // 0 = sunday, 6 = saturday
17
+ };
18
+ // Function that returns a boolean to show modal feedback
19
+ export const shouldShowNpsModal = () => {
20
+ const today = new Date();
21
+ const currentDay = today.getDate();
22
+ // Check if the month has already been evaluated
23
+ const ratedInfo = localStorage.getItem('RATED_US_IN');
24
+ if (ratedInfo) {
25
+ const savedDate = new Date(parseInt(ratedInfo, 10));
26
+ const isSameMonth = savedDate.getMonth() === today.getMonth() && savedDate.getFullYear() === today.getFullYear();
27
+ // If it has already been evaluated this month, do not show the modal
28
+ if (isSameMonth)
29
+ return false;
30
+ }
31
+ // Variables to control working days shown and extension day
32
+ let businessDaysShown = 0;
33
+ let day = 25;
34
+ // Iterate from the 25th until you can show 3 business days
35
+ while (businessDaysShown < 3) {
36
+ const checkDate = new Date(today.getFullYear(), today.getMonth(), day);
37
+ if (isBusinessDay(checkDate)) {
38
+ businessDaysShown++;
39
+ }
40
+ // If we are on the current day and have not yet completed the working days, show the modal
41
+ if (currentDay === day) {
42
+ return true;
43
+ }
44
+ day++;
45
+ }
46
+ return false;
47
+ };
48
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/components/Rate/hook.tsx"],"names":[],"mappings":"AACA,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,KAAW,EAAE,KAAW;IACvD,kCAAkC;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;IAElC,2CAA2C;IAC3C,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,CAAA;IAElE,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,wBAAwB,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAEzE,gDAAgD;IAChD,OAAO,gBAAgB,GAAG,EAAE,CAAA;AAC9B,CAAC;AAED,6CAA6C;AAC7C,MAAM,aAAa,GAAG,CAAC,IAAU,EAAW,EAAE;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IAC/B,OAAO,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,CAAA,CAAC,2BAA2B;AACvE,CAAC,CAAA;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAY,EAAE;IAC9C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;IACxB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;IAElC,gDAAgD;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IAErD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;QACnD,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAA;QAEhH,qEAAqE;QACrE,IAAI,WAAW;YAAE,OAAO,KAAK,CAAA;IAC/B,CAAC;IAED,4DAA4D;IAC5D,IAAI,iBAAiB,GAAG,CAAC,CAAA;IACzB,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,2DAA2D;IAC3D,OAAO,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAA;QAEtE,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,iBAAiB,EAAE,CAAA;QACrB,CAAC;QAED,2FAA2F;QAC3F,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,GAAG,EAAE,CAAA;IACP,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import './on-nps-submit.js';
2
+ interface Props {
3
+ tfLive: string;
4
+ userId: string;
5
+ orgId: string;
6
+ portal: 'AI' | 'EDP';
7
+ }
8
+ export declare const RateComponent: ({ tfLive, userId, orgId, portal }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Rate/index.tsx"],"names":[],"mappings":"AAGA,OAAO,iBAAiB,CAAA;AAExB,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,GAAI,mCAAmC,KAAK,4CAsBrE,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Flex } from '@citric/core';
3
+ import { LoadingCircular } from '@citric/ui';
4
+ import { useEffect, useState } from 'react';
5
+ import './on-nps-submit.js';
6
+ export const RateComponent = ({ tfLive, userId, orgId, portal }) => {
7
+ const [isLoading, setIsLoading] = useState(true);
8
+ useEffect(() => {
9
+ window.tf?.load();
10
+ setTimeout(() => {
11
+ setIsLoading(false);
12
+ }, 2000);
13
+ }, []);
14
+ return (_jsxs(Box, { sx: { minWidth: '650px', minHeight: '500px' }, children: [isLoading && _jsx(Flex, { alignItems: "center", justifyContent: "center", w: "12", sx: { height: '100%' }, children: _jsx(LoadingCircular, {}) }), _jsx(Box, { sx: { opacity: isLoading ? '0' : 1 }, children: _jsx("div", { "data-tf-live": tfLive, "data-tf-hidden": `user_id=${userId},org_id=${orgId},portal_name=${portal}`, "data-tf-open": "time", "data-tf-open-value": "100", "data-tf-on-submit": "onNpsSubmit" }) })] }));
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Rate/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,iBAAiB,CAAA;AASxB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAS,EAAE,EAAE;IACxE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEhD,SAAS,CAAC,GAAG,EAAE;QACZ,MAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAA;QAC1B,UAAU,CAAC,GAAG,EAAE;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC,EAAE,IAAI,CAAC,CAAA;IACV,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAC/C,SAAS,IAAI,KAAC,IAAI,IAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC3F,KAAC,eAAe,KAAG,GACd,EACP,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YACvC,8BAAmB,MAAM,oBACP,WAAW,MAAM,WAAW,KAAK,gBAAgB,MAAM,EAAE,kBAC5D,MAAM,wBAAoB,KAAK,uBAAmB,aAAa,GAAG,GAC7E,IACF,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ export {};
2
+ declare global {
3
+ interface Window {
4
+ onNpsSubmit: () => void;
5
+ }
6
+ }
7
+ //# sourceMappingURL=on-nps-submit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-nps-submit.d.ts","sourceRoot":"","sources":["../../../src/components/Rate/on-nps-submit.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAA;AAGT,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,WAAW,EAAE,MAAM,IAAI,CAAC;KACzB;CACF"}
@@ -0,0 +1,8 @@
1
+ import { overlay } from '../../LayoutOverlayManager.js';
2
+ function onNpsSubmit() {
3
+ localStorage.setItem('RATED_US_IN', Date.now().toString());
4
+ overlay.closeModal();
5
+ document.getElementById('feedback-modal-close-icon')?.click();
6
+ }
7
+ window.onNpsSubmit = onNpsSubmit;
8
+ //# sourceMappingURL=on-nps-submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-nps-submit.js","sourceRoot":"","sources":["../../../src/components/Rate/on-nps-submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,SAAS,WAAW;IAClB,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1D,OAAO,CAAC,UAAU,EAAE,CAAA;IACpB,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC,EAAE,KAAK,EAAE,CAAA;AAC/D,CAAC;AAWD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA"}
@@ -0,0 +1,17 @@
1
+ interface PropsShowFeedbackModal {
2
+ onClick: () => void;
3
+ portal: 'EDP' | 'AI';
4
+ customShouldShowNpsModal?: () => boolean;
5
+ }
6
+ export declare const ShowFeedbackModal: ({ onClick, portal, customShouldShowNpsModal }: PropsShowFeedbackModal) => import("react/jsx-runtime").JSX.Element;
7
+ interface Props {
8
+ sub: string;
9
+ tenant: string;
10
+ portal: 'EDP' | 'AI';
11
+ formIdentifier: string;
12
+ }
13
+ export declare const showRateUsModal: ({ title, ...props }: Props & {
14
+ title: string;
15
+ }) => void;
16
+ export {};
17
+ //# sourceMappingURL=show-rate-us-modals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-rate-us-modals.d.ts","sourceRoot":"","sources":["../../../src/components/Rate/show-rate-us-modals.tsx"],"names":[],"mappings":"AAIA,UAAU,sBAAsB;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,OAAO,CAAC;CAC1C;AAED,eAAO,MAAM,iBAAiB,GAAI,+CAA+C,sBAAsB,4CAEtG,CAAA;AAED,UAAU,KAAK;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,GAAI,qBAAqB,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,SAO7E,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { overlay } from '../../LayoutOverlayManager.js';
3
+ import { FeedbackModal } from './FeedbackModal.js';
4
+ import { RateComponent } from './index.js';
5
+ export const ShowFeedbackModal = ({ onClick, portal, customShouldShowNpsModal }) => (_jsx(FeedbackModal, { onClick: onClick, portal: portal, customShouldShowNpsModal: customShouldShowNpsModal }));
6
+ export const showRateUsModal = ({ title, ...props }) => {
7
+ const { formIdentifier, sub, tenant, portal } = props;
8
+ overlay.showModal({
9
+ title: title,
10
+ children: _jsx(RateComponent, { tfLive: formIdentifier, userId: sub, orgId: tenant, portal: portal }),
11
+ size: 'large',
12
+ });
13
+ };
14
+ //# sourceMappingURL=show-rate-us-modals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-rate-us-modals.js","sourceRoot":"","sources":["../../../src/components/Rate/show-rate-us-modals.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,CAAA;AAQjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAA0B,EAAE,EAAE,CAAC,CAC1G,KAAC,aAAa,IAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,wBAAwB,GAAI,CACxG,CAAA;AASD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAA6B,EAAE,EAAE;IAChF,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IACrD,OAAO,CAAC,SAAS,CAAC;QAChB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAC,aAAa,IAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAI;QAC/F,IAAI,EAAE,OAAO;KACd,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const checkVisibility: (event: StorageEvent, fnUpdateState: React.Dispatch<React.SetStateAction<boolean>>, customShouldShow?: () => boolean) => void;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Rate/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,GAAI,OAAO,YAAY,EAAE,eAAe,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAC/G,mBAAmB,MAAM,OAAO,SAOjC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { shouldShowNpsModal } from './hook.js';
2
+ export const checkVisibility = (event, fnUpdateState, customShouldShow) => {
3
+ if (event.key === 'RATED_US_IN') {
4
+ const shouldShow = customShouldShow ? customShouldShow() : shouldShowNpsModal();
5
+ if (!shouldShow) {
6
+ fnUpdateState(false);
7
+ }
8
+ }
9
+ };
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/Rate/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAE3C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAmB,EAAE,aAA4D,EAC/G,gBAAgC,EAAE,EAAE;IACpC,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAA;QAC/E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,aAAa,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
@@ -1,3 +1,38 @@
1
1
  import 'react-toastify/dist/ReactToastify.css';
2
+ export declare const TOASTER_CLOSE_BTN_CLASS = "btn-close";
3
+ /**
4
+ * Uses react-toastify to render a Toaster based on the Citric DS.
5
+ */
2
6
  export declare const Toaster: () => import("react/jsx-runtime").JSX.Element;
7
+ export interface ToasterAction {
8
+ /**
9
+ * The button's label.
10
+ */
11
+ label: string;
12
+ /**
13
+ * A function to run once the button is clicked.
14
+ */
15
+ onClick?: (event: React.MouseEvent) => void;
16
+ /**
17
+ * If this is set, instead of a button, an anchor is rendered with this href.
18
+ */
19
+ href?: string;
20
+ /**
21
+ * Whether or not to close the toaster once the button is clicked.
22
+ * @default true
23
+ */
24
+ closeOnClick?: boolean;
25
+ }
26
+ interface ToasterContentProps {
27
+ id: number | string;
28
+ actions?: ToasterAction[];
29
+ onClick?: (event: React.MouseEvent) => void;
30
+ title?: string;
31
+ message: React.ReactNode;
32
+ }
33
+ /**
34
+ * Renders a toaster with the default layout for toasters.
35
+ */
36
+ export declare const ToasterContent: ({ id, message, actions, onClick, title }: ToasterContentProps) => import("react/jsx-runtime").JSX.Element;
37
+ export {};
3
38
  //# sourceMappingURL=Toaster.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../src/components/Toaster.tsx"],"names":[],"mappings":"AAGA,OAAO,uCAAuC,CAAA;AAY9C,eAAO,MAAM,OAAO,+CAAqD,CAAA"}
1
+ {"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../src/components/Toaster.tsx"],"names":[],"mappings":"AAOA,OAAO,uCAAuC,CAAA;AAK9C,eAAO,MAAM,uBAAuB,cAAc,CAAA;AAWlD;;GAEG;AACH,eAAO,MAAM,OAAO,+CAAkF,CAAA;AAEtG,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAYD;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,0CAA0C,mBAAmB,4CAyB3F,CAAA"}
@@ -1,12 +1,40 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Flex, Text } from '@citric/core';
2
3
  import { TimesMini } from '@citric/icons';
3
4
  import { IconButton } from '@citric/ui';
4
- import { ToastContainer } from 'react-toastify';
5
+ import { useAnchorTag } from '@stack-spot/portal-components/anchor';
6
+ import { useMemo } from 'react';
7
+ import { ToastContainer, toast } from 'react-toastify';
5
8
  import 'react-toastify/dist/ReactToastify.css';
6
9
  import { useDictionary } from '../dictionary.js';
10
+ export const TOASTER_CLOSE_BTN_CLASS = 'btn-close';
7
11
  const CloseButton = ({ closeToast }) => {
8
12
  const t = useDictionary();
9
- return (_jsx(IconButton, { onClick: () => closeToast(null), title: t.dismiss, children: _jsx(TimesMini, {}) }));
13
+ return (_jsx(IconButton, { appearance: "circle", color: "light", size: "xs", className: TOASTER_CLOSE_BTN_CLASS, onClick: closeToast, title: t.dismiss, children: _jsx(TimesMini, {}) }));
14
+ };
15
+ /**
16
+ * Uses react-toastify to render a Toaster based on the Citric DS.
17
+ */
18
+ export const Toaster = () => _jsx(ToastContainer, { closeButton: CloseButton, className: "container-toaster" });
19
+ const actionStyle = {
20
+ background: 'transparent',
21
+ border: 'none',
22
+ padding: 0,
23
+ color: 'inherit',
24
+ font: 'inherit',
25
+ fontWeight: 500,
26
+ cursor: 'pointer',
27
+ };
28
+ /**
29
+ * Renders a toaster with the default layout for toasters.
30
+ */
31
+ export const ToasterContent = ({ id, message, actions, onClick, title }) => {
32
+ const Link = useAnchorTag();
33
+ const buttons = useMemo(() => actions?.map(({ label, href, onClick, closeOnClick = true }) => (_jsx(Text, { as: href ? Link : 'button', href: href, style: actionStyle, onClick: (event) => {
34
+ onClick?.(event);
35
+ if (closeOnClick)
36
+ toast.dismiss(id);
37
+ }, children: label }, label))), [actions]);
38
+ return (_jsxs("div", { onClick: onClick, children: [_jsx("h2", { children: title }), typeof message === 'string' ? _jsx("p", { children: message }) : message, buttons?.length ? _jsx(Flex, { style: { gap: '12px', marginTop: '12px' }, children: buttons }) : null] }));
10
39
  };
11
- export const Toaster = () => _jsx(ToastContainer, { closeButton: CloseButton });
12
40
  //# sourceMappingURL=Toaster.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster.js","sourceRoot":"","sources":["../../src/components/Toaster.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAoB,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,uCAAuC,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,GAAG,CAAC,EAAE,UAAU,EAAoB,EAAE,EAAE;IACvD,MAAM,CAAC,GAAG,aAAa,EAAE,CAAA;IACzB,OAAO,CACL,KAAC,UAAU,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,YAClE,KAAC,SAAS,KAAG,GACF,CACd,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAC,cAAc,IAAC,WAAW,EAAE,WAAW,GAAI,CAAA"}
1
+ {"version":3,"file":"Toaster.js","sourceRoot":"","sources":["../../src/components/Toaster.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,uCAAuC,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAI7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAA;AAElD,MAAM,WAAW,GAAG,CAAC,EAAE,UAAU,EAAoB,EAAE,EAAE;IACvD,MAAM,CAAC,GAAG,aAAa,EAAE,CAAA;IACzB,OAAO,CACL,KAAC,UAAU,IAAC,UAAU,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAE,uBAAuB,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,YAC/H,KAAC,SAAS,KAAG,GACF,CACd,CAAA;AACH,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAC,cAAc,IAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAC,mBAAmB,GAAE,CAAA;AA8BtG,MAAM,WAAW,GAAwB;IACvC,UAAU,EAAE,aAAa;IACzB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,SAAS;CAClB,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAuB,EAAE,EAAE;IAC9F,MAAM,IAAI,GAAG,YAAY,EAAE,CAAA;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CACxC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CACjD,KAAC,IAAI,IAEH,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAC1B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,CAAC,KAAuB,EAAE,EAAE;YACnC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAChB,IAAI,YAAY;gBAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACrC,CAAC,YAEA,KAAK,IATD,KAAK,CAUL,CACR,CACF,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IACb,OAAO,CACL,eAAK,OAAO,EAAE,OAAO,aACnB,uBAAK,KAAK,GAAM,EACf,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAI,OAAO,GAAK,CAAC,CAAC,CAAC,OAAO,EACxD,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAG,OAAO,GAAQ,CAAC,CAAC,CAAC,IAAI,IACvF,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function useTypeFormEffect(): void;
2
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/components/TypeForm/hook.tsx"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,SAShC"}
@@ -0,0 +1,11 @@
1
+ import { useEffectOnce } from '@stack-spot/portal-components';
2
+ import { loadTypeFormScript } from './utils.js';
3
+ export function useTypeFormEffect() {
4
+ const handleInit = async () => {
5
+ await loadTypeFormScript();
6
+ };
7
+ useEffectOnce(() => {
8
+ handleInit();
9
+ });
10
+ }
11
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/components/TypeForm/hook.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE5C,MAAM,UAAU,iBAAiB;IAE/B,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,MAAM,kBAAkB,EAAE,CAAA;IAC5B,CAAC,CAAA;IAED,aAAa,CAAC,GAAG,EAAE;QACjB,UAAU,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface TypeFormProps {
2
+ dataTfLive: string;
3
+ hiddenProps?: Record<string, string | number>;
4
+ }
5
+ export declare const TypeForm: ({ dataTfLive, hiddenProps, }: TypeFormProps) => import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TypeForm/index.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,QAAQ,GAAI,8BAGtB,aAAa,4CAqCf,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Flex } from '@citric/core';
3
+ import { LoadingCircular } from '@citric/ui';
4
+ import { useEffect, useMemo, useState } from 'react';
5
+ export const TypeForm = ({ dataTfLive, hiddenProps, }) => {
6
+ const [isLoading, setIsLoading] = useState(true);
7
+ useEffect(() => {
8
+ window.tf?.load();
9
+ setTimeout(() => {
10
+ setIsLoading(false);
11
+ }, 2000);
12
+ }, []);
13
+ const hiddenPropsString = useMemo(() => {
14
+ if (hiddenProps) {
15
+ return Object.entries(hiddenProps)
16
+ .map(([key, value]) => `${key}=${value}`)
17
+ .join(',');
18
+ }
19
+ }, [hiddenProps]);
20
+ const typeform = useMemo(() => _jsx(Box, { children: _jsx("div", { "data-tf-live": dataTfLive, "data-tf-hidden": hiddenPropsString }) }), [dataTfLive, hiddenPropsString]);
21
+ return (_jsxs(Box, { sx: { minWidth: '650px', minHeight: '500px' }, children: [isLoading && _jsx(Flex, { alignItems: "center", justifyContent: "center", w: "12", sx: { height: '100%' }, children: _jsx(LoadingCircular, {}) }), _jsx(Box, { sx: { opacity: isLoading ? '0' : 1 }, children: typeform })] }));
22
+ };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/TypeForm/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAOpD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,UAAU,EACV,WAAW,GACG,EAAE,EAAE;IAGlB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEhD,SAAS,CAAC,GAAG,EAAE;QACZ,MAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAA;QAC1B,UAAU,CAAC,GAAG,EAAE;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC,EAAE,IAAI,CAAC,CAAA;IACV,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;iBAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;iBACxC,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAC,GAAG,cACjC,8BACgB,UAAU,oBACR,iBAAiB,GACjC,GACE,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAExC,OAAO,CACL,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAC/C,SAAS,IAAI,KAAC,IAAI,IAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC3F,KAAC,eAAe,KAAG,GACd,EACP,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YACtC,QAAQ,GACL,IACF,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { TypeFormProps } from './index.js';
2
+ export declare const showTypeFormModal: ({ title, ...props }: TypeFormProps & {
3
+ title: string;
4
+ }) => void;
5
+ //# sourceMappingURL=show-typeform-modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-typeform-modal.d.ts","sourceRoot":"","sources":["../../../src/components/TypeForm/show-typeform-modal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,aAAa,EAAE,MAAM,GAAG,CAAA;AAE3C,eAAO,MAAM,iBAAiB,GAAI,qBAAqB,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,SAMvF,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { overlay } from '../../LayoutOverlayManager.js';
3
+ import { TypeForm } from './index.js';
4
+ export const showTypeFormModal = ({ title, ...props }) => {
5
+ overlay.showModal({
6
+ title: title,
7
+ children: _jsx(TypeForm, { ...props }),
8
+ size: 'large',
9
+ });
10
+ };
11
+ //# sourceMappingURL=show-typeform-modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-typeform-modal.js","sourceRoot":"","sources":["../../../src/components/TypeForm/show-typeform-modal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAiB,MAAM,GAAG,CAAA;AAE3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAqC,EAAE,EAAE;IAC1F,OAAO,CAAC,SAAS,CAAC;QAChB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAC,QAAQ,OAAK,KAAK,GAAI;QACjC,IAAI,EAAE,OAAO;KACd,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const loadTypeFormScript: () => Promise<void>;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/TypeForm/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,qBAO7B,CAAA"}
@@ -0,0 +1,9 @@
1
+ export const loadTypeFormScript = () => new Promise((resolve, reject) => {
2
+ const script = document.createElement('script');
3
+ script.setAttribute('src', '//embed.typeform.com/next/embed.js');
4
+ script.setAttribute('async', 'true');
5
+ script.onload = () => resolve();
6
+ script.onerror = (error) => reject(error);
7
+ document.body.appendChild(script);
8
+ });
9
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/TypeForm/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAA;IAChE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACpC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAC/B,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACzC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA"}
@@ -1,9 +1,26 @@
1
- import { SelectionListProps } from './SelectionList.js';
1
+ import { SelectionListProps } from '@stack-spot/portal-components/SelectionList';
2
2
  interface Props {
3
+ /**
4
+ * The user name.
5
+ */
3
6
  userName: string;
7
+ /**
8
+ * The user image to show in the user menu.
9
+ */
10
+ userImage?: string;
11
+ /**
12
+ * The user email.
13
+ */
4
14
  email?: string;
15
+ /**
16
+ * The menu options.
17
+ */
5
18
  options?: SelectionListProps['items'];
6
19
  }
7
- export declare const UserMenu: ({ userName, email, options }: Props) => import("react/jsx-runtime").JSX.Element;
20
+ /**
21
+ * Renders the user menu.
22
+ * @param props the component's props {@link Props}.
23
+ */
24
+ export declare const UserMenu: ({ userName, email, options, userImage }: Props) => import("react/jsx-runtime").JSX.Element;
8
25
  export {};
9
26
  //# sourceMappingURL=UserMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../src/components/UserMenu.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACvC;AAsDD,eAAO,MAAM,QAAQ,iCAAkC,KAAK,4CAkC3D,CAAA"}
1
+ {"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../src/components/UserMenu.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAO/F,UAAU,KAAK;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACvC;AAsDD;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,yCAAyC,KAAK,4CAwCtE,CAAA"}
@@ -2,11 +2,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Flex, IconBox, LinkBox, Text } from '@citric/core';
3
3
  import { ChevronDown } from '@citric/icons';
4
4
  import { Avatar } from '@citric/ui';
5
+ import { SelectionList } from '@stack-spot/portal-components/SelectionList';
5
6
  import { theme } from '@stack-spot/portal-theme';
6
7
  import { interpolate, useTranslate } from '@stack-spot/portal-translate';
7
- import { useState } from 'react';
8
+ import { useEffect, useState } from 'react';
8
9
  import { styled } from 'styled-components';
9
- import { SelectionList } from './SelectionList.js';
10
+ import { userMenuManager } from './user-menu-manager.js';
10
11
  const USER_MENU_ID = 'userMenu';
11
12
  const UserMenuBox = styled.div `
12
13
  .user-menu-header {
@@ -49,12 +50,17 @@ const UserMenuBox = styled.div `
49
50
  transition: transform ease-out 0.3s;
50
51
  }
51
52
  `;
52
- const UserMenuHeader = ({ userName, email }) => (_jsxs("div", { className: "user-menu-header", children: [_jsx(Avatar, { size: "xs", children: userName }), _jsx(Text, { appearance: "body1", className: "username", children: userName }), email && _jsx(Text, { appearance: "microtext1", className: "email", colorScheme: "light.700", children: email })] }));
53
- export const UserMenu = ({ userName, email, options }) => {
53
+ const UserMenuHeader = ({ userName, email, userImage }) => (_jsxs("div", { className: "user-menu-header", children: [_jsx(Avatar, { size: "xs", children: userImage ? (_jsx("img", { src: userImage })) : userName }), _jsx(Text, { appearance: "body1", className: "username", children: userName }), email && _jsx(Text, { appearance: "microtext1", className: "email", colorScheme: "light.700", children: email })] }));
54
+ /**
55
+ * Renders the user menu.
56
+ * @param props the component's props {@link Props}.
57
+ */
58
+ export const UserMenu = ({ userName, email, options, userImage }) => {
54
59
  const t = useTranslate(dictionary);
55
60
  const [visible, setVisible] = useState(false);
56
- return (_jsxs(UserMenuBox, { children: [_jsx(LinkBox, { as: "button", onClick: () => setVisible(v => !v), "aria-controls": USER_MENU_ID, "aria-expanded": visible, "aria-label": interpolate(t.accountMenu, [userName]), children: _jsxs(Flex, { alignItems: "center", children: [_jsx(Avatar, { size: "xs", "aria-label": interpolate(t.accountMenu, [userName]), children: userName }), _jsx(IconBox, { colorIcon: "inverse.500", className: "chevron", style: visible ? { transform: 'rotate(180deg)' } : undefined, children: _jsx(ChevronDown, {}) })] }) }), options?.length
57
- ? _jsx(SelectionList, { id: USER_MENU_ID, visible: visible, before: _jsx(UserMenuHeader, { userName: userName, email: email }), items: options, onHide: () => setVisible(false), maxHeight: "600px" })
61
+ useEffect(() => userMenuManager.subscribe(setVisible), []);
62
+ return (_jsxs(UserMenuBox, { children: [_jsx(LinkBox, { as: "button", onClick: () => setVisible(v => !v), "aria-controls": USER_MENU_ID, "aria-expanded": visible, "aria-label": interpolate(t.accountMenu, [userName]), children: _jsxs(Flex, { alignItems: "center", children: [_jsx(Avatar, { size: "xs", "aria-label": interpolate(t.accountMenu, [userName]), children: userImage ? (_jsx("img", { src: userImage })) : userName }), _jsx(IconBox, { colorIcon: "inverse.500", className: "chevron", style: visible ? { transform: 'rotate(180deg)' } : undefined, children: _jsx(ChevronDown, {}) })] }) }), options?.length
63
+ ? _jsx(SelectionList, { id: USER_MENU_ID, visible: visible, before: _jsx(UserMenuHeader, { userName: userName, email: email, userImage: userImage }), items: options, onHide: () => setVisible(false), maxHeight: "calc(100vh - 70px)" })
58
64
  : null] }));
59
65
  };
60
66
  const dictionary = {
@@ -1 +1 @@
1
- {"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../src/components/UserMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../src/components/UserMenu.tsx"],"names":[],"mappings":"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"}