@tern-secure/auth 1.1.0-canary.v20251108045933 → 1.1.0-canary.v20251125170702

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 (275) hide show
  1. package/dist/492_ternsecure_f36de9_1.1.0-canary.v20251125170702.js +1 -0
  2. package/dist/687_ternsecure_f36de9_1.1.0-canary.v20251125170702.js +1 -0
  3. package/dist/68_ternsecure_f36de9_1.1.0-canary.v20251125170702.js +1 -0
  4. package/dist/framework_ternsecure_f36de9_1.1.0-canary.v20251125170702.js +1 -0
  5. package/dist/signin_ternsecure_f36de9_1.1.0-canary.v20251125170702.css +2 -0
  6. package/dist/signin_ternsecure_f36de9_1.1.0-canary.v20251125170702.js +1 -0
  7. package/dist/signup_ternsecure_f36de9_1.1.0-canary.v20251125170702.css +2 -0
  8. package/dist/signup_ternsecure_f36de9_1.1.0-canary.v20251125170702.js +1 -0
  9. package/dist/ternsecure.browser.js +30 -0
  10. package/dist/ternsecure.css +2 -0
  11. package/dist/ternsecure.js +17 -0
  12. package/dist/ternsecure.mjs +17 -0
  13. package/dist/types/auth/AuthCookieManager.d.ts +0 -1
  14. package/dist/types/auth/cookies/authTime_cookie.d.ts +0 -1
  15. package/dist/types/index.browser.d.ts +1 -0
  16. package/dist/types/index.d.ts +3 -10
  17. package/dist/types/instance/c_coreApiClient.d.ts +2 -2
  18. package/dist/types/instance/constants.d.ts +3 -0
  19. package/dist/types/instance/coreApiClient.d.ts +0 -1
  20. package/dist/types/instance/events.d.ts +0 -1
  21. package/dist/types/instance/{TernAuth.d.ts → ternsecure.d.ts} +31 -7
  22. package/dist/types/lib/utils.d.ts +2 -0
  23. package/dist/types/resources/Base.d.ts +16 -3
  24. package/dist/types/resources/Error.d.ts +0 -1
  25. package/dist/types/resources/Session.d.ts +2 -2
  26. package/dist/types/resources/SignIn.d.ts +27 -10
  27. package/dist/types/resources/SignUp.d.ts +12 -10
  28. package/dist/types/resources/internal.d.ts +1 -2
  29. package/dist/types/ui/Renderer.d.ts +26 -0
  30. package/dist/types/ui/common/ProviderInitialIcon.d.ts +6 -0
  31. package/dist/types/ui/common/VerificationCodeCard.d.ts +12 -0
  32. package/dist/types/ui/common/VerificationLinkCard.d.ts +7 -0
  33. package/dist/types/ui/common/constants.d.ts +8 -0
  34. package/dist/types/ui/common/index.d.ts +3 -0
  35. package/dist/types/ui/components/sign-in/ResetPassword.d.ts +1 -0
  36. package/dist/types/ui/components/sign-in/ResetPasswordSuccess.d.ts +1 -0
  37. package/dist/types/ui/components/sign-in/SignIn.d.ts +4 -0
  38. package/dist/types/ui/components/sign-in/SignInEmailLinkCard.d.ts +2 -0
  39. package/dist/types/ui/components/sign-in/SignInFactorOne.d.ts +1 -0
  40. package/dist/types/ui/components/sign-in/SignInFactorOneCodeForm.d.ts +7 -0
  41. package/dist/types/ui/components/sign-in/SignInFactorOnePasswordCard.d.ts +6 -0
  42. package/dist/types/ui/components/sign-in/SignInFactorOnePhoneCodeCard.d.ts +7 -0
  43. package/dist/types/ui/components/sign-in/SignInPassword.d.ts +8 -0
  44. package/dist/types/ui/components/sign-in/SignInSocialButtons.d.ts +1 -0
  45. package/dist/types/ui/components/sign-in/SignInStart.d.ts +7 -0
  46. package/dist/types/ui/components/sign-in/SignInVerifyEmail.d.ts +1 -0
  47. package/dist/types/ui/components/sign-in/index.d.ts +4 -0
  48. package/dist/types/ui/components/sign-up/SignUp.d.ts +8 -0
  49. package/dist/types/ui/components/sign-up/SignUpEmailLinkCard.d.ts +2 -0
  50. package/dist/types/ui/components/sign-up/SignUpSocialButtons.d.ts +1 -0
  51. package/dist/types/ui/components/sign-up/SignUpStart.d.ts +1 -0
  52. package/dist/types/ui/components/sign-up/SignUpVerifyEmail.d.ts +1 -0
  53. package/dist/types/ui/components/sign-up/index.d.ts +2 -0
  54. package/dist/types/ui/components/sign-up/util.d.ts +14 -0
  55. package/dist/types/ui/components/user-button/index.d.ts +1 -0
  56. package/dist/types/ui/components/user-button/userButton.d.ts +1 -0
  57. package/dist/types/ui/ctx/TernAuthContext.d.ts +4 -0
  58. package/dist/types/ui/ctx/TernAuthUIComponentCtx.d.ts +8 -0
  59. package/dist/types/ui/ctx/TernSecureContextWrapper.d.ts +8 -0
  60. package/dist/types/ui/ctx/TernSecureOptions.d.ts +10 -0
  61. package/dist/types/ui/ctx/components/SignIn.d.ts +21 -0
  62. package/dist/types/ui/ctx/components/SignUp.d.ts +14 -0
  63. package/dist/types/ui/ctx/components/UserButton.d.ts +10 -0
  64. package/dist/types/ui/ctx/components/index.d.ts +3 -0
  65. package/dist/types/ui/ctx/index.d.ts +4 -0
  66. package/dist/types/ui/ctx/utils.d.ts +3 -0
  67. package/dist/types/ui/customize/FieldControl.d.ts +15 -0
  68. package/dist/types/ui/customize/FieldLabelControl.d.ts +11 -0
  69. package/dist/types/ui/customize/Form.d.ts +36 -0
  70. package/dist/types/ui/elements/CodeControl.d.ts +47 -0
  71. package/dist/types/ui/elements/ErrorCard.d.ts +10 -0
  72. package/dist/types/ui/elements/LoadingCard.d.ts +1 -0
  73. package/dist/types/ui/elements/RouterLink.d.ts +42 -0
  74. package/dist/types/ui/elements/SocialButtons.d.ts +6 -0
  75. package/dist/types/ui/elements/TimerButton.d.ts +9 -0
  76. package/dist/types/ui/elements/alert.d.ts +8 -0
  77. package/dist/types/ui/elements/avatar.d.ts +6 -0
  78. package/dist/types/ui/elements/button.d.ts +10 -0
  79. package/dist/types/ui/elements/card.d.ts +9 -0
  80. package/dist/types/ui/elements/ctx/CardStateCtx.d.ts +26 -0
  81. package/dist/types/ui/elements/ctx/index.d.ts +1 -0
  82. package/dist/types/ui/elements/field.d.ts +24 -0
  83. package/dist/types/ui/elements/index.d.ts +16 -0
  84. package/dist/types/ui/elements/input.d.ts +3 -0
  85. package/dist/types/ui/elements/label.d.ts +4 -0
  86. package/dist/types/ui/elements/separator.d.ts +4 -0
  87. package/dist/types/ui/hooks/index.d.ts +6 -0
  88. package/dist/types/ui/hooks/useEmailLink.d.ts +11 -0
  89. package/dist/types/ui/hooks/useFetch.d.ts +44 -0
  90. package/dist/types/ui/hooks/useLoadingStatus.d.ts +14 -0
  91. package/dist/types/ui/hooks/useNavigateToFlowStart.d.ts +3 -0
  92. package/dist/types/ui/hooks/useSafeState.d.ts +9 -0
  93. package/dist/types/ui/hooks/useWindowEventListener.d.ts +3 -0
  94. package/dist/types/ui/icons/index.d.ts +13 -0
  95. package/dist/types/ui/lazyLoading/common.d.ts +2 -0
  96. package/dist/types/ui/lazyLoading/components.d.ts +11 -0
  97. package/dist/types/ui/lazyLoading/providersCtx.d.ts +26 -0
  98. package/dist/types/ui/portal/index.d.ts +12 -0
  99. package/dist/types/ui/router/BaseRouter.d.ts +21 -0
  100. package/dist/types/ui/router/HashRouter.d.ts +8 -0
  101. package/dist/types/ui/router/PathRouter.d.ts +8 -0
  102. package/dist/types/ui/router/Route.d.ts +19 -0
  103. package/dist/types/ui/router/RouterCtx.d.ts +32 -0
  104. package/dist/types/ui/router/Switch.d.ts +4 -0
  105. package/dist/types/ui/router/index.d.ts +7 -0
  106. package/dist/types/ui/router/newPaths.d.ts +1 -0
  107. package/dist/types/ui/router/pathToRegexp.d.ts +127 -0
  108. package/dist/types/ui/types.d.ts +18 -0
  109. package/dist/types/ui/utils/form.d.ts +19 -0
  110. package/dist/types/ui/utils/index.d.ts +1 -0
  111. package/dist/types/ui/utils/sleep.d.ts +1 -0
  112. package/dist/types/utils/construct.d.ts +3 -1
  113. package/dist/types/utils/index.d.ts +1 -1
  114. package/dist/types/utils/normalizeRoutingOptions.d.ts +6 -0
  115. package/dist/types/utils/path.d.ts +0 -1
  116. package/dist/types/utils/querystring.d.ts +0 -1
  117. package/dist/types/utils/redirectUrls.d.ts +4 -9
  118. package/dist/types/utils/windowNavigate.d.ts +0 -1
  119. package/dist/ui-common_ternsecure_f36de9_1.1.0-canary.v20251125170702.js +1 -0
  120. package/dist/userbutton_ternsecure_f36de9_1.1.0-canary.v20251125170702.js +1 -0
  121. package/dist/vendors_ternsecure_f36de9_1.1.0-canary.v20251125170702.js +1 -0
  122. package/package.json +63 -24
  123. package/dist/cjs/auth/AuthCookieManager.js +0 -113
  124. package/dist/cjs/auth/AuthCookieManager.js.map +0 -1
  125. package/dist/cjs/auth/cookies/authTime_cookie.js +0 -62
  126. package/dist/cjs/auth/cookies/authTime_cookie.js.map +0 -1
  127. package/dist/cjs/auth/request.js +0 -159
  128. package/dist/cjs/auth/request.js.map +0 -1
  129. package/dist/cjs/global.d.js +0 -2
  130. package/dist/cjs/global.d.js.map +0 -1
  131. package/dist/cjs/index.js +0 -47
  132. package/dist/cjs/index.js.map +0 -1
  133. package/dist/cjs/instance/TernAuth.js +0 -524
  134. package/dist/cjs/instance/TernAuth.js.map +0 -1
  135. package/dist/cjs/instance/TernAuthServer.js +0 -95
  136. package/dist/cjs/instance/TernAuthServer.js.map +0 -1
  137. package/dist/cjs/instance/c_coreApiClient.js +0 -264
  138. package/dist/cjs/instance/c_coreApiClient.js.map +0 -1
  139. package/dist/cjs/instance/coreApiClient.js +0 -255
  140. package/dist/cjs/instance/coreApiClient.js.map +0 -1
  141. package/dist/cjs/instance/events.js +0 -39
  142. package/dist/cjs/instance/events.js.map +0 -1
  143. package/dist/cjs/instance/jwtClient.js +0 -72
  144. package/dist/cjs/instance/jwtClient.js.map +0 -1
  145. package/dist/cjs/resources/Base.js +0 -137
  146. package/dist/cjs/resources/Base.js.map +0 -1
  147. package/dist/cjs/resources/Error.js +0 -31
  148. package/dist/cjs/resources/Error.js.map +0 -1
  149. package/dist/cjs/resources/Session.js +0 -105
  150. package/dist/cjs/resources/Session.js.map +0 -1
  151. package/dist/cjs/resources/SignIn.js +0 -256
  152. package/dist/cjs/resources/SignIn.js.map +0 -1
  153. package/dist/cjs/resources/SignUp.js +0 -72
  154. package/dist/cjs/resources/SignUp.js.map +0 -1
  155. package/dist/cjs/resources/Token.js +0 -32
  156. package/dist/cjs/resources/Token.js.map +0 -1
  157. package/dist/cjs/resources/UserData.js +0 -43
  158. package/dist/cjs/resources/UserData.js.map +0 -1
  159. package/dist/cjs/resources/cookie.js +0 -154
  160. package/dist/cjs/resources/cookie.js.map +0 -1
  161. package/dist/cjs/resources/index.js +0 -23
  162. package/dist/cjs/resources/index.js.map +0 -1
  163. package/dist/cjs/resources/internal.js +0 -35
  164. package/dist/cjs/resources/internal.js.map +0 -1
  165. package/dist/cjs/utils/construct.js +0 -253
  166. package/dist/cjs/utils/construct.js.map +0 -1
  167. package/dist/cjs/utils/index.js +0 -29
  168. package/dist/cjs/utils/index.js.map +0 -1
  169. package/dist/cjs/utils/jwt.js +0 -46
  170. package/dist/cjs/utils/jwt.js.map +0 -1
  171. package/dist/cjs/utils/mapDecode.js +0 -33
  172. package/dist/cjs/utils/mapDecode.js.map +0 -1
  173. package/dist/cjs/utils/path.js +0 -33
  174. package/dist/cjs/utils/path.js.map +0 -1
  175. package/dist/cjs/utils/querystring.js +0 -70
  176. package/dist/cjs/utils/querystring.js.map +0 -1
  177. package/dist/cjs/utils/redirectUrls.js +0 -156
  178. package/dist/cjs/utils/redirectUrls.js.map +0 -1
  179. package/dist/cjs/utils/windowNavigate.js +0 -45
  180. package/dist/cjs/utils/windowNavigate.js.map +0 -1
  181. package/dist/esm/auth/AuthCookieManager.js +0 -89
  182. package/dist/esm/auth/AuthCookieManager.js.map +0 -1
  183. package/dist/esm/auth/cookies/authTime_cookie.js +0 -38
  184. package/dist/esm/auth/cookies/authTime_cookie.js.map +0 -1
  185. package/dist/esm/auth/request.js +0 -134
  186. package/dist/esm/auth/request.js.map +0 -1
  187. package/dist/esm/global.d.js +0 -1
  188. package/dist/esm/global.d.js.map +0 -1
  189. package/dist/esm/index.js +0 -16
  190. package/dist/esm/index.js.map +0 -1
  191. package/dist/esm/instance/TernAuth.js +0 -510
  192. package/dist/esm/instance/TernAuth.js.map +0 -1
  193. package/dist/esm/instance/TernAuthServer.js +0 -73
  194. package/dist/esm/instance/TernAuthServer.js.map +0 -1
  195. package/dist/esm/instance/c_coreApiClient.js +0 -236
  196. package/dist/esm/instance/c_coreApiClient.js.map +0 -1
  197. package/dist/esm/instance/coreApiClient.js +0 -226
  198. package/dist/esm/instance/coreApiClient.js.map +0 -1
  199. package/dist/esm/instance/events.js +0 -14
  200. package/dist/esm/instance/events.js.map +0 -1
  201. package/dist/esm/instance/jwtClient.js +0 -47
  202. package/dist/esm/instance/jwtClient.js.map +0 -1
  203. package/dist/esm/resources/Base.js +0 -113
  204. package/dist/esm/resources/Base.js.map +0 -1
  205. package/dist/esm/resources/Error.js +0 -9
  206. package/dist/esm/resources/Error.js.map +0 -1
  207. package/dist/esm/resources/Session.js +0 -81
  208. package/dist/esm/resources/Session.js.map +0 -1
  209. package/dist/esm/resources/SignIn.js +0 -240
  210. package/dist/esm/resources/SignIn.js.map +0 -1
  211. package/dist/esm/resources/SignUp.js +0 -48
  212. package/dist/esm/resources/SignUp.js.map +0 -1
  213. package/dist/esm/resources/Token.js +0 -8
  214. package/dist/esm/resources/Token.js.map +0 -1
  215. package/dist/esm/resources/UserData.js +0 -19
  216. package/dist/esm/resources/UserData.js.map +0 -1
  217. package/dist/esm/resources/cookie.js +0 -130
  218. package/dist/esm/resources/cookie.js.map +0 -1
  219. package/dist/esm/resources/index.js +0 -2
  220. package/dist/esm/resources/index.js.map +0 -1
  221. package/dist/esm/resources/internal.js +0 -8
  222. package/dist/esm/resources/internal.js.map +0 -1
  223. package/dist/esm/utils/construct.js +0 -215
  224. package/dist/esm/utils/construct.js.map +0 -1
  225. package/dist/esm/utils/index.js +0 -5
  226. package/dist/esm/utils/index.js.map +0 -1
  227. package/dist/esm/utils/jwt.js +0 -22
  228. package/dist/esm/utils/jwt.js.map +0 -1
  229. package/dist/esm/utils/mapDecode.js +0 -9
  230. package/dist/esm/utils/mapDecode.js.map +0 -1
  231. package/dist/esm/utils/path.js +0 -9
  232. package/dist/esm/utils/path.js.map +0 -1
  233. package/dist/esm/utils/querystring.js +0 -45
  234. package/dist/esm/utils/querystring.js.map +0 -1
  235. package/dist/esm/utils/redirectUrls.js +0 -132
  236. package/dist/esm/utils/redirectUrls.js.map +0 -1
  237. package/dist/esm/utils/windowNavigate.js +0 -19
  238. package/dist/esm/utils/windowNavigate.js.map +0 -1
  239. package/dist/types/auth/AuthCookieManager.d.ts.map +0 -1
  240. package/dist/types/auth/cookies/authTime_cookie.d.ts.map +0 -1
  241. package/dist/types/auth/request.d.ts +0 -49
  242. package/dist/types/auth/request.d.ts.map +0 -1
  243. package/dist/types/index.d.ts.map +0 -1
  244. package/dist/types/instance/TernAuth.d.ts.map +0 -1
  245. package/dist/types/instance/TernAuthServer.d.ts +0 -32
  246. package/dist/types/instance/TernAuthServer.d.ts.map +0 -1
  247. package/dist/types/instance/c_coreApiClient.d.ts.map +0 -1
  248. package/dist/types/instance/coreApiClient.d.ts.map +0 -1
  249. package/dist/types/instance/events.d.ts.map +0 -1
  250. package/dist/types/instance/jwtClient.d.ts +0 -22
  251. package/dist/types/instance/jwtClient.d.ts.map +0 -1
  252. package/dist/types/resources/Base.d.ts.map +0 -1
  253. package/dist/types/resources/Error.d.ts.map +0 -1
  254. package/dist/types/resources/Session.d.ts.map +0 -1
  255. package/dist/types/resources/SignIn.d.ts.map +0 -1
  256. package/dist/types/resources/SignUp.d.ts.map +0 -1
  257. package/dist/types/resources/Token.d.ts +0 -5
  258. package/dist/types/resources/Token.d.ts.map +0 -1
  259. package/dist/types/resources/UserData.d.ts +0 -8
  260. package/dist/types/resources/UserData.d.ts.map +0 -1
  261. package/dist/types/resources/cookie.d.ts +0 -24
  262. package/dist/types/resources/cookie.d.ts.map +0 -1
  263. package/dist/types/resources/index.d.ts +0 -2
  264. package/dist/types/resources/index.d.ts.map +0 -1
  265. package/dist/types/resources/internal.d.ts.map +0 -1
  266. package/dist/types/utils/construct.d.ts.map +0 -1
  267. package/dist/types/utils/index.d.ts.map +0 -1
  268. package/dist/types/utils/jwt.d.ts +0 -12
  269. package/dist/types/utils/jwt.d.ts.map +0 -1
  270. package/dist/types/utils/mapDecode.d.ts +0 -4
  271. package/dist/types/utils/mapDecode.d.ts.map +0 -1
  272. package/dist/types/utils/path.d.ts.map +0 -1
  273. package/dist/types/utils/querystring.d.ts.map +0 -1
  274. package/dist/types/utils/redirectUrls.d.ts.map +0 -1
  275. package/dist/types/utils/windowNavigate.d.ts.map +0 -1
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ export interface RouteContextValue {
3
+ basePath: string;
4
+ startPath: string;
5
+ flowStartPath: string;
6
+ fullPath: string;
7
+ indexPath: string;
8
+ currentPath: string;
9
+ matches: (path?: string, index?: boolean) => boolean;
10
+ baseNavigate: (toURL: URL) => Promise<unknown>;
11
+ navigate: (to: string, options?: {
12
+ searchParams?: URLSearchParams;
13
+ }) => Promise<unknown>;
14
+ resolve: (to: string) => URL;
15
+ refresh: () => void;
16
+ params: {
17
+ [key: string]: string;
18
+ };
19
+ queryString: string;
20
+ queryParams: Record<string, string>;
21
+ preservedParams?: string[];
22
+ getMatchData: (path?: string, index?: boolean) => false | object;
23
+ urlStateParam?: {
24
+ startPath: string;
25
+ path: string;
26
+ componentName: string;
27
+ clearUrlStateParam: () => void;
28
+ socialProvider: string;
29
+ };
30
+ }
31
+ export declare const RouteContext: React.Context<RouteContextValue | null>;
32
+ export declare const useRouter: () => RouteContextValue;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare function Switch({ children }: {
3
+ children: React.ReactNode;
4
+ }): React.JSX.Element;
@@ -0,0 +1,7 @@
1
+ export * from './RouterCtx';
2
+ export * from './Route';
3
+ export * from './HashRouter';
4
+ export * from './pathToRegexp';
5
+ export * from './PathRouter';
6
+ export * from './Switch';
7
+ export type ParsedQueryString = Record<string, string>;
@@ -0,0 +1 @@
1
+ export declare const newPaths: (oldIndexPath: string, oldFullPath: string, path?: string, index?: boolean) => string[];
@@ -0,0 +1,127 @@
1
+ export interface ParseOptions {
2
+ /**
3
+ * Set the default delimiter for repeat parameters. (default: `'/'`)
4
+ */
5
+ delimiter?: string;
6
+ /**
7
+ * List of characters to automatically consider prefixes when parsing.
8
+ */
9
+ prefixes?: string;
10
+ }
11
+ /**
12
+ * Parse a string for the raw tokens.
13
+ */
14
+ export declare function parse(str: string, options?: ParseOptions): Token[];
15
+ export interface TokensToFunctionOptions {
16
+ /**
17
+ * When `true` the regexp will be case sensitive. (default: `false`)
18
+ */
19
+ sensitive?: boolean;
20
+ /**
21
+ * Function for encoding input strings for output.
22
+ */
23
+ encode?: (value: string, token: Key) => string;
24
+ /**
25
+ * When `false` the function can produce an invalid (unmatched) path. (default: `true`)
26
+ */
27
+ validate?: boolean;
28
+ }
29
+ /**
30
+ * Compile a string to a template function for the path.
31
+ */
32
+ export declare function compile<P extends object = object>(str: string, options?: ParseOptions & TokensToFunctionOptions): PathFunction<P>;
33
+ export type PathFunction<P extends object = object> = (data?: P) => string;
34
+ /**
35
+ * Expose a method for transforming tokens into the path function.
36
+ */
37
+ export declare function tokensToFunction<P extends object = object>(tokens: Token[], options?: TokensToFunctionOptions): PathFunction<P>;
38
+ export interface RegexpToFunctionOptions {
39
+ /**
40
+ * Function for decoding strings for params.
41
+ */
42
+ decode?: (value: string, token: Key) => string;
43
+ }
44
+ /**
45
+ * A match result contains data about the path match.
46
+ */
47
+ export interface MatchResult<P extends object = object> {
48
+ path: string;
49
+ index: number;
50
+ params: P;
51
+ }
52
+ /**
53
+ * A match is either `false` (no match) or a match result.
54
+ */
55
+ export type Match<P extends object = object> = false | MatchResult<P>;
56
+ /**
57
+ * The match function takes a string and returns whether it matched the path.
58
+ */
59
+ export type MatchFunction<P extends object = object> = (path: string) => Match<P>;
60
+ /**
61
+ * Create path match function from `path-to-regexp` spec.
62
+ */
63
+ export declare function match<P extends object = object>(str: Path, options?: ParseOptions & TokensToRegexpOptions & RegexpToFunctionOptions): MatchFunction<P>;
64
+ /**
65
+ * Create a path match function from `path-to-regexp` output.
66
+ */
67
+ export declare function regexpToFunction<P extends object = object>(re: RegExp, keys: Key[], options?: RegexpToFunctionOptions): MatchFunction<P>;
68
+ /**
69
+ * Metadata about a key.
70
+ */
71
+ export interface Key {
72
+ name: string | number;
73
+ prefix: string;
74
+ suffix: string;
75
+ pattern: string;
76
+ modifier: string;
77
+ }
78
+ /**
79
+ * A token is a string (nothing special) or key metadata (capture group).
80
+ */
81
+ export type Token = string | Key;
82
+ export interface TokensToRegexpOptions {
83
+ /**
84
+ * When `true` the regexp will be case sensitive. (default: `false`)
85
+ */
86
+ sensitive?: boolean;
87
+ /**
88
+ * When `true` the regexp allows an optional trailing delimiter to match. (default: `false`)
89
+ */
90
+ strict?: boolean;
91
+ /**
92
+ * When `true` the regexp will match to the end of the string. (default: `true`)
93
+ */
94
+ end?: boolean;
95
+ /**
96
+ * When `true` the regexp will match from the beginning of the string. (default: `true`)
97
+ */
98
+ start?: boolean;
99
+ /**
100
+ * Sets the final character for non-ending optimistic matches. (default: `/`)
101
+ */
102
+ delimiter?: string;
103
+ /**
104
+ * List of characters that can also be "end" characters.
105
+ */
106
+ endsWith?: string;
107
+ /**
108
+ * Encode path tokens for use in the `RegExp`.
109
+ */
110
+ encode?: (value: string) => string;
111
+ }
112
+ /**
113
+ * Expose a function for taking tokens and returning a RegExp.
114
+ */
115
+ export declare function tokensToRegexp(tokens: Token[], keys?: Key[], options?: TokensToRegexpOptions): RegExp;
116
+ /**
117
+ * Supported `path-to-regexp` input types.
118
+ */
119
+ export type Path = string | RegExp | Array<string | RegExp>;
120
+ /**
121
+ * Normalize the given path string, returning a regular expression.
122
+ *
123
+ * An empty array can be passed in for the keys, which will hold the
124
+ * placeholder key descriptions. For example, using `/user/:id`, `keys` will
125
+ * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
126
+ */
127
+ export declare function pathToRegexp(path: Path, keys?: Key[], options?: TokensToRegexpOptions & ParseOptions): RegExp;
@@ -0,0 +1,18 @@
1
+ import type { SignInFallbackRedirectUrl, SignInForceRedirectUrl, SignInProps, SignUpFallbackRedirectUrl, SignUpForceRedirectUrl, SignUpProps, UserButtonProps } from '@tern-secure/types';
2
+ export type { SignInProps, SignUpProps, UserButtonProps };
3
+ type ComponentMode = 'modal' | 'mounted';
4
+ export type SignInCtx = SignInProps & {
5
+ componentName: 'SignIn';
6
+ mode?: ComponentMode;
7
+ } & SignInFallbackRedirectUrl & SignInForceRedirectUrl;
8
+ export type SignUpCtx = SignUpProps & {
9
+ componentName: 'SignUp';
10
+ mode?: ComponentMode;
11
+ } & SignUpFallbackRedirectUrl & SignUpForceRedirectUrl;
12
+ export type UserButtonCtx = UserButtonProps & {
13
+ componentName: 'UserButton';
14
+ mode?: ComponentMode;
15
+ };
16
+ export type AvailableComponentProps = SignInProps | SignUpProps | UserButtonProps;
17
+ export type AvailableComponentCtx = SignInCtx | SignUpCtx | UserButtonCtx;
18
+ export type AvailableComponentName = AvailableComponentCtx['componentName'];
@@ -0,0 +1,19 @@
1
+ interface FormErrorsProps {
2
+ errors: Record<string, string> | string[] | string | null;
3
+ }
4
+ export declare function FormErrors({ errors }: FormErrorsProps): import("react/jsx-runtime").JSX.Element | null;
5
+ interface FormButtonProps {
6
+ canSubmit: boolean;
7
+ isSubmitting: boolean;
8
+ submitText: string;
9
+ submittingText: string;
10
+ className?: string;
11
+ }
12
+ export declare function FormButton({ canSubmit, isSubmitting, submitText, submittingText, className, }: FormButtonProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare const emailValidator: ({ value }: {
14
+ value: string;
15
+ }) => "Email is required" | "Invalid email format" | undefined;
16
+ export declare const passwordValidator: ({ value }: {
17
+ value: string;
18
+ }) => "Password is required" | "Password must be at least 8 characters" | "Password must contain at least one uppercase letter" | "Password must contain at least one lowercase letter" | "Password must contain at least one number" | "Password must contain at least one special character" | undefined;
19
+ export {};
@@ -0,0 +1 @@
1
+ export * from './sleep';
@@ -0,0 +1 @@
1
+ export declare const sleep: (ms: number) => Promise<unknown>;
@@ -93,6 +93,8 @@ export declare function relativeToAbsoluteUrl(url: string, origin: string | URL)
93
93
  */
94
94
  export declare function isProblematicUrl(url: URL): boolean;
95
95
  export declare function hasBannedProtocol(val: string | URL): boolean;
96
+ export declare const hasUrlInFragment: (_url: URL | string) => boolean;
97
+ export declare const mergeFragmentIntoUrl: (_url: string | URL) => URL;
98
+ export declare const pathFromFullPath: (fullPath: string) => string;
96
99
  export declare const isAllowedRedirect: (allowedRedirectOrigins: Array<string | RegExp> | undefined, currentOrigin: string) => (_url: URL | string) => boolean;
97
100
  export {};
98
- //# sourceMappingURL=construct.d.ts.map
@@ -2,4 +2,4 @@ export * from './construct';
2
2
  export * from './querystring';
3
3
  export * from './redirectUrls';
4
4
  export * from './windowNavigate';
5
- //# sourceMappingURL=index.d.ts.map
5
+ export * from './normalizeRoutingOptions';
@@ -0,0 +1,6 @@
1
+ import type { RoutingOptions, RoutingStrategy } from '@tern-secure/types';
2
+ export declare function ternInvalidRoutingStrategy(strategy?: string): never;
3
+ export declare const normalizeRoutingOptions: ({ routing, path, }: {
4
+ routing?: RoutingStrategy;
5
+ path?: string;
6
+ }) => RoutingOptions;
@@ -1,4 +1,3 @@
1
1
  type PathString = string | null | undefined;
2
2
  export declare function joinPaths(a: PathString, b: PathString): string;
3
3
  export {};
4
- //# sourceMappingURL=path.d.ts.map
@@ -4,4 +4,3 @@ type StringifyQueryParamsOptions = {
4
4
  };
5
5
  export declare const stringifyQueryParams: (params: Record<string, string | undefined | null | object | boolean | Array<string | undefined | null>> | null | undefined | string, opts?: StringifyQueryParamsOptions) => string;
6
6
  export {};
7
- //# sourceMappingURL=querystring.d.ts.map
@@ -1,11 +1,5 @@
1
1
  import type { RedirectOptions, TernSecureAuthOptions } from '@tern-secure/types';
2
- /**
3
- * RedirectUrls class handles all redirect URL construction logic
4
- * for sign-in, sign-up, and post-authentication flows.
5
- *
6
- * This class centralizes the redirect logic previously scattered across
7
- * multiple methods, making it reusable and maintainable.
8
- */
2
+ type ComponentMode = 'modal' | 'mounted';
9
3
  export declare class RedirectUrls {
10
4
  #private;
11
5
  private static keys;
@@ -14,10 +8,11 @@ export declare class RedirectUrls {
14
8
  private readonly fromOptions;
15
9
  private readonly fromProps;
16
10
  private readonly fromSearchParams;
17
- constructor(options: TernSecureAuthOptions, props?: RedirectOptions, searchParams?: any);
11
+ private readonly mode?;
12
+ constructor(options: TernSecureAuthOptions, props?: RedirectOptions, searchParams?: any, mode?: ComponentMode);
18
13
  getAfterSignInUrl(): string;
19
14
  getAfterSignUpUrl(): string;
20
15
  getPreservedSearchParams(): URLSearchParams;
21
16
  toSearchParams(): URLSearchParams;
22
17
  }
23
- //# sourceMappingURL=redirectUrls.d.ts.map
18
+ export {};
@@ -9,4 +9,3 @@ export declare const ALLOWED_PROTOCOLS: string[];
9
9
  * Note that this utility should **never** be called with a user-provided URL. We make no specific checks against the contents of the URL here and assume it is safe.
10
10
  */
11
11
  export declare function windowNavigate(to: URL | string): void;
12
- //# sourceMappingURL=windowNavigate.d.ts.map
@@ -0,0 +1 @@
1
+ "use strict";(globalThis.webpackChunk_tern_secure_auth=globalThis.webpackChunk_tern_secure_auth||[]).push([["666"],{9953:function(e,t,r){r.d(t,{T:()=>s});var a=r(410);r(5058);let s=({id:e,className:t})=>{switch(e){case"google":return(0,a.jsxs)("svg",{className:t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",children:[(0,a.jsx)("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z",fill:"#4285F4"}),(0,a.jsx)("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),(0,a.jsx)("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),(0,a.jsx)("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]});case"github":return(0,a.jsx)("svg",{className:t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",children:(0,a.jsx)("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"})});case"microsoft":return(0,a.jsxs)("svg",{className:t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 23 23",fill:"currentColor",children:[(0,a.jsx)("path",{fill:"#f35325",d:"M1 1h10v10H1z"}),(0,a.jsx)("path",{fill:"#81bc06",d:"M12 1h10v10H12z"}),(0,a.jsx)("path",{fill:"#05a6f0",d:"M1 12h10v10H1z"}),(0,a.jsx)("path",{fill:"#ffba08",d:"M12 12h10v10H12z"})]});case"apple":return(0,a.jsx)("svg",{className:t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",children:(0,a.jsx)("path",{d:"M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24.02-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.74 1.18 0 2.45-1.62 4.37-1.62 1.71.12 2.7.84 3.4 1.84-3.18 1.62-2.67 5.86.34 7.1-.68 1.75-1.6 3.47-3.19 4.91zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z"})});case"facebook":return(0,a.jsx)("svg",{className:t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",children:(0,a.jsx)("path",{d:"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z",fill:"#1877F2"})});case"twitter":return(0,a.jsx)("svg",{className:t,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",children:(0,a.jsx)("path",{d:"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"})});default:return null}}},2648:function(e,t,r){r.d(t,{_:()=>l});var a=r(410),s=r(4853),n=r(8384),i=r(384);let l=e=>{let{navigate:t}=(0,i.rd)(),r=(0,n.f0)();return(0,a.jsx)("div",{className:"relative flex justify-center p-6 md:p-10",children:(0,a.jsx)("div",{className:"w-full max-w-sm",children:(0,a.jsxs)(n.Zp,{className:(0,s.cn)("mt-8 w-full max-w-md"),children:[(0,a.jsxs)(n.aR,{className:"space-y-1 text-center",children:[(0,a.jsx)(n.ZB,{children:"Verify your email"}),(0,a.jsx)(n.BT,{className:(0,s.cn)("text-muted-foreground"),children:e.emailSent?"We've sent a verification link to your email address. Please check your inbox and click the link to continue.":"Sending verification email..."})]}),(0,a.jsxs)(n.Wu,{className:"space-y-4",children:[r.error&&(0,a.jsx)(n.Fc,{variant:"destructive",className:"animate-in fade-in-50",children:(0,a.jsx)(n.TN,{children:r.error.message})}),e.emailSent&&e.onResend&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(n.Fc,{children:(0,a.jsx)(n.TN,{children:"Didn't receive the email? Check your spam folder or click the button below to resend."})}),(0,a.jsx)(n.MS,{onClick:()=>void e.onResend?.(),disabled:e.isLoading,variant:"outline",className:"w-full",startDisabled:!0,throttleTimeInSec:60,children:e.isLoading?"Sending...":"Resend verification email"})]})]}),(0,a.jsx)(n.ry,{className:"text-center",children:(0,a.jsx)("a",{onClick:()=>void t("../"),children:"Go back"})})]})})})}},1687:function(e,t,r){r.r(t),r.d(t,{PasswordResetSuccess:()=>m,PasswordReset:()=>h,SignIn:()=>L,SignInModal:()=>M}),r(4878);var a=r(410),s=r(802),n=r(5058),i=r(5197),l=r(5977),o=r(384),c=r(4853),d=r(8384);function u(){let e=(0,l.o1)(),t=(0,d.f0)(),{navigate:r}=(0,o.rd)(),s=(0,d.T3)({defaultValues:{email:""},validators:{onSubmitAsync:async({value:a})=>{try{await e?.sendPasswordResetEmail(a.email),r("../reset-password-success")}catch(e){throw t.setError({status:"error",name:"ResetPasswordError",message:e.message||"Failed to send reset email",error:e}),e}}}});return(0,a.jsx)("div",{className:"relative flex justify-center p-6 md:p-10",children:(0,a.jsxs)(d.Zp,{className:(0,c.cn)("mt-8 w-full max-w-md"),children:[(0,a.jsxs)(d.aR,{className:"space-y-1",children:[(0,a.jsx)(d.ZB,{children:"Reset Password"}),(0,a.jsx)(d.BT,{children:"Enter your email address and we'll send you a link to reset your password"})]}),(0,a.jsxs)(d.Wu,{children:[t.error&&(0,a.jsx)(d.Fc,{variant:"destructive",className:"animate-in fade-in-50 mb-4",children:(0,a.jsx)(d.TN,{children:t.error.message})}),(0,a.jsx)("form",{onSubmit:e=>{e.preventDefault(),e.stopPropagation(),s.handleSubmit()},children:(0,a.jsxs)(d.M_,{children:[(0,a.jsx)(s.AppField,{name:"email",children:e=>(0,a.jsx)(e.TernEmailField,{label:"Email",placeholder:"Enter your email",disabled:s.state.isSubmitting,required:!0})}),(0,a.jsxs)("div",{className:"flex gap-3",children:[(0,a.jsx)(d.$n,{type:"submit",disabled:!s.state.canSubmit||s.state.isSubmitting,className:"flex-1",children:s.state.isSubmitting?"Sending...":"Send Reset Link"}),(0,a.jsx)(d.$n,{type:"button",variant:"outline",onClick:()=>{r("../")},disabled:s.state.isSubmitting,className:"flex-1",children:"Cancel"})]})]})})]})]})})}let h=()=>(0,a.jsx)(d.pe,{children:(0,a.jsx)(u,{})});function m(){let{navigate:e}=(0,o.rd)();return(0,a.jsx)("div",{className:"relative flex items-center justify-center",children:(0,a.jsxs)(d.Zp,{className:(0,c.cn)("w-full max-w-md mx-auto mt-8"),children:[(0,a.jsxs)(d.aR,{className:"space-y-1 text-center",children:[(0,a.jsx)("div",{className:"w-12 h-12 mx-auto bg-green-500 rounded-full flex items-center justify-center text-white text-2xl",children:"✓"}),(0,a.jsx)(d.ZB,{className:"font-bold",children:"Check your email"}),(0,a.jsx)(d.BT,{className:"text-muted-foreground",children:"Password reset instructions sent"})]}),(0,a.jsx)(d.Wu,{className:"space-y-4",children:(0,a.jsx)(d.$n,{onClick:()=>e("../"),className:"w-full",children:"Back to sign in"})})]})})}var f=r(6282),p=r(4904),x=r(3777);let g={password:""},v=e=>{let t=(0,d.f0)(),{signInWithPassword:r,onForgotPassword:s}=e,n=(0,d.T3)({defaultValues:g,validators:{onSubmitAsync:({value:e})=>r?.(e.password)}});return(0,a.jsx)("div",{className:"relative flex justify-center p-6 md:p-10",children:(0,a.jsx)("div",{className:"w-full max-w-sm",children:(0,a.jsxs)(d.Zp,{className:(0,c.cn)("mt-8 w-full max-w-md"),children:[(0,a.jsxs)(d.aR,{className:"space-y-1 text-center",children:[(0,a.jsx)(d.ZB,{className:(0,c.cn)("font-bold"),children:"Enter your password"}),(0,a.jsx)(d.BT,{className:(0,c.cn)("text-muted-foreground"),children:"Enter the password for your account to continue"})]}),(0,a.jsxs)(d.Wu,{className:"space-y-4",children:[t.error&&(0,a.jsx)(d.Fc,{variant:"destructive",className:"animate-in fade-in-50",children:(0,a.jsx)(d.TN,{children:t.error.message})}),(0,a.jsx)("form",{onSubmit:e=>{e.preventDefault(),e.stopPropagation(),n.handleSubmit()},children:(0,a.jsxs)(d.M_,{children:[(0,a.jsx)(n.AppField,{name:"password",children:e=>(0,a.jsx)(e.TernPasswordField,{label:"Password",placeholder:"Enter your password",disabled:n.state.isSubmitting||t.isLoading,required:!0,onForgotPassword:s})}),(0,a.jsx)(x.pr,{canSubmit:n.state.canSubmit,isSubmitting:n.state.isSubmitting,submitText:"Continue",submittingText:"Signing in..."})]})})]})]})})})},j=e=>{let t=(0,d.f0)(),r=(0,d.xM)({onCodeEntryFinished:(t,r,a)=>{e.onCodeEntryFinishedAction(t,r,a)},onResendCodeClicked:e.onResendCodeClicked});return(0,a.jsxs)(d.Zp,{className:"w-full max-w-md",children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsx)(d.ZB,{children:e.cardTitle}),(0,a.jsx)(d.BT,{children:e.cardDescription})]}),(0,a.jsx)(d.Wu,{children:(0,a.jsxs)(d.oA,{isLoading:r.isLoading,otpControl:r.otpControl,onResendCode:r.onResendCode,children:[(0,a.jsxs)("div",{className:"space-y-4",children:[t.error&&(0,a.jsx)(d.Fc,{variant:"destructive",children:(0,a.jsx)(d.TN,{children:t.error.message})}),(0,a.jsxs)("div",{className:"space-y-2 flex flex-col items-center",children:[(0,a.jsx)(d.JU,{htmlFor:"code",children:e.inputLabel}),(0,a.jsx)(d.iG,{})]})]}),(0,a.jsxs)("div",{className:"flex flex-col space-y-2 mt-4",children:[(0,a.jsx)(d.Ro,{}),e.onBackLinkClicked&&(0,a.jsx)(d.$n,{variant:"ghost",onClick:e.onBackLinkClicked,disabled:r.isLoading,children:"Back"})]})]})})]})},b=e=>{let t=(0,l.o1)(),r=(0,d.f0)(),{navigate:i}=(0,o.rd)(),{afterSignInUrl:c}=(0,l.r3)(),u=(0,s.qn)(),h=(0,n.useRef)(null),[m,f]=(0,n.useState)(null),[p,x]=(0,n.useState)(!1),g=(0,n.useCallback)(async e=>{if(!t?.identifier)return;let a=await t.authenticateWithPhoneNumber({phoneNumber:t.identifier,appVerifier:e});"error"===a.status&&r.setError({status:"error",message:a.message,error:a.error})},[t,r]);return(0,n.useEffect)(()=>{(async()=>{if("phone_code"===e.factor.strategy&&t&&h.current&&!m&&!p){x(!0);try{let e=h.current;e.id||(e.id="recaptcha-container");let r=t.createRecaptchaVerifier(e,{size:"invisible",callback:e=>{},"expired-callback":()=>{f(null),x(!1)}});f(r),await g(r)}catch(e){console.error("Failed to initialize Recaptcha",e),r.setError({status:"error",message:"Failed to initialize security verification",error:e}),x(!1)}}})()},[e.factor.strategy,t,m,p,g,r]),(0,a.jsxs)(a.Fragment,{children:["phone_code"===e.factor.strategy&&(0,a.jsx)("div",{ref:h,id:"recaptcha-container",style:{minHeight:"78px",display:"flex",justifyContent:"center",alignItems:"center",width:"100%"}}),(0,a.jsx)(j,{cardTitle:"Enter Code",cardDescription:`Please enter the code sent to your ${"phone_code"===e.factor.strategy?"phone":"email"}.`,onCodeEntryFinishedAction:(r,a,s)=>{(async()=>{try{let n;n="phone_code"===e.factor.strategy?await t?.attemptPhoneNumberVerification({code:r}):await t?.attemptFirstFactor({strategy:e.factor.strategy,code:r}),n?.status==="success"?(await a(),t?.user&&await u.createActiveSession({session:t.user,redirectUrl:c})):await s(Error("Verification failed"))}catch(e){await s(e)}})()},onResendCodeClicked:r=>{r.preventDefault(),(async()=>{"phone_code"===e.factor.strategy&&t?.identifier&&m&&await g(m)})()},onBackLinkClicked:()=>{i("../")}})]})},w=e=>(0,a.jsx)(b,{...e}),y=(0,d.dm)(function(){let e=(0,l.o1)(),t=(0,s.qn)(),r=t.requiresVerification,i=(0,d.f0)(),c=(0,o.rd)(),{navigate:u}=c,{afterSignInUrl:h}=(0,f.r)(),[m,x]=n.useState(null),g=(0,p.u)(m,e?.supportedFirstFactors);n.useEffect(()=>{(e?.status==="needs_identifier"||e?.status===null)&&c.navigate("../")},[e?.status,c]);let j=async a=>{if(!e?.identifier)return void i.setError({status:"error",message:"Identifier is missing"});let s=await e?.authenticateWithPassword({email:e.identifier,password:a});if(s?.status==="error"&&i.setError({status:"error",message:s.message,error:s.error}),s?.status==="success"){if(r&&!s.user.emailVerified)return void u("../verify-email-address");await t.createActiveSession({session:s.user,redirectUrl:h})}};if(!g&&e?.status)return(0,a.jsx)(d.Jr,{});if(!g)return(0,a.jsx)(d.B0,{});switch(g?.strategy){case"password":return(0,a.jsx)(v,{signInWithPassword:j,onForgotPassword:()=>{u("../reset-password")}});case"phone_code":return(0,a.jsx)(w,{factor:{...g}});default:return(0,a.jsx)(d.B0,{})}});var N=r(5305);r(9953);let S=e=>{let{isExternal:t,children:r,href:s,onClick:n,...i}=e,l=n?e=>{s||e.preventDefault(),n(e)}:void 0;return(0,a.jsx)("a",{...i,onClick:l,href:s||"",target:s&&t?"_blank":void 0,rel:s&&t?"noopener":void 0,children:r})},E=e=>{let{to:t,onClick:r,...s}=e,n=(0,o.rd)(),i=n.resolve(t||n.indexPath);return(0,a.jsx)(S,{...s,onClick:e=>(e.preventDefault(),r&&!t)?r(e):n.navigate(i.href),href:i.href})},P=()=>{let e=(0,l.o1)(),t=(0,s.qn)(),r=(0,d.f0)(),{afterSignInUrl:n}=(0,l.r3)(),i=async(a,s={mode:"popup"})=>{let i=await e?.authenticateWithSocialProvider(a,{mode:s.mode||"popup",customParameters:s.customParameters,scopes:s.scopes});i?.status==="error"&&r.setError({status:"error",message:i.message,error:i.error}),i?.status==="success"&&await t.createActiveSession({session:i.user,redirectUrl:n})};return(0,a.jsx)(d.VR,{onProviderClick:e=>void i(e),disabled:r.isLoading})},C={email:"",password:""},k=e=>{let{onError:t,isDisabled:r,signInWithPassword:s,onForgotPassword:n}=e,i=(0,d.T3)({defaultValues:C,validators:{onSubmitAsync:async({value:e})=>{try{s&&await s(e.email,e.password)}catch(e){throw t?.(e),e}}}});return(0,a.jsxs)(d.M_,{children:[(0,a.jsx)("form",{onSubmit:e=>{e.preventDefault(),e.stopPropagation(),i.handleSubmit()},className:"flex flex-col gap-7",children:(0,a.jsx)(i.Subscribe,{selector:e=>[e.canSubmit,e.isSubmitting],children:([e,t])=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.AppField,{name:"email",children:e=>(0,a.jsx)(e.TernEmailField,{label:"Email",placeholder:"Enter your email",disabled:t||r,required:!0})}),(0,a.jsx)(i.AppField,{name:"password",children:e=>(0,a.jsx)(e.TernPasswordField,{label:"Password",placeholder:"Enter your password",disabled:t||r,required:!0,onForgotPassword:n})}),(0,a.jsx)(x.pr,{canSubmit:e,isSubmitting:t,submitText:"Sign In",submittingText:"Signing in..."}),(0,a.jsx)(d.KB,{children:"Or continue with"})]})})}),(0,a.jsx)(P,{})]})},R=({src:e,alt:t})=>(0,a.jsx)("div",{className:"mb-4 flex justify-center",children:(0,a.jsx)("img",{src:e,alt:t,className:"h-10 w-auto"})}),U=(0,d.dm)(function(){let e=(0,l.o1)(),t=(0,s.qn)(),r=(0,l.At)(),{appName:i}=r,u=(0,f.r)(),h=r.signUpMode||"public",m=r.passwordAuthentication??!0,p=t.requiresVerification,g=(0,d.f0)(),{navigate:v}=(0,o.rd)(),{afterSignInUrl:j,signUpUrl:b,showCombinedForm:w,appearance:y}=u,S=u.preferredEmailStrategy||"password",C=(0,n.useMemo)(()=>["email_address","phone_number"],[]),U=y?.layout,A=U?.logoPlacement||"inside",F=U?.logoImageUrl,T=U?.socialButtonsPlacement||"bottom",I=u.initialValues?.phoneNumber!==void 0&&void 0===u.initialValues.emailAddress&&C.includes("phone_number"),[_,L]=(0,n.useState)(I?"phone_number":C[0]||""),M=u.initialValues||{},q=(0,n.useMemo)(()=>({email_address:M.emailAddress,email_address_username:M.emailAddress||M.username,username:M.username,phone_number:M.phoneNumber}),[M.emailAddress,M.phoneNumber,M.username]),{fieldName:B,label:$,placeholder:D}=(0,n.useMemo)(()=>"phone_number"===_?{fieldName:"phoneNumber",label:"Phone number",placeholder:"Enter your phone number"}:{fieldName:"email",label:"Email",placeholder:"Enter your email"},[_]),O=(0,n.useMemo)(()=>"phone_number"===_?"tel":"email",[_]),V=(0,n.useMemo)(()=>({[B]:q[_]||""}),[B,_,q[_]]),z=(0,d.T3)({defaultValues:V,validators:{onSubmitAsync:({value:e})=>W(e)}}),W=async r=>{try{let a,s,n=await e?.create((a=r.phoneNumber||r.email||r.identifier||"",s="phone_number"===_?"phone_code":"email_code",("phone_number"!==_&&"password"===S&&(s="password"),"password"===s)?{strategy:"password",identifier:a}:{strategy:s,identifier:a}));switch(n?.status){case"needs_first_factor":return v("factor-one");case"needs_email_verification":return v("verify-email-address");case"success":return t.createActiveSession({redirectUrl:j})}}catch(e){if(e instanceof N.yS){let t=e.errors[0];g.setError({status:"error",message:t?.message||e.message,error:t})}else g.setError({status:"error",message:"An unexpected error occurred.",error:e})}},H=async(r,a)=>{let s=await e?.authenticateWithPassword({email:r,password:a});if(s?.status==="error"&&g.setError({status:"error",message:s.message,error:s.error}),s?.status==="success"){if(p&&s?.user.emailVerified===!1)return void v("verify-email-address");await t.createActiveSession({session:s.user,redirectUrl:j})}};return(0,a.jsx)("div",{className:"relative flex justify-center p-6 md:p-10",children:(0,a.jsxs)("div",{className:"w-full max-w-sm",children:["outside"===A&&F&&(0,a.jsx)(R,{src:F,alt:i||"App Logo"}),(0,a.jsxs)(d.Zp,{className:(0,c.cn)("mt-8 w-full max-w-md"),children:[(0,a.jsxs)(d.aR,{className:"space-y-1 text-center",children:["inside"===A&&F&&(0,a.jsx)(R,{src:F,alt:i||"App Logo"}),(0,a.jsx)(d.ZB,{className:(0,c.cn)("font-bold"),children:i?`Sign in to ${i}`:"Sign in"}),(0,a.jsx)(d.BT,{className:(0,c.cn)("text-muted-foreground"),children:"Please sign in to continue"})]}),(0,a.jsxs)(d.Wu,{className:"space-y-4",children:[g.error&&(0,a.jsx)(d.Fc,{variant:"destructive",className:"animate-in fade-in-50",children:(0,a.jsx)(d.TN,{children:g.error.message})}),w?(0,a.jsxs)(d.M_,{children:["top"===T&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(P,{}),m&&(0,a.jsx)(d.KB,{children:"Or continue with"})]}),m&&(0,a.jsx)("form",{onSubmit:e=>{e.preventDefault(),e.stopPropagation(),z.handleSubmit()},className:"flex flex-col gap-7",children:(0,a.jsx)(z.Subscribe,{selector:e=>[e.canSubmit,e.isSubmitting],children:([e,t])=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.AppField,{name:B,children:e=>"tel"===O?(0,a.jsx)(e.TernTextField,{label:$,placeholder:D,disabled:t||g.isLoading,required:!0}):(0,a.jsx)(e.TernEmailField,{label:$,placeholder:D,disabled:t||g.isLoading,required:!0})}),(0,a.jsx)(x.pr,{canSubmit:e,isSubmitting:t,submitText:"Continue",submittingText:"Continuing..."}),"bottom"===T&&(0,a.jsx)(d.KB,{children:"Or continue with"})]})})}),"bottom"===T&&(0,a.jsx)(P,{})]}):m&&(0,a.jsx)(k,{signInWithPassword:H,onError:e=>{g.setError(e)},isDisabled:g.isLoading,onForgotPassword:()=>{v("reset-password")}}),"public"===h&&(0,a.jsxs)(d.ry,{className:"text-center",children:["Don't have an account? ",(0,a.jsx)(E,{to:b,children:"Sign up"})]})]})]})]})})});var A=r(2648);function F(){let e=(0,l.o1)(),{afterSignInUrl:t}=(0,l.r3)(),r=(0,d.f0)(),[s,i]=n.useState(!1);n.useEffect(()=>{o()},[]);let o=async()=>{let a=await e?.attemptEmailVerification({url:t,handleCodeInApp:!0});a?.status==="error"?r.setError({status:"error",message:a.message,error:a.error}):i(!0)},c=async()=>{r.setLoading(),await o(),r.setIdle()};return(0,a.jsx)(A._,{emailSent:s,onResend:c,isLoading:r.isLoading})}let T=(0,d.dm)(()=>(0,a.jsx)(F,{}));function I(){let e=(0,s.qn)();return n.useEffect(()=>{e.redirectToSignIn()},[]),null}function _(){return(0,a.jsxs)(o.dO,{children:[(0,a.jsx)(o.qh,{path:"reset-password",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.qh,{path:"reset-password-success",children:(0,a.jsx)(m,{})}),(0,a.jsx)(o.qh,{path:"factor-one",children:(0,a.jsx)(y,{})}),(0,a.jsx)(o.qh,{path:"verify-email-address",canActivate:e=>!!e.signIn?.identifier,children:(0,a.jsx)(T,{})}),(0,a.jsx)(o.qh,{index:!0,children:(0,a.jsx)(U,{})}),(0,a.jsx)(o.qh,{children:(0,a.jsx)(I,{})})]})}_.displayName="SignIn";let L=function(){let e=(0,l.r3)(),t={componentName:"SignUp",forceRedirectUrl:e.signUpForceRedirectUrl,fallbackRedirectUrl:e.signUpFallbackRedirectUrl,signInUrl:e.signInUrl,...(0,i.C)({routing:e?.routing,path:e?.path})};return(0,a.jsx)(l.gh.Provider,{value:t,children:(0,a.jsx)(_,{})})},M=e=>(0,a.jsx)(o.qh,{path:"sign-in",children:(0,a.jsx)(l.QI.Provider,{value:{componentName:"SignIn",...e,routing:"virtual",mode:"modal"},children:(0,a.jsx)("div",{children:(0,a.jsx)(L,{...e,routing:"virtual"})})})})},8102:function(e,t,r){r.r(t),r.d(t,{SignUp:()=>v,SignUpModal:()=>j,SignUpVerifyEmail:()=>p,SignUpStart:()=>h}),r(4878);var a=r(410),s=r(802),n=r(5058),i=r(5977),l=r(384),o=r(4853),c=r(8384),d=r(3777);let u=()=>{let e=(0,i.o1)(),t=(0,s.qn)(),r=(0,c.f0)(),{afterSignUpUrl:n}=(0,i.Xu)(),l=async(a,s={mode:"popup"})=>{let i=await e?.authenticateWithSocialProvider(a,{mode:s.mode||"popup",customParameters:s.customParameters,scopes:s.scopes});i?.status==="error"&&r.setError({status:"error",message:i.message,error:i.error}),i?.status==="success"&&await t.createActiveSession({session:i.user,redirectUrl:n})};return(0,a.jsx)(c.VR,{onProviderClick:e=>void l(e),disabled:r.isLoading})},h=(0,c.dm)(function(){let e=(0,i.Kp)(),t=(0,c.f0)(),{navigate:r}=(0,l.rd)(),n=(0,i.Xu)(),{afterSignUpUrl:h,signInUrl:m,shouldShowForm:f=!0}=n,{createActiveSession:p}=(0,s.qn)(),{appName:x}=(0,i.At)(),g=(0,c.T3)({defaultValues:{email:"",password:""},validators:{onSubmitAsync:async({value:e})=>await v(e.email,e.password)}}),v=async(a,s)=>{if(!e)return;let i=await e.withEmailAndPassword({email:a,password:s});if("error"===i.status)return void t.setError({status:"error",message:i.message,error:i.error});let l=n.afterSignUpUrl||"/";await (({signUp:e,verifyEmailPath:t,navigate:r,handleComplete:a})=>"complete"===e.status?a&&a():"missing_requirements"===e.status&&e.unverifiedFields?.includes("email_address")&&t?r(t):void 0)({signUp:i,verifyEmailPath:"verify-email-address",handleComplete:async()=>p({session:i.user,redirectUrl:h}),navigate:r,redirectUrlComplete:l})};return(0,a.jsx)("div",{className:"relative flex justify-center p-6 md:p-10",children:(0,a.jsx)("div",{className:"w-full max-w-sm",children:(0,a.jsxs)(c.Zp,{className:(0,o.cn)("mt-8 w-full max-w-md"),children:[(0,a.jsxs)(c.aR,{className:"space-y-1 text-center",children:[(0,a.jsx)(c.ZB,{children:x?`Create your ${x} account`:"Create your account"}),(0,a.jsx)(c.BT,{className:(0,o.cn)("text-muted-foreground"),children:f?"Welcome! Please fill in the details to get started.":"Welcome! Please sign up to continue."})]}),(0,a.jsxs)(c.Wu,{className:"space-y-4",children:[t.error&&(0,a.jsx)(c.Fc,{variant:"destructive",className:"animate-in fade-in-50",children:(0,a.jsx)(c.TN,{children:t.error.message})}),(0,a.jsxs)(c.M_,{children:[f&&(0,a.jsx)("form",{onSubmit:e=>{e.preventDefault(),e.stopPropagation(),g.handleSubmit()},className:"flex flex-col gap-7",children:(0,a.jsx)(g.Subscribe,{selector:e=>[e.canSubmit,e.isSubmitting],children:([e,r])=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(g.AppField,{name:"email",children:e=>(0,a.jsx)(e.TernEmailField,{label:"Email",placeholder:"Enter your email",disabled:r||t.isLoading,required:!0})}),(0,a.jsx)(g.AppField,{name:"password",children:e=>(0,a.jsx)(e.TernPasswordField,{label:"Password",placeholder:"Enter your password",disabled:r||t.isLoading,required:!0})}),(0,a.jsx)(d.pr,{canSubmit:e,isSubmitting:r,submitText:"Continue",submittingText:"Creating Account..."}),(0,a.jsx)(c.KB,{children:"Or continue with"})]})})}),(0,a.jsx)(u,{})]})]}),(0,a.jsxs)(c.ry,{className:"text-center",children:["Already have an account? ",(0,a.jsx)("a",{href:m,children:"Sign In"})]})]})})})});var m=r(2648);function f(){let e=(0,i.Kp)(),{afterSignUpUrl:t}=(0,i.Xu)(),r=(0,c.f0)(),[s,l]=n.useState(!1);n.useEffect(()=>{o()},[]);let o=async()=>{let a=await e?.attemptEmailVerification({url:t,handleCodeInApp:!0});a?.status==="error"?r.setError({status:"error",message:a.message,error:a.error}):l(!0)},d=async()=>{r.setLoading(),await o(),r.setIdle()};return(0,a.jsx)(m._,{emailSent:s,onResend:d,isLoading:r.isLoading})}let p=(0,c.dm)(()=>(0,a.jsx)(f,{}));function x(){let e=(0,s.qn)();return n.useEffect(()=>{e.redirectToSignUp()},[]),null}function g(){return(0,a.jsxs)(l.dO,{children:[(0,a.jsx)(l.qh,{path:"verify-email-address",canActivate:e=>!!e.signUp?.user?.email,children:(0,a.jsx)(p,{})}),(0,a.jsx)(l.qh,{index:!0,children:(0,a.jsx)(h,{})}),(0,a.jsx)(l.qh,{children:(0,a.jsx)(x,{})})]})}g.displayName="SignUp";let v=g,j=e=>(0,a.jsx)(l.qh,{path:"sign-up",children:(0,a.jsx)(i.gh.Provider,{value:{componentName:"SignUp",...e,routing:"virtual",mode:"modal"},children:(0,a.jsx)("div",{children:(0,a.jsx)(v,{...e,routing:"virtual"})})})})},7947:function(e,t,r){r.r(t),r.d(t,{UserButton:()=>l});var a=r(410),s=r(802),n=r(5977),i=r(8384);function l(){let e,t=(0,n.ZY)(),r=(0,s.qn)(),l="User Avatar";return t?(e=t.displayName?.charAt(0).toUpperCase()||"U",t.displayName&&(l=`${t.displayName}'s Avatar`)):(e="?",l="Guest Avatar"),(0,a.jsx)(a.Fragment,{children:t?(0,a.jsxs)(i.$n,{onClick:()=>{r.signOut()},variant:"outline",style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,a.jsxs)(i.eu,{children:[(0,a.jsx)(i.BK,{src:t?.photoURL||void 0,alt:l}),(0,a.jsx)(i.q5,{children:e})]}),"Sign Out"]}):(0,a.jsxs)(i.$n,{onClick:()=>{r.redirectToSignIn()},variant:"outline",style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,a.jsxs)(i.eu,{children:[(0,a.jsx)(i.BK,{src:void 0,alt:l}),(0,a.jsx)(i.q5,{children:e})]}),"Sign In"]})})}},4967:function(e,t,r){r.d(t,{At:()=>l,az:()=>i});var a=r(410),s=r(5058);let n=s.createContext({});function i({children:e,value:t}){return(0,a.jsx)(n.Provider,{value:t,children:e})}function l(){let e=s.useContext(n);if(void 0===e)throw Error("TernSecureAuthOptions context is not available. Ensure that the context is properly initialized.");return e}},6282:function(e,t,r){r.d(t,{Q:()=>u,r:()=>h});var a=r(802),s=r(8978),n=r(5058),i=r(5407),l=r(2117),o=r(384),c=r(4967),d=r(4904);let u=(0,n.createContext)(null),h=()=>{let e=(0,n.useContext)(u),{navigate:t}=(0,o.rd)(),{queryParams:r,queryString:h}=(0,o.rd)(),m=(0,c.At)(),f=(0,a.qn)();if(null===e||"SignIn"!==e.componentName)throw Error("useSignInContext called outside of the mounted SignIn component.");let p="restricted"!==m.signUpMode&&!!(!m.signUpUrl&&m.signInUrl&&!(0,s.v)(m.signInUrl)),x=e.showCombinedForm??!0,{componentName:g,mode:v,...j}=e,b=(0,n.useMemo)(()=>(0,d.t)(h,i.e8),[]),w=(0,n.useCallback)((e,t,r="AuthError",a)=>{let s=Error(e);return s.name=r,s.code=t,s.response=a,s},[]),y=(0,n.useCallback)(e=>{console.error(e)},[]),N=new l.nQ(m,{...j,signInFallbackRedirectUrl:j.signInFallbackRedirectUrl||j.fallbackRedirectUrl,signInForceRedirectUrl:j.signInForceRedirectUrl||j.forceRedirectUrl},r,v);delete j.fallbackRedirectUrl,delete j.forceRedirectUrl;let S=f.constructUrlWithAuthRedirect(N.getAfterSignInUrl()),E=f.constructUrlWithAuthRedirect(N.getAfterSignUpUrl()),P=()=>t(S),C="path"===j.routing&&j.path||m.signInUrl,k=p?"path"===j.routing&&j.path||m.signUpUrl:j.signUpUrl||m.signUpUrl,R=N.getPreservedSearchParams();C=(0,l.kZ)({base:C,hashSearchParams:[r,R]},{stringify:!0}),k=(0,l.kZ)({base:k,hashSearchParams:[r,R]},{stringify:!0});let U=N.toSearchParams().toString(),A=(0,n.useCallback)(async(e,t)=>{try{if(await f.createActiveSession({session:e}),t?.onPreRedirect)try{await t.onPreRedirect()&&P()}catch(t){let e=w("Pre-redirect validation failed","PRE_REDIRECT_FAILED","PreRedirectError",t);y(e)}else P()}catch(e){y(w(e instanceof Error?e.message:"Failed to create session","SESSION_CREATION_FAILED","SessionError",e))}},[f,w,y,P]),F=(0,n.useCallback)(async()=>{try{let e=await f.getRedirectResult();if(e&&e.success)await A(e.user);else if(e&&!e.success){let t=w(e.message||"Redirect sign-in failed",e.error||"REDIRECT_FAILED","RedirectError",e);y(t)}}catch(e){y(w(e instanceof Error?e.message:"Failed to check redirect result","REDIRECT_CHECK_FAILED","RedirectError",e))}},[f,A,y,w]);return p&&(k=(0,l.kZ)({base:C,hashPath:"/challenge",hashSearchParams:[r,R]},{stringify:!0})),{...j,componentName:g,afterSignInUrl:S,afterSignUpUrl:E,signInUrl:C,signUpUrl:k,queryParams:r,initialValues:{...j.initialValues,...b},authQueryString:U,checkRedirectResult:F,onSignInSuccess:A,handleSignInError:y,redirectAfterSignIn:P,isCombinedFlow:p,showCombinedForm:x}}},5977:function(e,t,r){r.d(t,{g7:()=>b,gh:()=>g,ZY:()=>c,TernSecureContextWrapper:()=>i,r3:()=>u.r,At:()=>d.At,Kp:()=>o,QI:()=>u.Q,TernSecureOptionsProvider:()=>d.az,o1:()=>l,Xu:()=>v});var a=r(410),s=r(802),n=r(5058);function i(e){let t=e.ternsecure,[r,i]=n.useState({user:t.user,session:t.currentSession});n.useEffect(()=>t.addListener(e=>i({...e})),[]);let l=n.useMemo(()=>({value:t}),[]);return(0,a.jsx)(s.sQ.Provider,{value:l,children:e.children})}function l(){let e=(0,s.xq)();return(0,s._x)(e,s.sQ),e.signIn}function o(){let e=(0,s.xq)();return(0,s._x)(e,s.sQ),e.signUp}function c(){let e=(0,s.xq)();return(0,s._x)(e,s.sQ),e.user||null}var d=r(4967),u=r(6282),h=r(5407),m=r(2117),f=r(8177),p=r(384),x=r(4904);let g=(0,n.createContext)(null),v=()=>{let e=(0,n.useContext)(g),{navigate:t}=(0,p.rd)(),{queryParams:r,queryString:a}=(0,p.rd)(),i=(0,d.At)(),l=(0,s.qn)(),o=(0,n.useMemo)(()=>(0,x.t)(a,h.UU),[]);if(!e||"SignUp"!==e.componentName)throw Error("useSignUpContext called outside of the mounted SignUp component.");let{componentName:c,mode:u,...v}=e,j=new f.n(i,{...v,signUpFallbackRedirectUrl:v.signUpFallbackRedirectUrl||v.fallbackRedirectUrl,signUpForceRedirectUrl:v.signUpForceRedirectUrl||v.forceRedirectUrl},r,u);delete v.fallbackRedirectUrl,delete v.forceRedirectUrl;let b=l.constructUrlWithAuthRedirect(j.getAfterSignInUrl()),w=l.constructUrlWithAuthRedirect(j.getAfterSignInUrl()),y="path"===v.routing&&v.path||i.signUpUrl,N=v.signInUrl||i.signInUrl,S=j.getPreservedSearchParams();N=(0,m.kZ)({base:N,hashSearchParams:[r,S]},{stringify:!0}),y=(0,m.kZ)({base:y,hashSearchParams:[r,S]},{stringify:!0});let E=j.toSearchParams().toString();return{...v,componentName:c,signInUrl:N,signUpUrl:y,afterSignUpUrl:b,afterSignInUrl:w,navigateAfterSignUp:()=>t(b),queryParams:r,initialValues:{...v.initialValues,...o},authQueryString:E}},j=(0,n.createContext)(null);function b({componentName:e,props:t,children:r}){switch(e){case"SignIn":return(0,a.jsx)(u.Q.Provider,{value:{componentName:e,...t},children:r});case"SignUp":return(0,a.jsx)(g.Provider,{value:{componentName:e,...t},children:r});case"UserButton":return(0,a.jsx)(j.Provider,{value:{componentName:e,...t},children:r});default:throw Error(`unknown component context: ${e}`)}}},4904:function(e,t,r){r.d(t,{t:()=>s,u:()=>n});var a=r(2782);function s(e,t){let r={};return new URLSearchParams(e).forEach((e,s)=>{t.includes(s)&&"string"==typeof e&&(r[(0,a.sF)(s)]=e)}),r}function n(e,t){return e||t?.[0]||null}},8384:function(e,t,r){r.d(t,{aR:()=>w,JU:()=>T,BT:()=>N,Fc:()=>K,TN:()=>X,q5:()=>H,Wu:()=>S,ZB:()=>y,Jr:()=>ee,iG:()=>eh,MS:()=>ea,xM:()=>ei,dm:()=>A,$n:()=>u,bg:()=>O,Ro:()=>eu,Zp:()=>b,KB:()=>D,pe:()=>U,oA:()=>ed,f0:()=>k,dh:()=>B,B0:()=>Y,pd:()=>G,T3:()=>g,ry:()=>$,M_:()=>L,D0:()=>q,VR:()=>er,eu:()=>z,BK:()=>W});var a=r(410),s=r(5058),n=r(3272),i=r(5999),l=r(9195),o=r(4478),c=r(4853);let d=(0,o.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function u({className:e,variant:t,size:r,asChild:s=!1,...n}){let i=s?l.DX:"button";return(0,a.jsx)(i,{"data-slot":"button",className:(0,c.cn)(d({variant:t,size:r,className:e})),...n})}let h=()=>{let e=f().state.meta.errors;if(!e||0===e.length)return null;let t=e.map(e=>({message:e}));return(0,a.jsx)(O,{errors:t})},{fieldContext:m,useFieldContext:f,formContext:p,useFormContext:x}=(0,i.s)(),{useAppForm:g,withForm:v}=(0,i.K)({fieldContext:m,formContext:p,fieldComponents:{EmailField:function({label:e,placeholder:t,disabled:r,required:s}){let n=f();return(0,a.jsxs)("div",{className:"space-y-2",children:[e&&(0,a.jsx)(T,{htmlFor:n.name,children:e}),(0,a.jsx)(G,{id:n.name,name:n.name,type:"email",value:n.state.value,onBlur:n.handleBlur,onChange:e=>n.handleChange(e.target.value),placeholder:t,disabled:r,required:!0}),(0,a.jsx)(j,{})]})},PasswordField:function({label:e,placeholder:t,disabled:r,required:i}){let l=f(),[o,c]=(0,s.useState)(!1);return(0,a.jsxs)("div",{className:"space-y-2",children:[e&&(0,a.jsx)(T,{htmlFor:l.name,children:e}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(G,{id:l.name,name:l.name,type:o?"text":"password",value:l.state.value,onBlur:l.handleBlur,onChange:e=>l.handleChange(e.target.value),placeholder:t,disabled:r,required:!0,className:"pr-10"}),(0,a.jsxs)("button",{type:"button",className:"absolute right-2 top-1/2 h-8 w-8 -translate-y-1/2 hover:bg-transparent",onClick:()=>c(!o),disabled:r,children:[o?(0,a.jsx)(n.X_,{className:"text-muted-foreground hover:text-foreground h-4 w-4"}):(0,a.jsx)(n.kU,{className:"text-muted-foreground hover:text-foreground h-4 w-4"}),(0,a.jsx)("span",{className:"sr-only",children:o?"Hide password":"Show password"})]})]}),(0,a.jsx)(j,{})]})},TernEmailField:({label:e,placeholder:t,disabled:r,required:s})=>{let n=f();return(0,a.jsxs)(q,{children:[e&&(0,a.jsx)(B,{htmlFor:n.name,children:e}),(0,a.jsx)(G,{id:n.name,name:n.name,type:"email",value:n.state.value,onBlur:n.handleBlur,onChange:e=>n.handleChange(e.target.value),placeholder:t,disabled:r,required:s}),(0,a.jsx)(h,{})]})},TernPasswordField:({label:e,placeholder:t,disabled:r,required:i,onForgotPassword:l})=>{let o=f(),[c,d]=(0,s.useState)(!1);return(0,a.jsxs)(q,{children:[e&&(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)(B,{htmlFor:o.name,children:e}),l&&(0,a.jsx)("button",{type:"button",onClick:l,disabled:r,className:"ml-auto inline-block text-sm underline-offset-4 hover:underline",children:"Forgot your password?"})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(G,{id:o.name,name:o.name,type:c?"text":"password",value:o.state.value,onBlur:o.handleBlur,onChange:e=>o.handleChange(e.target.value),placeholder:t,disabled:r,required:i,className:"pr-10"}),(0,a.jsxs)("button",{type:"button",className:"absolute right-2 top-1/2 h-8 w-8 -translate-y-1/2 hover:bg-transparent",onClick:()=>d(!c),disabled:r,children:[c?(0,a.jsx)(n.X_,{className:"text-muted-foreground hover:text-foreground h-4 w-4"}):(0,a.jsx)(n.kU,{className:"text-muted-foreground hover:text-foreground h-4 w-4"}),(0,a.jsx)("span",{className:"sr-only",children:c?"Hide password":"Show password"})]})]}),(0,a.jsx)(h,{})]})},TernTextField:({label:e,placeholder:t,disabled:r,required:s})=>{let n=f();return(0,a.jsxs)(q,{children:[e&&(0,a.jsx)(B,{htmlFor:n.name,children:e}),(0,a.jsx)(G,{id:n.name,name:n.name,value:n.state.value,onBlur:n.handleBlur,onChange:e=>n.handleChange(e.target.value),placeholder:t,disabled:r,required:s}),(0,a.jsx)(h,{})]})}},formComponents:{SubscribeButton:({label:e})=>{let t=x();return(0,a.jsx)(t.Subscribe,{selector:e=>e.isSubmitting,children:t=>(0,a.jsx)(u,{disabled:t,children:e})})}}});function j(){let e=f().state.meta.errors;return e&&0!==e.length?(0,a.jsx)("div",{className:"mt-1 text-sm text-red-500",children:e.map((e,t)=>(0,a.jsx)("div",{children:e},t))}):null}function b({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"card",className:(0,c.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})}function w({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})}function y({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("leading-none font-semibold",e),...t})}function N({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-muted-foreground text-sm",e),...t})}function S({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-6",e),...t})}function E({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"card-footer",className:(0,c.cn)("flex items-center px-6 [.border-t]:pt-6",e),...t})}var P=r(802);let[C,k]=(0,P.e3)("CardState"),R={status:"idle",error:null};function U({children:e}){let[t,r]=s.useState(R),n=(0,s.useCallback)(e=>{r(t=>({...t,...e}))},[]),i=(0,s.useCallback)(e=>{r(t=>({...t,status:e,error:"error"===e?t.error:null}))},[]),l=(0,s.useCallback)(()=>{r(e=>({...e,status:"loading",error:null}))},[]),o=(0,s.useCallback)(e=>{r(t=>({...t,status:"error",error:{success:!1,message:e.message,error:"code"in e?e.code:void 0,...e}}))},[]),c=(0,s.useCallback)(()=>{r(e=>({...e,status:"idle",error:null}))},[]),d=(0,s.useCallback)(()=>{r(e=>({...e,error:null,status:"idle"}))},[]),u=s.useMemo(()=>({value:{...t,setCardState:n,setStatus:i,setLoading:l,setError:o,setIdle:c,clearError:d,isLoading:"loading"===t.status,isError:"error"===t.status,isSuccess:"success"===t.status,isIdle:"idle"===t.status}}),[t,n,i,l,o,c,d]);return(0,a.jsx)(C.Provider,{value:u,children:e})}let A=e=>t=>(0,a.jsx)(U,{children:(0,a.jsx)(e,{...t})});var F=r(2488);function T({className:e,...t}){return(0,a.jsx)(F.b,{"data-slot":"label",className:(0,c.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}var I=r(9593);function _({className:e,orientation:t="horizontal",decorative:r=!0,...s}){return(0,a.jsx)(I.b,{"data-slot":"separator",decorative:r,orientation:t,className:(0,c.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...s})}function L({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"field-group",className:(0,c.cn)("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",e),...t})}let M=(0,o.F)("group/field flex w-full gap-3 data-[invalid=true]:text-destructive",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"],responsive:["flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function q({className:e,orientation:t="vertical",...r}){return(0,a.jsx)("div",{role:"group","data-slot":"field","data-orientation":t,className:(0,c.cn)(M({orientation:t}),e),...r})}function B({className:e,...t}){return(0,a.jsx)(T,{"data-slot":"field-label",className:(0,c.cn)("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4","has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",e),...t})}function $({className:e,...t}){return(0,a.jsx)("p",{"data-slot":"field-description",className:(0,c.cn)("text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance","last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5","[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",e),...t})}function D({children:e,className:t,...r}){return(0,a.jsxs)("div",{"data-slot":"field-separator","data-content":!!e,className:(0,c.cn)("relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",t),...r,children:[(0,a.jsx)(_,{className:"absolute inset-0 top-1/2"}),e&&(0,a.jsx)("span",{className:"bg-background text-muted-foreground relative mx-auto block w-fit px-2","data-slot":"field-separator-content",children:e})]})}function O({className:e,children:t,errors:r,...n}){let i=(0,s.useMemo)(()=>{if(t)return t;if(!r?.length)return null;let e=[...new Map(r.map(e=>[e?.message,e])).values()];return e?.length==1?e[0]?.message:(0,a.jsx)("ul",{className:"ml-4 flex list-disc flex-col gap-1",children:e.map((e,t)=>e?.message&&(0,a.jsx)("li",{children:e.message},t))})},[t,r]);return i?(0,a.jsx)("div",{role:"alert","data-slot":"field-error",className:(0,c.cn)("text-destructive text-sm font-normal",e),...n,children:i}):null}var V=r(8588);function z({className:e,...t}){return(0,a.jsx)(V.bL,{"data-slot":"avatar",className:(0,c.cn)("relative flex size-8 shrink-0 overflow-hidden rounded-full",e),...t})}function W({className:e,...t}){return(0,a.jsx)(V._V,{"data-slot":"avatar-image",className:(0,c.cn)("aspect-square size-full",e),...t})}function H({className:e,...t}){return(0,a.jsx)(V.H4,{"data-slot":"avatar-fallback",className:(0,c.cn)("bg-muted flex size-full items-center justify-center rounded-full",e),...t})}let Z=(0,o.F)("relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),K=s.forwardRef(({className:e,variant:t,...r},s)=>(0,a.jsx)("div",{ref:s,role:"alert",className:(0,c.cn)(Z({variant:t}),e),...r}));K.displayName="Alert";let Q=s.forwardRef(({className:e,...t},r)=>(0,a.jsx)("h5",{ref:r,className:(0,c.cn)("mb-1 font-medium leading-none tracking-tight",e),...t}));Q.displayName="AlertTitle";let X=s.forwardRef(({className:e,...t},r)=>(0,a.jsx)("div",{ref:r,className:(0,c.cn)("text-sm [&_p]:leading-relaxed",e),...t}));X.displayName="AlertDescription";let G=s.forwardRef(({className:e,type:t,...r},s)=>(0,a.jsx)("input",{type:t,className:(0,c.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:s,...r}));G.displayName="Input";let J=({children:e})=>(0,a.jsx)("div",{className:"flex flex-col items-center justify-center py-8",children:e}),Y=A(()=>(0,a.jsx)("div",{className:"relative flex justify-center p-6 md:p-10",children:(0,a.jsx)("div",{className:"w-full max-w-sm",children:(0,a.jsxs)(b,{className:"w-full max-w-md",children:[(0,a.jsx)(w,{className:"space-y-1 text-center",children:(0,a.jsx)(y,{children:"Loading"})}),(0,a.jsx)(S,{children:(0,a.jsx)(J,{children:(0,a.jsx)(n.wm,{className:"text-muted-foreground h-8 w-8 animate-spin"})})})]})})})),ee=A(({cardTitle:e="Unable to sign in",cardSubtitle:t="An error occurred during the sign in process",message:r,onBackLinkClick:s})=>{let i=k(),l=r||i.error?.message||"An unexpected error occurred";return(0,a.jsx)("div",{className:"relative flex justify-center p-6 md:p-10",children:(0,a.jsx)("div",{className:"w-full max-w-sm",children:(0,a.jsxs)(b,{className:"w-full max-w-md",children:[(0,a.jsxs)(w,{className:"space-y-1 text-center",children:[(0,a.jsx)(y,{className:"font-bold text-destructive",children:e}),(0,a.jsx)(N,{children:t})]}),(0,a.jsx)(S,{className:"grid gap-4",children:(0,a.jsxs)(K,{variant:"destructive",children:[(0,a.jsx)(n.RI,{className:"h-4 w-4"}),(0,a.jsx)(Q,{children:"Error"}),(0,a.jsx)(X,{children:l})]})}),s&&(0,a.jsx)(E,{children:(0,a.jsx)(u,{variant:"outline",className:"w-full",onClick:s,children:"Go back"})})]})})})});var et=r(9953);let er=({onProviderClick:e,disabled:t})=>{let r=["google","github","facebook","microsoft","twitter"];return(0,a.jsx)("div",{className:"grid gap-4 sm:grid-cols-2",children:r.map((s,n)=>(0,a.jsxs)(u,{variant:"outline",className:(0,c.cn)("w-full gap-2",r.length%2!=0&&n===r.length-1&&"sm:col-span-2"),onClick:()=>e(s),disabled:t,children:[(0,a.jsx)(et.T,{id:s,className:"h-4 w-4"}),s.charAt(0).toUpperCase()+s.slice(1)]},s))})},ea=({onClick:e,children:t,startDisabled:r,throttleTimeInSec:n=30,showCounter:i=!0,...l})=>{let[o,c]=s.useState(0),d=s.useRef(void 0);(0,P.UQ)(()=>{r&&h()},[]),(0,s.useEffect)(()=>()=>clearInterval(d.current),[]);let h=()=>{c(n),d.current=window.setInterval(()=>{c(e=>(1===e&&clearInterval(d.current),e-1))},1e3)};return(0,a.jsxs)(u,{...l,variant:l.variant||"link",disabled:o>0||l.disabled,onClick:t=>{o||(e?.(t),h())},children:[t,o>0&&i?` (${o})`:""]})};var es=r(1643);let en=e=>new Promise(t=>setTimeout(t,e)),ei=e=>{let t=k(),{id:r="code",onCodeEntryFinished:a,onResendCodeClicked:n,onResolve:i}=e,l=el({length:6}),o=(0,es.mN)(),c=async e=>{await en(750),await i?.(e)},d=async e=>{let r=e?.message||(e instanceof Error?e.message:"Invalid code");t.setError({status:"error",message:r,error:e}),l.setError(r),o.setIdle(),await en(750),l.reset()};l.onCodeEntryFinished(e=>{o.setLoading(),l.otpInputProps.clearFeedback(),a(e,c,d)});let u=(0,s.useCallback)(e=>{l.reset(),n?.(e)},[l,n]);return{isLoading:o.isLoading,otpControl:l,onResendCode:n?u:void 0,onFakeContinue:()=>{l.otpInputProps.clearFeedback(),a("",c,d)}}},el=e=>{let t=s.useRef(null),r=s.useRef(void 0),{length:a=6}=e||{},[n,i]=s.useState(Array(a).fill("")),[l,o]=s.useState(null),[c,d]=s.useState(null);return s.useEffect(()=>{if(n.filter(e=>e).length===a){let e=n.map(e=>e||" ").join("");r.current?.(e)}},[n,a]),{otpInputProps:{length:a,values:n,setValues:i,feedback:l,feedbackType:c,clearFeedback:()=>{o(null),d(null)},ref:t},onCodeEntryFinished:e=>{r.current=e},reset:()=>t.current?.reset(),setError:e=>{o(e),d("error")}}},[eo,ec]=(0,P.e3)("OTPInputContext"),ed=({children:e,...t})=>(0,a.jsx)(eo.Provider,{value:{value:t},children:e}),eu=()=>{let{resendButton:e,onResendCode:t,isLoading:r,otpControl:s}=ec();return t?(0,a.jsx)(ea,{onClick:t,startDisabled:!0,disabled:"success"===s.otpInputProps.feedbackType||r,showCounter:"success"!==s.otpInputProps.feedbackType}):null},eh=s.forwardRef((e,t)=>{let[r,n]=s.useState(!1),i=s.useRef([]),l=s.useRef(!1),{otpControl:o,isLoading:d,isDisabled:u,centerAlign:h=!0}=ec(),{feedback:m,values:f,setValues:p,feedbackType:x,length:g}=o.otpInputProps;s.useImperativeHandle(t,()=>({reset:()=>{p(f.map(()=>"")),n(!1),setTimeout(()=>j(0),0)}})),s.useLayoutEffect(()=>{setTimeout(()=>j(0),0)},[]),s.useEffect(()=>{m&&n(!0)},[m]);let v=({eventValue:e,inputPosition:t})=>{let r=(e||"").split("");if(0!==r.length&&r.every(e=>ef(e))){if(r.length===g){p([...r]),j(g-1);return}p(f.map((e,a)=>a<t?e:r[a-t]||e)),j(t+r.length)}},j=e=>{let t=Math.min(Math.max(0,e),i.current.length-1),r=i.current[t];r&&(r.focus(),f[t]&&r.select())};return(0,a.jsx)("div",{className:(0,c.cn)("flex gap-2 direction-ltr p-1 -ml-1",h?"justify-center items-center":"",d&&"opacity-50 pointer-events-none","error"===x&&"text-red-500"),children:f.map((e,t)=>(0,a.jsx)(em,{value:e,onClick:e=>{if(e.preventDefault(),!l.current){j(0),l.current=!0;return}j(t)},onChange:e=>{e.preventDefault(),v({eventValue:e.target.value||"",inputPosition:t})},onKeyDown:e=>{switch(e.key){case"Backspace":let r;e.preventDefault(),(r=[...f])[t]="",p(r),j(t-1);return;case"ArrowLeft":e.preventDefault(),j(t-1);return;case"ArrowRight":e.preventDefault(),j(t+1);return;case" ":e.preventDefault();return}},onInput:e=>{e.preventDefault(),ef(e.target.value)&&j(t+1)},onPaste:e=>{e.preventDefault(),v({eventValue:e.clipboardData.getData("text/plain")||"",inputPosition:t})},id:`digit-${t}-field`,ref:e=>{i.current[t]=e},autoFocus:0===t||void 0,autoComplete:"one-time-code","aria-label":`${0===t?"Enter verification code. ":""}Digit ${t+1}`,disabled:u||d||r||"success"===x,hasError:"error"===x,isSuccessfullyFilled:"success"===x,type:"text",inputMode:"numeric",name:`codeInput-${t}`},t))})}),em=s.forwardRef((e,t)=>{let{isSuccessfullyFilled:r,hasError:s,className:n,...i}=e;return(0,a.jsx)(G,{ref:t,type:"text",className:(0,c.cn)("text-center p-0.5 h-10 w-10 rounded-md bg-transparent sm:h-8 sm:w-8",r?"border-green-500":"",s?"border-red-500":"",n),...i})}),ef=e=>void 0!=e&&Number.isInteger(+e)},1643:function(e,t,r){r.d(t,{Cb:()=>i,U3:()=>s,mN:()=>l});var a=r(5058);let s=(e,t)=>{a.useEffect(()=>{let r=[e].flat().filter(e=>!!e);if(r.length)return r.forEach(e=>window.addEventListener(e,t)),()=>{r.forEach(e=>window.removeEventListener(e,t))}},[e,t])};var n=r(384);let i=()=>{let e=(0,n.rd)();return{navigateToFlowStart:async()=>{let t=e.indexPath;return t!==e.currentPath?e.navigate(t):e.urlStateParam?.path?e.navigate("/"+e.basePath+e.urlStateParam?.startPath):void 0}}},l=e=>{let[t,r]=function(e){let[t,r]=a.useState(e),s=a.useRef(!0);return a.useEffect(()=>()=>{s.current=!1},[]),[t,a.useCallback(e=>{s.current&&r(e)},[])]}({status:"idle",metadata:void 0,...e});return{status:t.status,setIdle:e=>r({status:"idle",metadata:e}),setError:e=>r({status:"error",metadata:e}),setLoading:e=>r({status:"loading",metadata:e}),loadingMetadata:"loading"===t.status?t.metadata:void 0,isLoading:"loading"===t.status,isIdle:"idle"===t.status}}},3272:function(e,t,r){r.d(t,{kU:()=>x,X_:()=>v,RI:()=>f,wm:()=>h});var a,s,n,i,l,o,c,d=r(5058);function u(){return(u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e}).apply(null,arguments)}let h=e=>d.createElement("svg",u({xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,className:"lucide lucide-loader-circle-icon lucide-loader-circle",viewBox:"0 0 24 24"},e),a||(a=d.createElement("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})));function m(){return(m=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e}).apply(null,arguments)}let f=e=>d.createElement("svg",m({xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,className:"lucide lucide-alert-circle",viewBox:"0 0 24 24"},e),s||(s=d.createElement("circle",{cx:12,cy:12,r:10})),n||(n=d.createElement("path",{d:"M12 8v4M12 16h.01"})));function p(){return(p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e}).apply(null,arguments)}let x=e=>d.createElement("svg",p({xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,className:"lucide lucide-eye",viewBox:"0 0 24 24"},e),i||(i=d.createElement("path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7"})),l||(l=d.createElement("circle",{cx:12,cy:12,r:3})));function g(){return(g=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e}).apply(null,arguments)}let v=e=>d.createElement("svg",g({xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,className:"lucide lucide-eye-off",viewBox:"0 0 24 24"},e),o||(o=d.createElement("path",{d:"M9.88 9.88a3 3 0 1 0 4.24 4.24M10.73 5.08A10 10 0 0 1 12 5c7 0 10 7 10 7a13.2 13.2 0 0 1-1.67 2.68"})),c||(c=d.createElement("path",{d:"M6.61 6.61A13.5 13.5 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61M2 2l20 20"})))},8869:function(e,t,r){r.d(t,{createRoot:()=>a.createRoot}),r(5977);var a=r(566)},5530:function(e,t,r){r.d(t,{Portal:()=>d});var a=r(410),s=r(5058),n=r(3309),i=r(5407),l=r(5197),o=r(5977),c=r(384);function d({props:e,component:t,componentName:r,node:d}){let u={...e,...(0,l.C)({routing:e?.routing,path:e?.path})},h=(0,a.jsx)(o.g7,{componentName:r,props:u,children:(0,a.jsx)(s.Suspense,{fallback:"",children:s.createElement(t,u)})});if(u?.routing==="path"){if(!u?.path)throw Error("PathRouter requires a path to be specified in routing options.");return n.createPortal((0,a.jsx)(c.$,{preservedParams:i.Ej,basePath:u.path,children:h}),d)}return n.createPortal((0,a.jsx)(c.I9,{preservedParams:i.Ej,children:h}),d)}},384:function(e,t,r){r.d(t,{$:()=>j,qh:()=>p,dO:()=>b,I9:()=>v,rd:()=>n});var a=r(5058);let s=a.createContext(null);s.displayName="RouteContext";let n=()=>{let e=a.useContext(s);if(!e)throw Error("useRouter called while Router is null");return e};var i=r(410),l=r(802),o=r(2117),c=r(1643);let d=(e,t,r,a)=>{let s=e;r&&(s=t,a||(s+="/"+r)),s.startsWith("//")&&(s=s.substr(1));let n=t+(r?"/"+r:"");return n.startsWith("//")&&(n=n.substr(1)),[s,n]};function u(e,t){let r=[];return function(e,t,r={}){let{decode:a=e=>e}=r;return function(r){let s=e.exec(r);if(!s)return!1;let{0:n,index:i}=s,l=Object.create(null);for(let e=1;e<s.length;e++){if(void 0===s[e])continue;let r=t[e-1];"*"===r.modifier||"+"===r.modifier?l[r.name]=s[e].split(r.prefix+r.suffix).map(e=>a(e,r)):l[r.name]=a(s[e],r)}return{path:n,index:i,params:l}}}(function e(t,r,a){if(t instanceof RegExp){if(!r)return t;let e=t.source.match(/\((?!\?)/g);if(e)for(let t=0;t<e.length;t++)r.push({name:t,prefix:"",suffix:"",modifier:"",pattern:""});return t}if(Array.isArray(t)){let s;return s=t.map(t=>e(t,r,a).source),RegExp(`(?:${s.join("|")})`,m(a))}return function(e,t,r={}){let{strict:a=!1,start:s=!0,end:n=!0,encode:i=e=>e}=r,l=`[${h(r.endsWith||"")}]|$`,o=`[${h(r.delimiter||"/#?")}]`,c=s?"^":"";for(let r of e)if("string"==typeof r)c+=h(i(r));else{let e=h(i(r.prefix)),a=h(i(r.suffix));if(r.pattern)if(t&&t.push(r),e||a)if("+"===r.modifier||"*"===r.modifier){let t="*"===r.modifier?"?":"";c+=`(?:${e}((?:${r.pattern})(?:${a}${e}(?:${r.pattern}))*)${a})${t}`}else c+=`(?:${e}(${r.pattern})${a})${r.modifier}`;else c+=`(${r.pattern})${r.modifier}`;else c+=`(?:${e}${a})${r.modifier}`}if(n)a||(c+=`${o}?`),c+=r.endsWith?`(?=${l})`:"$";else{let t=e[e.length-1],r="string"==typeof t?o.indexOf(t[t.length-1])>-1:void 0===t;a||(c+=`(?:${o}(?=${l}))?`),r||(c+=`(?=${o}|${l})`)}return new RegExp(c,m(r))}(function(e,t={}){let r=function(e){let t=[],r=0;for(;r<e.length;){let a=e[r];if("*"===a||"+"===a||"?"===a){t.push({type:"MODIFIER",index:r,value:e[r++]});continue}if("\\"===a){t.push({type:"ESCAPED_CHAR",index:r++,value:e[r++]});continue}if("{"===a){t.push({type:"OPEN",index:r,value:e[r++]});continue}if("}"===a){t.push({type:"CLOSE",index:r,value:e[r++]});continue}if(":"===a){let a="",s=r+1;for(;s<e.length;){let t=e.charCodeAt(s);if(t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||95===t){a+=e[s++];continue}break}if(!a)throw TypeError(`Missing parameter name at ${r}`);t.push({type:"NAME",index:r,value:a}),r=s;continue}if("("===a){let a=1,s="",n=r+1;if("?"===e[n])throw TypeError(`Pattern cannot start with "?" at ${n}`);for(;n<e.length;){if("\\"===e[n]){s+=e[n++]+e[n++];continue}if(")"===e[n]){if(0==--a){n++;break}}else if("("===e[n]&&(a++,"?"!==e[n+1]))throw TypeError(`Capturing groups are not allowed at ${n}`);s+=e[n++]}if(a)throw TypeError(`Unbalanced pattern at ${r}`);if(!s)throw TypeError(`Missing pattern at ${r}`);t.push({type:"PATTERN",index:r,value:s}),r=n;continue}t.push({type:"CHAR",index:r,value:e[r++]})}return t.push({type:"END",index:r,value:""}),t}(e),{prefixes:a="./"}=t,s=`[^${h(t.delimiter||"/#?")}]+?`,n=[],i=0,l=0,o="",c=e=>{if(l<r.length&&r[l].type===e)return r[l++].value},d=e=>{let t=c(e);if(void 0!==t)return t;let{type:a,index:s}=r[l];throw TypeError(`Unexpected ${a} at ${s}, expected ${e}`)},u=()=>{let e,t="";for(;e=c("CHAR")||c("ESCAPED_CHAR");)t+=e;return t};for(;l<r.length;){let e=c("CHAR"),t=c("NAME"),r=c("PATTERN");if(t||r){let l=e||"";-1===a.indexOf(l)&&(o+=l,l=""),o&&(n.push(o),o=""),n.push({name:t||i++,prefix:l,suffix:"",pattern:r||s,modifier:c("MODIFIER")||""});continue}let l=e||c("ESCAPED_CHAR");if(l){o+=l;continue}if(o&&(n.push(o),o=""),c("OPEN")){let e=u(),t=c("NAME")||"",r=c("PATTERN")||"",a=u();d("CLOSE"),n.push({name:t||(r?i++:""),pattern:t&&!r?s:r,prefix:e,suffix:a,modifier:c("MODIFIER")||""});continue}d("END")}return n}(t,a),r,a)}(e,r,t),r,t)}function h(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function m(e){return e&&e.sensitive?"":"i"}let f=({canActivate:e,children:t})=>{let{navigateToFlowStart:r}=(0,c.Cb)(),s=(0,l.qn)();return(a.useEffect(()=>{e(s)||r()}),e(s))?(0,i.jsx)(i.Fragment,{children:t}):null};function p(e){let t=n();if(!e.children)return null;if(!e.index&&!e.path)return(0,i.jsx)(i.Fragment,{children:e.children});if(!t.matches(e.path,e.index))return null;let[r,a]=d(t.indexPath,t.fullPath,e.path,e.index),l=(e,{searchParams:t}={})=>{let r=new URL(e,window.location.origin+a+"/");return t&&(r.search=t.toString()),r.pathname=(0,o.Kj)(r.pathname),r},c=(e,s)=>{let[n,i]=d(r,a,e,s),l=(0,o.Kj)(t.currentPath),c=e&&u(i+"/:foo*")(l)||s&&u(n)(l)||s&&u(i)(l)||!1;return!1!==c&&c.params},h=t.getMatchData(e.path,e.index)||{},m={};for(let[e,t]of Object.entries(h))m[e]=t;let p=(e.flowStart?(0,o.yY)(t.fullPath).replace("/"+t.basePath,""):t.flowStartPath)||t.startPath;return(0,i.jsx)(s.Provider,{value:{basePath:t.basePath,startPath:t.startPath,flowStartPath:p,fullPath:a,indexPath:r,currentPath:t.currentPath,baseNavigate:t.baseNavigate,getMatchData:c,matches:(e,t)=>!!c(e,t),navigate:(e,{searchParams:r}={})=>{let a=l(e,{searchParams:r});return t.baseNavigate(a)},resolve:l,refresh:t.refresh,params:m,queryString:t.queryString,queryParams:t.queryParams,urlStateParam:t.urlStateParam},children:e.canActivate?(0,i.jsx)(f,{canActivate:e.canActivate,children:e.children}):e.children})}let x=({basePath:e,startPath:t,getPath:r,getQueryString:n,internalNavigate:h,refreshEvents:m,preservedParams:f,urlStateParam:x,children:g})=>{let{navigate:v}=(0,l.qn)(),[j,b]=a.useState({path:r(),queryString:n()}),w=j.path,y=j.queryString,N=(0,o.vA)(j.queryString),S=(e,t)=>{let[r,a]=d("","",e,t),s=(0,o.Kj)(w),n=e&&u(a+"/:foo*")(s)||t&&u(r)(s)||t&&u(a)(s)||!1;return!1!==n&&n.params},E=a.useCallback(()=>{let e=r(),t=n();(e!==w||t!==y)&&b({path:e,queryString:t})},[w,y,r,n]);(0,c.U3)(m,E);let P=async t=>{if(!t)return;let r=t.origin!==window.location.origin;if(!t.pathname.startsWith("/"+e)||r){let e=await v(t.href);return E(),e}if(f){let e=(0,o.vA)(t.search);f.forEach(t=>{!e[t]&&N[t]&&(e[t]=N[t])}),t.search=(0,o.Ws)(e)}let a=await h(t,{metadata:{navigationType:"internal"}});return b({path:t.pathname,queryString:t.search}),a};return(0,i.jsx)(s.Provider,{value:{basePath:e,startPath:t,flowStartPath:t,fullPath:"",indexPath:"",currentPath:w,queryString:y,queryParams:N,getMatchData:S.bind(void 0),matches:((e,t)=>!!S(e,t)).bind(void 0),baseNavigate:P.bind(void 0),navigate:async()=>{},resolve:(e=>new URL(e,window.location.origin)).bind(void 0),refresh:E.bind(void 0),params:{},urlStateParam:x},children:(0,i.jsx)(p,{path:e,children:g})})},g="TERNSECURE-ROUTER/HASH",v=({preservedParams:e,children:t})=>{let r=async e=>{if(e)return window.location.hash=(0,o.FV)(e).substring(1+g.length),Promise.resolve()},a=()=>new URL((0,o.tL)(window.location.hash)?window.location.origin+window.location.hash.substring(1):window.location.origin);return(0,i.jsx)(x,{getPath:()=>"/"===a().pathname?"/"+g:"/"+g+a().pathname,basePath:g,startPath:"",getQueryString:()=>a().search,internalNavigate:r,refreshEvents:["popstate","hashchange"],preservedParams:e,children:t})},j=({basePath:e,preservedParams:t,children:r})=>{let{navigate:s}=(0,l.qn)(),[n,c]=a.useState(!1);if(!s)throw Error("Missing navigate option.");let d=(e,t)=>{if(e)return s((0,o.FV)(e),t)};return(a.useEffect(()=>{(async()=>{if((0,o.tL)(window.location.hash)){let e=(0,o.yR)(new URL(window.location.href));await d(e.href,{replace:!0}),c(!0)}})()},[c,s,window.location.hash]),(0,o.tL)(window.location.hash)&&!n)?null:(0,i.jsx)(x,{basePath:e.substring(1),startPath:"",getPath:()=>window.location.pathname,getQueryString:()=>window.location.search,internalNavigate:d,refreshEvents:["popstate"],preservedParams:t,children:r})};function b({children:e}){let t=n(),r=null;return a.Children.forEach(e,e=>{if(r||!(e&&a.isValidElement(e)&&"object"==typeof e&&e.type===p))return;let{index:s,path:n}=e.props;(!s&&!n||t.matches(n,s))&&(r=e)}),(0,i.jsx)(i.Fragment,{children:r})}},3777:function(e,t,r){r.d(t,{pr:()=>l});var a=r(410),s=r(4853),n=r(8384),i=r(3272);function l({canSubmit:e,isSubmitting:t,submitText:r,submittingText:l,className:o}){return(0,a.jsx)(n.$n,{type:"submit",disabled:!e||t,className:(0,s.cn)("backgroundColor: 'var(--tern-primary, #2563EB)' w-full",o),children:t?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.wm,{className:"mr-2 h-4 w-4 animate-spin"}),l]}):r})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(globalThis.webpackChunk_tern_secure_auth=globalThis.webpackChunk_tern_secure_auth||[]).push([["99"],{5407:function(e,r,_){_.d(r,{Ej:()=>n,UU:()=>i,e8:()=>u});let n=["redirect_url","after_sign_in_url","after_sign_up_url","sign_in_force_redirect_url","sign_in_fallback_redirect_url","sign_up_force_redirect_url","sign_up_fallback_redirect_url"],u=["email_address","phone_number","username"],i=["email_address","password"]},4853:function(e,r,_){_.d(r,{cn:()=>i});var n=_(9238),u=_(8383);function i(...e){return(0,u.QP)((0,n.$)(e))}}}]);