@antscorp/antsomi-ui 1.3.7-beta.70 → 1.3.7-beta.71

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 (389) hide show
  1. package/README.md +148 -78
  2. package/es/__mocks__/1000_city.json +802 -802
  3. package/es/__mocks__/sql-query.json +56 -56
  4. package/es/assets/css/main.scss +8 -8
  5. package/es/assets/images/feedback.svg +3 -3
  6. package/es/assets/svg/mobile-frame.svg +3 -3
  7. package/es/assets/svg/warning-icon.svg +5 -5
  8. package/es/components/atoms/Alert/Alert.js +28 -28
  9. package/es/components/atoms/ContentEditable/styled.js +16 -16
  10. package/es/components/atoms/DividerPure/styled.js +35 -35
  11. package/es/components/atoms/Eyedropper/styled.js +39 -39
  12. package/es/components/atoms/Icon/index.js +19 -19
  13. package/es/components/atoms/Iframe/Iframe.js +18 -18
  14. package/es/components/atoms/Input/styled.js +104 -104
  15. package/es/components/atoms/InputDynamic/styled.js +284 -284
  16. package/es/components/atoms/MobileBrandingBar/styled.js +21 -21
  17. package/es/components/atoms/MobileFrame/styled.js +30 -30
  18. package/es/components/atoms/MobileFrameV2/styled.js +42 -42
  19. package/es/components/atoms/MobileFrameV3/styled.js +31 -31
  20. package/es/components/atoms/NotificationStatus/styled.js +10 -10
  21. package/es/components/atoms/PreviewTabs/styled.js +69 -69
  22. package/es/components/atoms/Radio/index.js +16 -16
  23. package/es/components/atoms/ReactIframe/ReactIframe.js +5 -5
  24. package/es/components/atoms/ReactIframe/styled.js +9 -9
  25. package/es/components/atoms/RequiredLabel/styled.js +3 -3
  26. package/es/components/atoms/ScrollBox/index.js +5 -5
  27. package/es/components/atoms/Scrollbars/styled.js +21 -21
  28. package/es/components/atoms/SelectAssociatedTag/styled.js +51 -51
  29. package/es/components/atoms/SlideBar/styled.js +194 -194
  30. package/es/components/atoms/Slider/styled.js +31 -31
  31. package/es/components/atoms/Space/Space.js +4 -4
  32. package/es/components/atoms/Spin/styled.js +11 -11
  33. package/es/components/atoms/Steps/styled.js +244 -244
  34. package/es/components/atoms/Switch/styled.js +56 -56
  35. package/es/components/atoms/Tag/Tag.js +11 -11
  36. package/es/components/atoms/Text/styled.js +34 -34
  37. package/es/components/icons/DomainManagementIcon.js +1 -1
  38. package/es/components/icons/LoadingIcon.js +33 -33
  39. package/es/components/icons/document/styled.js +43 -43
  40. package/es/components/index.scss +2 -2
  41. package/es/components/molecules/AccessDenied/styled.js +28 -28
  42. package/es/components/molecules/AccountSelection/styled.js +110 -110
  43. package/es/components/molecules/AddDynamicContent/styled.js +23 -23
  44. package/es/components/molecules/AlignSetting/styled.js +4 -4
  45. package/es/components/molecules/ApplyPopupContent/styled.js +32 -32
  46. package/es/components/molecules/CalendarSelection/components/AutoUpdateTo/styled.js +8 -8
  47. package/es/components/molecules/CalendarSelection/components/CustomPicker/styled.js +79 -79
  48. package/es/components/molecules/CalendarSelection/components/Footer/styled.js +4 -4
  49. package/es/components/molecules/CalendarSelection/components/RangePicker/styled.js +21 -21
  50. package/es/components/molecules/CalendarSelection/components/RangeSelectOptions/components/Option/Option.js +26 -26
  51. package/es/components/molecules/CalendarSelection/components/RangeSelectOptions/styled.js +30 -30
  52. package/es/components/molecules/CalendarSelection/components/TimeRangeDisplay/styled.js +26 -26
  53. package/es/components/molecules/CalendarSelection/styled.js +8 -8
  54. package/es/components/molecules/CaptureScreen/components/CommentBox/styled.js +119 -119
  55. package/es/components/molecules/CaptureScreen/components/Cursor/styled.js +67 -67
  56. package/es/components/molecules/CaptureScreen/styled.js +240 -240
  57. package/es/components/molecules/ChartTab/components/styled.js +24 -24
  58. package/es/components/molecules/ChartTab/styled.js +20 -20
  59. package/es/components/molecules/ChatBox/AntsomiAI.js +8 -8
  60. package/es/components/molecules/ChatBox/ChatBoxInsight/QuestionItem.js +9 -9
  61. package/es/components/molecules/ChatBox/ChatBoxInsight/styled.js +365 -365
  62. package/es/components/molecules/ChatBox/styled.js +324 -324
  63. package/es/components/molecules/CodeStructure/styled.js +5 -5
  64. package/es/components/molecules/ColorPicker/ChromePicker/styled.js +10 -10
  65. package/es/components/molecules/ColorPicker/CustomPicker/styled.js +89 -89
  66. package/es/components/molecules/ColorPicker/SketchPicker/styled.js +5 -5
  67. package/es/components/molecules/ColorPicker/styled.js +7 -7
  68. package/es/components/molecules/ColorSetting/styled.js +39 -39
  69. package/es/components/molecules/DatePicker/components/AdvancedPicker/styled.js +110 -110
  70. package/es/components/molecules/DatePickerV2/styled.js +6 -6
  71. package/es/components/molecules/DisplayFormat/styled.js +12 -12
  72. package/es/components/molecules/DrawerDetail/components/ToggleDrawerSizeButton.js +24 -24
  73. package/es/components/molecules/DrawerDetail/styled.js +109 -109
  74. package/es/components/molecules/Dropdown/style.scss +11 -11
  75. package/es/components/molecules/Dropdown/styled.js +28 -28
  76. package/es/components/molecules/EdgeSetting/styled.js +10 -10
  77. package/es/components/molecules/EditableName/styled.js +70 -70
  78. package/es/components/molecules/EditingList/styled.js +29 -29
  79. package/es/components/molecules/EditingListV2/components/List/List.js +9 -9
  80. package/es/components/molecules/EditorTab/styled.js +156 -156
  81. package/es/components/molecules/EmojiCollections/styled.js +22 -22
  82. package/es/components/molecules/EmojiPopover/styled.js +4 -4
  83. package/es/components/molecules/EmptyData/EmptyData.d.ts +1 -1
  84. package/es/components/molecules/EmptyData/EmptyData.js +4 -2
  85. package/es/components/molecules/EmptyData/styled.js +53 -53
  86. package/es/components/molecules/EyedropperButton/styled.js +19 -19
  87. package/es/components/molecules/FontSizeInput/index.scss +15 -15
  88. package/es/components/molecules/FontSizeInput/styled.js +31 -31
  89. package/es/components/molecules/GradientSetting/styled.js +57 -57
  90. package/es/components/molecules/HeaderV2/styled.js +70 -70
  91. package/es/components/molecules/IconSelection/styled.js +69 -69
  92. package/es/components/molecules/ImageEditor/components/ModalShortcut.js +21 -21
  93. package/es/components/molecules/ImageEditor/styled.js +5 -5
  94. package/es/components/molecules/ImagePreview/styled.js +3 -3
  95. package/es/components/molecules/InputNumberWithUnit/styled.js +14 -14
  96. package/es/components/molecules/InputSearch/index.d.ts +1 -1
  97. package/es/components/molecules/InputSearch/index.js +2 -1
  98. package/es/components/molecules/InputSearch/styled.js +41 -41
  99. package/es/components/molecules/InputSelectAttribute/styled.js +22 -22
  100. package/es/components/molecules/ItemNotFound/styled.js +26 -26
  101. package/es/components/molecules/MatchAnySelect/components/ExtendValuePopup.js +8 -8
  102. package/es/components/molecules/MatchAnySelect/styled.js +247 -247
  103. package/es/components/molecules/Modal/styled.js +63 -63
  104. package/es/components/molecules/ModalSelect/styled.js +152 -152
  105. package/es/components/molecules/ModalV2/ModalV2.js +2 -1
  106. package/es/components/molecules/ModalV2/styled.js +27 -27
  107. package/es/components/molecules/PopupDraggable/styled.js +57 -57
  108. package/es/components/molecules/PreviewModal/styled.js +26 -26
  109. package/es/components/molecules/ProcessLoading/styled.js +2 -2
  110. package/es/components/molecules/QuillEditor/CustomToolbar.js +3165 -3165
  111. package/es/components/molecules/QuillEditor/EditorToolbar.js +7 -7
  112. package/es/components/molecules/QuillEditor/styled.js +25 -25
  113. package/es/components/molecules/RadioGroup/styled.js +9 -9
  114. package/es/components/molecules/RequestAccess/styled.js +38 -38
  115. package/es/components/molecules/ResizeGrid/components/Cell/styled.js +77 -77
  116. package/es/components/molecules/ResizeGrid/styled.js +50 -50
  117. package/es/components/molecules/RichMenu/RichMenuBlock/RichMenuCell/styled.js +118 -118
  118. package/es/components/molecules/RichMenu/RichMenuBlock/styled.js +13 -13
  119. package/es/components/molecules/RichMenu/RichMenuChatBar/TypingChat/styled.js +40 -40
  120. package/es/components/molecules/RichMenu/RichMenuChatBar/styled.js +27 -27
  121. package/es/components/molecules/RichMenu/RichMenuMobileView/RichMenuMobileView.js +2 -2
  122. package/es/components/molecules/RichMenu/RichMenuMobileView/styled.js +38 -38
  123. package/es/components/molecules/SearchPopover/components/PopoverSelect/styled.js +36 -36
  124. package/es/components/molecules/SearchPopover/components/PopoverSelect/styles.scss +7 -7
  125. package/es/components/molecules/SearchPopover/styled.js +32 -32
  126. package/es/components/molecules/Select/styled.js +74 -74
  127. package/es/components/molecules/SelectAccount/styled.js +147 -147
  128. package/es/components/molecules/SelectEventAttribute/styled.js +8 -8
  129. package/es/components/molecules/SelectMulti/styled.js +62 -62
  130. package/es/components/molecules/SelectV2/styled.js +124 -124
  131. package/es/components/molecules/SettingWrapper/styled.js +12 -12
  132. package/es/components/molecules/ShareAccess/components/GeneralAccess/styled.js +56 -56
  133. package/es/components/molecules/ShareAccess/components/LayoutContent/styled.js +5 -5
  134. package/es/components/molecules/ShareAccess/components/ModalTransferOwnerShip/styled.js +15 -15
  135. package/es/components/molecules/ShareAccess/components/PeopleAccess/styled.js +63 -63
  136. package/es/components/molecules/ShareAccess/components/SearchUser/styled.js +31 -31
  137. package/es/components/molecules/SliderWithInputNumber/styled.js +2 -2
  138. package/es/components/molecules/Tabs/Tabs.js +11 -11
  139. package/es/components/molecules/TagifyInput/TagifyInput.js +50 -50
  140. package/es/components/molecules/TagifyInput/styled.js +37 -37
  141. package/es/components/molecules/TagifyInput/utils.js +13 -13
  142. package/es/components/molecules/TagifyInput/utils.style.js +208 -208
  143. package/es/components/molecules/TemplateSaveAs/components/Category/Category.js +5 -5
  144. package/es/components/molecules/TemplateSaveAs/components/ImageSlider/styled.js +276 -276
  145. package/es/components/molecules/TemplateSaveAs/styled.js +134 -134
  146. package/es/components/molecules/ThumbnailCard/styled.js +92 -92
  147. package/es/components/molecules/Tree/styled.js +38 -38
  148. package/es/components/molecules/UnsubscribePreferences/styled.js +7 -7
  149. package/es/components/molecules/UnsubscribePreview/components/styled.js +53 -53
  150. package/es/components/molecules/UnsubscribePreview/styled.js +48 -48
  151. package/es/components/molecules/UploadImage/styled.js +114 -114
  152. package/es/components/molecules/VirtualizedMenu/styled.js +103 -103
  153. package/es/components/molecules/index.scss +1 -1
  154. package/es/components/organism/AccountProfile/components/AccountSetting/components/EditableInput/styles.js +98 -98
  155. package/es/components/organism/AccountProfile/components/AccountSetting/components/LanguageSelector/styles.js +18 -18
  156. package/es/components/organism/AccountProfile/components/AccountSetting/styled.js +543 -543
  157. package/es/components/organism/AccountProfile/components/AccountSetting/styles.scss +39 -39
  158. package/es/components/organism/AccountSharing/styled.js +346 -346
  159. package/es/components/organism/ActivityTimeline/__mocks__/event_tracking.json +1290 -1290
  160. package/es/components/organism/ActivityTimeline/__mocks__/timeline.json +1896 -1896
  161. package/es/components/organism/ActivityTimeline/components/ActionHistory/styled.js +28 -28
  162. package/es/components/organism/ActivityTimeline/components/CardMember/styled.js +60 -60
  163. package/es/components/organism/ActivityTimeline/components/ItemGroupEvent/styled.js +4 -4
  164. package/es/components/organism/ActivityTimeline/components/List/styled.js +77 -77
  165. package/es/components/organism/ActivityTimeline/components/ListItem/styled.js +37 -37
  166. package/es/components/organism/ActivityTimeline/components/ProductCard/styled.js +92 -92
  167. package/es/components/organism/ActivityTimeline/components/Redeem/styled.js +7 -7
  168. package/es/components/organism/ActivityTimeline/components/Slide/styled.js +20 -20
  169. package/es/components/organism/ActivityTimeline/components/TimeLineTitle/styled.js +7 -7
  170. package/es/components/organism/ActivityTimeline/components/TimelineSection/styled.js +69 -69
  171. package/es/components/organism/ActivityTimeline/styled.js +43 -43
  172. package/es/components/organism/AlgorithmsSetting/styled.js +35 -35
  173. package/es/components/organism/BasicLogin/components/ChooseMethod/styled.js +19 -19
  174. package/es/components/organism/BasicLogin/components/LoginWithEmail/styled.js +3 -3
  175. package/es/components/organism/BasicLogin/components/LoginWithGG/styled.js +3 -3
  176. package/es/components/organism/BasicLogin/components/SignIn/styled.js +8 -8
  177. package/es/components/organism/BasicLogin/components/WidgetLayout/styled.js +18 -18
  178. package/es/components/organism/BasicLogin/styled.js +107 -107
  179. package/es/components/organism/ContentSources/styled.js +50 -50
  180. package/es/components/organism/DataTable/components/AddButton/index.js +8 -8
  181. package/es/components/organism/DataTable/components/ModifyColumn/styled.js +18 -18
  182. package/es/components/organism/DataTable/components/Pagination/styled.js +26 -26
  183. package/es/components/organism/DataTable/components/Table/styled.js +135 -135
  184. package/es/components/organism/DataTable/components/Toolbar/SearchPopover.js +17 -17
  185. package/es/components/organism/DataTable/components/Toolbar/styled.js +70 -70
  186. package/es/components/organism/DataTable/styled/index.js +84 -84
  187. package/es/components/organism/Filter/components/FilterCondition/styled.js +34 -34
  188. package/es/components/organism/Filter/styled.js +109 -109
  189. package/es/components/organism/FilterSetting/components/common/InputArray/styled.js +5 -5
  190. package/es/components/organism/FilterSetting/components/common/InputOrSelect/index.js +63 -63
  191. package/es/components/organism/FilterSetting/components/common/InputSelectMulti/ColumnSuggestion/index.js +31 -31
  192. package/es/components/organism/FilterSetting/components/common/InputSelectMulti/Tree/index.js +22 -22
  193. package/es/components/organism/FilterSetting/components/common/InputSelectMulti/index.js +55 -55
  194. package/es/components/organism/FilterSetting/styled.js +19 -19
  195. package/es/components/organism/GenerativeInsights/styled.js +55 -55
  196. package/es/components/organism/Help/styled.js +267 -267
  197. package/es/components/organism/LeftMenu/components/HomeMenu/styled.js +39 -39
  198. package/es/components/organism/LeftMenu/components/common/ChildMenu/components/MenuItemImage/styled.js +16 -16
  199. package/es/components/organism/LeftMenu/components/common/ChildMenu/styled.js +156 -156
  200. package/es/components/organism/LeftMenu/styled.js +216 -216
  201. package/es/components/organism/Login/components/ChooseMethod/styled.js +19 -19
  202. package/es/components/organism/Login/components/ForgotPassword/styled.js +8 -8
  203. package/es/components/organism/Login/components/IconInfo/IconInfo.js +1 -1
  204. package/es/components/organism/Login/components/LoginSelectPortal/Item/styled.js +31 -31
  205. package/es/components/organism/Login/components/LoginSelectPortal/LoginSelectPortal.js +1 -1
  206. package/es/components/organism/Login/components/LoginSelectPortal/styled.js +3 -3
  207. package/es/components/organism/Login/components/LoginWithEmail/styled.js +3 -3
  208. package/es/components/organism/Login/components/LoginWithGG/styled.js +3 -3
  209. package/es/components/organism/Login/components/SetupGGAuthenticator/styled.js +7 -7
  210. package/es/components/organism/Login/components/SignIn/styled.js +8 -8
  211. package/es/components/organism/Login/components/VerifyAccount/styled.js +13 -13
  212. package/es/components/organism/Login/components/WidgetLayout/styled.js +18 -18
  213. package/es/components/organism/Login/styled.js +115 -115
  214. package/es/components/organism/LoginV2/LoginV2.d.ts +3 -0
  215. package/es/components/organism/LoginV2/LoginV2.js +957 -0
  216. package/es/components/organism/LoginV2/components/Avatar/Avatar.d.ts +8 -0
  217. package/es/components/organism/LoginV2/components/Avatar/Avatar.js +11 -0
  218. package/es/components/organism/LoginV2/components/Avatar/index.d.ts +1 -0
  219. package/es/components/organism/LoginV2/components/Avatar/index.js +1 -0
  220. package/es/components/organism/LoginV2/components/ChooseMethod/ChooseMethod.d.ts +9 -0
  221. package/es/components/organism/LoginV2/components/ChooseMethod/ChooseMethod.js +54 -0
  222. package/es/components/organism/LoginV2/components/ChooseMethod/Method.d.ts +10 -0
  223. package/es/components/organism/LoginV2/components/ChooseMethod/Method.js +13 -0
  224. package/es/components/organism/LoginV2/components/ChooseMethod/index.d.ts +1 -0
  225. package/es/components/organism/LoginV2/components/ChooseMethod/index.js +1 -0
  226. package/es/components/organism/LoginV2/components/ChooseMethod/styled.d.ts +10 -0
  227. package/es/components/organism/LoginV2/components/ChooseMethod/styled.js +24 -0
  228. package/es/components/organism/LoginV2/components/ChooseMethod/utils.d.ts +1 -0
  229. package/es/components/organism/LoginV2/components/ChooseMethod/utils.js +1 -0
  230. package/es/components/organism/LoginV2/components/ForgotPassword/ForgotPassword.d.ts +14 -0
  231. package/es/components/organism/LoginV2/components/ForgotPassword/ForgotPassword.js +195 -0
  232. package/es/components/organism/LoginV2/components/ForgotPassword/index.d.ts +2 -0
  233. package/es/components/organism/LoginV2/components/ForgotPassword/index.js +2 -0
  234. package/es/components/organism/LoginV2/components/ForgotPassword/styled.d.ts +1 -0
  235. package/es/components/organism/LoginV2/components/ForgotPassword/styled.js +10 -0
  236. package/es/components/organism/LoginV2/components/IconInfo/IconInfo.d.ts +7 -0
  237. package/es/components/organism/LoginV2/components/IconInfo/IconInfo.js +18 -0
  238. package/es/components/organism/LoginV2/components/IconInfo/index.d.ts +1 -0
  239. package/es/components/organism/LoginV2/components/IconInfo/index.js +1 -0
  240. package/es/components/organism/LoginV2/components/LoginSelectPortal/Item/Item.d.ts +10 -0
  241. package/es/components/organism/LoginV2/components/LoginSelectPortal/Item/Item.js +12 -0
  242. package/es/components/organism/LoginV2/components/LoginSelectPortal/Item/index.d.ts +1 -0
  243. package/es/components/organism/LoginV2/components/LoginSelectPortal/Item/index.js +1 -0
  244. package/es/components/organism/LoginV2/components/LoginSelectPortal/Item/styled.d.ts +2 -0
  245. package/es/components/organism/LoginV2/components/LoginSelectPortal/Item/styled.js +34 -0
  246. package/es/components/organism/LoginV2/components/LoginSelectPortal/LoginSelectPortal.d.ts +19 -0
  247. package/es/components/organism/LoginV2/components/LoginSelectPortal/LoginSelectPortal.js +194 -0
  248. package/es/components/organism/LoginV2/components/LoginSelectPortal/index.d.ts +1 -0
  249. package/es/components/organism/LoginV2/components/LoginSelectPortal/index.js +1 -0
  250. package/es/components/organism/LoginV2/components/LoginSelectPortal/styled.d.ts +1 -0
  251. package/es/components/organism/LoginV2/components/LoginSelectPortal/styled.js +5 -0
  252. package/es/components/organism/LoginV2/components/LoginWithEmail/LoginWithEmail.d.ts +15 -0
  253. package/es/components/organism/LoginV2/components/LoginWithEmail/LoginWithEmail.js +211 -0
  254. package/es/components/organism/LoginV2/components/LoginWithEmail/index.d.ts +1 -0
  255. package/es/components/organism/LoginV2/components/LoginWithEmail/index.js +1 -0
  256. package/es/components/organism/LoginV2/components/LoginWithEmail/styled.d.ts +3 -0
  257. package/es/components/organism/LoginV2/components/LoginWithEmail/styled.js +5 -0
  258. package/es/components/organism/LoginV2/components/LoginWithGG/LoginWithGG.d.ts +14 -0
  259. package/es/components/organism/LoginV2/components/LoginWithGG/LoginWithGG.js +116 -0
  260. package/es/components/organism/LoginV2/components/LoginWithGG/index.d.ts +1 -0
  261. package/es/components/organism/LoginV2/components/LoginWithGG/index.js +1 -0
  262. package/es/components/organism/LoginV2/components/LoginWithGG/styled.d.ts +3 -0
  263. package/es/components/organism/LoginV2/components/LoginWithGG/styled.js +5 -0
  264. package/es/components/organism/LoginV2/components/Logo/Logo.d.ts +6 -0
  265. package/es/components/organism/LoginV2/components/Logo/Logo.js +9 -0
  266. package/es/components/organism/LoginV2/components/Logo/index.d.ts +1 -0
  267. package/es/components/organism/LoginV2/components/Logo/index.js +1 -0
  268. package/es/components/organism/LoginV2/components/OryConsent/OryAuthLayout.d.ts +9 -0
  269. package/es/components/organism/LoginV2/components/OryConsent/OryAuthLayout.js +4 -0
  270. package/es/components/organism/LoginV2/components/OryConsent/OryConsent.d.ts +17 -0
  271. package/es/components/organism/LoginV2/components/OryConsent/OryConsent.js +204 -0
  272. package/es/components/organism/LoginV2/components/OryConsent/OryThemeProvider.d.ts +8 -0
  273. package/es/components/organism/LoginV2/components/OryConsent/OryThemeProvider.js +10 -0
  274. package/es/components/organism/LoginV2/components/OryConsent/PortalSelect.d.ts +15 -0
  275. package/es/components/organism/LoginV2/components/OryConsent/PortalSelect.js +30 -0
  276. package/es/components/organism/LoginV2/components/OryConsent/ScopeConsent.d.ts +20 -0
  277. package/es/components/organism/LoginV2/components/OryConsent/ScopeConsent.js +29 -0
  278. package/es/components/organism/LoginV2/components/OryConsent/index.d.ts +2 -0
  279. package/es/components/organism/LoginV2/components/OryConsent/index.js +2 -0
  280. package/es/components/organism/LoginV2/components/OryConsent/styled.d.ts +31 -0
  281. package/es/components/organism/LoginV2/components/OryConsent/styled.js +292 -0
  282. package/es/components/organism/LoginV2/components/OrySignIn/OryFormShell.d.ts +9 -0
  283. package/es/components/organism/LoginV2/components/OrySignIn/OryFormShell.js +36 -0
  284. package/es/components/organism/LoginV2/components/OrySignIn/OryMfa.d.ts +11 -0
  285. package/es/components/organism/LoginV2/components/OrySignIn/OryMfa.js +144 -0
  286. package/es/components/organism/LoginV2/components/OrySignIn/OryRecovery.d.ts +9 -0
  287. package/es/components/organism/LoginV2/components/OrySignIn/OryRecovery.js +128 -0
  288. package/es/components/organism/LoginV2/components/OrySignIn/OryStatus.d.ts +17 -0
  289. package/es/components/organism/LoginV2/components/OrySignIn/OryStatus.js +33 -0
  290. package/es/components/organism/LoginV2/components/OrySignIn/index.d.ts +3 -0
  291. package/es/components/organism/LoginV2/components/OrySignIn/index.js +3 -0
  292. package/es/components/organism/LoginV2/components/SetupGGAuthenticator/SetupGGAuthenticator.d.ts +14 -0
  293. package/es/components/organism/LoginV2/components/SetupGGAuthenticator/SetupGGAuthenticator.js +100 -0
  294. package/es/components/organism/LoginV2/components/SetupGGAuthenticator/index.d.ts +2 -0
  295. package/es/components/organism/LoginV2/components/SetupGGAuthenticator/index.js +2 -0
  296. package/es/components/organism/LoginV2/components/SetupGGAuthenticator/styled.d.ts +4 -0
  297. package/es/components/organism/LoginV2/components/SetupGGAuthenticator/styled.js +10 -0
  298. package/es/components/organism/LoginV2/components/SignIn/SignIn.d.ts +22 -0
  299. package/es/components/organism/LoginV2/components/SignIn/SignIn.js +107 -0
  300. package/es/components/organism/LoginV2/components/SignIn/index.d.ts +1 -0
  301. package/es/components/organism/LoginV2/components/SignIn/index.js +1 -0
  302. package/es/components/organism/LoginV2/components/SignIn/styled.d.ts +3 -0
  303. package/es/components/organism/LoginV2/components/SignIn/styled.js +10 -0
  304. package/es/components/organism/LoginV2/components/VerifyAccount/VerifyAccount.d.ts +25 -0
  305. package/es/components/organism/LoginV2/components/VerifyAccount/VerifyAccount.js +42 -0
  306. package/es/components/organism/LoginV2/components/VerifyAccount/index.d.ts +1 -0
  307. package/es/components/organism/LoginV2/components/VerifyAccount/index.js +1 -0
  308. package/es/components/organism/LoginV2/components/VerifyAccount/styled.d.ts +22 -0
  309. package/es/components/organism/LoginV2/components/VerifyAccount/styled.js +17 -0
  310. package/es/components/organism/LoginV2/components/WidgetLayout/WidgetLayout.d.ts +13 -0
  311. package/es/components/organism/LoginV2/components/WidgetLayout/WidgetLayout.js +18 -0
  312. package/es/components/organism/LoginV2/components/WidgetLayout/index.d.ts +1 -0
  313. package/es/components/organism/LoginV2/components/WidgetLayout/index.js +1 -0
  314. package/es/components/organism/LoginV2/components/WidgetLayout/styled.d.ts +5 -0
  315. package/es/components/organism/LoginV2/components/WidgetLayout/styled.js +22 -0
  316. package/es/components/organism/LoginV2/components/index.d.ts +11 -0
  317. package/es/components/organism/LoginV2/components/index.js +11 -0
  318. package/es/components/organism/LoginV2/constants/index.d.ts +48 -0
  319. package/es/components/organism/LoginV2/constants/index.js +48 -0
  320. package/es/components/organism/LoginV2/hooks/index.d.ts +1 -0
  321. package/es/components/organism/LoginV2/hooks/index.js +1 -0
  322. package/es/components/organism/LoginV2/hooks/useResize.d.ts +7 -0
  323. package/es/components/organism/LoginV2/hooks/useResize.js +21 -0
  324. package/es/components/organism/LoginV2/index.d.ts +6 -0
  325. package/es/components/organism/LoginV2/index.js +4 -0
  326. package/es/components/organism/LoginV2/styled.d.ts +51 -0
  327. package/es/components/organism/LoginV2/styled.js +129 -0
  328. package/es/components/organism/LoginV2/types/index.d.ts +79 -0
  329. package/es/components/organism/LoginV2/types/index.js +1 -0
  330. package/es/components/organism/LoginV2/types/ory.d.ts +52 -0
  331. package/es/components/organism/LoginV2/types/ory.js +1 -0
  332. package/es/components/organism/LoginV2/utils/index.d.ts +14 -0
  333. package/es/components/organism/LoginV2/utils/index.js +49 -0
  334. package/es/components/organism/LoginV2/utils/ory.d.ts +138 -0
  335. package/es/components/organism/LoginV2/utils/ory.js +408 -0
  336. package/es/components/organism/LoginV2/utils/oryConsent.d.ts +52 -0
  337. package/es/components/organism/LoginV2/utils/oryConsent.js +174 -0
  338. package/es/components/organism/LoginV2/utils/oryFlows.d.ts +100 -0
  339. package/es/components/organism/LoginV2/utils/oryFlows.js +319 -0
  340. package/es/components/organism/Menu/styled.js +6 -6
  341. package/es/components/organism/ModifyColumnModal/styled.js +132 -132
  342. package/es/components/organism/Notification/styled.js +155 -155
  343. package/es/components/organism/PreviewCollections/Messages/SkeletonMessage/styled.js +14 -14
  344. package/es/components/organism/PreviewCollections/WhatsappMessage/CarouselMessage/styled.js +63 -63
  345. package/es/components/organism/PreviewCollections/constants.js +50 -50
  346. package/es/components/organism/PreviewCollections/styled.js +16 -16
  347. package/es/components/organism/PreviewTemplateModal/components/Banner/styled.js +78 -78
  348. package/es/components/organism/PreviewTemplateModal/components/Information/styled.js +52 -52
  349. package/es/components/organism/PreviewTemplateModal/components/SimilarTemplate/styled.js +18 -18
  350. package/es/components/organism/PreviewTemplateModal/components/ThumbnailSlider/styled.js +77 -77
  351. package/es/components/organism/PreviewTemplateModal/styled.js +21 -21
  352. package/es/components/organism/SQLGeneration/components/styled.js +354 -354
  353. package/es/components/organism/SQLGeneration/index.scss +1 -1
  354. package/es/components/organism/SQLGeneration/integrations/AceEditor/index.scss +4 -4
  355. package/es/components/organism/Table/CrossTabTable/components/CustomCell/styled.js +11 -11
  356. package/es/components/organism/Table/CrossTabTable/styled.js +11 -11
  357. package/es/components/organism/Table/ExplorePivotTable/components/CustomCell/styled.js +17 -17
  358. package/es/components/organism/Table/ExplorePivotTable/styled.js +11 -11
  359. package/es/components/organism/TextEditor/__mocks__/text-contennt.js +44 -44
  360. package/es/components/organism/TextEditor/index.scss +65 -65
  361. package/es/components/organism/TextEditor/stories/WithOldDynAndLink/froala-legacy-format.settings.json +95 -95
  362. package/es/components/organism/TextEditor/styled.js +54 -54
  363. package/es/components/organism/TextEditor/ui/Button/Button.js +22 -22
  364. package/es/components/organism/TextEditor/ui/DropdownButton/DropdownButton.js +13 -13
  365. package/es/components/organism/TextEditor/ui/FontPopover/styled.js +32 -32
  366. package/es/components/organism/TextEditor/ui/SplitButtonDropdown/styled.js +54 -54
  367. package/es/components/organism/TextEditor/ui/TextAlignSelect/TextAlignSelect.js +9 -9
  368. package/es/components/organism/TextEditor/ui/Toolbar/actions/FontSizeAction.js +11 -11
  369. package/es/components/organism/TicketEditor/styled.js +860 -860
  370. package/es/components/organism/TicketEditorV2/styled.js +839 -839
  371. package/es/components/organism/index.d.ts +2 -0
  372. package/es/components/organism/index.js +1 -0
  373. package/es/components/organism/index.scss +2 -2
  374. package/es/components/template/Layout/Layout.js +10 -10
  375. package/es/components/template/Layout/components/RecommendationWorkspace/components/MenuMapping/components/OldLeftMenu/styled.js +73 -73
  376. package/es/components/template/Layout/components/RecommendationWorkspace/components/MenuMapping/styled.js +39 -39
  377. package/es/components/template/Layout/components/RecommendationWorkspace/components/RecommendationImage/styled.js +61 -61
  378. package/es/components/template/Layout/components/RecommendationWorkspace/styled.js +16 -16
  379. package/es/components/template/Layout/styled.js +84 -84
  380. package/es/components/template/TemplateListing/components/BlankTemplate/styled.js +21 -21
  381. package/es/components/template/TemplateListing/components/CategoryListing/styled.js +123 -123
  382. package/es/components/template/TemplateListing/components/Empty/styled.js +20 -20
  383. package/es/components/template/TemplateListing/stories/demo/styled.js +4 -4
  384. package/es/components/template/TemplateListing/styled/index.js +40 -40
  385. package/es/providers/ConfigProvider/GlobalStyle.js +1251 -1251
  386. package/es/styled/common.js +51 -51
  387. package/es/tests/styled.js +4 -4
  388. package/es/utils/variables.js +7 -7
  389. package/package.json +282 -282
@@ -0,0 +1,100 @@
1
+ import type { FetchLike, LocationLike } from './ory';
2
+ export declare const DEFAULT_KRATOS_RECOVERY_URL = "/self-service/recovery/browser";
3
+ /** Native recovery must never resolve a login flow or an OAuth callback query. */
4
+ export declare const isOryRecoveryRequest: (location: LocationLike & {
5
+ pathname?: string;
6
+ }) => boolean;
7
+ export type MfaMethod = 'totp' | 'lookup_secret' | 'code' | 'webauthn';
8
+ export type OryMfaPreparation = {
9
+ flowId: string;
10
+ methods: MfaMethod[];
11
+ email: string;
12
+ emailSent: boolean;
13
+ };
14
+ /** Start one AAL2 flow and discover only the methods bound to this identity. */
15
+ export declare const prepareOryMfa: ({ location, kratosLoginUrl, fetchImpl, }: {
16
+ location: LocationLike;
17
+ kratosLoginUrl?: string;
18
+ fetchImpl?: FetchLike;
19
+ }) => Promise<OryMfaPreparation>;
20
+ /** Ask Kratos to send to the address bound to the flow; callers cannot supply another email. */
21
+ export declare const sendOryEmailMfa: ({ location, flowId, kratosLoginUrl, fetchImpl, }: {
22
+ location: LocationLike;
23
+ flowId: string;
24
+ kratosLoginUrl?: string;
25
+ fetchImpl?: FetchLike;
26
+ }) => Promise<{
27
+ status: 'sent';
28
+ }>;
29
+ /**
30
+ * Complete a second factor for the signed-in Kratos session: an authenticator
31
+ * code or a one-time backup code. Kratos verifies it; success is confirmed by
32
+ * re-reading the session so a half-finished upgrade is never reported as done.
33
+ */
34
+ export declare const submitOryMfa: ({ location, method, code, flowId, kratosLoginUrl, sessionUrl, fetchImpl, }: {
35
+ location: LocationLike;
36
+ method: Exclude<MfaMethod, 'webauthn'>;
37
+ code: string;
38
+ flowId?: string;
39
+ kratosLoginUrl?: string;
40
+ sessionUrl?: string;
41
+ fetchImpl?: FetchLike;
42
+ }) => Promise<{
43
+ status: 'verified';
44
+ }>;
45
+ /** Complete a Kratos AAL2 WebAuthn challenge using the browser's credential API. */
46
+ export declare const submitOryWebauthn: ({ location, flowId, kratosLoginUrl, sessionUrl, fetchImpl, getCredential, }: {
47
+ location: LocationLike;
48
+ flowId: string;
49
+ kratosLoginUrl?: string;
50
+ sessionUrl?: string;
51
+ fetchImpl?: FetchLike;
52
+ getCredential?: (options: CredentialRequestOptions) => Promise<Credential | null>;
53
+ }) => Promise<{
54
+ status: 'verified';
55
+ }>;
56
+ /**
57
+ * Step 1 of password recovery: ask Kratos to email a code. The response is the
58
+ * same for unknown addresses, so nothing here reveals whether an account exists.
59
+ */
60
+ export declare const startOryRecovery: ({ location, email, recoveryUrl, fetchImpl, }: {
61
+ location: LocationLike;
62
+ email: string;
63
+ recoveryUrl?: string;
64
+ fetchImpl?: FetchLike;
65
+ }) => Promise<{
66
+ flowId: string;
67
+ }>;
68
+ /** Resume only a browser recovery flow read from Kratos with this browser's cookies. */
69
+ export declare const resumeOryRecovery: ({ location, flowId, recoveryUrl, fetchImpl, }: {
70
+ location: LocationLike;
71
+ flowId: string;
72
+ recoveryUrl?: string;
73
+ fetchImpl?: FetchLike;
74
+ }) => Promise<{
75
+ flowId: string;
76
+ step: 'email' | 'code';
77
+ }>;
78
+ /**
79
+ * Step 2: verify the emailed code. Kratos signs the user in with a privileged
80
+ * session and hands back the settings flow used to choose a new password.
81
+ */
82
+ export declare const verifyOryRecoveryCode: ({ location, flowId, code, recoveryUrl, fetchImpl, }: {
83
+ location: LocationLike;
84
+ flowId: string;
85
+ code: string;
86
+ recoveryUrl?: string;
87
+ fetchImpl?: FetchLike;
88
+ }) => Promise<{
89
+ settingsFlowId: string;
90
+ }>;
91
+ /** Step 3: set the new password on the settings flow opened by recovery. */
92
+ export declare const setOryRecoveredPassword: ({ location, settingsFlowId, password, recoveryUrl, fetchImpl, }: {
93
+ location: LocationLike;
94
+ settingsFlowId: string;
95
+ password: string;
96
+ recoveryUrl?: string;
97
+ fetchImpl?: FetchLike;
98
+ }) => Promise<{
99
+ status: 'updated';
100
+ }>;
@@ -0,0 +1,319 @@
1
+ import { checkOrySession, DEFAULT_KRATOS_LOGIN_URL, DEFAULT_SESSION_URL, getOrigin, makeUserError, readJSON, toURL, } from './ory';
2
+ export const DEFAULT_KRATOS_RECOVERY_URL = '/self-service/recovery/browser';
3
+ /** Native recovery must never resolve a login flow or an OAuth callback query. */
4
+ export const isOryRecoveryRequest = (location) => location.pathname === '/recovery' || location.pathname === '/recovery/';
5
+ const FORM = { Accept: 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' };
6
+ const getRequest = (fetchImpl) => {
7
+ const request = fetchImpl || (typeof fetch === 'function' ? fetch : undefined);
8
+ if (!request) {
9
+ throw makeUserError('ORY_FLOW_UNAVAILABLE', 'Kratos flow requests are unavailable', 'Secure verification is unavailable. Please try again.');
10
+ }
11
+ return request;
12
+ };
13
+ /** Kratos' own explanation for a rejected field, e.g. a password policy failure. */
14
+ const flowMessage = (flow) => {
15
+ const ui = flow?.ui;
16
+ const fromNodes = ui?.nodes?.flatMap(node => node.messages || []).find(message => message.text);
17
+ return fromNodes?.text || ui?.messages?.find(message => message.text)?.text || '';
18
+ };
19
+ const csrfOf = (flow) => flow.ui?.nodes?.find(node => node.attributes?.name === 'csrf_token')?.attributes?.value || '';
20
+ /** `/self-service/x/browser` initiates a flow; `/self-service/x` submits it. */
21
+ const submitPath = (browserUrl) => browserUrl.replace(/\/browser\/?$/, '');
22
+ const startFlow = async (request, location, browserUrl, params = {}) => {
23
+ const url = toURL(browserUrl, getOrigin(location));
24
+ Object.entries(params).forEach(([key, value]) => url.searchParams.set(key, value));
25
+ const response = await request(url.toString(), {
26
+ credentials: 'include',
27
+ headers: { Accept: 'application/json' },
28
+ });
29
+ const flow = (await readJSON(response));
30
+ if (!response.ok || !flow?.id || !csrfOf(flow)) {
31
+ throw makeUserError('ORY_FLOW_FAILED', 'Kratos flow could not be initialized', 'Unable to start secure verification. Please try again.', response.status);
32
+ }
33
+ return flow;
34
+ };
35
+ const submitFlow = async (request, location, url, flowId, fields) => {
36
+ const target = toURL(url, getOrigin(location));
37
+ target.searchParams.set('flow', flowId);
38
+ const response = await request(target.toString(), {
39
+ method: 'POST',
40
+ credentials: 'include',
41
+ headers: FORM,
42
+ body: new URLSearchParams(fields).toString(),
43
+ });
44
+ return { response, payload: await readJSON(response) };
45
+ };
46
+ const MFA_FIELD = {
47
+ totp: 'totp_code',
48
+ lookup_secret: 'lookup_secret',
49
+ code: 'code',
50
+ };
51
+ const readLoginFlow = async (request, location, kratosLoginUrl, flowId) => {
52
+ const url = toURL(`${submitPath(kratosLoginUrl)}/flows`, getOrigin(location));
53
+ url.searchParams.set('id', flowId);
54
+ const response = await request(url.toString(), {
55
+ credentials: 'include',
56
+ headers: { Accept: 'application/json' },
57
+ });
58
+ const flow = (await readJSON(response));
59
+ if (!response.ok || !flow?.id || !csrfOf(flow)) {
60
+ throw makeUserError('ORY_MFA_FLOW_EXPIRED', 'Kratos MFA flow is no longer available', 'This verification request has expired. Please sign in again.', response.status);
61
+ }
62
+ return flow;
63
+ };
64
+ /** Start one AAL2 flow and discover only the methods bound to this identity. */
65
+ export const prepareOryMfa = async ({ location, kratosLoginUrl = DEFAULT_KRATOS_LOGIN_URL, fetchImpl, }) => {
66
+ const flow = await startFlow(getRequest(fetchImpl), location, kratosLoginUrl, { aal: 'aal2' });
67
+ const nodes = flow.ui?.nodes || [];
68
+ const names = new Set(nodes.map(node => node.attributes?.name));
69
+ const methods = [];
70
+ if (names.has('totp_code'))
71
+ methods.push('totp');
72
+ if (names.has('lookup_secret'))
73
+ methods.push('lookup_secret');
74
+ if (names.has('webauthn_login_trigger') && names.has('webauthn_login'))
75
+ methods.push('webauthn');
76
+ // This Kratos build names the code method's bound-address field "identifier"
77
+ // (not "address", used by some other Kratos releases/docs).
78
+ if (names.has('identifier') && nodes.some(node => node.group === 'code')) {
79
+ methods.push('code');
80
+ }
81
+ if (!methods.length) {
82
+ throw makeUserError('ORY_MFA_METHOD_UNAVAILABLE', 'Kratos flow has no second-factor method', 'No verification method is available for your account.');
83
+ }
84
+ const identifier = nodes.find(node => node.group === 'code' && node.attributes?.name === 'identifier')?.attributes?.value;
85
+ return {
86
+ flowId: flow.id,
87
+ methods,
88
+ email: typeof identifier === 'string' ? identifier : '',
89
+ emailSent: flow.state === 'sent_email',
90
+ };
91
+ };
92
+ /** Ask Kratos to send to the address bound to the flow; callers cannot supply another email. */
93
+ export const sendOryEmailMfa = async ({ location, flowId, kratosLoginUrl = DEFAULT_KRATOS_LOGIN_URL, fetchImpl, }) => {
94
+ const request = getRequest(fetchImpl);
95
+ const flow = await readLoginFlow(request, location, kratosLoginUrl, flowId);
96
+ if (flow.state === 'sent_email')
97
+ return { status: 'sent' };
98
+ const identifier = flow.ui?.nodes?.find(node => node.group === 'code' && node.attributes?.name === 'identifier')?.attributes?.value;
99
+ if (typeof identifier !== 'string' || !identifier) {
100
+ throw makeUserError('ORY_MFA_METHOD_UNAVAILABLE', 'Kratos flow has no bound email address', 'Email verification is not available for your account.');
101
+ }
102
+ const { payload } = await submitFlow(request, location, submitPath(kratosLoginUrl), flowId, {
103
+ method: 'code',
104
+ identifier,
105
+ csrf_token: csrfOf(flow),
106
+ });
107
+ if (payload?.state !== 'sent_email') {
108
+ throw makeUserError('ORY_MFA_EMAIL_FAILED', 'Kratos did not send the MFA email', 'We could not send a verification code. Please try again.');
109
+ }
110
+ return { status: 'sent' };
111
+ };
112
+ /**
113
+ * Complete a second factor for the signed-in Kratos session: an authenticator
114
+ * code or a one-time backup code. Kratos verifies it; success is confirmed by
115
+ * re-reading the session so a half-finished upgrade is never reported as done.
116
+ */
117
+ export const submitOryMfa = async ({ location, method, code, flowId, kratosLoginUrl = DEFAULT_KRATOS_LOGIN_URL, sessionUrl = DEFAULT_SESSION_URL, fetchImpl, }) => {
118
+ const request = getRequest(fetchImpl);
119
+ const flow = flowId
120
+ ? await readLoginFlow(request, location, kratosLoginUrl, flowId)
121
+ : await startFlow(request, location, kratosLoginUrl, { aal: 'aal2' });
122
+ const field = MFA_FIELD[method];
123
+ if (!flow.ui?.nodes?.some(node => node.attributes?.name === field)) {
124
+ throw makeUserError('ORY_MFA_METHOD_UNAVAILABLE', `Kratos flow has no ${method} input`, 'This verification method is not available for your account.');
125
+ }
126
+ const { response, payload } = await submitFlow(request, location, submitPath(kratosLoginUrl), flow.id, { method, [field]: code.trim(), csrf_token: csrfOf(flow) });
127
+ if (!response.ok && payload?.error?.id !== 'browser_location_change_required') {
128
+ throw makeUserError('ORY_MFA_INVALID_CODE', 'Kratos rejected the verification code', method === 'totp'
129
+ ? 'That code is not valid. Check your authenticator app and try again.'
130
+ : method === 'lookup_secret'
131
+ ? 'That backup code is not valid or was already used.'
132
+ : 'That email code is not valid or has expired.', response.status);
133
+ }
134
+ try {
135
+ await checkOrySession({ sessionUrl, fetchImpl });
136
+ }
137
+ catch (error) {
138
+ throw makeUserError('ORY_MFA_INCOMPLETE', 'The session is still missing the second factor', 'Verification could not be completed. Please try again.');
139
+ }
140
+ return { status: 'verified' };
141
+ };
142
+ const decodeWebauthn = (value) => Uint8Array.from(atob(value.replace(/-/g, '+').replace(/_/g, '/')), char => char.charCodeAt(0));
143
+ const encodeWebauthn = (value) => {
144
+ if (!value)
145
+ return '';
146
+ return btoa(String.fromCharCode(...new Uint8Array(value)))
147
+ .replace(/\+/g, '-')
148
+ .replace(/\//g, '_')
149
+ .replace(/=+$/, '');
150
+ };
151
+ /** Complete a Kratos AAL2 WebAuthn challenge using the browser's credential API. */
152
+ export const submitOryWebauthn = async ({ location, flowId, kratosLoginUrl = DEFAULT_KRATOS_LOGIN_URL, sessionUrl = DEFAULT_SESSION_URL, fetchImpl, getCredential = options => navigator.credentials.get(options), }) => {
153
+ if (typeof PublicKeyCredential === 'undefined') {
154
+ throw makeUserError('ORY_WEBAUTHN_UNAVAILABLE', 'WebAuthn is unavailable', 'This browser does not support security keys or device authentication.');
155
+ }
156
+ const request = getRequest(fetchImpl);
157
+ const flow = await readLoginFlow(request, location, kratosLoginUrl, flowId);
158
+ const names = flow.ui?.nodes || [];
159
+ const trigger = names.find(node => node.attributes?.name === 'webauthn_login_trigger')?.attributes?.value;
160
+ if (typeof trigger !== 'string' || !names.some(node => node.attributes?.name === 'webauthn_login')) {
161
+ throw makeUserError('ORY_MFA_METHOD_UNAVAILABLE', 'Kratos flow has no WebAuthn challenge', 'Security key verification is not available for this account.');
162
+ }
163
+ const options = JSON.parse(trigger);
164
+ const credential = (await getCredential({
165
+ publicKey: {
166
+ ...options.publicKey,
167
+ challenge: decodeWebauthn(options.publicKey.challenge),
168
+ allowCredentials: options.publicKey.allowCredentials?.map(item => ({
169
+ ...item,
170
+ id: decodeWebauthn(item.id),
171
+ })),
172
+ },
173
+ }));
174
+ if (!credential) {
175
+ throw makeUserError('ORY_WEBAUTHN_CANCELLED', 'WebAuthn returned no credential', 'Security key verification was cancelled.');
176
+ }
177
+ const assertion = credential.response;
178
+ const proof = JSON.stringify({
179
+ id: credential.id,
180
+ rawId: encodeWebauthn(credential.rawId),
181
+ type: credential.type,
182
+ response: {
183
+ authenticatorData: encodeWebauthn(assertion.authenticatorData),
184
+ clientDataJSON: encodeWebauthn(assertion.clientDataJSON),
185
+ signature: encodeWebauthn(assertion.signature),
186
+ userHandle: encodeWebauthn(assertion.userHandle),
187
+ },
188
+ });
189
+ const identifier = names.find(node => node.group === 'default' &&
190
+ node.attributes?.name === 'identifier')?.attributes?.value;
191
+ if (!identifier) {
192
+ throw makeUserError('ORY_MFA_METHOD_UNAVAILABLE', 'Kratos flow has no bound identifier', 'Security key verification is not available for this account.');
193
+ }
194
+ const { response, payload } = await submitFlow(request, location, submitPath(kratosLoginUrl), flowId, {
195
+ method: 'webauthn',
196
+ identifier,
197
+ webauthn_login: proof,
198
+ csrf_token: csrfOf(flow),
199
+ });
200
+ if (!response.ok && payload?.error?.id !== 'browser_location_change_required') {
201
+ throw makeUserError('ORY_WEBAUTHN_REJECTED', 'Kratos rejected the WebAuthn assertion', 'Security key verification failed. Please try again.', response.status);
202
+ }
203
+ await checkOrySession({ sessionUrl, fetchImpl });
204
+ return { status: 'verified' };
205
+ };
206
+ const settingsUrlFor = (recoveryUrl) => recoveryUrl.replace(/\/recovery\/browser\/?$/, '/settings/browser');
207
+ /**
208
+ * Step 1 of password recovery: ask Kratos to email a code. The response is the
209
+ * same for unknown addresses, so nothing here reveals whether an account exists.
210
+ */
211
+ export const startOryRecovery = async ({ location, email, recoveryUrl = DEFAULT_KRATOS_RECOVERY_URL, fetchImpl, }) => {
212
+ const request = getRequest(fetchImpl);
213
+ const flow = await startFlow(request, location, recoveryUrl);
214
+ const { response, payload } = await submitFlow(request, location, submitPath(recoveryUrl), flow.id, { method: 'code', email: email.trim(), csrf_token: csrfOf(flow) });
215
+ if (!response.ok) {
216
+ throw makeUserError('ORY_RECOVERY_REQUEST_FAILED', 'Kratos rejected the recovery request', flowMessage(payload) || 'We could not send a code. Check the email address and try again.', response.status);
217
+ }
218
+ return { flowId: flow.id };
219
+ };
220
+ const settingsFlowIdFrom = (payload, location) => {
221
+ const continueWith = Array.isArray(payload?.continue_with) ? payload.continue_with : [];
222
+ const shown = continueWith.find((item) => item?.action === 'show_settings_ui');
223
+ if (typeof shown?.flow?.id === 'string')
224
+ return shown.flow.id;
225
+ const target = payload?.redirect_browser_to;
226
+ if (typeof target === 'string') {
227
+ try {
228
+ const url = new URL(target, getOrigin(location));
229
+ if (url.origin === getOrigin(location) && url.pathname === '/settings') {
230
+ return url.searchParams.get('flow') || '';
231
+ }
232
+ }
233
+ catch (error) {
234
+ return '';
235
+ }
236
+ }
237
+ return '';
238
+ };
239
+ /** Resume only a browser recovery flow read from Kratos with this browser's cookies. */
240
+ export const resumeOryRecovery = async ({ location, flowId, recoveryUrl = DEFAULT_KRATOS_RECOVERY_URL, fetchImpl, }) => {
241
+ const expired = (status) => makeUserError('ORY_RECOVERY_EXPIRED', 'The recovery flow cannot be resumed', 'This recovery request is unavailable or has expired. Please start again.', status);
242
+ if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(flowId)) {
243
+ throw expired();
244
+ }
245
+ const url = toURL(`${submitPath(recoveryUrl)}/flows`, getOrigin(location));
246
+ url.searchParams.set('id', flowId);
247
+ const response = await getRequest(fetchImpl)(url.toString(), {
248
+ credentials: 'include', headers: { Accept: 'application/json' },
249
+ });
250
+ const flow = (await readJSON(response));
251
+ if (!response.ok || flow?.id !== flowId || flow.type !== 'browser' || !csrfOf(flow) ||
252
+ !flow.expires_at || !Number.isFinite(Date.parse(flow.expires_at)) ||
253
+ Date.parse(flow.expires_at) <= Date.now()) {
254
+ throw expired(response.status);
255
+ }
256
+ // A consumed challenge does not prove a settings continuation on a later GET.
257
+ // Only the successful code POST below may supply that continuation.
258
+ const names = new Set(flow.ui?.nodes?.map(node => node.attributes?.name));
259
+ if (flow.state === 'sent_email' && names.has('code'))
260
+ return { flowId, step: 'code' };
261
+ if (flow.state === 'choose_method' && names.has('email'))
262
+ return { flowId, step: 'email' };
263
+ throw expired(response.status);
264
+ };
265
+ /**
266
+ * Step 2: verify the emailed code. Kratos signs the user in with a privileged
267
+ * session and hands back the settings flow used to choose a new password.
268
+ */
269
+ export const verifyOryRecoveryCode = async ({ location, flowId, code, recoveryUrl = DEFAULT_KRATOS_RECOVERY_URL, fetchImpl, }) => {
270
+ const request = getRequest(fetchImpl);
271
+ const flowUrl = toURL(`${submitPath(recoveryUrl)}/flows`, getOrigin(location));
272
+ flowUrl.searchParams.set('id', flowId);
273
+ const flowResponse = await request(flowUrl.toString(), {
274
+ credentials: 'include',
275
+ headers: { Accept: 'application/json' },
276
+ });
277
+ const flow = (await readJSON(flowResponse));
278
+ if (!flowResponse.ok || !csrfOf(flow)) {
279
+ throw makeUserError('ORY_RECOVERY_EXPIRED', 'The recovery flow is no longer available', 'This recovery request has expired. Please start again.', flowResponse.status);
280
+ }
281
+ const { response, payload } = await submitFlow(request, location, submitPath(recoveryUrl), flowId, { method: 'code', code: code.trim(), csrf_token: csrfOf(flow) });
282
+ const settingsFlowId = settingsFlowIdFrom(payload, location);
283
+ const advanced = (response.ok && payload?.state === 'passed_challenge') ||
284
+ (response.status === 422 && payload?.error?.id === 'browser_location_change_required');
285
+ if (!advanced || !settingsFlowId) {
286
+ throw makeUserError('ORY_RECOVERY_INVALID_CODE', 'Kratos rejected the recovery code', 'That code is not valid or has expired.', response.status);
287
+ }
288
+ await readRecoveredSettingsFlow(request, location, recoveryUrl, settingsFlowId);
289
+ return { settingsFlowId };
290
+ };
291
+ const readRecoveredSettingsFlow = async (request, location, recoveryUrl, settingsFlowId) => {
292
+ const flowUrl = toURL(`${submitPath(settingsUrlFor(recoveryUrl))}/flows`, getOrigin(location));
293
+ flowUrl.searchParams.set('id', settingsFlowId);
294
+ const response = await request(flowUrl.toString(), {
295
+ credentials: 'include', headers: { Accept: 'application/json' },
296
+ });
297
+ const flow = (await readJSON(response));
298
+ if (!response.ok || flow?.id !== settingsFlowId || flow.type !== 'browser' ||
299
+ !flow.expires_at || !Number.isFinite(Date.parse(flow.expires_at)) ||
300
+ Date.parse(flow.expires_at) <= Date.now() || !csrfOf(flow) ||
301
+ !flow.ui?.nodes?.some(node => node.attributes?.name === 'password')) {
302
+ const needsMfa = response.status === 403;
303
+ throw makeUserError(needsMfa ? 'ORY_RECOVERY_MFA_REQUIRED' : 'ORY_RECOVERY_EXPIRED', 'The recovery settings flow could not be opened', needsMfa
304
+ ? 'Your account uses two-step verification, so the password cannot be changed here. Please contact support.'
305
+ : 'This recovery request is unavailable or has expired. Please start again.', response.status);
306
+ }
307
+ return flow;
308
+ };
309
+ /** Step 3: set the new password on the settings flow opened by recovery. */
310
+ export const setOryRecoveredPassword = async ({ location, settingsFlowId, password, recoveryUrl = DEFAULT_KRATOS_RECOVERY_URL, fetchImpl, }) => {
311
+ const request = getRequest(fetchImpl);
312
+ const settingsBrowserUrl = settingsUrlFor(recoveryUrl);
313
+ const flow = await readRecoveredSettingsFlow(request, location, recoveryUrl, settingsFlowId);
314
+ const { response, payload } = await submitFlow(request, location, submitPath(settingsBrowserUrl), settingsFlowId, { method: 'password', password, csrf_token: csrfOf(flow) });
315
+ if (!response.ok || payload?.state !== 'success') {
316
+ throw makeUserError('ORY_RECOVERY_PASSWORD_REJECTED', 'Kratos rejected the new password', flowMessage(payload) || 'That password cannot be used. Please choose a different one.', response.status);
317
+ }
318
+ return { status: 'updated' };
319
+ };
@@ -1,10 +1,10 @@
1
1
  // Components
2
2
  import styled from 'styled-components';
3
3
  import { Icon } from '@antscorp/antsomi-ui/es/components/atoms/Icon';
4
- export const ExpandIcon = styled(Icon) `
5
- cursor: pointer;
6
- position: absolute;
7
- right: 10px;
8
- transition: all 200ms;
9
- transform: rotate(${props => (props.$isOpen ? 180 : 0)}deg);
4
+ export const ExpandIcon = styled(Icon) `
5
+ cursor: pointer;
6
+ position: absolute;
7
+ right: 10px;
8
+ transition: all 200ms;
9
+ transform: rotate(${props => (props.$isOpen ? 180 : 0)}deg);
10
10
  `;