@insforge/react 1.0.5-dev.0 → 1.0.5-dev.2
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.
- package/dist/atoms.cjs +0 -1
- package/dist/atoms.cjs.map +1 -1
- package/dist/atoms.js +0 -1
- package/dist/atoms.js.map +1 -1
- package/dist/components.cjs +21 -28
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +21 -28
- package/dist/components.js.map +1 -1
- package/dist/forms.cjs +0 -1
- package/dist/forms.cjs.map +1 -1
- package/dist/forms.js +0 -1
- package/dist/forms.js.map +1 -1
- package/dist/hooks.cjs +0 -1
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.js +0 -1
- package/dist/hooks.js.map +1 -1
- package/dist/index.cjs +42 -68
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +42 -68
- package/dist/index.js.map +1 -1
- package/package.json +114 -114
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@babel/runtime/helpers/extends.js","../src/navigation/NavigationContext.tsx","../src/navigation/BrowserNavigationAdapter.tsx","../src/navigation/useSearchParams.ts","../src/core/InsforgeManager.ts","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/cache/dist/emotion-cache.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/utils/dist/emotion-utils.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.esm.js","../node_modules/@emotion/react/dist/emotion-element-d59e098f.esm.js","../node_modules/@emotion/react/dist/emotion-react.esm.js","../src/styles/StyleProvider.tsx","../src/provider/InsforgeProvider.tsx","../src/hooks/usePublicAuthConfig.ts","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.esm.js","../src/styles/theme.ts","../src/components/atoms/styled.ts","../src/components/atoms/AuthBranding.tsx","../src/components/atoms/AuthContainer.tsx","../src/components/atoms/AuthHeader.tsx","../src/components/atoms/AuthErrorBanner.tsx","../src/components/atoms/AuthFormField.tsx","../src/components/atoms/AuthPasswordStrengthIndicator.tsx","../src/lib/path-utils.ts","../src/components/atoms/AuthPasswordField.tsx","../src/components/atoms/AuthSubmitButton.tsx","../src/components/atoms/AuthLink.tsx","../src/components/atoms/AuthDivider.tsx","../src/config/oauth-providers.tsx","../src/components/atoms/AuthOAuthButton.tsx","../src/components/atoms/AuthOAuthProviders.tsx","../src/components/atoms/AuthVerificationCodeInput.tsx","../src/components/forms/styled.ts","../src/components/atoms/AuthEmailVerificationStep.tsx","../src/components/atoms/AuthResetPasswordVerificationStep.tsx","../src/components/forms/SignInForm.tsx","../src/components/SignIn.tsx","../src/components/forms/SignUpForm.tsx","../src/lib/validation.ts","../src/components/SignUp.tsx","../src/components/forms/ForgotPasswordForm.tsx","../src/components/forms/ResetPasswordForm.tsx","../src/components/ForgotPassword.tsx","../src/components/ResetPassword.tsx","../src/components/forms/VerifyEmailStatus.tsx","../src/components/VerifyEmail.tsx","../src/components/SignOutButton.tsx","../src/components/styled.ts","../src/components/UserProfileModal.tsx","../src/components/UserButton.tsx","../src/components/Protect.tsx","../src/components/SignedIn.tsx","../src/components/SignedOut.tsx","../src/components/SignInButton.tsx","../src/components/SignUpButton.tsx","../src/hooks/useAuth.ts","../src/hooks/useUser.ts"],"names":["exports","z","Fragment","_extends","createContext","useContext","jsx","useState","createClient","token","StyleSheet","length","character","characters","weakMemoize","identifierWithPointTracking","toRules","getRules","compat","removeLabel","prefixer","createCache","node","stylis","_stylis","_insert","isBrowser","registerStyles","insertStyles","isCustomProperty","isProcessableValue","processStyleValue","match","keyframes","next","syncFallback","useInsertionEffect","React","React2","withEmotionCache","forwardRef","createEmotionProps","Insertion","isDevelopment","React3","useMemo","useEffect","InsforgeContext","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","React4","createStyled","jsxs","AlertTriangle","Check","EyeOff","Eye","Loader2","CircleCheck","useRef","prev","useCallback","isValidElement","cloneElement","X","User","LogOut"],"mappings":"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","file":"index.cjs","sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { createContext, useContext, ReactNode } from 'react';\nimport type { NavigationAdapter } from './types';\n\nconst NavigationContext = createContext<NavigationAdapter | null>(null);\n\nexport interface NavigationProviderProps {\n adapter: NavigationAdapter;\n children: ReactNode;\n}\n\n/**\n * Navigation Provider\n * Injects navigation adapter into the component tree\n */\nexport function NavigationProvider({ adapter, children }: NavigationProviderProps) {\n return <NavigationContext.Provider value={adapter}>{children}</NavigationContext.Provider>;\n}\n\n/**\n * Hook to access navigation adapter\n * @throws Error if used outside NavigationProvider\n */\nexport function useNavigationAdapter(): NavigationAdapter {\n const adapter = useContext(NavigationContext);\n\n if (!adapter) {\n return {\n useSearchParams: () => new URLSearchParams(),\n Link: ({ href, children, className }) => (\n <a href={href} className={className}>\n {children}\n </a>\n ),\n };\n }\n\n return adapter;\n}\n","import { useState } from 'react';\nimport type { NavigationAdapter } from './types';\n\n/**\n * Browser native navigation adapter\n * Uses browser's native URLSearchParams and <a> tags\n * Suitable for vanilla React apps without a routing library\n */\nexport const BrowserNavigationAdapter: NavigationAdapter = {\n /**\n * Returns URLSearchParams from current window.location.search\n * Note: Not reactive - reads once on component mount\n * This is sufficient for auth flows where we read initial URL params\n */\n useSearchParams() {\n const [searchParams] = useState(() => {\n if (typeof window === 'undefined') {\n return new URLSearchParams();\n }\n return new URLSearchParams(window.location.search);\n });\n\n return searchParams;\n },\n\n /**\n * Native <a> tag for navigation\n * Uses full page reload\n */\n Link({ href, className, children }) {\n return (\n <a href={href} className={className}>\n {children}\n </a>\n );\n },\n};\n","import { useNavigationAdapter } from './NavigationContext';\n\n/**\n * Hook to get URL search parameters\n * Uses the navigation adapter injected by NavigationProvider\n *\n * @returns URLSearchParams object\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const searchParams = useSearchParams();\n * const redirectUrl = searchParams.get('redirect') || '/';\n * // ...\n * }\n * ```\n */\nexport function useSearchParams(): URLSearchParams {\n const adapter = useNavigationAdapter();\n return adapter.useSearchParams();\n}\n","'use client';\nimport { createClient } from '@insforge/sdk';\nimport type { InsforgeUser, OAuthProvider } from '../types';\nimport type {\n CreateSessionResponse,\n CreateUserResponse,\n GetPublicAuthConfigResponse,\n ResetPasswordResponse,\n VerifyEmailResponse,\n} from '@insforge/shared-schemas';\n\nexport interface InsforgeManagerState {\n user: InsforgeUser | null | undefined;\n userId: string | null | undefined;\n isLoaded: boolean;\n isSignedIn: boolean | undefined;\n}\n\nexport interface InsforgeManagerConfig {\n baseUrl: string;\n afterSignInUrl?: string;\n onAuthChange?: (user: InsforgeUser | null) => void;\n onSignIn?: (authToken: string) => Promise<void>;\n onSignOut?: () => Promise<void>;\n onRefresh?: (authToken: string) => Promise<void>;\n}\n\nexport class InsforgeManager {\n // Static private instance\n private static instance: InsforgeManager | null = null;\n\n // State storage\n private user: InsforgeUser | null | undefined = undefined;\n private isLoaded: boolean = false;\n private isInitializing: boolean = false;\n private sdk: ReturnType<typeof createClient>;\n private listeners: Set<(state: InsforgeManagerState) => void> = new Set();\n\n // Config\n private config: InsforgeManagerConfig;\n private refreshIntervalRef: NodeJS.Timeout | null = null;\n\n // Private constructor (prevents external instantiation)\n private constructor(config: InsforgeManagerConfig) {\n this.config = config;\n this.sdk = createClient({ baseUrl: config.baseUrl });\n this.user = undefined;\n this.isLoaded = false;\n }\n\n // Public access method (Singleton core)\n public static getInstance(config: InsforgeManagerConfig): InsforgeManager {\n // Browser environment: reuse instance (update config but keep state)\n if (typeof window !== 'undefined' && InsforgeManager.instance) {\n InsforgeManager.instance.updateConfig(config);\n return InsforgeManager.instance;\n }\n\n // Server environment or first creation: create new instance\n InsforgeManager.instance = new InsforgeManager(config);\n return InsforgeManager.instance;\n }\n\n // Clear instance (used for testing or cleanup)\n public static clearInstance() {\n if (InsforgeManager.instance) {\n InsforgeManager.instance.cleanup();\n }\n InsforgeManager.instance = null;\n }\n\n // Update config (for hot reloads)\n private updateConfig(config: InsforgeManagerConfig) {\n this.config = { ...this.config, ...config };\n }\n\n // Public initialization method\n // Even if we have initialState (isLoaded=true from cookies), we still need to load full user data from SDK/API\n public async initialize(): Promise<void> {\n // Skip if currently initializing (prevent concurrent calls)\n if (this.isInitializing) {\n return;\n }\n\n // Mark as initializing to prevent concurrent calls\n this.isInitializing = true;\n\n try {\n // Even if isLoaded=true (from initialState), we need to load full profile\n // initialState only provides basic user info from cookies for SSR hydration\n // Full profile (with all fields) comes from SDK's getCurrentUser()\n\n await this.loadAuthState();\n } finally {\n this.isInitializing = false;\n }\n }\n\n // Get current state\n public getState(): InsforgeManagerState {\n const userId = this.user === undefined ? undefined : this.user === null ? null : this.user.id;\n const isSignedIn = this.user === undefined ? undefined : this.user !== null;\n\n return {\n user: this.user,\n userId,\n isLoaded: this.isLoaded,\n isSignedIn,\n };\n }\n\n // Subscription mechanism\n public subscribe(listener: (state: InsforgeManagerState) => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n private notifyListeners() {\n const state = this.getState();\n this.listeners.forEach((listener) => listener(state));\n }\n\n // Load auth state\n // This loads the FULL user data from SDK (including complete profile)\n // Called after hydration to get complete user information beyond what's in cookies\n private async loadAuthState(): Promise<{ success: boolean; error?: string }> {\n try {\n // Step 1: get current session (handles backend detection and token refresh)\n // This is the FIRST call - it determines if we're on new/legacy backend\n // and restores login state from httpOnly cookie or localStorage\n const {\n data: { session },\n } = await this.sdk.auth.getCurrentSession();\n\n if (!session) {\n // Not logged in - set user to null\n this.user = null;\n if (this.config.onAuthChange) {\n this.config.onAuthChange(null);\n }\n this.isLoaded = true;\n this.notifyListeners();\n return { success: false, error: 'no_session' };\n }\n\n // Sync token to server-side cookie (for Next.js SSR support)\n // This ensures the latest access token is available in Next.js API routes\n if (this.config.onRefresh && session.accessToken) {\n try {\n await this.config.onRefresh(session.accessToken);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('[InsforgeManager] Error syncing token on refresh:', error.message);\n }\n }\n }\n\n // Step 2: Get full user data (now that we have a valid token)\n const userResult = await this.sdk.auth.getCurrentUser();\n\n if (userResult.data) {\n const profile = userResult.data.user.profile;\n\n // Extract known fields and collect dynamic profile fields\n const { name, avatar_url, ...dynamicFields } = profile || {};\n\n // Build complete user object with all profile fields\n const userData: InsforgeUser = {\n id: userResult.data.user.id,\n email: userResult.data.user.email,\n name: name || '',\n avatarUrl: avatar_url || '',\n // Store additional dynamic fields\n profile: Object.keys(dynamicFields).length > 0 ? dynamicFields : undefined,\n };\n\n this.user = userData;\n\n if (this.config.onAuthChange) {\n this.config.onAuthChange(userData);\n }\n this.isLoaded = true;\n this.notifyListeners();\n return { success: true };\n } else {\n // Session exists but couldn't get user data\n this.user = null;\n if (this.config.onAuthChange) {\n this.config.onAuthChange(null);\n }\n this.isLoaded = true;\n this.notifyListeners();\n const errorMessage = (userResult.error as Error | null)?.message ?? 'failed_to_get_user';\n return { success: false, error: errorMessage };\n }\n } catch (error) {\n // Error during auth - set user to null\n this.user = null;\n if (this.config.onAuthChange) {\n this.config.onAuthChange(null);\n }\n this.isLoaded = true;\n this.notifyListeners();\n\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Authentication failed',\n };\n }\n }\n\n // Helper to handle auth success\n private async handleAuthSuccess(\n authToken: string,\n fallbackUser?: { id?: string; email?: string; name?: string }\n ): Promise<void> {\n const userResult = await this.sdk.auth.getCurrentUser();\n\n if (userResult.data) {\n const profile = userResult.data.user.profile;\n\n // Extract known fields and collect dynamic profile fields\n const { name, avatar_url, ...dynamicFields } = profile || {};\n\n const userData: InsforgeUser = {\n id: userResult.data.user.id,\n email: userResult.data.user.email,\n name: name || '',\n avatarUrl: avatar_url || '',\n // Store additional dynamic fields\n profile: Object.keys(dynamicFields).length > 0 ? dynamicFields : undefined,\n };\n\n // Set user first\n this.user = userData;\n\n // Immediately notify listeners so UI updates quickly\n this.notifyListeners();\n\n // Then execute callbacks (these may be slower, e.g. cookie sync)\n if (this.config.onAuthChange) {\n this.config.onAuthChange(userData);\n }\n\n if (this.config.onSignIn) {\n try {\n await this.config.onSignIn(authToken);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('[InsforgeManager] Error syncing token to cookie:', error.message);\n }\n }\n }\n } else if (fallbackUser) {\n const userData: InsforgeUser = {\n id: fallbackUser.id || '',\n email: fallbackUser.email || '',\n name: fallbackUser.name || '',\n avatarUrl: '',\n };\n\n // Set user first\n this.user = userData;\n\n // Immediately notify listeners\n this.notifyListeners();\n\n // Then execute callback\n if (this.config.onAuthChange) {\n this.config.onAuthChange(userData);\n }\n }\n }\n\n // Business methods\n public async signIn(\n email: string,\n password: string\n ): Promise<CreateSessionResponse | { error: string; statusCode?: number; errorCode?: string }> {\n const sdkResult = await this.sdk.auth.signInWithPassword({\n email,\n password,\n });\n\n if (sdkResult.data) {\n await this.handleAuthSuccess(\n sdkResult.data.accessToken || '',\n sdkResult.data.user\n ? {\n id: sdkResult.data.user.id,\n email: sdkResult.data.user.email,\n name: sdkResult.data.user.profile?.name || '',\n }\n : undefined\n );\n return sdkResult.data;\n } else {\n return {\n error: sdkResult.error?.message || 'Invalid email or password',\n statusCode: sdkResult.error?.statusCode,\n errorCode: sdkResult.error?.error,\n };\n }\n }\n\n public async signUp(\n email: string,\n password: string\n ): Promise<CreateUserResponse | { error: string; statusCode?: number; errorCode?: string }> {\n const sdkResult = await this.sdk.auth.signUp({ email, password });\n\n if (sdkResult.data) {\n if (sdkResult.data.accessToken) {\n await this.handleAuthSuccess(\n sdkResult.data.accessToken,\n sdkResult.data.user\n ? {\n id: sdkResult.data.user.id,\n email: sdkResult.data.user.email,\n name: sdkResult.data.user.profile?.name || '',\n }\n : undefined\n );\n }\n return sdkResult.data;\n } else {\n return {\n error: sdkResult.error?.message || 'Sign up failed',\n statusCode: sdkResult.error?.statusCode,\n errorCode: sdkResult.error?.error,\n };\n }\n }\n\n public async signOut(): Promise<void> {\n await this.sdk.auth.signOut();\n\n if (this.config.onSignOut) {\n try {\n await this.config.onSignOut();\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('[InsforgeManager] Error clearing cookie:', error.message);\n }\n }\n }\n\n if (this.refreshIntervalRef) {\n clearInterval(this.refreshIntervalRef);\n this.refreshIntervalRef = null;\n }\n\n this.user = null;\n if (this.config.onAuthChange) {\n this.config.onAuthChange(null);\n }\n\n this.notifyListeners();\n }\n\n public async updateUser(data: Partial<InsforgeUser>): Promise<{ error: string } | null> {\n if (!this.user) {\n return { error: 'No user signed in' };\n }\n\n // Build profile update object with core fields and dynamic fields\n const profileUpdate: Record<string, unknown> = {};\n\n // Add core fields if provided\n if (data.name !== undefined) {\n profileUpdate.name = data.name;\n }\n if (data.avatarUrl !== undefined) {\n profileUpdate.avatar_url = data.avatarUrl;\n }\n\n // Add dynamic profile fields if provided\n if (data.profile) {\n Object.assign(profileUpdate, data.profile);\n }\n\n const result = await this.sdk.auth.setProfile(profileUpdate);\n\n if (result.data) {\n // Update local user state with the values we sent\n // Don't rely on response structure - use profileUpdate values merged with existing user\n const updatedUser: InsforgeUser = {\n id: this.user.id,\n email: this.user.email,\n // Use sent value if provided, otherwise keep existing\n name:\n profileUpdate.name !== undefined\n ? (profileUpdate.name as string)\n : this.user.name || '',\n avatarUrl:\n profileUpdate.avatar_url !== undefined\n ? (profileUpdate.avatar_url as string)\n : this.user.avatarUrl || '',\n // Merge existing profile with new dynamic fields\n profile: data.profile\n ? { ...this.user.profile, ...data.profile }\n : this.user.profile,\n };\n this.user = updatedUser;\n if (this.config.onAuthChange) {\n this.config.onAuthChange(updatedUser);\n }\n this.notifyListeners();\n return null;\n }\n\n const error = result.error as { message?: string } | undefined;\n return { error: error?.message || 'Failed to update user' };\n }\n\n public async reloadAuth(): Promise<{ success: boolean; error?: string }> {\n return await this.loadAuthState();\n }\n\n public async sendVerificationEmail(\n email: string\n ): Promise<{ success: boolean; message: string } | null> {\n const sdkResult = await this.sdk.auth.sendVerificationEmail({ email });\n return sdkResult.data;\n }\n\n public async sendResetPasswordEmail(\n email: string\n ): Promise<{ success: boolean; message: string } | null> {\n const sdkResult = await this.sdk.auth.sendResetPasswordEmail({ email });\n return sdkResult.data;\n }\n\n public async resetPassword(\n token: string,\n newPassword: string\n ): Promise<ResetPasswordResponse | null> {\n const sdkResult = await this.sdk.auth.resetPassword({\n newPassword,\n otp: token,\n });\n return sdkResult.data;\n }\n\n public async verifyEmail(otp: string, email?: string): Promise<VerifyEmailResponse | null> {\n const sdkResult = await this.sdk.auth.verifyEmail({ otp, email: email || undefined });\n if (sdkResult.data) {\n return sdkResult.data;\n } else {\n return {\n user: {\n id: '',\n createdAt: '',\n email: '',\n emailVerified: false,\n updatedAt: '',\n metadata: null,\n profile: null,\n },\n accessToken: '',\n redirectTo: undefined,\n csrfToken: undefined,\n };\n }\n }\n\n public async exchangeResetPasswordToken(\n email: string,\n code: string\n ): Promise<{ token: string; expiresAt?: string } | { error: { message: string } }> {\n const sdkResult = await this.sdk.auth.exchangeResetPasswordToken({ email, code });\n if (sdkResult.data) {\n return sdkResult.data;\n } else {\n return {\n error: {\n message: sdkResult.error?.message || 'Failed to exchange reset password token',\n },\n };\n }\n }\n\n public async loginWithOAuth(provider: OAuthProvider, redirectTo: string): Promise<void> {\n const sdkResult = await this.sdk.auth.signInWithOAuth({\n provider,\n redirectTo: redirectTo || window.location.origin + (this.config.afterSignInUrl || '/'),\n });\n if (sdkResult.error) {\n throw new Error(sdkResult.error.message);\n }\n }\n\n public async getPublicAuthConfig(): Promise<GetPublicAuthConfigResponse | null> {\n try {\n const result = await this.sdk.auth.getPublicAuthConfig();\n if (result.data) {\n return result.data;\n } else {\n console.error('[InsforgeManager] Failed to get public auth config:', result.error);\n return null;\n }\n } catch (error) {\n console.error('[InsforgeManager] Failed to get public auth config:', error);\n return null;\n }\n }\n\n public setUser(user: InsforgeUser | null): void {\n this.user = user;\n if (this.config.onAuthChange) {\n this.config.onAuthChange(user);\n }\n this.notifyListeners();\n }\n\n // Set initial state from server (for SSR hydration)\n // This is ONLY basic user info from cookies, not full profile\n // Following Clerk's pattern: initialState prevents hydration mismatch\n // but full user data is still loaded via initialize()\n public setInitialState(initialState: {\n user?: InsforgeUser | null;\n userId?: string | null;\n }): void {\n // Only set if we haven't loaded yet (undefined = not touched)\n if (this.user !== undefined) {\n return;\n }\n\n // Set basic user info from cookie\n // Note: This is lightweight data, full profile will be loaded by initialize()\n if (initialState.userId) {\n // Helper function to normalize values - treats 'null' string as empty string\n const normalizeValue = (val: string | undefined | null) => (val && val !== 'null' ? val : '');\n\n this.user = {\n id: initialState.userId,\n email: normalizeValue(initialState.user?.email),\n name: normalizeValue(initialState.user?.name),\n avatarUrl: normalizeValue(initialState.user?.avatarUrl),\n };\n } else {\n this.user = null;\n }\n\n // Mark as \"loaded\" for hydration purposes\n // But we'll still call loadAuthState() to get full profile\n this.isLoaded = true;\n this.notifyListeners();\n }\n\n public getConfig(): InsforgeManagerConfig {\n return this.config;\n }\n\n public getSDK(): ReturnType<typeof createClient> {\n return this.sdk;\n }\n\n // Cleanup\n private cleanup(): void {\n if (this.refreshIntervalRef) {\n clearInterval(this.refreshIntervalRef);\n this.refreshIntervalRef = null;\n }\n this.listeners.clear();\n }\n}\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var weakMemoize = function weakMemoize(func) {\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // Use non-null assertion because we just checked that the cache `has` it\n // This allows us to remove `undefined` from the return value\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport { weakMemoize as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport weakMemoize from '@emotion/weak-memoize';\nimport memoize from '@emotion/memoize';\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar getServerStylisCache = isBrowser ? undefined : weakMemoize(function () {\n return memoize(function () {\n return {};\n });\n});\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (isBrowser && key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n if (isBrowser) {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (!getServerStylisCache) {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n } else {\n var _finalizingPlugins = [stringify];\n\n var _serializer = middleware(omnipresentPlugins.concat(stylisPlugins, _finalizingPlugins));\n\n var _stylis = function _stylis(styles) {\n return serialize(compile(styles), _serializer);\n };\n\n var serverStylisCache = getServerStylisCache(stylisPlugins)(key);\n\n var getRules = function getRules(selector, serialized) {\n var name = serialized.name;\n\n if (serverStylisCache[name] === undefined) {\n serverStylisCache[name] = _stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n }\n\n return serverStylisCache[name];\n };\n\n _insert = function _insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n var rules = getRules(selector, serialized);\n\n if (cache.compat === undefined) {\n // in regular mode, we don't set the styles on the inserted cache\n // since we don't need to and that would be wasting memory\n // we return them so that they are rendered in a style tag\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n\n return rules;\n } else {\n // in compat mode, we put the styles on the inserted cache so\n // that emotion-server can pull out the styles\n // except when we don't want to cache it which was in Global but now\n // is nowhere but we don't want to do a major right now\n // and just in case we're going to leave the case here\n // it's also not affecting client side bundle size\n // so it's really not a big deal\n if (shouldCache) {\n cache.inserted[name] = rules;\n } else {\n return rules;\n }\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","var isBrowser = typeof document !== 'undefined';\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var stylesForSSR = '';\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n if (!isBrowser && maybeStyles !== undefined) {\n stylesForSSR += maybeStyles;\n }\n\n current = current.next;\n } while (current !== undefined);\n\n if (!isBrowser && stylesForSSR.length !== 0) {\n return stylesForSSR;\n }\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","import * as React from 'react';\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = !isBrowser ? syncFallback : useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n var newProps = {};\n\n for (var _key in props) {\n if (hasOwn.call(props, _key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n if (!isBrowser && rules !== undefined) {\n var _ref2;\n\n var serializedNames = serialized.name;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n next = next.next;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref2 = {}, _ref2[\"data-emotion\"] = cache.key + \" \" + serializedNames, _ref2.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref2.nonce = cache.sheet.nonce, _ref2));\n }\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var _key2 in props) {\n if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n newProps[_key2] = props[_key2];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, isDevelopment as a, ThemeProvider as b, createEmotionProps as c, withTheme as d, hasOwn as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser, a as isDevelopment } from './emotion-element-d59e098f.esm.js';\nexport { C as CacheProvider, T as ThemeContext, b as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, d as withTheme } from './emotion-element-d59e098f.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n var JSX;\n\n (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nfunction keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n}\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n var rules = '';\n\n for (var i = 0; i < serializedArr.length; i++) {\n var res = insertStyles(cache, serializedArr[i], false);\n\n if (!isBrowser && res !== undefined) {\n rules += res;\n }\n }\n\n if (!isBrowser) {\n return rules;\n }\n });\n\n if (!isBrowser && rules.length !== 0) {\n var _ref2;\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref2 = {}, _ref2[\"data-emotion\"] = cache.key + \" \" + serializedArr.map(function (serialized) {\n return serialized.name;\n }).join(' '), _ref2.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref2.nonce = cache.sheet.nonce, _ref2));\n }\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\nimport { useMemo, type ReactNode } from 'react';\n\ninterface StyleProviderProps {\n children: ReactNode;\n /** Optional nonce value for CSP (Content Security Policy) */\n nonce?: string;\n}\n\n/**\n * Provides Emotion CSS-in-JS styling context for Insforge components.\n *\n * This ensures styles are injected dynamically at runtime, preventing FOUC\n * in SSR environments like Next.js.\n *\n * @internal\n */\nexport function StyleProvider({ children, nonce }: StyleProviderProps) {\n const cache = useMemo(() => {\n const emotionCache = createCache({\n key: 'if-styles',\n prepend: true,\n nonce,\n });\n\n return emotionCache;\n }, [nonce]);\n\n return <CacheProvider value={cache}>{children}</CacheProvider>;\n}\n","import { useContext, useEffect, useState, useMemo, type ReactNode } from 'react';\nimport type { InsforgeUser, OAuthProvider } from '../types';\nimport { NavigationProvider, BrowserNavigationAdapter } from '../navigation';\nimport { InsforgeManager, type InsforgeManagerState } from '../core/InsforgeManager';\nimport { InsforgeContext, type InsforgeContextValue } from '../contexts';\nimport { StyleProvider } from '../styles/StyleProvider';\n\nexport interface InitialAuthState {\n user?: InsforgeUser | null;\n userId?: string | null;\n}\n\nexport interface InsforgeProviderProps {\n children: ReactNode;\n baseUrl: string;\n /**\n * URL to redirect to after successful sign in (when token is detected in URL)\n * @default '/'\n */\n afterSignInUrl?: string;\n onAuthChange?: (user: InsforgeUser | null) => void;\n onSignIn?: (authToken: string) => Promise<void>;\n onSignOut?: () => Promise<void>;\n onRefresh?: (authToken: string) => Promise<void>;\n /**\n * Initial auth state from server (for SSR hydration)\n * @internal - Not intended for public use, used by Next.js package\n */\n initialState?: InitialAuthState;\n}\n\n/**\n * Unified Insforge Provider - manages authentication state and configuration\n *\n * Uses singleton InsforgeManager to manage state across packages.\n * Context only subscribes to Manager and triggers React re-renders.\n *\n * @example\n * ```tsx\n * // Basic usage (React/Vite)\n * import { InsforgeProvider } from '@insforge/react';\n *\n * export default function App() {\n * return (\n * <InsforgeProvider\n * baseUrl={import.meta.env.VITE_INSFORGE_BASE_URL}\n * >\n * {children}\n * </InsforgeProvider>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // With cookie sync (Next.js optimization)\n * <InsforgeProvider\n * baseUrl={baseUrl}\n * onSignIn={async (authToken) => {\n * await signIn(authToken);\n * }}\n * onSignOut={async () => {\n * await signOut();\n * }}\n * >\n * {children}\n * </InsforgeProvider>\n * ```\n */\nexport function InsforgeProviderCore({\n children,\n baseUrl,\n afterSignInUrl = '/',\n onAuthChange,\n onSignIn,\n onSignOut,\n onRefresh,\n initialState,\n}: InsforgeProviderProps) {\n // Get singleton Manager instance\n const manager = useMemo(\n () =>\n InsforgeManager.getInstance({\n baseUrl,\n afterSignInUrl,\n onAuthChange,\n onSignIn,\n onSignOut,\n onRefresh,\n }),\n [baseUrl, afterSignInUrl, onAuthChange, onSignIn, onSignOut, onRefresh]\n );\n\n // Set initialState if provided (from Server Component)\n // This must happen during render, before useState initialization\n if (initialState) {\n const currentState = manager.getState();\n if (currentState.userId === undefined && initialState.userId !== undefined) {\n manager.setInitialState(initialState);\n }\n }\n\n // Subscribe to Manager state\n // Start with initial state from manager (will include initialState if set above)\n const [state, setState] = useState<InsforgeManagerState>(() => manager.getState());\n\n useEffect(() => {\n // Subscribe to state changes\n const unsubscribe = manager.subscribe((newState) => {\n setState(newState);\n });\n\n // Initialize auth state only on client side (after hydration)\n // This prevents hydration mismatches by ensuring SSR and client initial render match\n void manager.initialize().then(() => {\n const params = new URLSearchParams(window.location.search);\n if (params.has('access_token')) {\n const url = new URL(window.location.href);\n url.searchParams.delete('access_token');\n url.searchParams.delete('user_id');\n url.searchParams.delete('email');\n url.searchParams.delete('name');\n url.searchParams.delete('csrf_token');\n url.searchParams.delete('error');\n\n window.history.replaceState({}, document.title, url.toString());\n }\n });\n\n return () => {\n unsubscribe();\n };\n }, [manager]);\n\n // Create stable method references that delegate to manager\n const contextValue = useMemo<InsforgeContextValue>(\n () => ({\n // State from Manager\n user: state.user,\n userId: state.userId,\n isLoaded: state.isLoaded,\n isSignedIn: state.isSignedIn,\n\n // Methods delegated to Manager\n setUser: (user: InsforgeUser | null) => manager.setUser(user),\n signIn: (email: string, password: string) => manager.signIn(email, password),\n signUp: (email: string, password: string) => manager.signUp(email, password),\n signOut: () => manager.signOut(),\n updateUser: (data: Partial<InsforgeUser>) => manager.updateUser(data),\n reloadAuth: () => manager.reloadAuth(),\n sendVerificationEmail: (email: string) => manager.sendVerificationEmail(email),\n sendResetPasswordEmail: (email: string) => manager.sendResetPasswordEmail(email),\n resetPassword: (token: string, newPassword: string) =>\n manager.resetPassword(token, newPassword),\n verifyEmail: (otp: string, email?: string) => manager.verifyEmail(otp, email),\n exchangeResetPasswordToken: (email: string, code: string) =>\n manager.exchangeResetPasswordToken(email, code),\n loginWithOAuth: (provider: OAuthProvider, redirectTo: string) =>\n manager.loginWithOAuth(provider, redirectTo),\n getPublicAuthConfig: () => manager.getPublicAuthConfig(),\n\n // Config\n baseUrl: manager.getConfig().baseUrl,\n afterSignInUrl: manager.getConfig().afterSignInUrl || '/',\n }),\n [state, manager]\n );\n\n return <InsforgeContext.Provider value={contextValue}>{children}</InsforgeContext.Provider>;\n}\n\nexport function InsforgeProvider(props: InsforgeProviderProps) {\n return (\n <StyleProvider>\n <NavigationProvider adapter={BrowserNavigationAdapter}>\n <InsforgeProviderCore {...props} />\n </NavigationProvider>\n </StyleProvider>\n );\n}\n\n/**\n * Hook to access Insforge context\n *\n * Works seamlessly across packages thanks to singleton Manager.\n * Context instance is guaranteed to be consistent.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { user, isSignedIn, signOut } = useInsforge();\n *\n * if (!isSignedIn) return <SignIn />;\n *\n * return (\n * <div>\n * <p>Welcome {user.email}</p>\n * <button onClick={signOut}>Sign Out</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useInsforge(): InsforgeContextValue {\n const context = useContext(InsforgeContext);\n\n if (!context) {\n return {\n user: undefined,\n userId: undefined,\n isLoaded: false,\n isSignedIn: undefined,\n setUser: () => {},\n signIn: () => Promise.resolve({ error: 'SSR mode' }),\n signUp: () => Promise.resolve({ error: 'SSR mode' }),\n signOut: () => Promise.resolve(),\n updateUser: () => Promise.resolve({ error: 'SSR mode' }),\n reloadAuth: () => Promise.resolve({ success: false, error: 'SSR mode' }),\n sendVerificationEmail: () => Promise.resolve(null),\n sendResetPasswordEmail: () => Promise.resolve(null),\n resetPassword: () => Promise.resolve(null),\n verifyEmail: () => Promise.resolve(null),\n exchangeResetPasswordToken: () => Promise.resolve({ error: { message: 'SSR mode' } }),\n loginWithOAuth: () => Promise.resolve(),\n getPublicAuthConfig: () => Promise.resolve(null),\n baseUrl: '',\n afterSignInUrl: '/',\n };\n }\n\n return context;\n}\n","import { useState, useEffect } from 'react';\nimport type { GetPublicAuthConfigResponse } from '@insforge/shared-schemas';\nimport { useInsforge } from '../provider/InsforgeProvider';\n\n/**\n * Hook to get all public authentication configuration (OAuth + Email) from Insforge backend\n *\n * **IMPORTANT: This hook should ONLY be used in SignIn and SignUp components.**\n *\n * This hook lazily fetches all public authentication configuration from the backend\n * only when the component mounts. Using it in other components will cause unnecessary\n * API calls on every page load.\n *\n * @returns Object containing OAuth providers, email auth config, and loading state\n * - `authConfig`: Email authentication configuration object with password rules\n * - `isLoaded`: Boolean indicating if the config has been fetched\n *\n * @example\n * ```tsx\n * // ✅ Correct usage - only in SignIn/SignUp components\n * function SignUp() {\n * const { authConfig, isLoaded } = usePublicAuthConfig();\n *\n * if (!isLoaded) return <div>Loading...</div>;\n *\n * return (\n * <div>\n * <p>OAuth providers: {authConfig?.oauthProviders.length}</p>\n * <p>Password min length: {authConfig?.passwordMinLength}</p>\n * </div>\n * );\n * }\n * ```\n *\n * @requires Must be used within InsforgeProvider\n */\nexport function usePublicAuthConfig(): {\n authConfig: GetPublicAuthConfigResponse | null;\n isLoaded: boolean;\n} {\n const { getPublicAuthConfig } = useInsforge();\n const [authConfig, setAuthConfig] = useState<GetPublicAuthConfigResponse | null>(null);\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n async function fetchConfig() {\n const result = await getPublicAuthConfig();\n if (result) {\n setAuthConfig(result);\n } else {\n console.error('[usePublicAuthConfig] Failed to get public auth config');\n setAuthConfig(null);\n }\n setIsLoaded(true);\n }\n\n void fetchConfig();\n }, [getPublicAuthConfig]);\n\n return { authConfig, isLoaded };\n}\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar isDevelopment = false;\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n if (!isBrowser && rules !== undefined) {\n var _ref2;\n\n var serializedNames = serialized.name;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n next = next.next;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref2 = {}, _ref2[\"data-emotion\"] = cache.key + \" \" + serializedNames, _ref2.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref2.nonce = cache.sheet.nonce, _ref2));\n }\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n // eslint-disable-next-line prefer-spread\n styles.push.apply(styles, args);\n } else {\n var templateStringsArr = args[0];\n\n styles.push(templateStringsArr[0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], templateStringsArr[i]);\n }\n }\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n var newStyled = createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n }));\n return newStyled.apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/react';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\nimport '@emotion/utils';\nimport 'react';\nimport '@emotion/is-prop-valid';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// bind it to avoid mutating the original function\nvar styled = createStyled.bind(null);\ntags.forEach(function (tagName) {\n styled[tagName] = styled(tagName);\n});\n\nexport { styled as default };\n","/**\n * Insforge Design System Theme\n *\n * Complete design tokens for all components\n */\n\nexport const theme = {\n colors: {\n primary: '#000000',\n primaryHover: '#1f1f1f',\n text: '#000000',\n textSecondary: '#828282',\n textMuted: '#a3a3a3',\n textGray: '#525252',\n border: '#d4d4d4',\n borderGray: '#e4e4e7',\n borderHover: '#9ca3af',\n borderFocus: '#000000',\n bgWhite: '#ffffff',\n bgLight: '#fafafa',\n bgGray: '#f5f5f5',\n bgHover: '#f9fafb',\n error: '#dc2626',\n errorBg: '#fee2e2',\n success: '#16a34a',\n successBg: '#d1fae5',\n successDark: '#059669',\n black: '#000000',\n zinc900: '#09090b',\n },\n\n spacing: {\n 1: '0.25rem', // 4px\n 2: '0.5rem', // 8px\n 3: '0.75rem', // 12px\n 4: '1rem', // 16px\n 6: '1.5rem', // 24px\n 8: '2rem', // 32px\n 10: '2.5rem', // 40px\n },\n\n radius: {\n xs: '0.125rem', // 2px\n sm: '0.25rem', // 4px\n md: '0.375rem', // 6px\n lg: '0.5rem', // 8px\n xl: '0.75rem', // 12px\n full: '9999px',\n },\n\n fontSize: {\n xs: '0.75rem', // 12px\n sm: '0.875rem', // 14px\n base: '1rem', // 16px\n lg: '1.125rem', // 18px\n xl: '1.25rem', // 20px\n '2xl': '1.5rem', // 24px\n },\n\n lineHeight: {\n tight: '1rem', // 16px\n normal: '1.25rem', // 20px\n relaxed: '1.5rem', // 24px\n loose: '2rem', // 32px\n },\n\n fontFamily: {\n base: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif\",\n manrope: \"'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif\",\n },\n\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n },\n\n shadow: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 1px 2px 0 rgba(0, 0, 0, 0.1)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n },\n\n transition: {\n fast: '150ms cubic-bezier(0.4, 0, 0.2, 1)',\n base: '200ms cubic-bezier(0.4, 0, 0.2, 1)',\n },\n\n sizes: {\n input: {\n height: '2.5rem', // 40px\n },\n button: {\n height: '2.5rem', // 40px for submit\n heightOAuth: '2.25rem', // 36px for OAuth\n },\n avatar: '2rem', // 32px\n icon: '1.25rem', // 20px\n iconSm: '1.125rem', // 18px\n iconLg: '1.5rem', // 24px\n verifyCode: '3rem', // 48px\n verifyIcon: '4rem', // 64px\n verifyIconInner: '2rem', // 32px\n },\n} as const;\n\nexport type Theme = typeof theme;\n\n/**\n * Keyframe animations\n */\nexport const keyframes = {\n spin: `\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n `,\n};\n\n/**\n * Google Fonts imports\n */\nexport const fontImports = [\n 'https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap',\n 'https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap',\n];\n","/** @jsxImportSource @emotion/react */\nimport styled from '@emotion/styled';\nimport { keyframes as emotionKeyframes } from '@emotion/react';\nimport { theme, keyframes } from '../../styles/theme';\n\n/* ============================================\n KEYFRAMES\n ============================================ */\nconst spinAnimation = emotionKeyframes`${keyframes.spin}`;\n\n/* ============================================\n AUTH CONTAINER\n ============================================ */\nexport const AuthContainerWrapper = styled.div`\n width: 100%;\n max-width: 400px;\n border-radius: ${theme.radius.xl};\n overflow: hidden;\n box-shadow: ${theme.shadow.lg};\n`;\n\nexport const AuthCard = styled.div`\n background-color: ${theme.colors.bgWhite};\n padding: ${theme.spacing[6]};\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n gap: ${theme.spacing[6]};\n`;\n\n/* ============================================\n AUTH HEADER\n ============================================ */\nexport const AuthHeaderWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n gap: ${theme.spacing[2]};\n`;\n\nexport const AuthHeaderTitle = styled.h1`\n font-size: ${theme.fontSize['2xl']};\n font-weight: ${theme.fontWeight.semibold};\n color: ${theme.colors.text};\n line-height: ${theme.lineHeight.loose};\n margin: 0;\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const AuthHeaderSubtitle = styled.p`\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n color: ${theme.colors.textSecondary};\n line-height: ${theme.lineHeight.relaxed};\n margin: 0;\n font-family: ${theme.fontFamily.base};\n`;\n\n/* ============================================\n FORM FIELD\n ============================================ */\nexport const FormFieldWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n gap: ${theme.spacing[1]};\n`;\n\nexport const FormFieldLabel = styled.label`\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n color: ${theme.colors.text};\n line-height: ${theme.lineHeight.relaxed};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const FormFieldInput = styled.input`\n width: 100%;\n display: flex;\n align-items: center;\n gap: ${theme.spacing[2]};\n align-self: stretch;\n padding: ${theme.spacing[2]} ${theme.spacing[3]};\n border-radius: ${theme.radius.sm};\n border: 1px solid ${theme.colors.border};\n background-color: ${theme.colors.bgWhite};\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n line-height: ${theme.lineHeight.normal};\n color: ${theme.colors.text};\n font-family: ${theme.fontFamily.base};\n transition: border-color ${theme.transition.base};\n\n &::placeholder {\n color: ${theme.colors.textMuted};\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n }\n\n &:focus {\n outline: none;\n border-color: ${theme.colors.borderFocus};\n }\n`;\n\n/* ============================================\n PASSWORD FIELD\n ============================================ */\nexport const PasswordFieldWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n gap: ${theme.spacing[1]};\n`;\n\nexport const PasswordFieldLabelRow = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const PasswordFieldLabel = styled.label`\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n color: ${theme.colors.text};\n line-height: ${theme.lineHeight.relaxed};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const PasswordFieldForgotLink = styled.a`\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n color: ${theme.colors.textSecondary};\n text-decoration: none;\n transition: color ${theme.transition.fast};\n font-family: ${theme.fontFamily.base};\n cursor: pointer;\n`;\n\nexport const PasswordFieldInputWrapper = styled.div`\n position: relative;\n width: 100%;\n`;\n\nexport const PasswordFieldInput = styled.input`\n width: 100%;\n display: flex;\n align-items: center;\n align-self: stretch;\n padding: ${theme.spacing[2]} ${theme.spacing[3]};\n padding-right: 2.5rem;\n border-radius: ${theme.radius.sm};\n border: 1px solid ${theme.colors.border};\n background-color: ${theme.colors.bgWhite};\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n line-height: ${theme.lineHeight.normal};\n color: ${theme.colors.text};\n font-family: ${theme.fontFamily.base};\n transition: border-color ${theme.transition.base};\n\n &::placeholder {\n color: ${theme.colors.textMuted};\n }\n\n &:focus {\n outline: none;\n border-color: ${theme.colors.borderFocus};\n }\n`;\n\nexport const PasswordFieldToggleButton = styled.button`\n position: absolute;\n right: ${theme.spacing[1]};\n top: 50%;\n transform: translateY(-50%);\n background: none;\n border: none;\n cursor: pointer;\n padding: ${theme.spacing[1]};\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${theme.colors.textSecondary};\n transition: color ${theme.transition.fast};\n`;\n\n/* ============================================\n SUBMIT BUTTON\n ============================================ */\nexport const SubmitButton = styled.button`\n border-radius: ${theme.radius.sm};\n background-color: ${theme.colors.primary};\n height: ${theme.sizes.button.height};\n width: 100%;\n display: flex;\n margin-top: ${theme.spacing[4]};\n padding: ${theme.spacing[2]} ${theme.spacing[4]};\n justify-content: center;\n align-items: center;\n gap: 0.625rem;\n align-self: stretch;\n color: ${theme.colors.bgWhite};\n font-weight: ${theme.fontWeight.semibold};\n font-family: ${theme.fontFamily.manrope};\n font-size: ${theme.fontSize.base};\n line-height: normal;\n border: none;\n cursor: pointer;\n transition: background-color ${theme.transition.base};\n\n &:hover:not(:disabled) {\n background-color: ${theme.colors.primaryHover};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n\nexport const SubmitButtonIcon = styled.div`\n width: ${theme.sizes.icon};\n height: ${theme.sizes.icon};\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\nexport const SubmitButtonSpinner = styled.div`\n width: ${theme.sizes.icon};\n height: ${theme.sizes.icon};\n display: flex;\n align-items: center;\n justify-content: center;\n animation: ${spinAnimation} 1s linear infinite;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\n/* ============================================\n OAUTH BUTTON\n ============================================ */\nexport const OAuthButton = styled.button<{ $variant?: 'full' | 'short' | 'iconOnly' }>`\n display: flex;\n width: 100%;\n height: ${theme.sizes.button.heightOAuth};\n padding: ${(props: { $variant?: 'full' | 'short' | 'iconOnly' }) =>\n props.$variant === 'short' || props.$variant === 'iconOnly'\n ? theme.spacing[2]\n : `${theme.spacing[2]} ${theme.spacing[3]}`};\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: ${(props: { $variant?: 'full' | 'short' | 'iconOnly' }) =>\n props.$variant === 'iconOnly'\n ? '0'\n : props.$variant === 'short'\n ? theme.spacing[2]\n : theme.spacing[3]};\n border-radius: ${theme.radius.md};\n border: 1px solid ${theme.colors.borderGray};\n background-color: ${theme.colors.bgWhite};\n box-shadow: ${theme.shadow.md};\n color: ${theme.colors.zinc900};\n text-align: center;\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.medium};\n line-height: ${theme.lineHeight.normal};\n cursor: pointer;\n transition: all ${theme.transition.base};\n font-family: ${theme.fontFamily.base};\n\n &:hover:not(:disabled) {\n background-color: ${theme.colors.bgHover};\n border-color: ${theme.colors.borderHover};\n }\n\n &:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n`;\n\nexport const OAuthButtonIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: ${theme.sizes.iconSm};\n height: ${theme.sizes.iconSm};\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\n/* ============================================\n OAUTH PROVIDERS\n ============================================ */\nexport const OAuthProvidersContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[3]};\n width: 100%;\n`;\n\n/* ============================================\n AUTH LINK\n ============================================ */\nexport const AuthLinkWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n gap: ${theme.spacing[1]};\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textSecondary};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const AuthLinkText = styled.span`\n font-weight: ${theme.fontWeight.normal};\n`;\n\nexport const AuthLinkLink = styled.a`\n font-weight: ${theme.fontWeight.semibold};\n color: ${theme.colors.text};\n text-decoration: none;\n transition: opacity ${theme.transition.fast};\n cursor: pointer;\n`;\n\n/* ============================================\n AUTH DIVIDER\n ============================================ */\nexport const AuthDividerWrapper = styled.div`\n display: flex;\n align-items: center;\n text-align: center;\n width: 100%;\n gap: ${theme.spacing[3]};\n`;\n\nexport const AuthDividerLine = styled.div`\n flex: 1;\n border-top: 1px solid ${theme.colors.border};\n`;\n\nexport const AuthDividerText = styled.span`\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textSecondary};\n font-weight: ${theme.fontWeight.normal};\n font-family: ${theme.fontFamily.manrope};\n`;\n\n/* ============================================\n ERROR BANNER\n ============================================ */\nexport const ErrorBannerWrapper = styled.div`\n padding: ${theme.spacing[3]};\n background-color: ${theme.colors.errorBg};\n border-radius: ${theme.radius.md};\n border: 1px solid ${theme.colors.error};\n`;\n\nexport const ErrorBannerContent = styled.div`\n display: flex;\n align-items: center;\n gap: ${theme.spacing[2]};\n`;\n\nexport const ErrorBannerIcon = styled.div`\n width: ${theme.sizes.iconLg};\n height: ${theme.sizes.iconLg};\n flex-shrink: 0;\n color: ${theme.colors.error};\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\nexport const ErrorBannerText = styled.p`\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.error};\n font-weight: ${theme.fontWeight.normal};\n font-family: ${theme.fontFamily.base};\n margin: 0;\n`;\n\n/* ============================================\n AUTH BRANDING\n ============================================ */\nexport const AuthBrandingWrapper = styled.div`\n background-color: ${theme.colors.bgLight};\n padding: ${theme.spacing[4]} ${theme.spacing[2]};\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: ${theme.spacing[1]};\n`;\n\nexport const AuthBrandingText = styled.p`\n font-size: ${theme.fontSize.xs};\n font-weight: ${theme.fontWeight.medium};\n color: ${theme.colors.text};\n font-family: ${theme.fontFamily.manrope};\n margin: 0;\n`;\n\n/* ============================================\n VERIFICATION CODE INPUT\n ============================================ */\nexport const VerificationCodeInputContainer = styled.div`\n display: flex;\n gap: ${theme.spacing[3]};\n justify-content: center;\n`;\n\nexport const VerificationCodeInput = styled.input`\n width: ${theme.sizes.verifyCode};\n height: ${theme.sizes.verifyCode};\n text-align: center;\n font-size: ${theme.fontSize.base};\n font-weight: ${theme.fontWeight.semibold};\n border: 1px solid ${theme.colors.border};\n border-radius: ${theme.radius.sm};\n background-color: ${theme.colors.bgWhite};\n color: ${theme.colors.text};\n transition: border-color ${theme.transition.base};\n font-family: ${theme.fontFamily.manrope};\n\n &:focus {\n outline: none;\n border-color: ${theme.colors.borderFocus};\n }\n`;\n\n/* ============================================\n PASSWORD STRENGTH INDICATOR\n ============================================ */\nexport const PasswordStrengthWrapper = styled.div`\n margin-top: ${theme.spacing[2]};\n`;\n\nexport const PasswordStrengthFill = styled.div`\n height: 100%;\n transition:\n width ${theme.transition.base},\n background-color ${theme.transition.base};\n`;\n\nexport const PasswordStrengthText = styled.span`\n font-size: ${theme.fontSize.xs};\n color: ${theme.colors.textSecondary};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const PasswordStrengthRequirements = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[2]};\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textGray};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const PasswordStrengthRequirement = styled.div`\n display: flex;\n align-items: center;\n gap: ${theme.spacing[2]};\n`;\n","import { AuthBrandingWrapper, AuthBrandingText } from './styled';\n\n/**\n * Insforge branding component for authentication pages.\n *\n * @component\n * @example\n * ```tsx\n * <AuthBranding />\n * ```\n */\nexport function AuthBranding() {\n return (\n <AuthBrandingWrapper>\n <AuthBrandingText>Secured by</AuthBrandingText>\n <a href=\"https://insforge.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n <svg\n width=\"83\"\n height=\"20\"\n viewBox=\"0 0 83 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.16783 8.46797C1.9334 8.23325 1.9334 7.85269 2.16783 7.61797L8.11049 1.66797L16.6 1.66797L6.41259 11.868C6.17815 12.1027 5.79807 12.1027 5.56363 11.868L2.16783 8.46797Z\"\n fill=\"url(#paint0_linear_2976_9475)\"\n />\n <path\n d=\"M12.8858 6.44922L16.6 10.168V18.668L8.64108 10.6992L12.8858 6.44922Z\"\n fill=\"url(#paint1_linear_2976_9475)\"\n />\n <path\n d=\"M67.5439 6.48828C68.2894 6.48828 68.9145 6.67064 69.418 7.03516C69.5229 7.10943 69.6214 7.1907 69.7158 7.27637V6.70703H71.248V14.959C71.248 15.1583 71.2381 15.3485 71.2188 15.5283C71.2042 15.7129 71.1774 15.8925 71.1387 16.0674C71.0225 16.5776 70.7998 16.9957 70.4707 17.3213C70.1415 17.6518 69.7321 17.8972 69.2432 18.0576C68.7592 18.2179 68.2222 18.2988 67.6318 18.2988C67.1962 18.2988 66.7768 18.2308 66.375 18.0947C65.9782 17.9587 65.6202 17.7614 65.3008 17.5039C64.9813 17.2512 64.7199 16.9446 64.5166 16.585L66.1289 15.7832C66.2789 16.0698 66.4888 16.2819 66.7598 16.418C67.0356 16.5589 67.3289 16.6289 67.6387 16.6289C68.0016 16.6289 68.3258 16.5628 68.6113 16.4316C68.8969 16.3053 69.1176 16.116 69.2725 15.8633C69.4321 15.6155 69.5077 15.3047 69.498 14.9307V14.1797C69.4665 14.2037 69.4359 14.229 69.4033 14.252C68.8855 14.6164 68.2441 14.7988 67.4795 14.7988C66.7582 14.7988 66.1281 14.6165 65.5908 14.252C65.0537 13.8875 64.637 13.3915 64.3418 12.7646C64.0467 12.1378 63.8994 11.4307 63.8994 10.6436C63.8994 9.84651 64.0465 9.13673 64.3418 8.51465C64.6419 7.88768 65.0663 7.39481 65.6133 7.03516C66.1601 6.67077 66.8036 6.48836 67.5439 6.48828ZM37.5 6.48828C38.1099 6.48828 38.6496 6.58294 39.1191 6.77246C39.5935 6.96201 39.9762 7.2321 40.2666 7.58203C40.5569 7.93184 40.7359 8.34227 40.8037 8.81348L39.0176 9.13477C38.974 8.79951 38.8218 8.53424 38.5605 8.33984C38.304 8.14547 37.96 8.03605 37.5293 8.01172C37.1178 7.98742 36.7859 8.05051 36.5342 8.20117C36.2825 8.34698 36.1562 8.55398 36.1562 8.82129C36.1563 8.97184 36.208 9.10017 36.3096 9.20703C36.4112 9.31394 36.614 9.42141 36.9189 9.52832C37.2288 9.63524 37.6889 9.76635 38.2988 9.92188C38.9232 10.0823 39.4222 10.2666 39.7949 10.4756C40.1722 10.6796 40.4428 10.9254 40.6074 11.2119C40.7768 11.4987 40.8623 11.8466 40.8623 12.2549C40.8623 13.047 40.574 13.6691 39.998 14.1211C39.4268 14.5731 38.6348 14.7988 37.623 14.7988C36.6551 14.7988 35.8687 14.5799 35.2637 14.1426C34.6587 13.7052 34.2909 13.0908 34.1602 12.2988L35.9463 12.0215C36.0383 12.4102 36.2411 12.7169 36.5557 12.9404C36.8703 13.164 37.2678 13.2754 37.7471 13.2754C38.1681 13.2754 38.4922 13.1926 38.7197 13.0273C38.9521 12.8572 39.0684 12.6266 39.0684 12.335C39.0684 12.1552 39.0245 12.0122 38.9375 11.9053C38.8552 11.7935 38.6713 11.686 38.3857 11.584C38.1001 11.4819 37.6618 11.3528 37.0713 11.1973C36.4131 11.0223 35.8901 10.8359 35.5029 10.6367C35.1158 10.4327 34.8374 10.192 34.668 9.91504C34.4985 9.63801 34.4141 9.30188 34.4141 8.9082C34.4141 8.41746 34.5423 7.98943 34.7988 7.625C35.0553 7.26073 35.4135 6.98146 35.873 6.78711C36.3329 6.58784 36.8755 6.48828 37.5 6.48828ZM53.3047 6.48828C54.0937 6.48828 54.7815 6.66572 55.3672 7.02051C55.9527 7.37528 56.4072 7.86634 56.7314 8.49316C57.0558 9.11525 57.2187 9.83193 57.2188 10.6436C57.2188 11.46 57.0537 12.1817 56.7246 12.8086C56.4003 13.4307 55.9451 13.9196 55.3594 14.2744C54.7737 14.6242 54.0888 14.7988 53.3047 14.7988C52.5205 14.7988 51.8357 14.6214 51.25 14.2666C50.6643 13.9118 50.2091 13.4238 49.8848 12.8018C49.5653 12.1748 49.4053 11.4552 49.4053 10.6436C49.4053 9.81735 49.5703 9.09279 49.8994 8.4707C50.2286 7.8488 50.6859 7.36255 51.2715 7.0127C51.8572 6.66281 52.5351 6.48828 53.3047 6.48828ZM76.7471 6.48828C77.5603 6.48828 78.25 6.68053 78.8164 7.06445C79.3876 7.44351 79.812 7.97991 80.0879 8.6748C80.3638 9.36976 80.4672 10.189 80.3994 11.1318H74.7256C74.7843 11.6972 74.949 12.1516 75.2227 12.4951C75.5711 12.9325 76.0792 13.1513 76.7471 13.1514C77.1779 13.1514 77.5486 13.0567 77.8584 12.8672C78.173 12.6728 78.4146 12.3928 78.584 12.0283L80.3125 12.5537C80.0124 13.2633 79.5473 13.8153 78.918 14.209C78.2936 14.6025 77.6036 14.7988 76.8486 14.7988C76.0549 14.7988 75.358 14.6263 74.7578 14.2812C74.1576 13.9362 73.6875 13.458 73.3486 12.8457C73.0147 12.2334 72.8477 11.5284 72.8477 10.7314C72.8477 9.87126 73.0127 9.12495 73.3418 8.49316C73.671 7.85651 74.1282 7.36263 74.7139 7.0127C75.2995 6.6628 75.9775 6.48832 76.7471 6.48828ZM23.3301 14.5801H21.5801V4.08203H23.3301V14.5801ZM29.6152 6.48047C30.1959 6.48052 30.6753 6.5781 31.0527 6.77246C31.4301 6.96681 31.7305 7.21443 31.9531 7.51562C32.1758 7.81695 32.3398 8.13831 32.4463 8.47852C32.5528 8.81873 32.6213 9.14205 32.6504 9.44824C32.6843 9.74946 32.7012 9.99508 32.7012 10.1846V14.5801H30.9287V10.7891C30.9287 10.5413 30.9118 10.2669 30.8779 9.96582C30.844 9.66449 30.7645 9.37469 30.6387 9.09766C30.5177 8.81592 30.3337 8.58503 30.0869 8.40527C29.8449 8.22551 29.5157 8.13579 29.0996 8.13574C28.8769 8.13574 28.6563 8.17221 28.4385 8.24512C28.2206 8.31802 28.0219 8.4442 27.8428 8.62402C27.6685 8.79899 27.5284 9.04249 27.4219 9.35352C27.3154 9.65965 27.2617 10.0532 27.2617 10.5342V14.5801H25.4902V6.70703H27.0518V7.58301C27.2521 7.34675 27.486 7.14172 27.7559 6.96973C28.2593 6.64409 28.8794 6.48047 29.6152 6.48047ZM48.748 5.83887H44.2021V8.45605H47.876V10.2061H44.2021V14.5801H42.4521V4.08203H48.748V5.83887ZM62.5137 6.67773C62.7606 6.65829 63.001 6.66815 63.2334 6.70703V8.34766C63.001 8.27961 62.7317 8.25695 62.4268 8.28125C62.1267 8.30557 61.8553 8.39134 61.6133 8.53711C61.3715 8.66829 61.1733 8.83606 61.0186 9.04004C60.8686 9.24404 60.7572 9.47701 60.6846 9.73926C60.612 9.99685 60.5752 10.2768 60.5752 10.5781V14.5801H58.8184V6.70703H60.3652V7.96582C60.4243 7.85986 60.4888 7.75824 60.5605 7.66211C60.7251 7.4434 60.9219 7.26302 61.1494 7.12207C61.3429 6.99098 61.5559 6.88926 61.7881 6.81641C62.0251 6.73869 62.267 6.69235 62.5137 6.67773ZM67.8057 8.0625C67.3362 8.06252 66.9485 8.17982 66.6436 8.41309C66.3389 8.64144 66.1139 8.95232 65.9688 9.3457C65.8235 9.7345 65.751 10.1673 65.751 10.6436C65.751 11.1247 65.8215 11.5624 65.9619 11.9561C66.1071 12.3447 66.3269 12.6535 66.6221 12.8818C66.9174 13.1103 67.293 13.2246 67.748 13.2246C68.2174 13.2246 68.5953 13.1171 68.8809 12.9033C69.1711 12.6846 69.3811 12.3808 69.5117 11.9922C69.6473 11.6034 69.7158 11.1539 69.7158 10.6436C69.7158 10.1284 69.6473 9.67886 69.5117 9.29492C69.381 8.90617 69.1753 8.60445 68.8945 8.39062C68.6138 8.17213 68.2508 8.0625 67.8057 8.0625ZM53.3047 8.13574C52.8351 8.13574 52.4475 8.24222 52.1426 8.45605C51.8425 8.66504 51.6198 8.95977 51.4746 9.33887C51.3295 9.71303 51.2568 10.148 51.2568 10.6436C51.2568 11.4066 51.4288 12.0168 51.7725 12.4736C52.121 12.9256 52.6318 13.1514 53.3047 13.1514C54.0017 13.1514 54.5196 12.9177 54.8584 12.4512C55.1971 11.9846 55.3672 11.3822 55.3672 10.6436C55.3672 9.8807 55.1951 9.27324 54.8516 8.82129C54.5079 8.36444 53.9921 8.13575 53.3047 8.13574ZM76.8203 8.02637C76.1039 8.02637 75.5712 8.25013 75.2227 8.69727C74.9987 8.98144 74.8476 9.35094 74.7676 9.80566H78.6221C78.5589 9.29301 78.4236 8.89686 78.2139 8.61719C77.9186 8.22359 77.4543 8.02645 76.8203 8.02637Z\"\n fill=\"black\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_2976_9475\"\n x1=\"1.85883\"\n y1=\"1.92425\"\n x2=\"24.3072\"\n y2=\"9.64016\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop />\n <stop offset=\"1\" stopOpacity=\"0.4\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_2976_9475\"\n x1=\"25.6475\"\n y1=\"8.65468\"\n x2=\"10.7901\"\n y2=\"8.65468\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop />\n <stop offset=\"1\" stopOpacity=\"0.4\" />\n </linearGradient>\n </defs>\n </svg>\n </a>\n </AuthBrandingWrapper>\n );\n}\n","import { AuthBranding } from './AuthBranding';\nimport type { ReactNode } from 'react';\nimport { AuthContainerWrapper, AuthCard } from './styled';\n\nexport interface AuthContainerProps {\n children: ReactNode;\n}\n\n/**\n * Main container component for authentication forms.\n *\n * @component\n * @example\n * ```tsx\n * <AuthContainer>\n * <AuthHeader title=\"Sign In\" />\n * <form>...</form>\n * </AuthContainer>\n * ```\n *\n * @param {ReactNode} children - Form content\n */\nexport function AuthContainer({ children }: AuthContainerProps) {\n return (\n <AuthContainerWrapper>\n <AuthCard>{children}</AuthCard>\n <AuthBranding />\n </AuthContainerWrapper>\n );\n}\n","import { AuthHeaderWrapper, AuthHeaderTitle, AuthHeaderSubtitle } from './styled';\n\nexport interface AuthHeaderProps {\n title: string;\n subtitle?: string;\n}\n\n/**\n * Header component for authentication forms displaying title and optional subtitle.\n *\n * @component\n * @example\n * ```tsx\n * <AuthHeader\n * title=\"Welcome Back\"\n * subtitle=\"Sign in to continue\"\n * />\n * ```\n *\n * @param {string} title - Main heading text\n * @param {string} [subtitle] - Optional subheading text\n */\nexport function AuthHeader({ title, subtitle }: AuthHeaderProps) {\n return (\n <AuthHeaderWrapper>\n <AuthHeaderTitle>{title}</AuthHeaderTitle>\n {subtitle && <AuthHeaderSubtitle>{subtitle}</AuthHeaderSubtitle>}\n </AuthHeaderWrapper>\n );\n}\n","import { AlertTriangle } from 'lucide-react';\nimport { ErrorBannerWrapper, ErrorBannerContent, ErrorBannerIcon, ErrorBannerText } from './styled';\n\nexport interface AuthErrorBannerProps {\n error: string;\n}\n\n/**\n * Error message banner for authentication forms.\n */\nexport function AuthErrorBanner({ error }: { error?: string }) {\n if (!error) {\n return null;\n }\n\n return (\n <ErrorBannerWrapper>\n <ErrorBannerContent>\n <ErrorBannerIcon>\n <AlertTriangle />\n </ErrorBannerIcon>\n <ErrorBannerText>{error}</ErrorBannerText>\n </ErrorBannerContent>\n </ErrorBannerWrapper>\n );\n}\n","import type { InputHTMLAttributes } from 'react';\nimport { FormFieldWrapper, FormFieldLabel, FormFieldInput } from './styled';\n\nexport interface AuthFormFieldProps extends InputHTMLAttributes<HTMLInputElement> {\n label: string;\n id: string;\n}\n\n/**\n * Standard form input field with label for authentication forms.\n *\n * @component\n * @example\n * ```tsx\n * <AuthFormField\n * id=\"email\"\n * type=\"email\"\n * label=\"Email Address\"\n * />\n * ```\n *\n * @param {string} label - Label text\n * @param {string} id - Input element ID\n */\nexport function AuthFormField({ label, id, ...props }: AuthFormFieldProps) {\n return (\n <FormFieldWrapper>\n <FormFieldLabel htmlFor={id}>{label}</FormFieldLabel>\n <FormFieldInput id={id} {...props} />\n </FormFieldWrapper>\n );\n}\n","import { Check } from 'lucide-react';\nimport type { AuthConfig } from '../../types';\nimport {\n PasswordStrengthWrapper,\n PasswordStrengthRequirements,\n PasswordStrengthRequirement,\n} from './styled';\n\ninterface PasswordRequirement {\n label: string;\n test: (password: string) => boolean;\n}\n\nexport interface AuthPasswordStrengthIndicatorProps {\n password: string;\n config: AuthConfig;\n}\n\n/**\n * Password strength indicator showing requirement checklist.\n */\nexport function AuthPasswordStrengthIndicator({\n password,\n config,\n}: AuthPasswordStrengthIndicatorProps) {\n const requirements = createRequirements(config);\n\n return (\n <PasswordStrengthWrapper>\n <PasswordStrengthRequirements>\n {requirements.map((req) => (\n <PasswordStrengthRequirement key={req.label}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '1rem',\n height: '1rem',\n borderRadius: '50%',\n border: '2px solid',\n borderColor: req.test(password) ? 'transparent' : '#9ca3af',\n backgroundColor: req.test(password) ? '#059669' : 'white',\n transition: 'all 0.2s',\n }}\n >\n {req.test(password) && (\n <Check style={{ width: '0.75rem', height: '0.75rem', color: 'white' }} />\n )}\n </div>\n <span>{req.label}</span>\n </PasswordStrengthRequirement>\n ))}\n </PasswordStrengthRequirements>\n </PasswordStrengthWrapper>\n );\n}\n\nfunction createRequirements(config: AuthConfig): PasswordRequirement[] {\n const requirements: PasswordRequirement[] = [];\n\n if (config.passwordMinLength) {\n requirements.push({\n label: `At least ${config.passwordMinLength} characters`,\n test: (password) => password.length >= config.passwordMinLength,\n });\n }\n\n if (config.requireLowercase) {\n requirements.push({\n label: 'Contains lowercase letter',\n test: (password) => /[a-z]/.test(password),\n });\n }\n\n if (config.requireUppercase) {\n requirements.push({\n label: 'Contains uppercase letter',\n test: (password) => /[A-Z]/.test(password),\n });\n }\n\n if (config.requireNumber) {\n requirements.push({\n label: 'Contains number',\n test: (password) => /\\d/.test(password),\n });\n }\n\n if (config.requireSpecialChar) {\n requirements.push({\n label: 'Contains special character',\n test: (password) => /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/.test(password),\n });\n }\n\n return requirements;\n}\n","/**\n * Path utilities for handling navigation in auth flows.\n * Ensures proper path resolution when auth pages are served under a base path (e.g., /auth/)\n */\n\n/**\n * Resolves an auth route path relative to the current location.\n * If the current path is under /auth/, it will preserve that prefix.\n * Otherwise, it returns the path as-is.\n *\n * @param targetPath - The target auth path (e.g., '/sign-in', '/sign-up')\n * @returns The resolved path with proper base path handling\n *\n * @example\n * // Current URL: http://localhost:5174/auth/sign-in\n * resolveAuthPath('/sign-up') // Returns '/auth/sign-up'\n *\n * @example\n * // Current URL: http://localhost:5174/sign-in\n * resolveAuthPath('/sign-up') // Returns '/sign-up'\n */\nexport function resolveAuthPath(targetPath: string): string {\n if (typeof window === 'undefined') {\n return targetPath;\n }\n\n const currentPath = window.location.pathname;\n\n // Check if we're currently under /auth/ base path\n if (currentPath.startsWith('/auth/')) {\n // If target already has /auth/ prefix, return as-is\n if (targetPath.startsWith('/auth/')) {\n return targetPath;\n }\n // Add /auth/ prefix to the target path\n return `/auth${targetPath}`;\n }\n\n // Not under /auth/, return target path as-is\n return targetPath;\n}\n\n/**\n * Resolves an auth route URL with search params preserved.\n * Similar to resolveAuthPath but returns a full URL string with query parameters.\n *\n * @param targetPath - The target auth path (e.g., '/sign-in', '/sign-up')\n * @param searchParams - Optional URLSearchParams to append\n * @returns The resolved URL as a string\n *\n * @example\n * // Current URL: http://localhost:5174/auth/sign-in?redirect=...\n * resolveAuthUrl('/sign-up', searchParams) // Returns '/auth/sign-up?redirect=...'\n */\nexport function resolveAuthUrl(targetPath: string, searchParams?: URLSearchParams): string {\n const resolvedPath = resolveAuthPath(targetPath);\n\n if (!searchParams || searchParams.toString() === '') {\n return resolvedPath;\n }\n\n return `${resolvedPath}?${searchParams.toString()}`;\n}\n","import { useState, useMemo } from 'react';\nimport { useSearchParams, useNavigationAdapter } from '../../navigation';\nimport { Eye, EyeOff } from 'lucide-react';\nimport { AuthPasswordStrengthIndicator } from './AuthPasswordStrengthIndicator';\nimport type { InputHTMLAttributes } from 'react';\nimport type { AuthConfig } from '../../types';\nimport { resolveAuthUrl } from '../../lib/path-utils';\nimport {\n PasswordFieldWrapper,\n PasswordFieldLabelRow,\n PasswordFieldLabel,\n PasswordFieldForgotLink,\n PasswordFieldInputWrapper,\n PasswordFieldInput,\n PasswordFieldToggleButton,\n} from './styled';\n\nexport interface AuthPasswordFieldProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n id: string;\n showStrengthIndicator?: boolean;\n authConfig: AuthConfig;\n forgotPasswordLink?: {\n href: string;\n text?: string;\n };\n}\n\n/**\n * Password input field with visibility toggle and optional strength indicator.\n */\nexport function AuthPasswordField({\n label,\n id,\n showStrengthIndicator = false,\n authConfig,\n forgotPasswordLink,\n value,\n onFocus,\n ...props\n}: AuthPasswordFieldProps) {\n const searchParams = useSearchParams();\n const { Link } = useNavigationAdapter();\n const [showPassword, setShowPassword] = useState(false);\n const [showStrength, setShowStrength] = useState(false);\n\n // Resolve forgot password link with proper base path handling\n const resolvedForgotPasswordHref = useMemo(\n () => (forgotPasswordLink ? resolveAuthUrl(forgotPasswordLink.href, searchParams) : undefined),\n [forgotPasswordLink, searchParams]\n );\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (showStrengthIndicator) {\n setShowStrength(true);\n }\n onFocus?.(e);\n };\n\n return (\n <PasswordFieldWrapper>\n {(label || forgotPasswordLink) && (\n <PasswordFieldLabelRow>\n <PasswordFieldLabel htmlFor={id}>{label}</PasswordFieldLabel>\n {forgotPasswordLink && resolvedForgotPasswordHref && (\n <Link href={resolvedForgotPasswordHref} className=\"\">\n <PasswordFieldForgotLink as=\"span\">\n {forgotPasswordLink.text || 'Forget Password?'}\n </PasswordFieldForgotLink>\n </Link>\n )}\n </PasswordFieldLabelRow>\n )}\n <PasswordFieldInputWrapper>\n <PasswordFieldInput\n id={id}\n type={showPassword ? 'text' : 'password'}\n value={value}\n onFocus={handleFocus}\n {...props}\n />\n <PasswordFieldToggleButton\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? <EyeOff size={20} /> : <Eye size={20} />}\n </PasswordFieldToggleButton>\n </PasswordFieldInputWrapper>\n {showStrengthIndicator && showStrength && (\n <AuthPasswordStrengthIndicator password={String(value || '')} config={authConfig} />\n )}\n </PasswordFieldWrapper>\n );\n}\n","import { CircleCheck, Loader2 } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { SubmitButton, SubmitButtonIcon, SubmitButtonSpinner } from './styled';\n\nexport interface AuthSubmitButtonProps {\n children: ReactNode;\n isLoading?: boolean;\n confirmed?: boolean;\n disabled?: boolean;\n type?: 'button' | 'submit';\n onClick?: () => void;\n}\n\n/**\n * Primary button for authentication forms with loading and confirmed states.\n *\n * Supports two modes:\n * - **Form submit** (default): type=\"submit\" - triggers form's onSubmit handler\n * - **Action button**: type=\"button\" + onClick - executes custom logic without form submission\n *\n * @component\n * @example\n * ```tsx\n * // Form submit button (default)\n * <AuthSubmitButton isLoading={loading}>\n * Sign In\n * </AuthSubmitButton>\n *\n * // Action button with click handler\n * <AuthSubmitButton type=\"button\" onClick={handleClick} isLoading={loading}>\n * Verify Code\n * </AuthSubmitButton>\n * ```\n */\nexport function AuthSubmitButton({\n children,\n isLoading = false,\n confirmed = false,\n disabled = false,\n type = 'submit',\n onClick,\n}: AuthSubmitButtonProps) {\n return (\n <SubmitButton type={type} disabled={disabled || isLoading || confirmed} onClick={onClick}>\n {isLoading && (\n <SubmitButtonSpinner>\n <Loader2 size={20} />\n </SubmitButtonSpinner>\n )}\n {confirmed && (\n <SubmitButtonIcon>\n <CircleCheck size={20} />\n </SubmitButtonIcon>\n )}\n {children}\n </SubmitButton>\n );\n}\n","import { useSearchParams, useNavigationAdapter } from '../../navigation';\nimport { resolveAuthUrl } from '../../lib/path-utils';\nimport { AuthLinkWrapper, AuthLinkText, AuthLinkLink } from './styled';\n\nexport interface AuthLinkProps {\n text: string;\n linkText: string;\n href: string;\n}\n\n/**\n * Call-to-action link component for navigation between auth pages.\n *\n * @component\n * @example\n * ```tsx\n * <AuthLink\n * text=\"Don't have an account?\"\n * linkText=\"Sign up\"\n * href=\"/sign-up\"\n * />\n * ```\n *\n * @param {string} text - Regular text before the link\n * @param {string} linkText - Clickable link text\n * @param {string} href - Link URL\n */\nexport function AuthLink({ text, linkText, href }: AuthLinkProps) {\n const searchParams = useSearchParams();\n const { Link } = useNavigationAdapter();\n\n // Resolve auth path with proper base path handling and preserve search params\n const finalHref = resolveAuthUrl(href, searchParams);\n\n return (\n <AuthLinkWrapper>\n {text && <AuthLinkText>{text}</AuthLinkText>}\n {text && ' '}\n <Link href={finalHref} className=\"\">\n <AuthLinkLink as=\"span\">{linkText}</AuthLinkLink>\n </Link>\n </AuthLinkWrapper>\n );\n}\n","import { AuthDividerWrapper, AuthDividerLine, AuthDividerText } from './styled';\n\nexport interface AuthDividerProps {\n text?: string;\n}\n\n/**\n * Visual divider with optional centered text for auth forms.\n */\nexport function AuthDivider({ text = 'or' }: AuthDividerProps) {\n return (\n <AuthDividerWrapper>\n <AuthDividerLine />\n <AuthDividerText>{text}</AuthDividerText>\n <AuthDividerLine />\n </AuthDividerWrapper>\n );\n}\n","import type { OAuthProvider, OAuthProviderConfig } from '../types';\n\nexport const OAUTH_PROVIDER_CONFIG: Record<OAuthProvider, OAuthProviderConfig> = {\n google: {\n name: 'Google',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.717v2.258h2.908c1.702-1.567 2.684-3.874 2.684-6.615z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M9 18c2.43 0 4.467-.806 5.956-2.184l-2.908-2.258c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332C2.438 15.983 5.482 18 9 18z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.964 10.707c-.18-.54-.282-1.117-.282-1.707 0-.593.102-1.17.282-1.709V4.958H.957C.347 6.173 0 7.548 0 9c0 1.452.348 2.827.957 4.042l3.007-2.335z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0 5.482 0 2.438 2.017.957 4.958L3.964 7.29C4.672 5.163 6.656 3.58 9 3.58z\"\n fill=\"#EA4335\"\n />\n </svg>\n ),\n className: 'insforge-oauth-google',\n },\n github: {\n name: 'GitHub',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z\" />\n </svg>\n ),\n className: 'insforge-oauth-github',\n },\n discord: {\n name: 'Discord',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z\"\n fill=\"#5865F2\"\n />\n </svg>\n ),\n className: 'insforge-oauth-discord',\n },\n facebook: {\n name: 'Facebook',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M24 12.073C24 5.405 18.627 0 12 0S0 5.405 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047v-2.66c0-3.025 1.792-4.697 4.533-4.697 1.312 0 2.686.236 2.686.236v2.971H15.83c-1.49 0-1.955.93-1.955 1.886v2.264h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073z\"\n fill=\"#1877F2\"\n />\n </svg>\n ),\n className: 'insforge-oauth-facebook',\n },\n linkedin: {\n name: 'LinkedIn',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"\n fill=\"#0A66C2\"\n />\n </svg>\n ),\n className: 'insforge-oauth-linkedin',\n },\n microsoft: {\n name: 'Microsoft',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 23 23\" fill=\"none\">\n <path d=\"M0 0h11v11H0z\" fill=\"#F25022\" />\n <path d=\"M12 0h11v11H12z\" fill=\"#7FBA00\" />\n <path d=\"M0 12h11v11H0z\" fill=\"#00A4EF\" />\n <path d=\"M12 12h11v11H12z\" fill=\"#FFB900\" />\n </svg>\n ),\n className: 'insforge-oauth-microsoft',\n },\n apple: {\n name: 'Apple',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.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\" />\n </svg>\n ),\n className: 'insforge-oauth-apple',\n },\n x: {\n name: 'X',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <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\" />\n </svg>\n ),\n className: 'insforge-oauth-x',\n },\n instagram: {\n name: 'Instagram',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z\"\n fill=\"url(#instagram-gradient)\"\n />\n <defs>\n <linearGradient id=\"instagram-gradient\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor=\"#FD5949\" />\n <stop offset=\"50%\" stopColor=\"#D6249F\" />\n <stop offset=\"100%\" stopColor=\"#285AEB\" />\n </linearGradient>\n </defs>\n </svg>\n ),\n className: 'insforge-oauth-instagram',\n },\n tiktok: {\n name: 'TikTok',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M19.589 6.686a4.793 4.793 0 01-3.77-4.245V2h-3.445v13.672a2.896 2.896 0 01-5.201 1.743l-.002-.001.002.001a2.895 2.895 0 013.183-4.51v-3.5a6.329 6.329 0 00-5.394 10.692 6.33 6.33 0 0010.857-4.424V8.687a8.182 8.182 0 004.773 1.526V6.79a4.831 4.831 0 01-1.003-.104z\"\n fill=\"currentColor\"\n />\n </svg>\n ),\n className: 'insforge-oauth-tiktok',\n },\n spotify: {\n name: 'Spotify',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z\"\n fill=\"#1DB954\"\n />\n </svg>\n ),\n className: 'insforge-oauth-spotify',\n },\n};\n\n/**\n * Get OAuth provider configuration by provider name\n */\nexport function getProviderConfig(provider: OAuthProvider): OAuthProviderConfig | null {\n return OAUTH_PROVIDER_CONFIG[provider] || null;\n}\n\n/**\n * Get all available OAuth provider configurations\n */\nexport function getAllProviderConfigs(): Partial<Record<OAuthProvider, OAuthProviderConfig>> {\n return OAUTH_PROVIDER_CONFIG;\n}\n","import { Loader2 } from 'lucide-react';\nimport { getProviderConfig } from '../../config/oauth-providers';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport type { CSSProperties } from 'react';\nimport { OAuthButton, OAuthButtonIcon, SubmitButtonSpinner } from './styled';\n\nexport interface AuthOAuthButtonProps {\n provider: OAuthProvidersSchema;\n onClick: (provider: OAuthProvidersSchema) => void;\n disabled?: boolean;\n loading?: boolean;\n displayMode?: 'full' | 'short' | 'icon';\n style?: CSSProperties;\n}\n\n/**\n * OAuth provider button with adaptive display modes.\n */\nexport function AuthOAuthButton({\n provider,\n onClick,\n disabled,\n loading,\n displayMode = 'full',\n style,\n}: AuthOAuthButtonProps) {\n const config = getProviderConfig(provider);\n\n if (!config) {\n return null;\n }\n\n const getButtonText = () => {\n if (displayMode === 'full') {\n return `Continue with ${config.name}`;\n }\n if (displayMode === 'short') {\n return config.name;\n }\n return '';\n };\n\n const variant = displayMode === 'icon' ? 'iconOnly' : displayMode;\n\n return (\n <OAuthButton\n type=\"button\"\n onClick={() => onClick(provider)}\n $variant={variant}\n disabled={disabled || loading}\n style={style}\n >\n {loading ? (\n <SubmitButtonSpinner>\n <Loader2 size={18} />\n </SubmitButtonSpinner>\n ) : (\n <OAuthButtonIcon>{config.svg}</OAuthButtonIcon>\n )}\n {!loading && getButtonText() && <span>{getButtonText()}</span>}\n </OAuthButton>\n );\n}\n","import { AuthOAuthButton } from './AuthOAuthButton';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport { OAuthProvidersContainer } from './styled';\n\nexport interface AuthOAuthProvidersProps {\n providers: OAuthProvidersSchema[];\n onClick: (provider: OAuthProvidersSchema) => void;\n disabled?: boolean;\n loading?: OAuthProvidersSchema | null;\n}\n\n/**\n * Smart OAuth provider grid with adaptive layout.\n *\n * Automatically adjusts layout based on provider count:\n * - 1 provider: Full-width\n * - 2 or 4 providers: Two columns\n * - 3+ providers: Three columns\n */\nexport function AuthOAuthProviders({\n providers,\n onClick,\n disabled,\n loading,\n}: AuthOAuthProvidersProps) {\n if (!providers || providers.length === 0) {\n return null;\n }\n\n const count = providers.length;\n\n // Determine display mode based on count\n const getDisplayMode = () => {\n if (count === 1) {\n return 'full';\n }\n if (count === 2 || count === 4) {\n return 'short';\n }\n return 'icon';\n };\n\n // Calculate grid column style for each button\n // Grid is always 6 columns, but buttons span different widths based on total count\n const getGridColumnStyle = (index: number): React.CSSProperties => {\n // 1 button: span all 6 columns\n if (count === 1) {\n return { gridColumn: 'span 6' };\n }\n\n // 2 buttons: each spans 3 columns\n if (count === 2) {\n return { gridColumn: 'span 3' };\n }\n\n // 3 buttons: each spans 2 columns\n if (count === 3) {\n return { gridColumn: 'span 2 / span 2' };\n }\n\n // 4 buttons: 2 rows, each button spans 3 columns\n if (count === 4) {\n return { gridColumn: 'span 3' };\n }\n\n // 5+ buttons: each spans 2 columns, with last row centered if needed\n const totalRows = Math.ceil(count / 3);\n const lastRowStartIndex = (totalRows - 1) * 3;\n const isInLastRow = index >= lastRowStartIndex;\n\n if (!isInLastRow) {\n // Not in last row, use default span 2\n return { gridColumn: 'span 2 / span 2' };\n }\n\n // Calculate position in last row (0-based)\n const positionInLastRow = index - lastRowStartIndex;\n const itemsInLastRow = count - lastRowStartIndex;\n\n if (itemsInLastRow === 1) {\n // Last row has 1 item: center it at columns 3-4 (span 2 in middle)\n return { gridColumn: '3 / 5' };\n } else if (itemsInLastRow === 2) {\n // Last row has 2 items: center them symmetrically\n if (positionInLastRow === 0) {\n return { gridColumn: '2 / 4' }; // First button: cols 2-3\n } else {\n return { gridColumn: '4 / 6' }; // Second button: cols 4-5\n }\n } else {\n // Last row has 3 items: normal span 2\n return { gridColumn: 'span 2 / span 2' };\n }\n };\n\n return (\n <OAuthProvidersContainer\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(6, 1fr)',\n gap: '0.75rem',\n }}\n >\n {providers.map((provider, index) => (\n <AuthOAuthButton\n key={provider}\n provider={provider}\n onClick={onClick}\n disabled={disabled}\n loading={loading === provider}\n displayMode={getDisplayMode()}\n style={getGridColumnStyle(index)}\n />\n ))}\n </OAuthProvidersContainer>\n );\n}\n","import { useRef, KeyboardEvent, ClipboardEvent, ChangeEvent } from 'react';\nimport { VerificationCodeInputContainer, VerificationCodeInput } from './styled';\n\nexport interface AuthVerificationCodeInputProps {\n length?: number;\n value: string;\n onChange: (value: string) => void;\n disabled?: boolean;\n onComplete?: (code: string) => void;\n}\n\n/**\n * 6-digit verification code input component with auto-focus and paste support.\n */\nexport function AuthVerificationCodeInput({\n length = 6,\n value,\n onChange,\n disabled = false,\n onComplete,\n}: AuthVerificationCodeInputProps) {\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n\n const handleChange = (index: number, digit: string) => {\n // Only allow single digits\n if (digit.length > 1) {\n return;\n }\n\n // Only allow numbers\n if (digit && !/^\\d$/.test(digit)) {\n return;\n }\n\n // Update the value\n const newValue = value.split('');\n newValue[index] = digit;\n const updatedValue = newValue.join('');\n onChange(updatedValue);\n\n // Auto-focus next input if digit was entered\n if (digit && index < length - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n\n // Call onComplete if we just filled the last digit\n if (digit && index === length - 1 && updatedValue.length === length && onComplete) {\n onComplete(updatedValue);\n }\n };\n\n const handleKeyDown = (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n // Handle backspace\n if (e.key === 'Backspace') {\n if (!value[index] && index > 0) {\n // If current input is empty, focus previous input\n inputRefs.current[index - 1]?.focus();\n } else {\n // Clear current input\n handleChange(index, '');\n }\n }\n // Handle arrow keys\n else if (e.key === 'ArrowLeft' && index > 0) {\n inputRefs.current[index - 1]?.focus();\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text/plain').trim();\n\n // Only paste if it's all digits and correct length\n if (/^\\d+$/.test(pastedData) && pastedData.length === length) {\n onChange(pastedData);\n // Focus last input\n inputRefs.current[length - 1]?.focus();\n // Call onComplete after paste\n if (onComplete) {\n onComplete(pastedData);\n }\n }\n };\n\n return (\n <VerificationCodeInputContainer>\n {Array.from({ length }).map((_, index) => (\n <VerificationCodeInput\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={1}\n value={value[index] || ''}\n onChange={(e: ChangeEvent<HTMLInputElement>) => handleChange(index, e.target.value)}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n disabled={disabled}\n autoComplete=\"one-time-code\"\n />\n ))}\n </VerificationCodeInputContainer>\n );\n}\n","/** @jsxImportSource @emotion/react */\nimport styled from '@emotion/styled';\nimport { theme } from '../../styles/theme';\n\n/* ============================================\n FORM CONTAINER\n ============================================ */\nexport const FormWrapper = styled.form`\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: center;\n gap: ${theme.spacing[6]};\n`;\n\n/* ============================================\n VERIFICATION STEP\n ============================================ */\nexport const VerificationStepWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[6]};\n align-items: stretch;\n`;\n\nexport const VerificationStepDescriptionContainer = styled.div`\n width: 100%;\n background-color: ${theme.colors.bgGray};\n border-radius: ${theme.radius.lg};\n padding: ${theme.spacing[3]} ${theme.spacing[3]} ${theme.spacing[6]} ${theme.spacing[3]};\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[3]};\n`;\n\nexport const VerificationStepDescriptionTitle = styled.h3`\n color: ${theme.colors.black};\n font-family: ${theme.fontFamily.base};\n font-size: ${theme.fontSize.base};\n font-style: normal;\n font-weight: ${theme.fontWeight.semibold};\n line-height: 24px;\n margin: 0;\n`;\n\nexport const VerificationStepDescription = styled.p`\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textGray};\n text-align: left;\n font-family: ${theme.fontFamily.base};\n margin: 0;\n`;\n\nexport const VerificationEmail = styled.span`\n font-weight: ${theme.fontWeight.medium};\n color: ${theme.colors.text};\n`;\n\nexport const VerificationStepCodeContainer = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[10]};\n`;\n\nexport const VerificationStepCodeInputWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[6]};\n`;\n\nexport const VerificationStepVerifyingText = styled.p`\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textSecondary};\n text-align: center;\n font-family: ${theme.fontFamily.base};\n margin: 0;\n`;\n\nexport const VerificationStepResendContainer = styled.div`\n width: 100%;\n font-size: ${theme.fontSize.sm};\n text-align: center;\n color: ${theme.colors.textSecondary};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const VerificationStepResendButton = styled.button`\n color: ${theme.colors.text};\n font-weight: ${theme.fontWeight.medium};\n transition: all ${theme.transition.base};\n background: none;\n border: none;\n padding: 0;\n font-family: ${theme.fontFamily.base};\n font-size: ${theme.fontSize.sm};\n\n &:not(:disabled) {\n cursor: pointer;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n`;\n\n/* ============================================\n EMAIL VERIFICATION STATUS\n ============================================ */\nexport const VerifyStatusContainer = styled.div<{ $stretch?: boolean }>`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: ${(props: { $stretch?: boolean }) => (props.$stretch ? 'stretch' : 'center')};\n justify-content: center;\n gap: ${theme.spacing[6]};\n`;\n\nexport const VerifyStatusSpinner = styled.div`\n border-radius: ${theme.radius.full};\n height: ${theme.sizes.verifyCode};\n width: ${theme.sizes.verifyCode};\n border-bottom: 2px solid ${theme.colors.primary};\n`;\n\nexport const VerifyStatusSuccessContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: ${theme.spacing[4]};\n`;\n\nexport const VerifyStatusSuccessIcon = styled.div`\n width: ${theme.sizes.verifyIcon};\n height: ${theme.sizes.verifyIcon};\n border-radius: ${theme.radius.full};\n background-color: ${theme.colors.successBg};\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const VerifyStatusSuccessIconSvg = styled.div`\n width: ${theme.sizes.verifyIconInner};\n height: ${theme.sizes.verifyIconInner};\n color: ${theme.colors.successDark};\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\nexport const VerifyStatusTextCenter = styled.p`\n text-align: center;\n font-family: ${theme.fontFamily.base};\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.text};\n margin: 0;\n`;\n\n/* ============================================\n UTILITY CLASSES\n ============================================ */\nexport const Hidden = styled.div`\n display: none;\n`;\n\nexport const VisuallyHidden = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n`;\n","import { useState, useEffect } from 'react';\nimport { AuthVerificationCodeInput } from './AuthVerificationCodeInput';\nimport { AuthSubmitButton } from './AuthSubmitButton';\nimport { useInsforge } from '../../provider/InsforgeProvider';\nimport type { EmailVerificationMethod } from '../../types';\nimport {\n VerificationStepWrapper,\n VerificationStepDescriptionContainer,\n VerificationStepDescriptionTitle,\n VerificationStepDescription,\n VerificationEmail,\n VerificationStepCodeContainer,\n VerificationStepCodeInputWrapper,\n VerificationStepResendContainer,\n VerificationStepResendButton,\n} from '../forms/styled';\n\ninterface AuthEmailVerificationStepProps {\n email: string;\n method: EmailVerificationMethod;\n onVerifyCode?: (code: string) => Promise<void>;\n emailSent?: boolean;\n}\n\n/**\n * Email verification step component (pure UI, no container)\n *\n * Designed to be embedded within a form container.\n * Handles the email verification flow:\n * - Automatically sends verification email on mount\n * - Shows countdown timer for resend functionality\n * - Manages rate limiting for resend attempts\n * - Supports both code and link verification methods\n *\n * @param method - 'code' for OTP input, 'link' for magic link (default: 'code')\n */\nexport function AuthEmailVerificationStep({\n email,\n method,\n onVerifyCode,\n emailSent = false,\n}: AuthEmailVerificationStepProps) {\n const { sendVerificationEmail } = useInsforge();\n const [resendDisabled, setResendDisabled] = useState(emailSent ? true : false);\n const [resendCountdown, setResendCountdown] = useState(emailSent ? 60 : 0);\n const [isSending, setIsSending] = useState(false);\n const [verificationCode, setVerificationCode] = useState('');\n const [isVerifying, setIsVerifying] = useState(false);\n\n const isLinkMethod = method === 'link';\n // Default descriptions based on method\n const displayDescription = isLinkMethod\n ? \"We've sent an email to {email}. Please check your email to confirm your account before signing in. The confirmation link expires in 10 minutes.\"\n : \"We've sent a verification code to your inbox at {email}. Enter it below to proceed.\";\n\n // Countdown timer effect\n useEffect(() => {\n if (resendDisabled && resendCountdown > 0) {\n const timer = setInterval(() => {\n setResendCountdown((prev) => {\n if (prev <= 1) {\n setResendDisabled(false);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearInterval(timer);\n }\n }, [resendDisabled, resendCountdown]);\n\n const handleResend = async () => {\n setResendDisabled(true);\n setResendCountdown(60);\n setIsSending(true);\n\n try {\n await sendVerificationEmail(email);\n } catch {\n // If resend fails, re-enable the button immediately\n setResendDisabled(false);\n setResendCountdown(0);\n } finally {\n setIsSending(false);\n }\n };\n\n const handleSubmit = async () => {\n if (!onVerifyCode || verificationCode.length !== 6) {\n return;\n }\n\n setIsVerifying(true);\n\n try {\n await onVerifyCode(verificationCode);\n } finally {\n setIsVerifying(false);\n setVerificationCode('');\n }\n };\n\n return (\n <VerificationStepWrapper>\n {/* Description with email (only for link method) */}\n {isLinkMethod && (\n <VerificationStepDescriptionContainer>\n <VerificationStepDescriptionTitle>Verify Your Email</VerificationStepDescriptionTitle>\n <VerificationStepDescription>\n {displayDescription.split('{email}').map((part, index, array) => (\n <span key={index}>\n {part}\n {index < array.length - 1 && <VerificationEmail>{email}</VerificationEmail>}\n </span>\n ))}\n </VerificationStepDescription>\n </VerificationStepDescriptionContainer>\n )}\n\n {/* Description with email + code input (only for code method) */}\n {!isLinkMethod && (\n <VerificationStepCodeContainer>\n <VerificationStepCodeInputWrapper>\n <VerificationStepDescription>\n {displayDescription.split('{email}').map((part, index, array) => (\n <span key={index}>\n {part}\n {index < array.length - 1 && <VerificationEmail>{email}</VerificationEmail>}\n </span>\n ))}\n </VerificationStepDescription>\n <AuthVerificationCodeInput\n value={verificationCode}\n onChange={setVerificationCode}\n disabled={isVerifying}\n />\n </VerificationStepCodeInputWrapper>\n\n <AuthSubmitButton\n type=\"button\"\n isLoading={isVerifying}\n disabled={isVerifying || verificationCode.length !== 6}\n onClick={() => {\n void handleSubmit();\n }}\n >\n {isVerifying ? 'Verifying...' : 'Continue'}\n </AuthSubmitButton>\n </VerificationStepCodeContainer>\n )}\n\n {/* Resend Button */}\n <VerificationStepResendContainer>\n Didn't receive the email?{' '}\n <VerificationStepResendButton\n onClick={() => {\n void handleResend();\n }}\n disabled={resendDisabled || isSending}\n >\n {isSending\n ? 'Sending...'\n : resendDisabled\n ? `Retry in (${resendCountdown}s)`\n : 'Click to resend'}\n </VerificationStepResendButton>\n </VerificationStepResendContainer>\n </VerificationStepWrapper>\n );\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { AuthVerificationCodeInput } from './AuthVerificationCodeInput';\nimport { AuthSubmitButton } from './AuthSubmitButton';\nimport type { EmailVerificationMethod } from '../../types';\nimport {\n VerificationStepWrapper,\n VerificationStepDescriptionContainer,\n VerificationStepDescriptionTitle,\n VerificationStepDescription,\n VerificationEmail,\n VerificationStepCodeContainer,\n VerificationStepCodeInputWrapper,\n VerificationStepResendContainer,\n VerificationStepResendButton,\n} from '../forms/styled';\n\ninterface AuthResetPasswordVerificationStepProps {\n email: string;\n method: EmailVerificationMethod;\n onVerifyCode?: (code: string) => Promise<void>;\n onResendEmail: () => Promise<void>;\n}\n\n/**\n * Reset password verification step component\n *\n * Handles the verification flow for password reset:\n * - Shows appropriate UI based on method (code input or link message)\n * - Manages countdown timer for resend functionality\n * - Handles code verification for code method\n */\nexport function AuthResetPasswordVerificationStep({\n email,\n method,\n onVerifyCode,\n onResendEmail,\n}: AuthResetPasswordVerificationStepProps) {\n const [resendDisabled, setResendDisabled] = useState(true);\n const [resendCountdown, setResendCountdown] = useState(60);\n const [isSending, setIsSending] = useState(false);\n const [verificationCode, setVerificationCode] = useState('');\n const [isVerifying, setIsVerifying] = useState(false);\n\n const isLinkMethod = method === 'link';\n const displayDescription = isLinkMethod\n ? 'We have sent an email to {email}. Please check your email to reset your password. The link expires in 10 minutes.'\n : \"We've sent a reset password code to your inbox at {email}. Enter it below to proceed.\";\n\n // Countdown timer effect\n useEffect(() => {\n if (resendCountdown > 0) {\n const timer = setInterval(() => {\n setResendCountdown((prev) => {\n if (prev <= 1) {\n setResendDisabled(false);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearInterval(timer);\n }\n }, [resendCountdown]);\n\n const handleResend = useCallback(async () => {\n setResendDisabled(true);\n setResendCountdown(60);\n setIsSending(true);\n\n try {\n await onResendEmail();\n } catch {\n // If resend fails, re-enable the button immediately\n setResendDisabled(false);\n setResendCountdown(0);\n } finally {\n setIsSending(false);\n }\n }, [onResendEmail]);\n\n const handleSubmit = async () => {\n if (!onVerifyCode || verificationCode.length !== 6) {\n return;\n }\n\n setIsVerifying(true);\n\n try {\n await onVerifyCode(verificationCode);\n } finally {\n setIsVerifying(false);\n setVerificationCode('');\n }\n };\n\n return (\n <VerificationStepWrapper>\n {/* Description with email (only for link method) */}\n {isLinkMethod && (\n <VerificationStepDescriptionContainer>\n <VerificationStepDescriptionTitle>Check Your Email</VerificationStepDescriptionTitle>\n <VerificationStepDescription>\n {displayDescription.split('{email}').map((part, index, array) => (\n <span key={index}>\n {part}\n {index < array.length - 1 && <VerificationEmail>{email}</VerificationEmail>}\n </span>\n ))}\n </VerificationStepDescription>\n </VerificationStepDescriptionContainer>\n )}\n\n {/* Code Input (only for code method) */}\n {!isLinkMethod && (\n <VerificationStepCodeContainer>\n <VerificationStepCodeInputWrapper>\n <AuthVerificationCodeInput\n value={verificationCode}\n onChange={setVerificationCode}\n disabled={isVerifying}\n />\n </VerificationStepCodeInputWrapper>\n\n <AuthSubmitButton\n type=\"button\"\n isLoading={isVerifying}\n disabled={isVerifying || verificationCode.length !== 6}\n onClick={() => {\n void handleSubmit();\n }}\n >\n {isVerifying ? 'Verifying...' : 'Continue'}\n </AuthSubmitButton>\n </VerificationStepCodeContainer>\n )}\n\n {/* Resend Button */}\n <VerificationStepResendContainer>\n Didn't receive the email?{' '}\n <VerificationStepResendButton\n onClick={() => {\n void handleResend();\n }}\n disabled={resendDisabled || isSending}\n >\n {isSending\n ? 'Sending...'\n : resendDisabled\n ? `Retry in (${resendCountdown}s)`\n : 'Click to resend'}\n </VerificationStepResendButton>\n </VerificationStepResendContainer>\n </VerificationStepWrapper>\n );\n}\n","import {\n AuthContainer,\n AuthHeader,\n AuthErrorBanner,\n AuthFormField,\n AuthPasswordField,\n AuthSubmitButton,\n AuthLink,\n AuthDivider,\n AuthOAuthProviders,\n AuthEmailVerificationStep,\n} from '../atoms';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport type { FormEvent } from 'react';\nimport type { AuthConfig } from '../../types';\nimport { theme } from '../../styles/theme';\n\nexport interface SignInFormProps {\n email: string;\n password: string;\n onEmailChange: (email: string) => void;\n onPasswordChange: (password: string) => void;\n onSubmit: (e: FormEvent<HTMLFormElement>) => void;\n error?: string;\n loading?: boolean;\n oauthLoading?: OAuthProvidersSchema | null;\n onOAuthClick?: (provider: OAuthProvidersSchema) => void;\n authConfig: AuthConfig;\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n passwordLabel?: string;\n passwordPlaceholder?: string;\n forgotPasswordText?: string;\n forgotPasswordUrl?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n signUpText?: string;\n signUpLinkText?: string;\n signUpUrl?: string;\n dividerText?: string;\n showVerificationStep?: boolean;\n onVerifyCode?: (code: string) => Promise<void>;\n}\n\n/**\n * Pre-built sign-in form component (UI only, no business logic).\n */\nexport function SignInForm({\n email,\n password,\n onEmailChange,\n onPasswordChange,\n onSubmit,\n error,\n loading = false,\n oauthLoading = null,\n onOAuthClick,\n authConfig,\n title = 'Welcome Back',\n subtitle = 'Login to your account',\n emailLabel = 'Email',\n emailPlaceholder = 'example@email.com',\n passwordLabel = 'Password',\n passwordPlaceholder = '••••••',\n forgotPasswordText = 'Forget Password?',\n forgotPasswordUrl = '/forgot-password',\n submitButtonText = 'Sign In',\n loadingButtonText = 'Signing in...',\n signUpText = \"Don't have an account?\",\n signUpLinkText = 'Sign Up Now',\n signUpUrl = '/sign-up',\n dividerText = 'or',\n showVerificationStep = false,\n onVerifyCode,\n}: SignInFormProps) {\n return (\n <AuthContainer>\n <AuthHeader title={title} subtitle={subtitle} />\n\n <AuthErrorBanner error={error || ''} />\n\n {showVerificationStep ? (\n <AuthEmailVerificationStep\n email={email}\n method={authConfig.verifyEmailMethod}\n onVerifyCode={onVerifyCode}\n emailSent={false}\n />\n ) : (\n <form\n onSubmit={onSubmit}\n noValidate\n style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing[6] }}\n >\n <AuthFormField\n id=\"email\"\n type=\"email\"\n label={emailLabel}\n placeholder={emailPlaceholder}\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n required\n autoComplete=\"email\"\n />\n\n <AuthPasswordField\n id=\"password\"\n label={passwordLabel}\n placeholder={passwordPlaceholder}\n value={password}\n onChange={(e) => onPasswordChange(e.target.value)}\n required\n autoComplete=\"current-password\"\n authConfig={authConfig}\n forgotPasswordLink={\n forgotPasswordUrl\n ? {\n href: forgotPasswordUrl,\n text: forgotPasswordText,\n }\n : undefined\n }\n />\n\n <AuthSubmitButton isLoading={loading} disabled={loading || oauthLoading !== null}>\n {loading ? loadingButtonText : submitButtonText}\n </AuthSubmitButton>\n </form>\n )}\n\n {!showVerificationStep && (\n <>\n <AuthLink text={signUpText} linkText={signUpLinkText} href={signUpUrl} />\n\n {authConfig.oAuthProviders.length > 0 && onOAuthClick && (\n <>\n <AuthDivider text={dividerText} />\n <AuthOAuthProviders\n providers={authConfig.oAuthProviders}\n onClick={onOAuthClick}\n disabled={loading || oauthLoading !== null}\n loading={oauthLoading}\n />\n </>\n )}\n </>\n )}\n </AuthContainer>\n );\n}\n","import { useState, FormEvent } from 'react';\nimport { useSearchParams } from '../navigation';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport { useInsforge } from '../provider/InsforgeProvider';\nimport { usePublicAuthConfig } from '../hooks/usePublicAuthConfig';\nimport { SignInForm } from './forms/SignInForm';\n\ntype SignInStep = 'form' | 'awaiting-verification';\n\nexport interface SignInProps {\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n passwordLabel?: string;\n passwordPlaceholder?: string;\n forgotPasswordText?: string;\n forgotPasswordUrl?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n signUpText?: string;\n signUpLinkText?: string;\n signUpUrl?: string;\n dividerText?: string;\n onError?: (error: Error) => void;\n}\n\n/**\n * Pre-built sign-in component with full authentication logic.\n *\n * @component\n * @example\n * ```tsx\n * <SignIn\n * onSuccess={(user) => console.log('Signed in:', user)}\n * onError={(error) => console.error('Error:', error)}\n * />\n * ```\n */\nexport function SignIn({ onError, ...uiProps }: SignInProps) {\n const { signIn, verifyEmail, loginWithOAuth } = useInsforge();\n const { authConfig } = usePublicAuthConfig();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const [step, setStep] = useState<SignInStep>('form');\n const [oauthLoading] = useState<OAuthProvidersSchema | null>(null);\n\n const searchParams = useSearchParams();\n const redirectUrl = searchParams.get('redirect');\n\n async function handleSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setLoading(true);\n setError('');\n\n try {\n const result = await signIn(email, password);\n if ('error' in result) {\n // Check if email verification is required (403 status code)\n if (result.statusCode === 403) {\n setStep('awaiting-verification');\n setLoading(false);\n return;\n }\n throw new Error(result.error);\n }\n const { user, accessToken, redirectTo } = result;\n const csrfToken = result.csrfToken;\n\n if (user) {\n const finalUrl = new URL(redirectTo || redirectUrl || '', window.location.origin);\n finalUrl.searchParams.set('access_token', accessToken);\n finalUrl.searchParams.set('user_id', user.id);\n finalUrl.searchParams.set('email', user.email);\n finalUrl.searchParams.set('name', user.profile?.name || '');\n if (csrfToken) {\n finalUrl.searchParams.set('csrf_token', csrfToken);\n }\n window.location.href = finalUrl.toString();\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Sign in failed';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n } finally {\n setLoading(false);\n }\n }\n\n async function handleVerifyCode(code: string) {\n setError('');\n try {\n const result = await verifyEmail(code, email);\n\n if (!result) {\n throw new Error('Verification failed');\n }\n\n const finalUrl = new URL(result.redirectTo || redirectUrl || '', window.location.origin);\n finalUrl.searchParams.set('access_token', result.accessToken);\n finalUrl.searchParams.set('user_id', result.user.id);\n finalUrl.searchParams.set('email', result.user.email);\n finalUrl.searchParams.set('name', result.user.profile?.name || '');\n if (result.csrfToken) {\n finalUrl.searchParams.set('csrf_token', result.csrfToken);\n }\n window.location.href = finalUrl.toString();\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Invalid verification code';\n setError(errorMessage);\n }\n }\n\n function handleOAuth(provider: OAuthProvidersSchema) {\n try {\n void loginWithOAuth(provider, redirectUrl || '');\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'OAuth login failed';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n }\n\n // If email auth is disabled after loading, don't show the form\n if (!authConfig) {\n return null;\n }\n\n return (\n <SignInForm\n email={email}\n password={password}\n onEmailChange={setEmail}\n onPasswordChange={setPassword}\n onSubmit={(e) => void handleSubmit(e)}\n error={error}\n loading={loading}\n oauthLoading={oauthLoading}\n onOAuthClick={handleOAuth}\n authConfig={authConfig}\n showVerificationStep={step === 'awaiting-verification'}\n onVerifyCode={handleVerifyCode}\n {...uiProps}\n />\n );\n}\n","import {\n AuthContainer,\n AuthHeader,\n AuthErrorBanner,\n AuthFormField,\n AuthPasswordField,\n AuthSubmitButton,\n AuthLink,\n AuthDivider,\n AuthOAuthProviders,\n AuthEmailVerificationStep,\n} from '../atoms';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport type { FormEvent } from 'react';\nimport type { AuthConfig } from '../../types';\nimport { theme } from '../../styles/theme';\n\nexport interface SignUpFormProps {\n email: string;\n password: string;\n onEmailChange: (email: string) => void;\n onPasswordChange: (password: string) => void;\n onSubmit: (e: FormEvent<HTMLFormElement>) => void;\n error?: string;\n loading?: boolean;\n oauthLoading?: OAuthProvidersSchema | null;\n onOAuthClick?: (provider: OAuthProvidersSchema) => void;\n authConfig: AuthConfig;\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n passwordLabel?: string;\n passwordPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n signInText?: string;\n signInLinkText?: string;\n signInUrl?: string;\n dividerText?: string;\n showVerificationStep?: boolean;\n onVerifyCode?: (code: string) => Promise<void>;\n}\n\n/**\n * Pre-built sign-up form component (UI only, no business logic).\n */\nexport function SignUpForm({\n email,\n password,\n onEmailChange,\n onPasswordChange,\n onSubmit,\n error,\n loading = false,\n oauthLoading = null,\n onOAuthClick,\n authConfig,\n title = 'Get Started',\n subtitle = 'Create your account',\n emailLabel = 'Email',\n emailPlaceholder = 'example@email.com',\n passwordLabel = 'Password',\n passwordPlaceholder = '••••••',\n submitButtonText = 'Sign Up',\n loadingButtonText = 'Creating account...',\n signInText = 'Already have an account?',\n signInLinkText = 'Login Now',\n signInUrl = '/sign-in',\n dividerText = 'or',\n showVerificationStep = false,\n onVerifyCode,\n}: SignUpFormProps) {\n return (\n <AuthContainer>\n <AuthHeader title={title} subtitle={subtitle} />\n\n <AuthErrorBanner error={error || ''} />\n\n {showVerificationStep ? (\n <AuthEmailVerificationStep\n email={email}\n method={authConfig.verifyEmailMethod}\n onVerifyCode={onVerifyCode}\n emailSent={true}\n />\n ) : (\n <form\n onSubmit={onSubmit}\n noValidate\n style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing[6] }}\n >\n <AuthFormField\n id=\"email\"\n type=\"email\"\n label={emailLabel}\n placeholder={emailPlaceholder}\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n required\n autoComplete=\"email\"\n />\n\n <AuthPasswordField\n id=\"password\"\n label={passwordLabel}\n placeholder={passwordPlaceholder}\n value={password}\n onChange={(e) => onPasswordChange(e.target.value)}\n required\n autoComplete=\"new-password\"\n showStrengthIndicator\n authConfig={authConfig}\n />\n\n <AuthSubmitButton isLoading={loading} disabled={loading || oauthLoading !== null}>\n {loading ? loadingButtonText : submitButtonText}\n </AuthSubmitButton>\n </form>\n )}\n\n {!showVerificationStep && (\n <>\n <AuthLink text={signInText} linkText={signInLinkText} href={signInUrl} />\n\n {authConfig.oAuthProviders.length > 0 && onOAuthClick && (\n <>\n <AuthDivider text={dividerText} />\n <AuthOAuthProviders\n providers={authConfig.oAuthProviders}\n onClick={onOAuthClick}\n disabled={loading || oauthLoading !== null}\n loading={oauthLoading}\n />\n </>\n )}\n </>\n )}\n </AuthContainer>\n );\n}\n","import { z } from 'zod';\n\n/**\n * Email validation schema\n */\nexport const emailSchema = z.string().min(1, 'Email is required').email('Invalid email address');\n\n/**\n * Password validation schema with configurable requirements\n */\nexport function createPasswordSchema(options?: {\n minLength?: number;\n requireUppercase?: boolean;\n requireLowercase?: boolean;\n requireNumber?: boolean;\n requireSpecialChar?: boolean;\n}) {\n const {\n minLength = 6,\n requireUppercase = false,\n requireLowercase = false,\n requireNumber = false,\n requireSpecialChar = false,\n } = options || {};\n\n let schema = z.string().min(minLength, `Password must be at least ${minLength} characters`);\n\n if (requireUppercase) {\n schema = schema.regex(/[A-Z]/, 'Password must contain at least one uppercase letter');\n }\n\n if (requireLowercase) {\n schema = schema.regex(/[a-z]/, 'Password must contain at least one lowercase letter');\n }\n\n if (requireNumber) {\n schema = schema.regex(/\\d/, 'Password must contain at least one number');\n }\n\n if (requireSpecialChar) {\n schema = schema.regex(\n /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/,\n 'Password must contain at least one special character'\n );\n }\n\n return schema;\n}\n\n/**\n * Default password schema (minimum 6 characters)\n */\nexport const passwordSchema = createPasswordSchema();\n\n/**\n * Validate email format\n */\nexport function validateEmail(email: string): { valid: boolean; error?: string } {\n const result = emailSchema.safeParse(email);\n if (result.success) {\n return { valid: true };\n }\n return { valid: false, error: result.error.message };\n}\n\n/**\n * Validate password format\n */\nexport function validatePassword(\n password: string,\n options?: Parameters<typeof createPasswordSchema>[0]\n): { valid: boolean; error?: string } {\n const schema = createPasswordSchema(options);\n const result = schema.safeParse(password);\n if (result.success) {\n return { valid: true };\n }\n return { valid: false, error: result.error.message };\n}\n\n/**\n * Validate password strength based on multiple criteria\n */\nexport function checkPasswordStrength(password: string): {\n score: number;\n feedback: string[];\n} {\n const feedback: string[] = [];\n let score = 0;\n\n if (password.length >= 8) {\n score += 1;\n } else {\n feedback.push('Use at least 8 characters');\n }\n\n if (password.length >= 12) {\n score += 1;\n }\n\n if (/[a-z]/.test(password) && /[A-Z]/.test(password)) {\n score += 1;\n } else {\n feedback.push('Use both uppercase and lowercase letters');\n }\n\n if (/\\d/.test(password)) {\n score += 1;\n } else {\n feedback.push('Include at least one number');\n }\n\n if (/[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/.test(password)) {\n score += 1;\n } else {\n feedback.push('Include at least one special character');\n }\n\n return { score, feedback };\n}\n","import { useState, FormEvent } from 'react';\nimport { useSearchParams } from '../navigation';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport { useInsforge } from '../provider/InsforgeProvider';\nimport { usePublicAuthConfig } from '../hooks/usePublicAuthConfig';\nimport { SignUpForm } from './forms/SignUpForm';\nimport { emailSchema, createPasswordSchema } from '../lib/validation';\n\ntype SignUpStep = 'form' | 'awaiting-verification';\n\nexport interface SignUpProps {\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n passwordLabel?: string;\n passwordPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n signInText?: string;\n signInLinkText?: string;\n signInUrl?: string;\n dividerText?: string;\n onError?: (error: Error) => void;\n}\n\n/**\n * Pre-built sign-up component with full authentication logic.\n *\n * @component\n * @example\n * ```tsx\n * <SignUp\n * onError={(error) => console.error('Error:', error)}\n * />\n *\n * ```\n */\nexport function SignUp({ onError, ...uiProps }: SignUpProps) {\n const { signUp, verifyEmail, loginWithOAuth } = useInsforge();\n const { authConfig } = usePublicAuthConfig();\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const [step, setStep] = useState<SignUpStep>('form');\n const [oauthLoading] = useState<OAuthProvidersSchema | null>(null);\n\n const searchParams = useSearchParams();\n const redirectUrl = searchParams.get('redirect');\n\n async function handleSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setLoading(true);\n setError('');\n\n // Check if authConfig is loaded\n if (!authConfig) {\n setError('Configuration not loaded. Please refresh the page.');\n setLoading(false);\n return;\n }\n\n // Validate email using Zod schema\n const emailValidation = emailSchema.safeParse(email);\n if (!emailValidation.success) {\n const firstError = emailValidation.error.issues[0];\n setError(firstError.message);\n setLoading(false);\n return;\n }\n\n // Validate password using dynamic Zod schema based on config\n const passwordZodSchema = createPasswordSchema({\n minLength: authConfig.passwordMinLength,\n requireUppercase: authConfig.requireUppercase,\n requireLowercase: authConfig.requireLowercase,\n requireNumber: authConfig.requireNumber,\n requireSpecialChar: authConfig.requireSpecialChar,\n });\n\n const passwordValidation = passwordZodSchema.safeParse(password);\n if (!passwordValidation.success) {\n const firstError = passwordValidation.error.issues[0];\n setError(firstError.message);\n setLoading(false);\n return;\n }\n\n try {\n const result = await signUp(emailValidation.data, password);\n if ('error' in result) {\n throw new Error(result.error);\n }\n\n // Check if email verification is required\n if (result.requireEmailVerification && !result.accessToken) {\n setStep('awaiting-verification');\n setLoading(false);\n return;\n }\n\n // If we have an access token, proceed with success callback\n if (result.accessToken && result.user) {\n const csrfToken = result.csrfToken;\n const finalUrl = new URL(result.redirectTo || redirectUrl || '', window.location.origin);\n finalUrl.searchParams.set('access_token', result.accessToken);\n finalUrl.searchParams.set('user_id', result.user.id);\n finalUrl.searchParams.set('email', result.user.email);\n finalUrl.searchParams.set('name', result.user.profile?.name || '');\n if (csrfToken) {\n finalUrl.searchParams.set('csrf_token', csrfToken);\n }\n window.location.href = finalUrl.toString();\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Sign up failed';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n } finally {\n setLoading(false);\n }\n }\n\n async function handleVerifyCode(code: string) {\n setError('');\n try {\n const result = await verifyEmail(code, email);\n\n if (!result) {\n throw new Error('Verification failed');\n }\n\n const finalUrl = new URL(result.redirectTo || redirectUrl || '', window.location.origin);\n finalUrl.searchParams.set('access_token', result.accessToken);\n finalUrl.searchParams.set('user_id', result.user.id);\n finalUrl.searchParams.set('email', result.user.email);\n finalUrl.searchParams.set('name', result.user.profile?.name || '');\n if (result.csrfToken) {\n finalUrl.searchParams.set('csrf_token', result.csrfToken);\n }\n window.location.href = finalUrl.toString();\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Invalid verification code';\n setError(errorMessage);\n }\n }\n\n function handleOAuth(provider: OAuthProvidersSchema) {\n try {\n void loginWithOAuth(provider, redirectUrl || '');\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'OAuth login failed';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n }\n\n // If email auth is disabled after loading, don't show the form\n if (!authConfig) {\n return null;\n }\n\n return (\n <SignUpForm\n email={email}\n password={password}\n onEmailChange={setEmail}\n onPasswordChange={setPassword}\n onSubmit={(e) => void handleSubmit(e)}\n error={error}\n loading={loading}\n oauthLoading={oauthLoading}\n onOAuthClick={handleOAuth}\n authConfig={authConfig}\n showVerificationStep={step === 'awaiting-verification'}\n onVerifyCode={handleVerifyCode}\n {...uiProps}\n />\n );\n}\n","import {\n AuthContainer,\n AuthHeader,\n AuthErrorBanner,\n AuthFormField,\n AuthSubmitButton,\n AuthLink,\n AuthResetPasswordVerificationStep,\n} from '../atoms';\nimport type { FormEvent } from 'react';\nimport { theme } from '../../styles/theme';\n\ntype ResetPasswordMethod = 'code' | 'link';\n\nexport interface ForgotPasswordFormProps {\n email: string;\n onEmailChange: (email: string) => void;\n onSubmit: (e: FormEvent<HTMLFormElement>) => void;\n error?: string;\n loading?: boolean;\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n backToSignInText?: string;\n backToSignInUrl?: string;\n showVerificationStep?: boolean;\n resetPasswordMethod?: ResetPasswordMethod;\n onVerifyCode?: (code: string) => Promise<void>;\n onResendEmail?: () => Promise<void>;\n}\n\n/**\n * Pre-built forgot password form component (UI only, no business logic).\n */\nexport function ForgotPasswordForm({\n email,\n onEmailChange,\n onSubmit,\n error,\n loading = false,\n title = 'Forgot Password?',\n subtitle = \"Enter your email address and we'll send you a {method} to reset your password.\",\n emailLabel = 'Email',\n emailPlaceholder = 'example@email.com',\n submitButtonText = 'Reset Password',\n loadingButtonText = 'Sending...',\n backToSignInText = 'Remember your password?',\n backToSignInUrl = '/sign-in',\n showVerificationStep = false,\n resetPasswordMethod = 'code',\n onVerifyCode,\n onResendEmail,\n}: ForgotPasswordFormProps) {\n const displaySubtitle = subtitle.replace('{method}', resetPasswordMethod);\n\n return (\n <AuthContainer>\n <AuthHeader title={title} subtitle={displaySubtitle} />\n\n <AuthErrorBanner error={error || ''} />\n\n {showVerificationStep ? (\n <AuthResetPasswordVerificationStep\n email={email}\n method={resetPasswordMethod}\n onVerifyCode={onVerifyCode}\n onResendEmail={onResendEmail || (async () => {})}\n />\n ) : (\n <form\n onSubmit={onSubmit}\n noValidate\n style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing[6] }}\n >\n <AuthFormField\n id=\"email\"\n type=\"email\"\n label={emailLabel}\n placeholder={emailPlaceholder}\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n required\n autoComplete=\"email\"\n />\n\n <AuthSubmitButton isLoading={loading} disabled={loading}>\n {loading ? loadingButtonText : submitButtonText}\n </AuthSubmitButton>\n </form>\n )}\n\n {!showVerificationStep && (\n <AuthLink text={backToSignInText} linkText=\"Back to Sign In\" href={backToSignInUrl} />\n )}\n </AuthContainer>\n );\n}\n","import {\n AuthContainer,\n AuthHeader,\n AuthErrorBanner,\n AuthPasswordField,\n AuthSubmitButton,\n} from '../atoms';\nimport type { FormEvent } from 'react';\nimport type { AuthConfig } from '../../types';\nimport { theme } from '../../styles/theme';\nimport {\n VerifyStatusContainer,\n VerifyStatusSuccessContent,\n VerifyStatusSuccessIcon,\n VerifyStatusSuccessIconSvg,\n VerifyStatusTextCenter,\n} from './styled';\n\nexport interface ResetPasswordFormProps {\n newPassword: string;\n confirmPassword: string;\n onNewPasswordChange: (password: string) => void;\n onConfirmPasswordChange: (password: string) => void;\n onSubmit: (e: FormEvent<HTMLFormElement>) => void;\n error?: string;\n loading?: boolean;\n success?: boolean;\n authConfig: AuthConfig;\n title?: string;\n subtitle?: string;\n newPasswordLabel?: string;\n newPasswordPlaceholder?: string;\n confirmPasswordLabel?: string;\n confirmPasswordPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n successTitle?: string;\n}\n\n/**\n * Pre-built reset password form component (UI only, no business logic).\n */\nexport function ResetPasswordForm({\n newPassword,\n confirmPassword,\n onNewPasswordChange,\n onConfirmPasswordChange,\n onSubmit,\n error,\n loading = false,\n success = false,\n authConfig,\n title = 'Reset Password',\n subtitle = 'Enter your new password below.',\n newPasswordLabel = 'New Password',\n newPasswordPlaceholder = '••••••',\n confirmPasswordLabel = 'Confirm Password',\n confirmPasswordPlaceholder = '••••••',\n submitButtonText = 'Reset Password',\n loadingButtonText = 'Resetting...',\n successTitle = 'Password Reset Successful!',\n}: ResetPasswordFormProps) {\n let successMessage =\n 'Your password has been successfully reset. You can close this page and sign in with your new password.';\n if (authConfig && authConfig.verifyEmailMethod === 'code') {\n successMessage =\n 'Your password has been successfully reset. You can wait for redirect to sign in with your new password.';\n }\n\n // Success state\n if (success) {\n return (\n <AuthContainer>\n <VerifyStatusContainer $stretch>\n <VerifyStatusSuccessContent>\n <VerifyStatusSuccessIcon>\n <VerifyStatusSuccessIconSvg>\n <svg\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path d=\"M5 13l4 4L19 7\" />\n </svg>\n </VerifyStatusSuccessIconSvg>\n </VerifyStatusSuccessIcon>\n <VerifyStatusTextCenter style={{ fontSize: '1.5rem', fontWeight: 600 }}>\n {successTitle}\n </VerifyStatusTextCenter>\n <VerifyStatusTextCenter style={{ color: theme.colors.textSecondary }}>\n {successMessage}\n </VerifyStatusTextCenter>\n </VerifyStatusSuccessContent>\n </VerifyStatusContainer>\n </AuthContainer>\n );\n }\n\n return (\n <AuthContainer>\n <AuthHeader title={title} subtitle={subtitle} />\n\n <AuthErrorBanner error={error || ''} />\n\n <form\n onSubmit={onSubmit}\n noValidate\n style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing[6] }}\n >\n <AuthPasswordField\n id=\"newPassword\"\n label={newPasswordLabel}\n placeholder={newPasswordPlaceholder}\n value={newPassword}\n onChange={(e) => onNewPasswordChange(e.target.value)}\n required\n autoComplete=\"new-password\"\n showStrengthIndicator\n authConfig={authConfig}\n />\n\n <AuthPasswordField\n id=\"confirmPassword\"\n label={confirmPasswordLabel}\n placeholder={confirmPasswordPlaceholder}\n value={confirmPassword}\n onChange={(e) => onConfirmPasswordChange(e.target.value)}\n required\n autoComplete=\"new-password\"\n authConfig={authConfig}\n />\n\n <AuthSubmitButton isLoading={loading} disabled={loading}>\n {loading ? loadingButtonText : submitButtonText}\n </AuthSubmitButton>\n </form>\n </AuthContainer>\n );\n}\n","import { useState, FormEvent } from 'react';\nimport { useSearchParams } from '../navigation';\nimport { useInsforge } from '../provider/InsforgeProvider';\nimport { usePublicAuthConfig } from '../hooks/usePublicAuthConfig';\nimport { ForgotPasswordForm } from './forms/ForgotPasswordForm';\nimport { ResetPasswordForm } from './forms/ResetPasswordForm';\nimport { emailSchema, createPasswordSchema } from '../lib/validation';\nimport { resolveAuthUrl } from '../lib/path-utils';\n\ntype ForgotPasswordStep = 'email' | 'password';\n\nexport interface ForgotPasswordProps {\n /** Text customization */\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n backToSignInText?: string;\n /** Callback when an error occurs */\n onError?: (error: Error) => void;\n}\n\n/**\n * Pre-built forgot password component with full business logic.\n *\n * Supports two password reset methods (auto-detected from backend config):\n * - **Link method**: Two-step flow (email → check email message)\n * User receives an email with a reset link to complete the process in a new tab\n * - **Code method**: Three-step flow (email → verify code → reset password)\n * User receives a verification code, enters it, then sets a new password\n *\n * @component\n * @example\n * ```tsx\n * <ForgotPassword\n * onError={(error) => console.error('Error:', error)}\n * />\n * ```\n */\nexport function ForgotPassword({ onError, ...uiProps }: ForgotPasswordProps) {\n const { sendResetPasswordEmail, exchangeResetPasswordToken, resetPassword } = useInsforge();\n const { authConfig } = usePublicAuthConfig();\n const searchParams = useSearchParams();\n\n const [step, setStep] = useState<ForgotPasswordStep>('email');\n const [email, setEmail] = useState('');\n const [resetToken, setResetToken] = useState('');\n const [newPassword, setNewPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const [success, setSuccess] = useState(false);\n const [showVerificationStep, setShowVerificationStep] = useState(false);\n\n // Step 1: Send reset email\n async function handleEmailSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setLoading(true);\n setError('');\n\n // Validate email using Zod schema\n const emailValidation = emailSchema.safeParse(email);\n if (!emailValidation.success) {\n const firstError = emailValidation.error.issues[0];\n setError(firstError.message);\n setLoading(false);\n return;\n }\n\n try {\n const result = await sendResetPasswordEmail(emailValidation.data);\n\n if (result?.success) {\n // Show verification step (link or code)\n setShowVerificationStep(true);\n } else {\n const errorMessage = result?.message || 'Failed to send reset email';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Failed to send reset email';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n } finally {\n setLoading(false);\n }\n }\n\n // Step 2: Verify code and get reset token (for code method)\n async function handleVerifyCode(code: string) {\n setError('');\n try {\n const result = await exchangeResetPasswordToken(email, code);\n\n if ('error' in result) {\n throw new Error(result.error.message || 'Failed to verify code');\n }\n\n if (result.token) {\n setResetToken(result.token);\n setStep('password');\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Invalid verification code';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n }\n\n // Resend reset email\n async function handleResendEmail() {\n await sendResetPasswordEmail(email);\n }\n\n // Step 3: Reset password\n async function handleResetPasswordSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setLoading(true);\n setError('');\n\n // Check passwords match\n if (newPassword !== confirmPassword) {\n setError('Passwords do not match');\n setLoading(false);\n return;\n }\n\n // Validate password using dynamic Zod schema\n if (!authConfig) {\n setError('Configuration not loaded');\n setLoading(false);\n return;\n }\n\n const passwordZodSchema = createPasswordSchema({\n minLength: authConfig.passwordMinLength,\n requireUppercase: authConfig.requireUppercase,\n requireLowercase: authConfig.requireLowercase,\n requireNumber: authConfig.requireNumber,\n requireSpecialChar: authConfig.requireSpecialChar,\n });\n\n const passwordValidation = passwordZodSchema.safeParse(newPassword);\n if (!passwordValidation.success) {\n const firstError = passwordValidation.error.issues[0];\n setError(firstError.message);\n setLoading(false);\n return;\n }\n\n try {\n const result = await resetPassword(resetToken, newPassword);\n\n if (result?.message) {\n setSuccess(true);\n // Navigate to sign-in with all search params preserved and proper base path handling\n const signInUrl = resolveAuthUrl('/sign-in', searchParams);\n // Redirect after a short delay to show success message\n setTimeout(() => {\n window.location.href = signInUrl;\n }, 2000);\n } else {\n const errorMessage = 'Failed to reset password';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Failed to reset password';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n } finally {\n setLoading(false);\n }\n }\n\n // If email auth config not loaded yet\n if (!authConfig) {\n return null;\n }\n\n // Step 1 & 2: Email input and verification (handled by ForgotPasswordForm)\n if (step === 'email') {\n return (\n <ForgotPasswordForm\n email={email}\n onEmailChange={setEmail}\n onSubmit={(e) => {\n void handleEmailSubmit(e);\n }}\n error={error}\n loading={loading}\n showVerificationStep={showVerificationStep}\n resetPasswordMethod={authConfig.resetPasswordMethod}\n onVerifyCode={handleVerifyCode}\n onResendEmail={handleResendEmail}\n {...uiProps}\n />\n );\n }\n\n // Step 3: Password reset (only for code method)\n // Use ResetPasswordForm with the obtained resetToken\n return (\n <ResetPasswordForm\n newPassword={newPassword}\n confirmPassword={confirmPassword}\n onNewPasswordChange={setNewPassword}\n onConfirmPasswordChange={setConfirmPassword}\n onSubmit={(e) => void handleResetPasswordSubmit(e)}\n error={error}\n loading={loading}\n success={success}\n authConfig={authConfig}\n {...uiProps}\n />\n );\n}\n","import { useState, FormEvent } from 'react';\nimport { useSearchParams } from '../navigation';\nimport { useInsforge } from '../provider/InsforgeProvider';\nimport { usePublicAuthConfig } from '../hooks/usePublicAuthConfig';\nimport { ResetPasswordForm } from './forms/ResetPasswordForm';\nimport { AuthContainer, AuthHeader } from './atoms';\nimport { createPasswordSchema } from '../lib/validation';\n\nexport interface ResetPasswordProps {\n /** Text customization */\n title?: string;\n subtitle?: string;\n newPasswordLabel?: string;\n newPasswordPlaceholder?: string;\n confirmPasswordLabel?: string;\n confirmPasswordPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n\n /** Callback when an error occurs */\n onError?: (error: Error) => void;\n}\n\n/**\n * Pre-built reset password page component with full business logic.\n *\n * Automatically reads the reset token from URL query parameter (?token=xxx).\n * Shows an error if token is missing.\n *\n * @component\n * @example\n * ```tsx\n * // Used at /reset-password?token=xxxxx\n * <ResetPassword />\n * ```\n */\nexport function ResetPassword({ onError, ...uiProps }: ResetPasswordProps) {\n const searchParams = useSearchParams();\n const token = searchParams.get('token');\n const { resetPassword } = useInsforge();\n const { authConfig } = usePublicAuthConfig();\n const [newPassword, setNewPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const [success, setSuccess] = useState(false);\n\n async function handleSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setLoading(true);\n setError('');\n\n // Check if authConfig is loaded\n if (!authConfig) {\n setError('Configuration not loaded. Please refresh the page.');\n setLoading(false);\n return;\n }\n\n // Check if passwords match\n if (newPassword !== confirmPassword) {\n setError('Passwords do not match');\n setLoading(false);\n return;\n }\n\n // Validate token\n if (!token) {\n setError('Reset token is missing');\n setLoading(false);\n return;\n }\n\n // Validate password using dynamic Zod schema based on config\n const passwordZodSchema = createPasswordSchema({\n minLength: authConfig.passwordMinLength,\n requireUppercase: authConfig.requireUppercase,\n requireLowercase: authConfig.requireLowercase,\n requireNumber: authConfig.requireNumber,\n requireSpecialChar: authConfig.requireSpecialChar,\n });\n\n const passwordValidation = passwordZodSchema.safeParse(newPassword);\n if (!passwordValidation.success) {\n const firstError = passwordValidation.error.issues[0];\n setError(firstError.message);\n setLoading(false);\n return;\n }\n\n try {\n const result = await resetPassword(token, newPassword);\n\n if (result?.message) {\n setSuccess(true);\n } else {\n const errorMessage = 'Failed to reset password';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Failed to reset password';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n } finally {\n setLoading(false);\n }\n }\n\n // If email auth config not loaded yet\n if (!authConfig) {\n return null;\n }\n\n // If no token, show error\n if (!token) {\n return (\n <AuthContainer>\n <AuthHeader title=\"Invalid Reset Link\" subtitle=\"\" />\n <div\n style={{\n padding: '1.5rem',\n backgroundColor: '#FEE2E2',\n borderRadius: '0.5rem',\n border: '1px solid #DC2626',\n }}\n >\n <p\n style={{\n fontSize: '0.875rem',\n color: '#DC2626',\n margin: 0,\n fontFamily: 'var(--if-font-family)',\n }}\n >\n The password reset link is missing or invalid. Please request a new password reset link.\n </p>\n </div>\n </AuthContainer>\n );\n }\n\n // If success, show completion message\n if (success) {\n return (\n <AuthContainer>\n <div\n style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '1rem' }}\n >\n <div\n style={{\n width: '4rem',\n height: '4rem',\n borderRadius: '50%',\n backgroundColor: '#D1FAE5',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <svg\n style={{ width: '2rem', height: '2rem', color: '#059669' }}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path d=\"M5 13l4 4L19 7\" />\n </svg>\n </div>\n <h2\n style={{\n fontSize: '1.5rem',\n fontWeight: 600,\n color: '#000',\n margin: 0,\n textAlign: 'center',\n fontFamily: 'var(--if-font-family)',\n }}\n >\n Password Reset Successfully\n </h2>\n <p\n style={{\n fontSize: '0.875rem',\n color: '#828282',\n textAlign: 'center',\n margin: 0,\n fontFamily: 'var(--if-font-family)',\n }}\n >\n Your password has been reset successfully. You can now close this page and return to the\n login page in your original tab.\n </p>\n </div>\n </AuthContainer>\n );\n }\n\n // Show reset password form\n return (\n <ResetPasswordForm\n newPassword={newPassword}\n confirmPassword={confirmPassword}\n onNewPasswordChange={setNewPassword}\n onConfirmPasswordChange={setConfirmPassword}\n onSubmit={(e) => void handleSubmit(e)}\n error={error}\n loading={loading}\n success={false}\n authConfig={authConfig}\n {...uiProps}\n />\n );\n}\n","import { AuthContainer, AuthHeader } from '../atoms';\nimport {\n VerifyStatusContainer,\n VerifyStatusSpinner,\n VerifyStatusSuccessContent,\n VerifyStatusSuccessIcon,\n VerifyStatusSuccessIconSvg,\n VerifyStatusTextCenter,\n} from './styled';\nimport { theme } from '../../styles/theme';\n\nexport interface VerifyEmailStatusProps {\n status: 'verifying' | 'success' | 'error';\n error?: string;\n verifyingTitle?: string;\n successTitle?: string;\n successMessage?: string;\n errorTitle?: string;\n}\n\n/**\n * Email verification status display component (UI only, no business logic).\n */\nexport function VerifyEmailStatus({\n status,\n error,\n verifyingTitle = 'Verifying your email...',\n successTitle = 'Email Verified!',\n successMessage = 'Your email has been verified successfully. You can close this page and sign in to your app.',\n errorTitle = 'Verification Failed',\n}: VerifyEmailStatusProps) {\n if (status === 'verifying') {\n return (\n <AuthContainer>\n <VerifyStatusContainer>\n <AuthHeader title={verifyingTitle} />\n <VerifyStatusSpinner />\n </VerifyStatusContainer>\n </AuthContainer>\n );\n }\n\n if (status === 'error') {\n return (\n <AuthContainer>\n <VerifyStatusContainer $stretch>\n <AuthHeader\n title={errorTitle}\n subtitle={`${error || 'The verification link is invalid or has expired.'} Please try again or contact support if the problem persists. You can close this page and return to your app.`}\n />\n </VerifyStatusContainer>\n </AuthContainer>\n );\n }\n\n // Success state\n return (\n <AuthContainer>\n <VerifyStatusContainer $stretch>\n <VerifyStatusSuccessContent>\n <VerifyStatusSuccessIcon>\n <VerifyStatusSuccessIconSvg>\n <svg\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path d=\"M5 13l4 4L19 7\" />\n </svg>\n </VerifyStatusSuccessIconSvg>\n </VerifyStatusSuccessIcon>\n <VerifyStatusTextCenter style={{ fontSize: '1.5rem', fontWeight: 600 }}>\n {successTitle}\n </VerifyStatusTextCenter>\n <VerifyStatusTextCenter style={{ color: theme.colors.textSecondary }}>\n {successMessage}\n </VerifyStatusTextCenter>\n </VerifyStatusSuccessContent>\n </VerifyStatusContainer>\n </AuthContainer>\n );\n}\n","import { useEffect, useState } from 'react';\nimport { useInsforge } from '../provider/InsforgeProvider';\nimport { VerifyEmailStatus } from './forms/VerifyEmailStatus';\nimport { VerifyEmailResponse } from '@insforge/shared-schemas';\n\nexport interface VerifyEmailProps {\n /** Verification token (from URL query params) */\n token: string;\n /** Text customization */\n verifyingTitle?: string;\n successTitle?: string;\n successMessage?: string;\n errorTitle?: string;\n /** Callback when verification is successful */\n onSuccess?: (data: VerifyEmailResponse) => void;\n /** Callback when verification fails */\n onError?: (error: Error) => void;\n}\n\n/**\n * Pre-built email verification component with full business logic.\n *\n * Automatically verifies the email when mounted using the provided token.\n *\n * @component\n * @example\n * ```tsx\n * const token = new URLSearchParams(window.location.search).get('token');\n *\n * <VerifyEmail\n * token={token || ''}\n * onSuccess={(data) => {\n * console.log('Email verified!', data);\n * // Optionally navigate or close window\n * }}\n * onError={(error) => console.error('Verification failed:', error)}\n * />\n * ```\n */\nexport function VerifyEmail({ token, onSuccess, onError, ...uiProps }: VerifyEmailProps) {\n const { verifyEmail } = useInsforge();\n const [status, setStatus] = useState<'verifying' | 'success' | 'error'>('verifying');\n const [error, setError] = useState('');\n\n useEffect(() => {\n const verifyEmailFn = async () => {\n if (!token) {\n const errorMessage = 'Invalid verification link. Missing required token.';\n setError(errorMessage);\n setStatus('error');\n if (onError) {\n onError(new Error(errorMessage));\n }\n return;\n }\n\n try {\n const result = await verifyEmail(token);\n\n if (!result?.accessToken) {\n const errorMessage = result\n ? 'Verification succeeded but no access token received'\n : 'Email verification failed';\n setError(errorMessage);\n setStatus('error');\n if (onError) {\n onError(new Error(errorMessage));\n }\n return;\n }\n\n setStatus('success');\n if (onSuccess) {\n onSuccess(result);\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Email verification failed';\n setError(errorMessage);\n setStatus('error');\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n };\n\n void verifyEmailFn();\n }, [token, verifyEmail, onSuccess, onError]);\n\n return <VerifyEmailStatus status={status} error={error} {...uiProps} />;\n}\n","import { cloneElement, isValidElement } from 'react';\nimport { useInsforge } from '../provider/InsforgeProvider';\n\nexport interface SignOutButtonProps {\n children?: React.ReactNode;\n className?: string;\n afterSignOutUrl?: string;\n}\n\n/**\n * SignOutButton Component\n *\n * A simple unstyled button that signs out the current user.\n * If children is a valid React element, it will be rendered with the sign-out logic attached.\n *\n * @example\n * ```tsx\n * <SignOutButton />\n * ```\n *\n * @example\n * ```tsx\n * <SignOutButton afterSignOutUrl=\"/goodbye\">\n * <button className=\"custom-button\">Logout</button>\n * </SignOutButton>\n * ```\n */\nexport function SignOutButton({ children, className, afterSignOutUrl = '/' }: SignOutButtonProps) {\n const { signOut } = useInsforge();\n\n const handleClick = async () => {\n await signOut();\n window.location.href = afterSignOutUrl;\n };\n\n if (children && isValidElement(children)) {\n const originalOnClick = (children.props as { onClick?: (e: React.MouseEvent) => void })\n ?.onClick;\n\n return cloneElement(children, {\n onClick: async (e: React.MouseEvent) => {\n await handleClick();\n if (originalOnClick) {\n originalOnClick(e);\n }\n },\n } as Record<string, unknown>);\n }\n\n // Default button\n return (\n <button type=\"button\" className={className} onClick={() => void handleClick()}>\n {children || 'Sign out'}\n </button>\n );\n}\n","/** @jsxImportSource @emotion/react */\nimport styled from '@emotion/styled';\nimport { theme } from '../styles/theme';\n\n/* ============================================\n USER BUTTON\n ============================================ */\nexport const UserButtonContainer = styled.div`\n position: relative;\n display: inline-block;\n`;\n\nexport const UserButtonButton = styled.button<{ $detailed?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: ${theme.spacing[2]};\n padding: ${theme.spacing[2]};\n border-radius: ${(props) => (props.$detailed ? theme.radius.sm : theme.radius.full)};\n background-color: ${(props) => (props.$detailed ? theme.colors.bgWhite : 'transparent')};\n border: ${(props) => (props.$detailed ? `1px solid ${theme.colors.border}` : 'none')};\n cursor: pointer;\n transition: all ${theme.transition.base};\n\n &:hover {\n ${(props) =>\n props.$detailed\n ? `\n background-color: ${theme.colors.bgLight};\n opacity: 1;\n `\n : `\n opacity: 0.8;\n `}\n }\n`;\n\nexport const UserButtonAvatar = styled.div`\n width: 2rem;\n height: 2rem;\n border-radius: ${theme.radius.full};\n background-color: ${theme.colors.primary};\n color: ${theme.colors.bgWhite};\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: 600;\n font-size: ${theme.fontSize.sm};\n font-family: ${theme.fontFamily.base};\n overflow: hidden;\n`;\n\nexport const UserButtonAvatarImage = styled.img`\n border-radius: ${theme.radius.full};\n object-fit: cover;\n width: 100%;\n height: 100%;\n`;\n\nexport const UserButtonAvatarInitials = styled.span`\n color: ${theme.colors.bgWhite};\n font-weight: 600;\n font-size: ${theme.fontSize.sm};\n`;\n\nexport const UserButtonInfo = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 0.125rem;\n`;\n\nexport const UserButtonName = styled.div`\n font-size: ${theme.fontSize.sm};\n font-weight: 600;\n color: ${theme.colors.text};\n line-height: 1.25rem;\n text-align: left;\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const UserButtonEmail = styled.div`\n font-size: ${theme.fontSize.xs};\n color: ${theme.colors.textSecondary};\n line-height: 1rem;\n text-align: left;\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const UserButtonMenu = styled.div<{\n $openUpward?: boolean;\n $horizontalOffset?: number;\n}>`\n position: absolute;\n ${(props) =>\n props.$openUpward\n ? `\n bottom: 100%;\n margin-bottom: ${theme.spacing[2]};\n `\n : `\n top: 100%;\n margin-top: ${theme.spacing[2]};\n `}\n left: 0;\n ${(props) =>\n props.$horizontalOffset\n ? `\n transform: translateX(${props.$horizontalOffset}px);\n `\n : ''}\n background-color: ${theme.colors.bgWhite};\n border: 1px solid ${theme.colors.border};\n border-radius: ${theme.radius.md};\n box-shadow: ${theme.shadow.lg};\n padding: ${theme.spacing[2]};\n min-width: 200px;\n z-index: 50;\n`;\n\nexport const UserButtonMenuItem = styled.button<{ $signout?: boolean }>`\n display: flex;\n align-items: center;\n gap: ${theme.spacing[2]};\n padding: ${theme.spacing[2]};\n border-radius: ${theme.radius.sm};\n cursor: pointer;\n transition: background-color ${theme.transition.fast};\n font-size: ${theme.fontSize.sm};\n color: ${(props) => (props.$signout ? theme.colors.error : theme.colors.text)};\n font-family: ${theme.fontFamily.base};\n background: none;\n border: none;\n width: 100%;\n text-align: left;\n\n &:hover {\n background-color: ${theme.colors.bgLight};\n }\n`;\n\nexport const UserButtonMenuItemIcon = styled.div`\n width: 1.25rem;\n height: 1.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\n/* ============================================\n USER PROFILE MODAL\n ============================================ */\nexport const ProfileModalOverlay = styled.div`\n position: fixed;\n inset: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n padding: ${theme.spacing[4]};\n`;\n\nexport const ProfileModalContainer = styled.div`\n background-color: ${theme.colors.bgWhite};\n border-radius: ${theme.radius.xl};\n box-shadow: ${theme.shadow.lg};\n width: 100%;\n max-width: 400px;\n max-height: 90vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const ProfileModalHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ${theme.spacing[4]} ${theme.spacing[6]};\n border-bottom: 1px solid ${theme.colors.border};\n`;\n\nexport const ProfileModalTitle = styled.h2`\n font-size: ${theme.fontSize.lg};\n font-weight: ${theme.fontWeight.semibold};\n color: ${theme.colors.text};\n margin: 0;\n`;\n\nexport const ProfileModalCloseButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border-radius: ${theme.radius.md};\n background: none;\n border: none;\n cursor: pointer;\n color: ${theme.colors.textSecondary};\n transition: all ${theme.transition.fast};\n\n &:hover {\n background-color: ${theme.colors.bgLight};\n color: ${theme.colors.text};\n }\n\n svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n`;\n\nexport const ProfileModalBody = styled.div`\n padding: ${theme.spacing[6]};\n overflow-y: auto;\n flex: 1;\n`;\n\nexport const ProfileAvatarSection = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-bottom: ${theme.spacing[6]};\n`;\n\nexport const ProfileAvatar = styled.div`\n width: 5rem;\n height: 5rem;\n border-radius: ${theme.radius.full};\n background-color: ${theme.colors.primary};\n color: ${theme.colors.bgWhite};\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: ${theme.fontWeight.semibold};\n font-size: ${theme.fontSize['2xl']};\n overflow: hidden;\n`;\n\nexport const ProfileAvatarImage = styled.img`\n width: 100%;\n height: 100%;\n object-fit: cover;\n`;\n\nexport const ProfileFieldsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[4]};\n`;\n\nexport const ProfileField = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[1]};\n`;\n\nexport const ProfileFieldLabel = styled.label`\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.medium};\n color: ${theme.colors.textSecondary};\n text-transform: capitalize;\n`;\n\nexport const ProfileFieldValue = styled.div`\n font-size: ${theme.fontSize.base};\n color: ${theme.colors.text};\n padding: ${theme.spacing[2]} 0;\n word-break: break-word;\n`;\n\nexport const ProfileFieldInput = styled.input`\n width: 100%;\n height: ${theme.sizes.input.height};\n padding: 0 ${theme.spacing[3]};\n border: 1px solid ${theme.colors.border};\n border-radius: ${theme.radius.md};\n font-size: ${theme.fontSize.base};\n font-family: ${theme.fontFamily.base};\n color: ${theme.colors.text};\n background-color: ${theme.colors.bgWhite};\n transition: border-color ${theme.transition.fast};\n\n &:focus {\n outline: none;\n border-color: ${theme.colors.borderFocus};\n }\n\n &:disabled {\n background-color: ${theme.colors.bgLight};\n color: ${theme.colors.textSecondary};\n cursor: not-allowed;\n }\n`;\n\nexport const ProfileModalFooter = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: ${theme.spacing[3]};\n padding: ${theme.spacing[4]} ${theme.spacing[6]};\n border-top: 1px solid ${theme.colors.border};\n`;\n\nexport const ProfileButton = styled.button<{ $primary?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: ${theme.spacing[2]};\n height: ${theme.sizes.button.height};\n padding: 0 ${theme.spacing[4]};\n border-radius: ${theme.radius.md};\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.medium};\n font-family: ${theme.fontFamily.base};\n cursor: pointer;\n transition: all ${theme.transition.fast};\n\n ${(props) =>\n props.$primary\n ? `\n background-color: ${theme.colors.primary};\n color: ${theme.colors.bgWhite};\n border: none;\n\n &:hover:not(:disabled) {\n background-color: ${theme.colors.primaryHover};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `\n : `\n background-color: ${theme.colors.bgWhite};\n color: ${theme.colors.text};\n border: 1px solid ${theme.colors.border};\n\n &:hover:not(:disabled) {\n background-color: ${theme.colors.bgLight};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `}\n`;\n\nexport const ProfileSpinner = styled.div`\n width: 1rem;\n height: 1rem;\n border: 2px solid transparent;\n border-top-color: currentColor;\n border-radius: ${theme.radius.full};\n animation: spin 0.6s linear infinite;\n\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n`;\n","import { useState, useEffect, useCallback } from 'react';\r\nimport { X } from 'lucide-react';\r\nimport { useInsforge } from '../provider/InsforgeProvider';\r\nimport {\r\n ProfileModalOverlay,\r\n ProfileModalContainer,\r\n ProfileModalHeader,\r\n ProfileModalTitle,\r\n ProfileModalCloseButton,\r\n ProfileModalBody,\r\n ProfileAvatarSection,\r\n ProfileAvatar,\r\n ProfileAvatarImage,\r\n ProfileFieldsContainer,\r\n ProfileField,\r\n ProfileFieldLabel,\r\n ProfileFieldValue,\r\n ProfileFieldInput,\r\n ProfileModalFooter,\r\n ProfileButton,\r\n ProfileSpinner,\r\n} from './styled';\r\n\r\nexport interface UserProfileModalProps {\r\n /** Called when the modal is closed */\r\n onClose: () => void;\r\n /** Called when an error occurs */\r\n onError?: (error: string) => void;\r\n}\r\n\r\n/** Fields that should be read-only */\r\nconst READ_ONLY_FIELDS = ['id', 'email', 'avatar_url', 'created_at', 'updated_at'];\r\n\r\n/** Fields that should not be displayed */\r\nconst HIDDEN_FIELDS = ['id'];\r\n\r\n/** Format field label for display */\r\nfunction formatFieldLabel(key: string): string {\r\n return key\r\n .replace(/_/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .toLowerCase();\r\n}\r\n\r\n/**\r\n * User profile modal component.\r\n * Displays user profile information with edit capability for allowed fields.\r\n */\r\nexport function UserProfileModal({ onClose, onError }: UserProfileModalProps) {\r\n const { user, updateUser, isLoaded } = useInsforge();\r\n const [isEditing, setIsEditing] = useState(false);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [imageError, setImageError] = useState(false);\r\n const [formData, setFormData] = useState<Record<string, string>>({});\r\n\r\n // Initialize form data when user changes\r\n useEffect(() => {\r\n if (user) {\r\n const initialData: Record<string, string> = {\r\n name: user.name || '',\r\n };\r\n\r\n // Add dynamic profile fields\r\n if (user.profile) {\r\n Object.entries(user.profile).forEach(([key, value]) => {\r\n if (!HIDDEN_FIELDS.includes(key) && typeof value === 'string') {\r\n initialData[key] = value;\r\n }\r\n });\r\n }\r\n\r\n setFormData(initialData);\r\n }\r\n }, [user]);\r\n\r\n // Validate avatar URL when it changes\r\n useEffect(() => {\r\n setImageError(false);\r\n\r\n const avatarUrl = user?.avatarUrl;\r\n if (!avatarUrl) {\r\n return;\r\n }\r\n\r\n const checkImageUrl = async () => {\r\n try {\r\n const response = await fetch(avatarUrl, {\r\n method: 'HEAD',\r\n cache: 'no-cache',\r\n });\r\n if (!response.ok) {\r\n setImageError(true);\r\n }\r\n } catch {\r\n setImageError(true);\r\n }\r\n };\r\n\r\n void checkImageUrl();\r\n }, [user?.avatarUrl]);\r\n\r\n const handleFieldChange = useCallback((key: string, value: string) => {\r\n setFormData((prev) => ({\r\n ...prev,\r\n [key]: value,\r\n }));\r\n }, []);\r\n\r\n const handleSave = useCallback(async () => {\r\n if (!user) return;\r\n\r\n setIsSaving(true);\r\n\r\n try {\r\n // Separate core fields from dynamic profile fields\r\n const { name, ...dynamicFields } = formData;\r\n\r\n const updateData: Parameters<typeof updateUser>[0] = {\r\n name,\r\n };\r\n\r\n // Add dynamic fields if any\r\n if (Object.keys(dynamicFields).length > 0) {\r\n updateData.profile = dynamicFields;\r\n }\r\n\r\n const result = await updateUser(updateData);\r\n\r\n if (result?.error) {\r\n onError?.(result.error);\r\n } else {\r\n setIsEditing(false);\r\n }\r\n } catch (error) {\r\n onError?.(error instanceof Error ? error.message : 'Failed to update profile');\r\n } finally {\r\n setIsSaving(false);\r\n }\r\n }, [user, formData, updateUser, onError]);\r\n\r\n const handleCancel = useCallback(() => {\r\n // Reset form data to current user values\r\n if (user) {\r\n const resetData: Record<string, string> = {\r\n name: user.name || '',\r\n };\r\n\r\n if (user.profile) {\r\n Object.entries(user.profile).forEach(([key, value]) => {\r\n if (!HIDDEN_FIELDS.includes(key) && typeof value === 'string') {\r\n resetData[key] = value;\r\n }\r\n });\r\n }\r\n\r\n setFormData(resetData);\r\n }\r\n setIsEditing(false);\r\n }, [user]);\r\n\r\n const handleOverlayClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n if (e.target === e.currentTarget) {\r\n onClose();\r\n }\r\n },\r\n [onClose]\r\n );\r\n\r\n // Handle escape key\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n if (isEditing) {\r\n handleCancel();\r\n } else {\r\n onClose();\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener('keydown', handleEscape);\r\n return () => document.removeEventListener('keydown', handleEscape);\r\n }, [isEditing, handleCancel, onClose]);\r\n\r\n if (!isLoaded || !user) {\r\n return null;\r\n }\r\n\r\n const initials = user.name\r\n ? user.name.charAt(0).toUpperCase()\r\n : user.email.split('@')[0].slice(0, 2).toUpperCase();\r\n\r\n // Build fields list: core fields + dynamic fields\r\n const fields: Array<{ key: string; value: string; readOnly: boolean }> = [];\r\n\r\n // Email is always first and read-only\r\n fields.push({ key: 'email', value: user.email, readOnly: true });\r\n\r\n // Name is editable\r\n fields.push({\r\n key: 'name',\r\n value: isEditing ? (formData.name || '') : (user.name || ''),\r\n readOnly: false,\r\n });\r\n\r\n // Add dynamic profile fields\r\n if (user.profile) {\r\n Object.entries(user.profile).forEach(([key, value]) => {\r\n if (!HIDDEN_FIELDS.includes(key) && typeof value === 'string') {\r\n fields.push({\r\n key,\r\n value: isEditing ? (formData[key] ?? value) : value,\r\n readOnly: READ_ONLY_FIELDS.includes(key),\r\n });\r\n }\r\n });\r\n }\r\n\r\n return (\r\n <ProfileModalOverlay onClick={handleOverlayClick}>\r\n <ProfileModalContainer onClick={(e) => e.stopPropagation()}>\r\n <ProfileModalHeader>\r\n <ProfileModalTitle>Profile</ProfileModalTitle>\r\n <ProfileModalCloseButton onClick={onClose} aria-label=\"Close\">\r\n <X />\r\n </ProfileModalCloseButton>\r\n </ProfileModalHeader>\r\n\r\n <ProfileModalBody>\r\n <ProfileAvatarSection>\r\n <ProfileAvatar>\r\n {user.avatarUrl && !imageError ? (\r\n <ProfileAvatarImage\r\n src={user.avatarUrl}\r\n alt={user.name || user.email}\r\n onError={() => setImageError(true)}\r\n />\r\n ) : (\r\n initials\r\n )}\r\n </ProfileAvatar>\r\n </ProfileAvatarSection>\r\n\r\n <ProfileFieldsContainer>\r\n {fields.map(({ key, value, readOnly }) => (\r\n <ProfileField key={key}>\r\n <ProfileFieldLabel>{formatFieldLabel(key)}</ProfileFieldLabel>\r\n {isEditing && !readOnly ? (\r\n <ProfileFieldInput\r\n type=\"text\"\r\n value={formData[key] ?? value}\r\n onChange={(e) => handleFieldChange(key, e.target.value)}\r\n disabled={isSaving}\r\n />\r\n ) : (\r\n <ProfileFieldValue>{value || '-'}</ProfileFieldValue>\r\n )}\r\n </ProfileField>\r\n ))}\r\n </ProfileFieldsContainer>\r\n </ProfileModalBody>\r\n\r\n <ProfileModalFooter>\r\n {isEditing ? (\r\n <>\r\n <ProfileButton onClick={handleCancel} disabled={isSaving}>\r\n Cancel\r\n </ProfileButton>\r\n <ProfileButton $primary onClick={handleSave} disabled={isSaving}>\r\n {isSaving && <ProfileSpinner />}\r\n {isSaving ? 'Saving...' : 'Save'}\r\n </ProfileButton>\r\n </>\r\n ) : (\r\n <ProfileButton $primary onClick={() => setIsEditing(true)}>\r\n Edit Profile\r\n </ProfileButton>\r\n )}\r\n </ProfileModalFooter>\r\n </ProfileModalContainer>\r\n </ProfileModalOverlay>\r\n );\r\n}\r\n\r\n","import { useState, useRef, useEffect } from 'react';\nimport { LogOut, User } from 'lucide-react';\nimport { useInsforge } from '../provider/InsforgeProvider';\nimport { SignOutButton } from './SignOutButton';\nimport { UserProfileModal } from './UserProfileModal';\nimport {\n UserButtonContainer,\n UserButtonButton,\n UserButtonAvatar,\n UserButtonAvatarImage,\n UserButtonAvatarInitials,\n UserButtonInfo,\n UserButtonName,\n UserButtonEmail,\n UserButtonMenu,\n UserButtonMenuItem,\n UserButtonMenuItemIcon,\n} from './styled';\n\nexport interface UserButtonProps {\n afterSignOutUrl?: string;\n mode?: 'detailed' | 'simple';\n /** Whether to show the Profile menu item (default: true) */\n showProfile?: boolean;\n /** Callback when profile update fails */\n onProfileError?: (error: string) => void;\n}\n\n/**\n * User profile button with dropdown menu and sign-out functionality.\n *\n * Styles are powered by Emotion CSS-in-JS to prevent FOUC in SSR environments.\n */\nexport function UserButton({\n afterSignOutUrl = '/',\n mode = 'simple',\n showProfile = true,\n onProfileError,\n}: UserButtonProps) {\n const { user } = useInsforge();\n const [isOpen, setIsOpen] = useState(false);\n const [showProfileModal, setShowProfileModal] = useState(false);\n const [imageError, setImageError] = useState(false);\n const [openUpward, setOpenUpward] = useState(false);\n const [horizontalOffset, setHorizontalOffset] = useState(0);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n // Validate image URL when avatarUrl changes\n useEffect(() => {\n setImageError(false);\n\n const avatarUrl = user?.avatarUrl;\n if (!avatarUrl) {\n return;\n }\n\n const checkImageUrl = async () => {\n try {\n const response = await fetch(avatarUrl, {\n method: 'HEAD',\n cache: 'no-cache',\n });\n if (!response.ok) {\n setImageError(true);\n }\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Error checking image URL:', error.message);\n }\n setImageError(true);\n }\n };\n\n void checkImageUrl();\n }, [user?.avatarUrl]);\n\n // Detect position and determine menu placement (vertical and horizontal)\n useEffect(() => {\n if (isOpen && dropdownRef.current) {\n const buttonRect = dropdownRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n\n // Vertical positioning\n const spaceBelow = viewportHeight - buttonRect.bottom;\n const spaceAbove = buttonRect.top;\n const menuHeight = 200; // Estimate\n const shouldOpenUpward = spaceBelow < menuHeight && spaceAbove > spaceBelow;\n setOpenUpward(shouldOpenUpward);\n\n // Horizontal positioning\n // We need to wait for next tick to get the menu's actual width\n requestAnimationFrame(() => {\n if (menuRef.current) {\n const menuWidth = menuRef.current.offsetWidth;\n const menuRight = buttonRect.left + menuWidth;\n const viewportPadding = 16; // 16px padding from viewport edge\n\n // If menu would overflow right edge of viewport\n if (menuRight > viewportWidth - viewportPadding) {\n // Calculate how much to shift left\n const overflow = menuRight - (viewportWidth - viewportPadding);\n setHorizontalOffset(-overflow);\n } else {\n setHorizontalOffset(0);\n }\n }\n });\n } else {\n // Reset when closed\n setHorizontalOffset(0);\n }\n }, [isOpen]);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n\n if (!user) {\n return null;\n }\n\n const initials = user.name\n ? user.name.charAt(0).toUpperCase()\n : user.email.split('@')[0].slice(0, 2).toUpperCase();\n\n return (\n <UserButtonContainer ref={dropdownRef}>\n <UserButtonButton\n $detailed={mode === 'detailed'}\n onClick={() => setIsOpen(!isOpen)}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n >\n <UserButtonAvatar>\n {user.avatarUrl && !imageError ? (\n <UserButtonAvatarImage\n src={user.avatarUrl}\n alt={user.email}\n onError={() => setImageError(true)}\n />\n ) : (\n <UserButtonAvatarInitials>{initials}</UserButtonAvatarInitials>\n )}\n </UserButtonAvatar>\n {mode === 'detailed' && (\n <UserButtonInfo>\n {user.name && <UserButtonName>{user.name}</UserButtonName>}\n <UserButtonEmail>{user.email}</UserButtonEmail>\n </UserButtonInfo>\n )}\n </UserButtonButton>\n\n {isOpen && (\n <UserButtonMenu ref={menuRef} $openUpward={openUpward} $horizontalOffset={horizontalOffset}>\n {showProfile && (\n <UserButtonMenuItem\n onClick={() => {\n setShowProfileModal(true);\n setIsOpen(false);\n }}\n >\n <UserButtonMenuItemIcon>\n <User />\n </UserButtonMenuItemIcon>\n Profile\n </UserButtonMenuItem>\n )}\n <SignOutButton afterSignOutUrl={afterSignOutUrl}>\n <UserButtonMenuItem $signout onClick={() => setIsOpen(false)}>\n <UserButtonMenuItemIcon>\n <LogOut />\n </UserButtonMenuItemIcon>\n Sign out\n </UserButtonMenuItem>\n </SignOutButton>\n </UserButtonMenu>\n )}\n\n {showProfileModal && (\n <UserProfileModal\n onClose={() => setShowProfileModal(false)}\n onError={onProfileError}\n />\n )}\n </UserButtonContainer>\n );\n}\n","import { useInsforge } from '../provider/InsforgeProvider';\nimport { useEffect, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport type { InsforgeUser } from '../types';\nimport { resolveAuthPath } from '../lib/path-utils';\n\nexport interface ProtectProps {\n children: ReactNode;\n fallback?: ReactNode;\n redirectTo?: string;\n condition?: (user: InsforgeUser) => boolean;\n onRedirect?: (url: string) => void;\n}\n\n/**\n * Protected route component that redirects unauthenticated users.\n *\n * @component\n * @example\n * ```tsx\n * // Basic usage\n * <Protect redirectTo=\"/sign-in\">\n * <Dashboard />\n * </Protect>\n *\n * // With custom redirect handler (e.g., for Next.js router)\n * <Protect\n * redirectTo=\"/sign-in\"\n * onRedirect={(url) => router.push(url)}\n * >\n * <AdminPanel />\n * </Protect>\n *\n * // With custom condition (role-based access)\n * <Protect\n * redirectTo=\"/unauthorized\"\n * condition={(user) => user.role === 'admin'}\n * >\n * <AdminContent />\n * </Protect>\n * ```\n *\n * @param {ReactNode} children - Content to protect\n * @param {ReactNode} [fallback] - Fallback UI while loading\n * @param {string} [redirectTo='/sign-in'] - Redirect URL\n * @param {function} [condition] - Custom access condition\n * @param {function} [onRedirect] - Custom redirect handler (default: window.location)\n */\nexport function Protect({\n children,\n fallback,\n redirectTo = '/sign-in',\n condition,\n onRedirect,\n}: ProtectProps): ReactNode {\n const { userId, user } = useInsforge();\n\n // Resolve redirect path with proper base path handling\n const resolvedRedirectTo = useMemo(() => resolveAuthPath(redirectTo), [redirectTo]);\n\n useEffect(() => {\n // undefined = not loaded yet, don't redirect\n // null = loaded and signed out, redirect\n // string = signed in, check condition\n if (userId === null) {\n // Not signed in, redirect\n if (onRedirect) {\n onRedirect(resolvedRedirectTo);\n } else {\n window.location.href = resolvedRedirectTo;\n }\n } else if (userId && condition && user) {\n // Signed in but condition failed, redirect\n if (!condition(user)) {\n if (onRedirect) {\n onRedirect(resolvedRedirectTo);\n } else {\n window.location.href = resolvedRedirectTo;\n }\n }\n }\n }, [userId, resolvedRedirectTo, condition, user, onRedirect]);\n\n // Show fallback while loading (undefined = not loaded)\n if (userId === undefined) {\n return fallback || <div className=\"insforge-loading\">Loading...</div>;\n }\n\n // Don't render if not signed in (null = signed out)\n if (userId === null) {\n return fallback || null;\n }\n\n // Don't render if condition fails\n if (condition && user && !condition(user)) {\n return fallback || null;\n }\n\n return <>{children}</>;\n}\n","import { useInsforge } from '../provider/InsforgeProvider';\nimport type { ReactNode } from 'react';\n\nexport interface ConditionalProps {\n children: ReactNode;\n}\n\n/**\n * Conditional component that renders children only when user is signed in.\n *\n * Uses userId to determine rendering:\n * - undefined = not loaded yet (SSR or before hydration) -> render null\n * - null = loaded, user signed out -> render null\n * - string = loaded, user signed in -> render children\n *\n * This prevents hydration mismatches in Next.js SSR by ensuring\n * consistent rendering between server and client initial render.\n *\n * @component\n * @example\n * ```tsx\n * <SignedIn>\n * <Dashboard />\n * </SignedIn>\n * ```\n *\n * @param {ReactNode} children - React nodes to render when user is authenticated\n * @returns {JSX.Element | null} Renders children when signed in, null otherwise\n */\nexport function SignedIn({ children }: ConditionalProps) {\n const { userId } = useInsforge();\n\n // undefined = not loaded yet, render null (prevents hydration mismatch)\n // null = loaded but signed out, render null\n // string = signed in, render children\n if (userId) {\n return <>{children}</>;\n }\n\n return null;\n}\n","import { useInsforge } from '../provider/InsforgeProvider';\nimport type { ReactNode } from 'react';\n\nexport interface ConditionalProps {\n children: ReactNode;\n}\n\n/**\n * Conditional component that renders children only when user is signed out.\n *\n * Uses userId to determine rendering:\n * - undefined = not loaded yet (SSR or before hydration) -> render null\n * - null = loaded, user signed out -> render children\n * - string = loaded, user signed in -> render null\n *\n * This prevents hydration mismatches in Next.js SSR by ensuring\n * consistent rendering between server and client initial render.\n *\n * @component\n * @example\n * ```tsx\n * <SignedOut>\n * <SignIn />\n * </SignedOut>\n * ```\n *\n * @param {ReactNode} children - React nodes to render when user is not authenticated\n * @returns {JSX.Element | null} Renders children when signed out, null otherwise\n */\nexport function SignedOut({ children }: ConditionalProps) {\n const { userId } = useInsforge();\n\n // undefined = not loaded yet, render null (prevents hydration mismatch)\n // null = loaded and signed out, render children\n // string = signed in, render null\n if (userId === null) {\n return <>{children}</>;\n }\n\n return null;\n}\n","import { cloneElement, isValidElement } from 'react';\nimport { useInsforge } from '../provider/InsforgeProvider';\n\nexport interface SignInButtonProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n/**\n * SignInButton Component\n *\n * A simple unstyled button that redirects to the hosted sign-in page.\n * If children is a valid React element, it will be rendered with the redirect logic attached.\n *\n * @example\n * ```tsx\n * <SignInButton />\n * ```\n *\n * @example\n * ```tsx\n * <SignInButton>\n * <button className=\"your-button\">Login</button>\n * </SignInButton>\n * ```\n */\nexport function SignInButton({ children, className }: SignInButtonProps) {\n const { afterSignInUrl, baseUrl } = useInsforge();\n\n const handleClick = () => {\n const redirectUrl = new URL(afterSignInUrl, window.location.origin).href;\n const authUrl = new URL('/auth/sign-in', baseUrl);\n authUrl.searchParams.set('redirect', redirectUrl);\n window.location.replace(authUrl.toString());\n };\n\n if (children && isValidElement(children)) {\n const originalOnClick = (children.props as { onClick?: (e: React.MouseEvent) => void })\n ?.onClick;\n\n return cloneElement(children, {\n onClick: (e: React.MouseEvent) => {\n handleClick();\n if (originalOnClick) {\n originalOnClick(e);\n }\n },\n } as Record<string, unknown>);\n }\n\n // Default button\n return (\n <button type=\"button\" className={className} onClick={handleClick}>\n {children || 'Sign in'}\n </button>\n );\n}\n","import { cloneElement, isValidElement } from 'react';\nimport { useInsforge } from '../provider/InsforgeProvider';\n\nexport interface SignUpButtonProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n/**\n * SignUpButton Component\n *\n * A simple unstyled button that redirects to the hosted sign-up page.\n * If children is a valid React element, it will be rendered with the redirect logic attached.\n *\n * @example\n * ```tsx\n * <SignUpButton />\n * ```\n *\n * @example\n * ```tsx\n * <SignUpButton>\n * <button className=\"fancy-button\">Register Now</button>\n * </SignUpButton>\n * ```\n */\nexport function SignUpButton({ children, className }: SignUpButtonProps) {\n const { afterSignInUrl, baseUrl } = useInsforge();\n\n const handleClick = () => {\n const redirectUrl = new URL(afterSignInUrl, window.location.origin).href;\n const authUrl = new URL('/auth/sign-up', baseUrl);\n authUrl.searchParams.set('redirect', redirectUrl);\n window.location.replace(authUrl.toString());\n };\n\n if (children && isValidElement(children)) {\n const originalOnClick = (children.props as { onClick?: (e: React.MouseEvent) => void })\n ?.onClick;\n\n return cloneElement(children, {\n onClick: (e: React.MouseEvent) => {\n handleClick();\n if (originalOnClick) {\n originalOnClick(e);\n }\n },\n } as Record<string, unknown>);\n }\n\n // Default button\n return (\n <button type=\"button\" className={className} onClick={handleClick}>\n {children || 'Sign up'}\n </button>\n );\n}\n","import { useInsforge } from '../provider/InsforgeProvider';\n\n/**\n * Hook to access authentication methods\n *\n * @returns Object containing:\n * - `signIn`: Function to sign in with email and password\n * - `signUp`: Function to sign up with email and password\n * - `signOut`: Function to sign out the current user\n * - `isLoaded`: Boolean indicating if auth state has been loaded\n * - `isSignedIn`: Boolean indicating if user is currently signed in\n *\n * @example\n * ```tsx\n * function LoginForm() {\n * const { signIn, signUp, signOut, isLoaded, isSignedIn } = useAuth();\n *\n * async function handleLogin(email: string, password: string) {\n * try {\n * await signIn(email, password);\n * // User is now signed in\n * } catch (error) {\n * console.error('Sign in failed:', error);\n * }\n * }\n *\n * if (!isLoaded) return <div>Loading...</div>;\n *\n * return (\n * <form onSubmit={(e) => { e.preventDefault(); handleLogin(email, password); }}>\n * {/* form fields *\\/}\n * </form>\n * );\n * }\n * ```\n */\nexport function useAuth() {\n const { signIn, signUp, signOut, isLoaded, isSignedIn } = useInsforge();\n return { signIn, signUp, signOut, isLoaded, isSignedIn };\n}\n","import { useInsforge } from '../provider/InsforgeProvider';\n\n/**\n * Hook to access current user data\n *\n * @returns Object containing:\n * - `user`: Current user object (InsforgeUser | null)\n * - `isLoaded`: Boolean indicating if auth state has been loaded\n * - `updateUser`: Function to update user profile data (returns { error: string } | null)\n * - `setUser`: Internal function to manually set user state\n *\n * @example\n * ```tsx\n * function UserProfile() {\n * const { user, isLoaded, updateUser } = useUser();\n *\n * if (!isLoaded) return <div>Loading...</div>;\n * if (!user) return <div>Not signed in</div>;\n *\n * async function handleUpdate(name: string) {\n * const result = await updateUser({ name });\n * if (result?.error) {\n * console.error(result.error);\n * } else {\n * console.log('User updated successfully');\n * }\n * }\n *\n * return (\n * <div>\n * <p>Email: {user.email}</p>\n * {user.name && <p>Name: {user.name}</p>}\n * {user.avatarUrl && <img src={user.avatarUrl} alt=\"Avatar\" />}\n * </div>\n * );\n * }\n * ```\n */\nexport function useUser() {\n const { user, isLoaded, updateUser, setUser } = useInsforge();\n return { user, isLoaded, updateUser, setUser };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@babel/runtime/helpers/extends.js","../src/navigation/NavigationContext.tsx","../src/navigation/BrowserNavigationAdapter.tsx","../src/navigation/useSearchParams.ts","../src/core/InsforgeManager.ts","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/cache/dist/emotion-cache.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/utils/dist/emotion-utils.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.esm.js","../node_modules/@emotion/react/dist/emotion-element-d59e098f.esm.js","../node_modules/@emotion/react/dist/emotion-react.esm.js","../src/styles/StyleProvider.tsx","../src/provider/InsforgeProvider.tsx","../src/hooks/usePublicAuthConfig.ts","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.esm.js","../src/styles/theme.ts","../src/components/atoms/styled.ts","../src/components/atoms/AuthBranding.tsx","../src/components/atoms/AuthContainer.tsx","../src/components/atoms/AuthHeader.tsx","../src/components/atoms/AuthErrorBanner.tsx","../src/components/atoms/AuthFormField.tsx","../src/components/atoms/AuthPasswordStrengthIndicator.tsx","../src/lib/path-utils.ts","../src/components/atoms/AuthPasswordField.tsx","../src/components/atoms/AuthSubmitButton.tsx","../src/components/atoms/AuthLink.tsx","../src/components/atoms/AuthDivider.tsx","../src/config/oauth-providers.tsx","../src/components/atoms/AuthOAuthButton.tsx","../src/components/atoms/AuthOAuthProviders.tsx","../src/components/atoms/AuthVerificationCodeInput.tsx","../src/components/forms/styled.ts","../src/components/atoms/AuthEmailVerificationStep.tsx","../src/components/atoms/AuthResetPasswordVerificationStep.tsx","../src/components/forms/SignInForm.tsx","../src/components/SignIn.tsx","../src/components/forms/SignUpForm.tsx","../src/lib/validation.ts","../src/components/SignUp.tsx","../src/components/forms/ForgotPasswordForm.tsx","../src/components/forms/ResetPasswordForm.tsx","../src/components/ForgotPassword.tsx","../src/components/ResetPassword.tsx","../src/components/forms/VerifyEmailStatus.tsx","../src/components/VerifyEmail.tsx","../src/components/SignOutButton.tsx","../src/components/styled.ts","../src/components/UserProfileModal.tsx","../src/components/UserButton.tsx","../src/components/Protect.tsx","../src/components/SignedIn.tsx","../src/components/SignedOut.tsx","../src/components/SignInButton.tsx","../src/components/SignUpButton.tsx","../src/hooks/useAuth.ts","../src/hooks/useUser.ts"],"names":["exports","z","Fragment","_extends","createContext","useContext","jsx","useState","token","StyleSheet","length","character","characters","weakMemoize","identifierWithPointTracking","toRules","getRules","compat","removeLabel","prefixer","createCache","node","stylis","_stylis","_insert","isBrowser","registerStyles","insertStyles","isCustomProperty","isProcessableValue","processStyleValue","match","keyframes","next","syncFallback","useInsertionEffect","React","React2","withEmotionCache","forwardRef","createEmotionProps","Insertion","isDevelopment","React3","useMemo","useEffect","InsforgeContext","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","React4","createStyled","jsxs","AlertTriangle","Check","EyeOff","Eye","Loader2","CircleCheck","useRef","prev","useCallback","isValidElement","cloneElement","X","User","LogOut"],"mappings":"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","file":"index.cjs","sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { createContext, useContext, ReactNode } from 'react';\nimport type { NavigationAdapter } from './types';\n\nconst NavigationContext = createContext<NavigationAdapter | null>(null);\n\nexport interface NavigationProviderProps {\n adapter: NavigationAdapter;\n children: ReactNode;\n}\n\n/**\n * Navigation Provider\n * Injects navigation adapter into the component tree\n */\nexport function NavigationProvider({ adapter, children }: NavigationProviderProps) {\n return <NavigationContext.Provider value={adapter}>{children}</NavigationContext.Provider>;\n}\n\n/**\n * Hook to access navigation adapter\n * @throws Error if used outside NavigationProvider\n */\nexport function useNavigationAdapter(): NavigationAdapter {\n const adapter = useContext(NavigationContext);\n\n if (!adapter) {\n return {\n useSearchParams: () => new URLSearchParams(),\n Link: ({ href, children, className }) => (\n <a href={href} className={className}>\n {children}\n </a>\n ),\n };\n }\n\n return adapter;\n}\n","import { useState } from 'react';\nimport type { NavigationAdapter } from './types';\n\n/**\n * Browser native navigation adapter\n * Uses browser's native URLSearchParams and <a> tags\n * Suitable for vanilla React apps without a routing library\n */\nexport const BrowserNavigationAdapter: NavigationAdapter = {\n /**\n * Returns URLSearchParams from current window.location.search\n * Note: Not reactive - reads once on component mount\n * This is sufficient for auth flows where we read initial URL params\n */\n useSearchParams() {\n const [searchParams] = useState(() => {\n if (typeof window === 'undefined') {\n return new URLSearchParams();\n }\n return new URLSearchParams(window.location.search);\n });\n\n return searchParams;\n },\n\n /**\n * Native <a> tag for navigation\n * Uses full page reload\n */\n Link({ href, className, children }) {\n return (\n <a href={href} className={className}>\n {children}\n </a>\n );\n },\n};\n","import { useNavigationAdapter } from './NavigationContext';\n\n/**\n * Hook to get URL search parameters\n * Uses the navigation adapter injected by NavigationProvider\n *\n * @returns URLSearchParams object\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const searchParams = useSearchParams();\n * const redirectUrl = searchParams.get('redirect') || '/';\n * // ...\n * }\n * ```\n */\nexport function useSearchParams(): URLSearchParams {\n const adapter = useNavigationAdapter();\n return adapter.useSearchParams();\n}\n","'use client';\r\nimport { createClient, type InsForgeClient } from '@insforge/sdk';\r\nimport type { InsforgeUser, OAuthProvider } from '../types';\r\nimport type {\r\n CreateSessionResponse,\r\n CreateUserResponse,\r\n GetPublicAuthConfigResponse,\r\n ResetPasswordResponse,\r\n VerifyEmailResponse,\r\n} from '@insforge/shared-schemas';\r\n\r\nexport interface InsforgeManagerState {\r\n user: InsforgeUser | null | undefined;\r\n userId: string | null | undefined;\r\n isLoaded: boolean;\r\n isSignedIn: boolean | undefined;\r\n}\r\n\r\nexport interface InsforgeManagerConfig {\r\n client: InsForgeClient;\r\n afterSignInUrl?: string;\r\n onAuthChange?: (user: InsforgeUser | null) => void;\r\n onSignIn?: (authToken: string) => Promise<void>;\r\n onSignOut?: () => Promise<void>;\r\n onRefresh?: (authToken: string) => Promise<void>;\r\n}\r\n\r\nexport class InsforgeManager {\r\n // Static private instance\r\n private static instance: InsforgeManager | null = null;\r\n\r\n // State storage\r\n private user: InsforgeUser | null | undefined = undefined;\r\n private isLoaded: boolean = false;\r\n private isInitializing: boolean = false;\r\n private sdk: InsForgeClient;\r\n private listeners: Set<(state: InsforgeManagerState) => void> = new Set();\r\n\r\n // Config\r\n private config: InsforgeManagerConfig;\r\n private refreshIntervalRef: NodeJS.Timeout | null = null;\r\n\r\n // Private constructor (prevents external instantiation)\r\n private constructor(config: InsforgeManagerConfig) {\r\n this.config = config;\r\n this.sdk = config.client;\r\n this.user = undefined;\r\n this.isLoaded = false;\r\n }\r\n\r\n // Public access method (Singleton core)\r\n public static getInstance(config: InsforgeManagerConfig): InsforgeManager {\r\n // Browser environment: reuse instance (update config but keep state)\r\n if (typeof window !== 'undefined' && InsforgeManager.instance) {\r\n InsforgeManager.instance.updateConfig(config);\r\n if (config.client && InsforgeManager.instance.sdk !== config.client) {\r\n InsforgeManager.instance.sdk = config.client;\r\n }\r\n return InsforgeManager.instance;\r\n }\r\n\r\n // Server environment or first creation: create new instance\r\n InsforgeManager.instance = new InsforgeManager(config);\r\n return InsforgeManager.instance;\r\n }\r\n\r\n // Clear instance (used for testing or cleanup)\r\n public static clearInstance() {\r\n if (InsforgeManager.instance) {\r\n InsforgeManager.instance.cleanup();\r\n }\r\n InsforgeManager.instance = null;\r\n }\r\n\r\n // Update config (for hot reloads)\r\n private updateConfig(config: InsforgeManagerConfig) {\r\n this.config = { ...this.config, ...config };\r\n }\r\n\r\n // Public initialization method\r\n // Even if we have initialState (isLoaded=true from cookies), we still need to load full user data from SDK/API\r\n public async initialize(): Promise<void> {\r\n // Skip if currently initializing (prevent concurrent calls)\r\n if (this.isInitializing) {\r\n return;\r\n }\r\n\r\n // Mark as initializing to prevent concurrent calls\r\n this.isInitializing = true;\r\n\r\n try {\r\n // Even if isLoaded=true (from initialState), we need to load full profile\r\n // initialState only provides basic user info from cookies for SSR hydration\r\n // Full profile (with all fields) comes from SDK's getCurrentUser()\r\n\r\n await this.loadAuthState();\r\n } finally {\r\n this.isInitializing = false;\r\n }\r\n }\r\n\r\n // Get current state\r\n public getState(): InsforgeManagerState {\r\n const userId = this.user === undefined ? undefined : this.user === null ? null : this.user.id;\r\n const isSignedIn = this.user === undefined ? undefined : this.user !== null;\r\n\r\n return {\r\n user: this.user,\r\n userId,\r\n isLoaded: this.isLoaded,\r\n isSignedIn,\r\n };\r\n }\r\n\r\n // Subscription mechanism\r\n public subscribe(listener: (state: InsforgeManagerState) => void): () => void {\r\n this.listeners.add(listener);\r\n return () => this.listeners.delete(listener);\r\n }\r\n\r\n private notifyListeners() {\r\n const state = this.getState();\r\n this.listeners.forEach((listener) => listener(state));\r\n }\r\n\r\n // Load auth state\r\n // This loads the FULL user data from SDK (including complete profile)\r\n // Called after hydration to get complete user information beyond what's in cookies\r\n private async loadAuthState(): Promise<{ success: boolean; error?: string }> {\r\n try {\r\n // Step 1: get current session (handles backend detection and token refresh)\r\n // This is the FIRST call - it determines if we're on new/legacy backend\r\n // and restores login state from httpOnly cookie or localStorage\r\n const {\r\n data: { session },\r\n } = await this.sdk.auth.getCurrentSession();\r\n\r\n if (!session) {\r\n // Not logged in - set user to null\r\n this.user = null;\r\n if (this.config.onAuthChange) {\r\n this.config.onAuthChange(null);\r\n }\r\n this.isLoaded = true;\r\n this.notifyListeners();\r\n return { success: false, error: 'no_session' };\r\n }\r\n\r\n // Sync token to server-side cookie (for Next.js SSR support)\r\n // This ensures the latest access token is available in Next.js API routes\r\n if (this.config.onRefresh && session.accessToken) {\r\n try {\r\n await this.config.onRefresh(session.accessToken);\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n console.error('[InsforgeManager] Error syncing token on refresh:', error.message);\r\n }\r\n }\r\n }\r\n\r\n // Step 2: Get full user data (now that we have a valid token)\r\n const userResult = await this.sdk.auth.getCurrentUser();\r\n\r\n if (userResult.data) {\r\n const userData: InsforgeUser = {\r\n id: userResult.data.user.id,\r\n email: userResult.data.user.email,\r\n profile: userResult.data.user.profile,\r\n };\r\n\r\n this.user = userData;\r\n\r\n if (this.config.onAuthChange) {\r\n this.config.onAuthChange(userData);\r\n }\r\n this.isLoaded = true;\r\n this.notifyListeners();\r\n return { success: true };\r\n } else {\r\n // Session exists but couldn't get user data\r\n this.user = null;\r\n if (this.config.onAuthChange) {\r\n this.config.onAuthChange(null);\r\n }\r\n this.isLoaded = true;\r\n this.notifyListeners();\r\n const errorMessage = (userResult.error as Error | null)?.message ?? 'failed_to_get_user';\r\n return { success: false, error: errorMessage };\r\n }\r\n } catch (error) {\r\n // Error during auth - set user to null\r\n this.user = null;\r\n if (this.config.onAuthChange) {\r\n this.config.onAuthChange(null);\r\n }\r\n this.isLoaded = true;\r\n this.notifyListeners();\r\n\r\n return {\r\n success: false,\r\n error: error instanceof Error ? error.message : 'Authentication failed',\r\n };\r\n }\r\n }\r\n\r\n // Helper to handle auth success\r\n private async handleAuthSuccess(\r\n authToken: string,\r\n fallbackUser?: { id?: string; email?: string; profile?: InsforgeUser['profile'] }\r\n ): Promise<void> {\r\n const userResult = await this.sdk.auth.getCurrentUser();\r\n\r\n if (userResult.data) {\r\n const userData: InsforgeUser = {\r\n id: userResult.data.user.id,\r\n email: userResult.data.user.email,\r\n profile: userResult.data.user.profile\r\n };\r\n\r\n // Set user first\r\n this.user = userData;\r\n\r\n // Immediately notify listeners so UI updates quickly\r\n this.notifyListeners();\r\n\r\n // Then execute callbacks (these may be slower, e.g. cookie sync)\r\n if (this.config.onAuthChange) {\r\n this.config.onAuthChange(userData);\r\n }\r\n\r\n if (this.config.onSignIn) {\r\n try {\r\n await this.config.onSignIn(authToken);\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n console.error('[InsforgeManager] Error syncing token to cookie:', error.message);\r\n }\r\n }\r\n }\r\n } else if (fallbackUser) {\r\n const userData: InsforgeUser = {\r\n id: fallbackUser.id || '',\r\n email: fallbackUser.email || '',\r\n profile: fallbackUser.profile || null,\r\n };\r\n\r\n // Set user first\r\n this.user = userData;\r\n\r\n // Immediately notify listeners\r\n this.notifyListeners();\r\n\r\n // Then execute callback\r\n if (this.config.onAuthChange) {\r\n this.config.onAuthChange(userData);\r\n }\r\n }\r\n }\r\n\r\n // Business methods\r\n public async signIn(\r\n email: string,\r\n password: string\r\n ): Promise<CreateSessionResponse | { error: string; statusCode?: number; errorCode?: string }> {\r\n const sdkResult = await this.sdk.auth.signInWithPassword({\r\n email,\r\n password,\r\n });\r\n\r\n if (sdkResult.data) {\r\n await this.handleAuthSuccess(\r\n sdkResult.data.accessToken || '',\r\n sdkResult.data.user\r\n ? {\r\n id: sdkResult.data.user.id,\r\n email: sdkResult.data.user.email,\r\n profile: sdkResult.data.user.profile || undefined,\r\n }\r\n : undefined\r\n );\r\n return sdkResult.data;\r\n } else {\r\n return {\r\n error: sdkResult.error?.message || 'Invalid email or password',\r\n statusCode: sdkResult.error?.statusCode,\r\n errorCode: sdkResult.error?.error,\r\n };\r\n }\r\n }\r\n\r\n public async signUp(\r\n email: string,\r\n password: string\r\n ): Promise<CreateUserResponse | { error: string; statusCode?: number; errorCode?: string }> {\r\n const sdkResult = await this.sdk.auth.signUp({ email, password });\r\n\r\n if (sdkResult.data) {\r\n if (sdkResult.data.accessToken) {\r\n await this.handleAuthSuccess(\r\n sdkResult.data.accessToken,\r\n sdkResult.data.user\r\n ? {\r\n id: sdkResult.data.user.id,\r\n email: sdkResult.data.user.email,\r\n profile: sdkResult.data.user.profile || undefined,\r\n }\r\n : undefined\r\n );\r\n }\r\n return sdkResult.data;\r\n } else {\r\n return {\r\n error: sdkResult.error?.message || 'Sign up failed',\r\n statusCode: sdkResult.error?.statusCode,\r\n errorCode: sdkResult.error?.error,\r\n };\r\n }\r\n }\r\n\r\n public async signOut(): Promise<void> {\r\n await this.sdk.auth.signOut();\r\n\r\n if (this.config.onSignOut) {\r\n try {\r\n await this.config.onSignOut();\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n console.error('[InsforgeManager] Error clearing cookie:', error.message);\r\n }\r\n }\r\n }\r\n\r\n if (this.refreshIntervalRef) {\r\n clearInterval(this.refreshIntervalRef);\r\n this.refreshIntervalRef = null;\r\n }\r\n\r\n this.user = null;\r\n if (this.config.onAuthChange) {\r\n this.config.onAuthChange(null);\r\n }\r\n\r\n this.notifyListeners();\r\n }\r\n\r\n public async updateUser(data: InsforgeUser['profile']): Promise<{ error: string } | null> {\r\n if (!this.user) {\r\n return { error: 'No user signed in' };\r\n }\r\n\r\n if (!data) {\r\n return { error: 'No profile data provided' };\r\n }\r\n\r\n const result = await this.sdk.auth.setProfile(data);\r\n\r\n if (result.data) {\r\n // Update local user state with the values we sent\r\n const updatedUser: InsforgeUser = {\r\n id: this.user.id,\r\n email: this.user.email,\r\n profile: data,\r\n };\r\n this.user = updatedUser;\r\n if (this.config.onAuthChange) {\r\n this.config.onAuthChange(updatedUser);\r\n }\r\n this.notifyListeners();\r\n return null;\r\n }\r\n\r\n const error = result.error as { message?: string } | undefined;\r\n return { error: error?.message || 'Failed to update user' };\r\n }\r\n\r\n public async reloadAuth(): Promise<{ success: boolean; error?: string }> {\r\n return await this.loadAuthState();\r\n }\r\n\r\n public async sendVerificationEmail(\r\n email: string\r\n ): Promise<{ success: boolean; message: string } | null> {\r\n const sdkResult = await this.sdk.auth.sendVerificationEmail({ email });\r\n return sdkResult.data;\r\n }\r\n\r\n public async sendResetPasswordEmail(\r\n email: string\r\n ): Promise<{ success: boolean; message: string } | null> {\r\n const sdkResult = await this.sdk.auth.sendResetPasswordEmail({ email });\r\n return sdkResult.data;\r\n }\r\n\r\n public async resetPassword(\r\n token: string,\r\n newPassword: string\r\n ): Promise<ResetPasswordResponse | null> {\r\n const sdkResult = await this.sdk.auth.resetPassword({\r\n newPassword,\r\n otp: token,\r\n });\r\n return sdkResult.data;\r\n }\r\n\r\n public async verifyEmail(otp: string, email?: string): Promise<VerifyEmailResponse | null> {\r\n const sdkResult = await this.sdk.auth.verifyEmail({ otp, email: email || undefined });\r\n if (sdkResult.data) {\r\n return sdkResult.data;\r\n } else {\r\n return {\r\n user: {\r\n id: '',\r\n createdAt: '',\r\n email: '',\r\n emailVerified: false,\r\n updatedAt: '',\r\n metadata: null,\r\n profile: null,\r\n },\r\n accessToken: '',\r\n redirectTo: undefined,\r\n csrfToken: undefined,\r\n };\r\n }\r\n }\r\n\r\n public async exchangeResetPasswordToken(\r\n email: string,\r\n code: string\r\n ): Promise<{ token: string; expiresAt?: string } | { error: { message: string } }> {\r\n const sdkResult = await this.sdk.auth.exchangeResetPasswordToken({ email, code });\r\n if (sdkResult.data) {\r\n return sdkResult.data;\r\n } else {\r\n return {\r\n error: {\r\n message: sdkResult.error?.message || 'Failed to exchange reset password token',\r\n },\r\n };\r\n }\r\n }\r\n\r\n public async loginWithOAuth(provider: OAuthProvider, redirectTo: string): Promise<void> {\r\n const sdkResult = await this.sdk.auth.signInWithOAuth({\r\n provider,\r\n redirectTo: redirectTo || window.location.origin + (this.config.afterSignInUrl || '/'),\r\n });\r\n if (sdkResult.error) {\r\n throw new Error(sdkResult.error.message);\r\n }\r\n }\r\n\r\n public async getPublicAuthConfig(): Promise<GetPublicAuthConfigResponse | null> {\r\n try {\r\n const result = await this.sdk.auth.getPublicAuthConfig();\r\n if (result.data) {\r\n return result.data;\r\n } else {\r\n console.error('[InsforgeManager] Failed to get public auth config:', result.error);\r\n return null;\r\n }\r\n } catch (error) {\r\n console.error('[InsforgeManager] Failed to get public auth config:', error);\r\n return null;\r\n }\r\n }\r\n\r\n public setUser(user: InsforgeUser | null): void {\r\n this.user = user;\r\n if (this.config.onAuthChange) {\r\n this.config.onAuthChange(user);\r\n }\r\n this.notifyListeners();\r\n }\r\n\r\n // Set initial state from server (for SSR hydration)\r\n // This is ONLY basic user info from cookies, not full profile\r\n // Following Clerk's pattern: initialState prevents hydration mismatch\r\n // but full user data is still loaded via initialize()\r\n public setInitialState(initialState: {\r\n user?: InsforgeUser | null;\r\n userId?: string | null;\r\n }): void {\r\n // Only set if we haven't loaded yet (undefined = not touched)\r\n if (this.user !== undefined) {\r\n return;\r\n }\r\n\r\n // Set basic user info from cookie\r\n // Note: This is lightweight data, full profile will be loaded by initialize()\r\n if (initialState.userId) {\r\n this.user = {\r\n id: initialState.userId,\r\n email: initialState.user?.email || '',\r\n profile: initialState.user?.profile || null,\r\n };\r\n } else {\r\n this.user = null;\r\n }\r\n\r\n // Mark as \"loaded\" for hydration purposes\r\n // But we'll still call loadAuthState() to get full profile\r\n this.isLoaded = true;\r\n this.notifyListeners();\r\n }\r\n\r\n public getConfig(): InsforgeManagerConfig {\r\n return this.config;\r\n }\r\n\r\n public getSDK(): ReturnType<typeof createClient> {\r\n return this.sdk;\r\n }\r\n\r\n // Cleanup\r\n private cleanup(): void {\r\n if (this.refreshIntervalRef) {\r\n clearInterval(this.refreshIntervalRef);\r\n this.refreshIntervalRef = null;\r\n }\r\n this.listeners.clear();\r\n }\r\n}\r\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var weakMemoize = function weakMemoize(func) {\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // Use non-null assertion because we just checked that the cache `has` it\n // This allows us to remove `undefined` from the return value\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport { weakMemoize as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport weakMemoize from '@emotion/weak-memoize';\nimport memoize from '@emotion/memoize';\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar getServerStylisCache = isBrowser ? undefined : weakMemoize(function () {\n return memoize(function () {\n return {};\n });\n});\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (isBrowser && key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n if (isBrowser) {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (!getServerStylisCache) {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n } else {\n var _finalizingPlugins = [stringify];\n\n var _serializer = middleware(omnipresentPlugins.concat(stylisPlugins, _finalizingPlugins));\n\n var _stylis = function _stylis(styles) {\n return serialize(compile(styles), _serializer);\n };\n\n var serverStylisCache = getServerStylisCache(stylisPlugins)(key);\n\n var getRules = function getRules(selector, serialized) {\n var name = serialized.name;\n\n if (serverStylisCache[name] === undefined) {\n serverStylisCache[name] = _stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n }\n\n return serverStylisCache[name];\n };\n\n _insert = function _insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n var rules = getRules(selector, serialized);\n\n if (cache.compat === undefined) {\n // in regular mode, we don't set the styles on the inserted cache\n // since we don't need to and that would be wasting memory\n // we return them so that they are rendered in a style tag\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n\n return rules;\n } else {\n // in compat mode, we put the styles on the inserted cache so\n // that emotion-server can pull out the styles\n // except when we don't want to cache it which was in Global but now\n // is nowhere but we don't want to do a major right now\n // and just in case we're going to leave the case here\n // it's also not affecting client side bundle size\n // so it's really not a big deal\n if (shouldCache) {\n cache.inserted[name] = rules;\n } else {\n return rules;\n }\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","var isBrowser = typeof document !== 'undefined';\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var stylesForSSR = '';\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n if (!isBrowser && maybeStyles !== undefined) {\n stylesForSSR += maybeStyles;\n }\n\n current = current.next;\n } while (current !== undefined);\n\n if (!isBrowser && stylesForSSR.length !== 0) {\n return stylesForSSR;\n }\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","import * as React from 'react';\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = !isBrowser ? syncFallback : useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n var newProps = {};\n\n for (var _key in props) {\n if (hasOwn.call(props, _key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n if (!isBrowser && rules !== undefined) {\n var _ref2;\n\n var serializedNames = serialized.name;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n next = next.next;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref2 = {}, _ref2[\"data-emotion\"] = cache.key + \" \" + serializedNames, _ref2.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref2.nonce = cache.sheet.nonce, _ref2));\n }\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var _key2 in props) {\n if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n newProps[_key2] = props[_key2];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, isDevelopment as a, ThemeProvider as b, createEmotionProps as c, withTheme as d, hasOwn as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser, a as isDevelopment } from './emotion-element-d59e098f.esm.js';\nexport { C as CacheProvider, T as ThemeContext, b as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, d as withTheme } from './emotion-element-d59e098f.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n var JSX;\n\n (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nfunction keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n}\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n var rules = '';\n\n for (var i = 0; i < serializedArr.length; i++) {\n var res = insertStyles(cache, serializedArr[i], false);\n\n if (!isBrowser && res !== undefined) {\n rules += res;\n }\n }\n\n if (!isBrowser) {\n return rules;\n }\n });\n\n if (!isBrowser && rules.length !== 0) {\n var _ref2;\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref2 = {}, _ref2[\"data-emotion\"] = cache.key + \" \" + serializedArr.map(function (serialized) {\n return serialized.name;\n }).join(' '), _ref2.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref2.nonce = cache.sheet.nonce, _ref2));\n }\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\nimport { useMemo, type ReactNode } from 'react';\n\ninterface StyleProviderProps {\n children: ReactNode;\n /** Optional nonce value for CSP (Content Security Policy) */\n nonce?: string;\n}\n\n/**\n * Provides Emotion CSS-in-JS styling context for Insforge components.\n *\n * This ensures styles are injected dynamically at runtime, preventing FOUC\n * in SSR environments like Next.js.\n *\n * @internal\n */\nexport function StyleProvider({ children, nonce }: StyleProviderProps) {\n const cache = useMemo(() => {\n const emotionCache = createCache({\n key: 'if-styles',\n prepend: true,\n nonce,\n });\n\n return emotionCache;\n }, [nonce]);\n\n return <CacheProvider value={cache}>{children}</CacheProvider>;\n}\n","import { useContext, useEffect, useState, useMemo, type ReactNode } from 'react';\r\nimport type { InsforgeUser, OAuthProvider } from '../types';\r\nimport { NavigationProvider, BrowserNavigationAdapter } from '../navigation';\r\nimport { InsforgeManager, type InsforgeManagerState } from '../core/InsforgeManager';\r\nimport { InsforgeContext, type InsforgeContextValue } from '../contexts';\r\nimport { StyleProvider } from '../styles/StyleProvider';\r\nimport { InsForgeClient } from '@insforge/sdk';\r\n\r\nexport interface InitialAuthState {\r\n user?: InsforgeUser | null;\r\n userId?: string | null;\r\n}\r\n\r\nexport interface InsforgeProviderProps {\r\n children: ReactNode;\r\n client: InsForgeClient;\r\n /**\r\n * URL to redirect to after successful sign in (when token is detected in URL)\r\n * @default '/'\r\n */\r\n afterSignInUrl?: string;\r\n onAuthChange?: (user: InsforgeUser | null) => void;\r\n onSignIn?: (authToken: string) => Promise<void>;\r\n onSignOut?: () => Promise<void>;\r\n onRefresh?: (authToken: string) => Promise<void>;\r\n /**\r\n * Initial auth state from server (for SSR hydration)\r\n * @internal - Not intended for public use, used by Next.js package\r\n */\r\n initialState?: InitialAuthState;\r\n}\r\n\r\n/**\r\n * Unified Insforge Provider - manages authentication state and configuration\r\n *\r\n * Uses singleton InsforgeManager to manage state across packages.\r\n * Context only subscribes to Manager and triggers React re-renders.\r\n *\r\n * @example\r\n * ```tsx\r\n * // Basic usage (React/Vite)\r\n * import { InsforgeProvider } from '@insforge/react';\r\n *\r\n * export default function App() {\r\n * return (\r\n * <InsforgeProvider\r\n * baseUrl={import.meta.env.VITE_INSFORGE_BASE_URL}\r\n * >\r\n * {children}\r\n * </InsforgeProvider>\r\n * );\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * ```tsx\r\n * // With cookie sync (Next.js optimization)\r\n * <InsforgeProvider\r\n * baseUrl={baseUrl}\r\n * onSignIn={async (authToken) => {\r\n * await signIn(authToken);\r\n * }}\r\n * onSignOut={async () => {\r\n * await signOut();\r\n * }}\r\n * >\r\n * {children}\r\n * </InsforgeProvider>\r\n * ```\r\n */\r\nexport function InsforgeProviderCore({\r\n children,\r\n client,\r\n afterSignInUrl = '/',\r\n onAuthChange,\r\n onSignIn,\r\n onSignOut,\r\n onRefresh,\r\n initialState,\r\n}: InsforgeProviderProps) {\r\n // Get singleton Manager instance\r\n const manager: InsforgeManager = useMemo(\r\n () =>\r\n InsforgeManager.getInstance({\r\n client,\r\n afterSignInUrl,\r\n onAuthChange,\r\n onSignIn,\r\n onSignOut,\r\n onRefresh,\r\n }),\r\n [client, afterSignInUrl, onAuthChange, onSignIn, onSignOut, onRefresh]\r\n );\r\n\r\n // Set initialState if provided (from Server Component)\r\n // This must happen during render, before useState initialization\r\n if (initialState) {\r\n const currentState = manager.getState();\r\n if (currentState.userId === undefined && initialState.userId !== undefined) {\r\n manager.setInitialState(initialState);\r\n }\r\n }\r\n\r\n // Subscribe to Manager state\r\n // Start with initial state from manager (will include initialState if set above)\r\n const [state, setState] = useState<InsforgeManagerState>(() => manager.getState());\r\n\r\n useEffect(() => {\r\n // Subscribe to state changes\r\n const unsubscribe = manager.subscribe((newState: InsforgeManagerState) => {\r\n setState(newState);\r\n });\r\n\r\n // Initialize auth state only on client side (after hydration)\r\n // This prevents hydration mismatches by ensuring SSR and client initial render match\r\n void manager.initialize().then(() => {\r\n const params = new URLSearchParams(window.location.search);\r\n if (params.has('access_token')) {\r\n const url = new URL(window.location.href);\r\n url.searchParams.delete('access_token');\r\n url.searchParams.delete('user_id');\r\n url.searchParams.delete('email');\r\n url.searchParams.delete('name');\r\n url.searchParams.delete('csrf_token');\r\n url.searchParams.delete('error');\r\n\r\n window.history.replaceState({}, document.title, url.toString());\r\n }\r\n });\r\n\r\n return () => {\r\n unsubscribe();\r\n };\r\n }, [manager]);\r\n\r\n // Create stable method references that delegate to manager\r\n const contextValue = useMemo<InsforgeContextValue>(\r\n () => ({\r\n // State from Manager\r\n user: state.user,\r\n userId: state.userId,\r\n isLoaded: state.isLoaded,\r\n isSignedIn: state.isSignedIn,\r\n\r\n // Methods delegated to Manager\r\n setUser: (user: InsforgeUser | null) => manager.setUser(user),\r\n signIn: (email: string, password: string) => manager.signIn(email, password),\r\n signUp: (email: string, password: string) => manager.signUp(email, password),\r\n signOut: () => manager.signOut(),\r\n updateUser: (data: Partial<InsforgeUser>) => manager.updateUser(data),\r\n reloadAuth: () => manager.reloadAuth(),\r\n sendVerificationEmail: (email: string) => manager.sendVerificationEmail(email),\r\n sendResetPasswordEmail: (email: string) => manager.sendResetPasswordEmail(email),\r\n resetPassword: (token: string, newPassword: string) =>\r\n manager.resetPassword(token, newPassword),\r\n verifyEmail: (otp: string, email?: string) => manager.verifyEmail(otp, email),\r\n exchangeResetPasswordToken: (email: string, code: string) =>\r\n manager.exchangeResetPasswordToken(email, code),\r\n loginWithOAuth: (provider: OAuthProvider, redirectTo: string) =>\r\n manager.loginWithOAuth(provider, redirectTo),\r\n getPublicAuthConfig: () => manager.getPublicAuthConfig(),\r\n\r\n // Config\r\n baseUrl: manager.getConfig().client.getHttpClient().baseUrl,\r\n afterSignInUrl: manager.getConfig().afterSignInUrl || '/',\r\n }),\r\n [state, manager]\r\n );\r\n\r\n return <InsforgeContext.Provider value={contextValue}>{children}</InsforgeContext.Provider>;\r\n}\r\n\r\nexport function InsforgeProvider(props: InsforgeProviderProps) {\r\n return (\r\n <StyleProvider>\r\n <NavigationProvider adapter={BrowserNavigationAdapter}>\r\n <InsforgeProviderCore {...props} />\r\n </NavigationProvider>\r\n </StyleProvider>\r\n );\r\n}\r\n\r\n/**\r\n * Hook to access Insforge context\r\n *\r\n * Works seamlessly across packages thanks to singleton Manager.\r\n * Context instance is guaranteed to be consistent.\r\n *\r\n * @example\r\n * ```tsx\r\n * function MyComponent() {\r\n * const { user, isSignedIn, signOut } = useInsforge();\r\n *\r\n * if (!isSignedIn) return <SignIn />;\r\n *\r\n * return (\r\n * <div>\r\n * <p>Welcome {user.email}</p>\r\n * <button onClick={signOut}>Sign Out</button>\r\n * </div>\r\n * );\r\n * }\r\n * ```\r\n */\r\nexport function useInsforge(): InsforgeContextValue {\r\n const context: InsforgeContextValue | undefined = useContext(InsforgeContext);\r\n\r\n if (!context) {\r\n return {\r\n user: undefined,\r\n userId: undefined,\r\n isLoaded: false,\r\n isSignedIn: undefined,\r\n setUser: () => {},\r\n signIn: () => Promise.resolve({ error: 'SSR mode' }),\r\n signUp: () => Promise.resolve({ error: 'SSR mode' }),\r\n signOut: () => Promise.resolve(),\r\n updateUser: () => Promise.resolve({ error: 'SSR mode' }),\r\n reloadAuth: () => Promise.resolve({ success: false, error: 'SSR mode' }),\r\n sendVerificationEmail: () => Promise.resolve(null),\r\n sendResetPasswordEmail: () => Promise.resolve(null),\r\n resetPassword: () => Promise.resolve(null),\r\n verifyEmail: () => Promise.resolve(null),\r\n exchangeResetPasswordToken: () => Promise.resolve({ error: { message: 'SSR mode' } }),\r\n loginWithOAuth: () => Promise.resolve(),\r\n getPublicAuthConfig: () => Promise.resolve(null),\r\n baseUrl: '',\r\n afterSignInUrl: '/',\r\n };\r\n }\r\n\r\n return context;\r\n}\r\n","import { useState, useEffect } from 'react';\nimport type { GetPublicAuthConfigResponse } from '@insforge/shared-schemas';\nimport { useInsforge } from '../provider/InsforgeProvider';\n\n/**\n * Hook to get all public authentication configuration (OAuth + Email) from Insforge backend\n *\n * **IMPORTANT: This hook should ONLY be used in SignIn and SignUp components.**\n *\n * This hook lazily fetches all public authentication configuration from the backend\n * only when the component mounts. Using it in other components will cause unnecessary\n * API calls on every page load.\n *\n * @returns Object containing OAuth providers, email auth config, and loading state\n * - `authConfig`: Email authentication configuration object with password rules\n * - `isLoaded`: Boolean indicating if the config has been fetched\n *\n * @example\n * ```tsx\n * // ✅ Correct usage - only in SignIn/SignUp components\n * function SignUp() {\n * const { authConfig, isLoaded } = usePublicAuthConfig();\n *\n * if (!isLoaded) return <div>Loading...</div>;\n *\n * return (\n * <div>\n * <p>OAuth providers: {authConfig?.oauthProviders.length}</p>\n * <p>Password min length: {authConfig?.passwordMinLength}</p>\n * </div>\n * );\n * }\n * ```\n *\n * @requires Must be used within InsforgeProvider\n */\nexport function usePublicAuthConfig(): {\n authConfig: GetPublicAuthConfigResponse | null;\n isLoaded: boolean;\n} {\n const { getPublicAuthConfig } = useInsforge();\n const [authConfig, setAuthConfig] = useState<GetPublicAuthConfigResponse | null>(null);\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n async function fetchConfig() {\n const result = await getPublicAuthConfig();\n if (result) {\n setAuthConfig(result);\n } else {\n console.error('[usePublicAuthConfig] Failed to get public auth config');\n setAuthConfig(null);\n }\n setIsLoaded(true);\n }\n\n void fetchConfig();\n }, [getPublicAuthConfig]);\n\n return { authConfig, isLoaded };\n}\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\n\nvar isBrowser = typeof document !== 'undefined';\n\nvar isDevelopment = false;\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n if (!isBrowser && rules !== undefined) {\n var _ref2;\n\n var serializedNames = serialized.name;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n next = next.next;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref2 = {}, _ref2[\"data-emotion\"] = cache.key + \" \" + serializedNames, _ref2.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref2.nonce = cache.sheet.nonce, _ref2));\n }\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n // eslint-disable-next-line prefer-spread\n styles.push.apply(styles, args);\n } else {\n var templateStringsArr = args[0];\n\n styles.push(templateStringsArr[0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], templateStringsArr[i]);\n }\n }\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n var newStyled = createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n }));\n return newStyled.apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/react';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\nimport '@emotion/utils';\nimport 'react';\nimport '@emotion/is-prop-valid';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// bind it to avoid mutating the original function\nvar styled = createStyled.bind(null);\ntags.forEach(function (tagName) {\n styled[tagName] = styled(tagName);\n});\n\nexport { styled as default };\n","/**\n * Insforge Design System Theme\n *\n * Complete design tokens for all components\n */\n\nexport const theme = {\n colors: {\n primary: '#000000',\n primaryHover: '#1f1f1f',\n text: '#000000',\n textSecondary: '#828282',\n textMuted: '#a3a3a3',\n textGray: '#525252',\n border: '#d4d4d4',\n borderGray: '#e4e4e7',\n borderHover: '#9ca3af',\n borderFocus: '#000000',\n bgWhite: '#ffffff',\n bgLight: '#fafafa',\n bgGray: '#f5f5f5',\n bgHover: '#f9fafb',\n error: '#dc2626',\n errorBg: '#fee2e2',\n success: '#16a34a',\n successBg: '#d1fae5',\n successDark: '#059669',\n black: '#000000',\n zinc900: '#09090b',\n },\n\n spacing: {\n 1: '0.25rem', // 4px\n 2: '0.5rem', // 8px\n 3: '0.75rem', // 12px\n 4: '1rem', // 16px\n 6: '1.5rem', // 24px\n 8: '2rem', // 32px\n 10: '2.5rem', // 40px\n },\n\n radius: {\n xs: '0.125rem', // 2px\n sm: '0.25rem', // 4px\n md: '0.375rem', // 6px\n lg: '0.5rem', // 8px\n xl: '0.75rem', // 12px\n full: '9999px',\n },\n\n fontSize: {\n xs: '0.75rem', // 12px\n sm: '0.875rem', // 14px\n base: '1rem', // 16px\n lg: '1.125rem', // 18px\n xl: '1.25rem', // 20px\n '2xl': '1.5rem', // 24px\n },\n\n lineHeight: {\n tight: '1rem', // 16px\n normal: '1.25rem', // 20px\n relaxed: '1.5rem', // 24px\n loose: '2rem', // 32px\n },\n\n fontFamily: {\n base: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif\",\n manrope: \"'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif\",\n },\n\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n },\n\n shadow: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 1px 2px 0 rgba(0, 0, 0, 0.1)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n },\n\n transition: {\n fast: '150ms cubic-bezier(0.4, 0, 0.2, 1)',\n base: '200ms cubic-bezier(0.4, 0, 0.2, 1)',\n },\n\n sizes: {\n input: {\n height: '2.5rem', // 40px\n },\n button: {\n height: '2.5rem', // 40px for submit\n heightOAuth: '2.25rem', // 36px for OAuth\n },\n avatar: '2rem', // 32px\n icon: '1.25rem', // 20px\n iconSm: '1.125rem', // 18px\n iconLg: '1.5rem', // 24px\n verifyCode: '3rem', // 48px\n verifyIcon: '4rem', // 64px\n verifyIconInner: '2rem', // 32px\n },\n} as const;\n\nexport type Theme = typeof theme;\n\n/**\n * Keyframe animations\n */\nexport const keyframes = {\n spin: `\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n `,\n};\n\n/**\n * Google Fonts imports\n */\nexport const fontImports = [\n 'https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap',\n 'https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap',\n];\n","/** @jsxImportSource @emotion/react */\nimport styled from '@emotion/styled';\nimport { keyframes as emotionKeyframes } from '@emotion/react';\nimport { theme, keyframes } from '../../styles/theme';\n\n/* ============================================\n KEYFRAMES\n ============================================ */\nconst spinAnimation = emotionKeyframes`${keyframes.spin}`;\n\n/* ============================================\n AUTH CONTAINER\n ============================================ */\nexport const AuthContainerWrapper = styled.div`\n width: 100%;\n max-width: 400px;\n border-radius: ${theme.radius.xl};\n overflow: hidden;\n box-shadow: ${theme.shadow.lg};\n`;\n\nexport const AuthCard = styled.div`\n background-color: ${theme.colors.bgWhite};\n padding: ${theme.spacing[6]};\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n gap: ${theme.spacing[6]};\n`;\n\n/* ============================================\n AUTH HEADER\n ============================================ */\nexport const AuthHeaderWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n gap: ${theme.spacing[2]};\n`;\n\nexport const AuthHeaderTitle = styled.h1`\n font-size: ${theme.fontSize['2xl']};\n font-weight: ${theme.fontWeight.semibold};\n color: ${theme.colors.text};\n line-height: ${theme.lineHeight.loose};\n margin: 0;\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const AuthHeaderSubtitle = styled.p`\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n color: ${theme.colors.textSecondary};\n line-height: ${theme.lineHeight.relaxed};\n margin: 0;\n font-family: ${theme.fontFamily.base};\n`;\n\n/* ============================================\n FORM FIELD\n ============================================ */\nexport const FormFieldWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n gap: ${theme.spacing[1]};\n`;\n\nexport const FormFieldLabel = styled.label`\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n color: ${theme.colors.text};\n line-height: ${theme.lineHeight.relaxed};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const FormFieldInput = styled.input`\n width: 100%;\n display: flex;\n align-items: center;\n gap: ${theme.spacing[2]};\n align-self: stretch;\n padding: ${theme.spacing[2]} ${theme.spacing[3]};\n border-radius: ${theme.radius.sm};\n border: 1px solid ${theme.colors.border};\n background-color: ${theme.colors.bgWhite};\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n line-height: ${theme.lineHeight.normal};\n color: ${theme.colors.text};\n font-family: ${theme.fontFamily.base};\n transition: border-color ${theme.transition.base};\n\n &::placeholder {\n color: ${theme.colors.textMuted};\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n }\n\n &:focus {\n outline: none;\n border-color: ${theme.colors.borderFocus};\n }\n`;\n\n/* ============================================\n PASSWORD FIELD\n ============================================ */\nexport const PasswordFieldWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n gap: ${theme.spacing[1]};\n`;\n\nexport const PasswordFieldLabelRow = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const PasswordFieldLabel = styled.label`\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n color: ${theme.colors.text};\n line-height: ${theme.lineHeight.relaxed};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const PasswordFieldForgotLink = styled.a`\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n color: ${theme.colors.textSecondary};\n text-decoration: none;\n transition: color ${theme.transition.fast};\n font-family: ${theme.fontFamily.base};\n cursor: pointer;\n`;\n\nexport const PasswordFieldInputWrapper = styled.div`\n position: relative;\n width: 100%;\n`;\n\nexport const PasswordFieldInput = styled.input`\n width: 100%;\n display: flex;\n align-items: center;\n align-self: stretch;\n padding: ${theme.spacing[2]} ${theme.spacing[3]};\n padding-right: 2.5rem;\n border-radius: ${theme.radius.sm};\n border: 1px solid ${theme.colors.border};\n background-color: ${theme.colors.bgWhite};\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.normal};\n line-height: ${theme.lineHeight.normal};\n color: ${theme.colors.text};\n font-family: ${theme.fontFamily.base};\n transition: border-color ${theme.transition.base};\n\n &::placeholder {\n color: ${theme.colors.textMuted};\n }\n\n &:focus {\n outline: none;\n border-color: ${theme.colors.borderFocus};\n }\n`;\n\nexport const PasswordFieldToggleButton = styled.button`\n position: absolute;\n right: ${theme.spacing[1]};\n top: 50%;\n transform: translateY(-50%);\n background: none;\n border: none;\n cursor: pointer;\n padding: ${theme.spacing[1]};\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${theme.colors.textSecondary};\n transition: color ${theme.transition.fast};\n`;\n\n/* ============================================\n SUBMIT BUTTON\n ============================================ */\nexport const SubmitButton = styled.button`\n border-radius: ${theme.radius.sm};\n background-color: ${theme.colors.primary};\n height: ${theme.sizes.button.height};\n width: 100%;\n display: flex;\n margin-top: ${theme.spacing[4]};\n padding: ${theme.spacing[2]} ${theme.spacing[4]};\n justify-content: center;\n align-items: center;\n gap: 0.625rem;\n align-self: stretch;\n color: ${theme.colors.bgWhite};\n font-weight: ${theme.fontWeight.semibold};\n font-family: ${theme.fontFamily.manrope};\n font-size: ${theme.fontSize.base};\n line-height: normal;\n border: none;\n cursor: pointer;\n transition: background-color ${theme.transition.base};\n\n &:hover:not(:disabled) {\n background-color: ${theme.colors.primaryHover};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n\nexport const SubmitButtonIcon = styled.div`\n width: ${theme.sizes.icon};\n height: ${theme.sizes.icon};\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\nexport const SubmitButtonSpinner = styled.div`\n width: ${theme.sizes.icon};\n height: ${theme.sizes.icon};\n display: flex;\n align-items: center;\n justify-content: center;\n animation: ${spinAnimation} 1s linear infinite;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\n/* ============================================\n OAUTH BUTTON\n ============================================ */\nexport const OAuthButton = styled.button<{ $variant?: 'full' | 'short' | 'iconOnly' }>`\n display: flex;\n width: 100%;\n height: ${theme.sizes.button.heightOAuth};\n padding: ${(props: { $variant?: 'full' | 'short' | 'iconOnly' }) =>\n props.$variant === 'short' || props.$variant === 'iconOnly'\n ? theme.spacing[2]\n : `${theme.spacing[2]} ${theme.spacing[3]}`};\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: ${(props: { $variant?: 'full' | 'short' | 'iconOnly' }) =>\n props.$variant === 'iconOnly'\n ? '0'\n : props.$variant === 'short'\n ? theme.spacing[2]\n : theme.spacing[3]};\n border-radius: ${theme.radius.md};\n border: 1px solid ${theme.colors.borderGray};\n background-color: ${theme.colors.bgWhite};\n box-shadow: ${theme.shadow.md};\n color: ${theme.colors.zinc900};\n text-align: center;\n font-size: ${theme.fontSize.sm};\n font-weight: ${theme.fontWeight.medium};\n line-height: ${theme.lineHeight.normal};\n cursor: pointer;\n transition: all ${theme.transition.base};\n font-family: ${theme.fontFamily.base};\n\n &:hover:not(:disabled) {\n background-color: ${theme.colors.bgHover};\n border-color: ${theme.colors.borderHover};\n }\n\n &:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n`;\n\nexport const OAuthButtonIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: ${theme.sizes.iconSm};\n height: ${theme.sizes.iconSm};\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\n/* ============================================\n OAUTH PROVIDERS\n ============================================ */\nexport const OAuthProvidersContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[3]};\n width: 100%;\n`;\n\n/* ============================================\n AUTH LINK\n ============================================ */\nexport const AuthLinkWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n gap: ${theme.spacing[1]};\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textSecondary};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const AuthLinkText = styled.span`\n font-weight: ${theme.fontWeight.normal};\n`;\n\nexport const AuthLinkLink = styled.a`\n font-weight: ${theme.fontWeight.semibold};\n color: ${theme.colors.text};\n text-decoration: none;\n transition: opacity ${theme.transition.fast};\n cursor: pointer;\n`;\n\n/* ============================================\n AUTH DIVIDER\n ============================================ */\nexport const AuthDividerWrapper = styled.div`\n display: flex;\n align-items: center;\n text-align: center;\n width: 100%;\n gap: ${theme.spacing[3]};\n`;\n\nexport const AuthDividerLine = styled.div`\n flex: 1;\n border-top: 1px solid ${theme.colors.border};\n`;\n\nexport const AuthDividerText = styled.span`\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textSecondary};\n font-weight: ${theme.fontWeight.normal};\n font-family: ${theme.fontFamily.manrope};\n`;\n\n/* ============================================\n ERROR BANNER\n ============================================ */\nexport const ErrorBannerWrapper = styled.div`\n padding: ${theme.spacing[3]};\n background-color: ${theme.colors.errorBg};\n border-radius: ${theme.radius.md};\n border: 1px solid ${theme.colors.error};\n`;\n\nexport const ErrorBannerContent = styled.div`\n display: flex;\n align-items: center;\n gap: ${theme.spacing[2]};\n`;\n\nexport const ErrorBannerIcon = styled.div`\n width: ${theme.sizes.iconLg};\n height: ${theme.sizes.iconLg};\n flex-shrink: 0;\n color: ${theme.colors.error};\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\nexport const ErrorBannerText = styled.p`\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.error};\n font-weight: ${theme.fontWeight.normal};\n font-family: ${theme.fontFamily.base};\n margin: 0;\n`;\n\n/* ============================================\n AUTH BRANDING\n ============================================ */\nexport const AuthBrandingWrapper = styled.div`\n background-color: ${theme.colors.bgLight};\n padding: ${theme.spacing[4]} ${theme.spacing[2]};\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n gap: ${theme.spacing[1]};\n`;\n\nexport const AuthBrandingText = styled.p`\n font-size: ${theme.fontSize.xs};\n font-weight: ${theme.fontWeight.medium};\n color: ${theme.colors.text};\n font-family: ${theme.fontFamily.manrope};\n margin: 0;\n`;\n\n/* ============================================\n VERIFICATION CODE INPUT\n ============================================ */\nexport const VerificationCodeInputContainer = styled.div`\n display: flex;\n gap: ${theme.spacing[3]};\n justify-content: center;\n`;\n\nexport const VerificationCodeInput = styled.input`\n width: ${theme.sizes.verifyCode};\n height: ${theme.sizes.verifyCode};\n text-align: center;\n font-size: ${theme.fontSize.base};\n font-weight: ${theme.fontWeight.semibold};\n border: 1px solid ${theme.colors.border};\n border-radius: ${theme.radius.sm};\n background-color: ${theme.colors.bgWhite};\n color: ${theme.colors.text};\n transition: border-color ${theme.transition.base};\n font-family: ${theme.fontFamily.manrope};\n\n &:focus {\n outline: none;\n border-color: ${theme.colors.borderFocus};\n }\n`;\n\n/* ============================================\n PASSWORD STRENGTH INDICATOR\n ============================================ */\nexport const PasswordStrengthWrapper = styled.div`\n margin-top: ${theme.spacing[2]};\n`;\n\nexport const PasswordStrengthFill = styled.div`\n height: 100%;\n transition:\n width ${theme.transition.base},\n background-color ${theme.transition.base};\n`;\n\nexport const PasswordStrengthText = styled.span`\n font-size: ${theme.fontSize.xs};\n color: ${theme.colors.textSecondary};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const PasswordStrengthRequirements = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[2]};\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textGray};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const PasswordStrengthRequirement = styled.div`\n display: flex;\n align-items: center;\n gap: ${theme.spacing[2]};\n`;\n","import { AuthBrandingWrapper, AuthBrandingText } from './styled';\n\n/**\n * Insforge branding component for authentication pages.\n *\n * @component\n * @example\n * ```tsx\n * <AuthBranding />\n * ```\n */\nexport function AuthBranding() {\n return (\n <AuthBrandingWrapper>\n <AuthBrandingText>Secured by</AuthBrandingText>\n <a href=\"https://insforge.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n <svg\n width=\"83\"\n height=\"20\"\n viewBox=\"0 0 83 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.16783 8.46797C1.9334 8.23325 1.9334 7.85269 2.16783 7.61797L8.11049 1.66797L16.6 1.66797L6.41259 11.868C6.17815 12.1027 5.79807 12.1027 5.56363 11.868L2.16783 8.46797Z\"\n fill=\"url(#paint0_linear_2976_9475)\"\n />\n <path\n d=\"M12.8858 6.44922L16.6 10.168V18.668L8.64108 10.6992L12.8858 6.44922Z\"\n fill=\"url(#paint1_linear_2976_9475)\"\n />\n <path\n d=\"M67.5439 6.48828C68.2894 6.48828 68.9145 6.67064 69.418 7.03516C69.5229 7.10943 69.6214 7.1907 69.7158 7.27637V6.70703H71.248V14.959C71.248 15.1583 71.2381 15.3485 71.2188 15.5283C71.2042 15.7129 71.1774 15.8925 71.1387 16.0674C71.0225 16.5776 70.7998 16.9957 70.4707 17.3213C70.1415 17.6518 69.7321 17.8972 69.2432 18.0576C68.7592 18.2179 68.2222 18.2988 67.6318 18.2988C67.1962 18.2988 66.7768 18.2308 66.375 18.0947C65.9782 17.9587 65.6202 17.7614 65.3008 17.5039C64.9813 17.2512 64.7199 16.9446 64.5166 16.585L66.1289 15.7832C66.2789 16.0698 66.4888 16.2819 66.7598 16.418C67.0356 16.5589 67.3289 16.6289 67.6387 16.6289C68.0016 16.6289 68.3258 16.5628 68.6113 16.4316C68.8969 16.3053 69.1176 16.116 69.2725 15.8633C69.4321 15.6155 69.5077 15.3047 69.498 14.9307V14.1797C69.4665 14.2037 69.4359 14.229 69.4033 14.252C68.8855 14.6164 68.2441 14.7988 67.4795 14.7988C66.7582 14.7988 66.1281 14.6165 65.5908 14.252C65.0537 13.8875 64.637 13.3915 64.3418 12.7646C64.0467 12.1378 63.8994 11.4307 63.8994 10.6436C63.8994 9.84651 64.0465 9.13673 64.3418 8.51465C64.6419 7.88768 65.0663 7.39481 65.6133 7.03516C66.1601 6.67077 66.8036 6.48836 67.5439 6.48828ZM37.5 6.48828C38.1099 6.48828 38.6496 6.58294 39.1191 6.77246C39.5935 6.96201 39.9762 7.2321 40.2666 7.58203C40.5569 7.93184 40.7359 8.34227 40.8037 8.81348L39.0176 9.13477C38.974 8.79951 38.8218 8.53424 38.5605 8.33984C38.304 8.14547 37.96 8.03605 37.5293 8.01172C37.1178 7.98742 36.7859 8.05051 36.5342 8.20117C36.2825 8.34698 36.1562 8.55398 36.1562 8.82129C36.1563 8.97184 36.208 9.10017 36.3096 9.20703C36.4112 9.31394 36.614 9.42141 36.9189 9.52832C37.2288 9.63524 37.6889 9.76635 38.2988 9.92188C38.9232 10.0823 39.4222 10.2666 39.7949 10.4756C40.1722 10.6796 40.4428 10.9254 40.6074 11.2119C40.7768 11.4987 40.8623 11.8466 40.8623 12.2549C40.8623 13.047 40.574 13.6691 39.998 14.1211C39.4268 14.5731 38.6348 14.7988 37.623 14.7988C36.6551 14.7988 35.8687 14.5799 35.2637 14.1426C34.6587 13.7052 34.2909 13.0908 34.1602 12.2988L35.9463 12.0215C36.0383 12.4102 36.2411 12.7169 36.5557 12.9404C36.8703 13.164 37.2678 13.2754 37.7471 13.2754C38.1681 13.2754 38.4922 13.1926 38.7197 13.0273C38.9521 12.8572 39.0684 12.6266 39.0684 12.335C39.0684 12.1552 39.0245 12.0122 38.9375 11.9053C38.8552 11.7935 38.6713 11.686 38.3857 11.584C38.1001 11.4819 37.6618 11.3528 37.0713 11.1973C36.4131 11.0223 35.8901 10.8359 35.5029 10.6367C35.1158 10.4327 34.8374 10.192 34.668 9.91504C34.4985 9.63801 34.4141 9.30188 34.4141 8.9082C34.4141 8.41746 34.5423 7.98943 34.7988 7.625C35.0553 7.26073 35.4135 6.98146 35.873 6.78711C36.3329 6.58784 36.8755 6.48828 37.5 6.48828ZM53.3047 6.48828C54.0937 6.48828 54.7815 6.66572 55.3672 7.02051C55.9527 7.37528 56.4072 7.86634 56.7314 8.49316C57.0558 9.11525 57.2187 9.83193 57.2188 10.6436C57.2188 11.46 57.0537 12.1817 56.7246 12.8086C56.4003 13.4307 55.9451 13.9196 55.3594 14.2744C54.7737 14.6242 54.0888 14.7988 53.3047 14.7988C52.5205 14.7988 51.8357 14.6214 51.25 14.2666C50.6643 13.9118 50.2091 13.4238 49.8848 12.8018C49.5653 12.1748 49.4053 11.4552 49.4053 10.6436C49.4053 9.81735 49.5703 9.09279 49.8994 8.4707C50.2286 7.8488 50.6859 7.36255 51.2715 7.0127C51.8572 6.66281 52.5351 6.48828 53.3047 6.48828ZM76.7471 6.48828C77.5603 6.48828 78.25 6.68053 78.8164 7.06445C79.3876 7.44351 79.812 7.97991 80.0879 8.6748C80.3638 9.36976 80.4672 10.189 80.3994 11.1318H74.7256C74.7843 11.6972 74.949 12.1516 75.2227 12.4951C75.5711 12.9325 76.0792 13.1513 76.7471 13.1514C77.1779 13.1514 77.5486 13.0567 77.8584 12.8672C78.173 12.6728 78.4146 12.3928 78.584 12.0283L80.3125 12.5537C80.0124 13.2633 79.5473 13.8153 78.918 14.209C78.2936 14.6025 77.6036 14.7988 76.8486 14.7988C76.0549 14.7988 75.358 14.6263 74.7578 14.2812C74.1576 13.9362 73.6875 13.458 73.3486 12.8457C73.0147 12.2334 72.8477 11.5284 72.8477 10.7314C72.8477 9.87126 73.0127 9.12495 73.3418 8.49316C73.671 7.85651 74.1282 7.36263 74.7139 7.0127C75.2995 6.6628 75.9775 6.48832 76.7471 6.48828ZM23.3301 14.5801H21.5801V4.08203H23.3301V14.5801ZM29.6152 6.48047C30.1959 6.48052 30.6753 6.5781 31.0527 6.77246C31.4301 6.96681 31.7305 7.21443 31.9531 7.51562C32.1758 7.81695 32.3398 8.13831 32.4463 8.47852C32.5528 8.81873 32.6213 9.14205 32.6504 9.44824C32.6843 9.74946 32.7012 9.99508 32.7012 10.1846V14.5801H30.9287V10.7891C30.9287 10.5413 30.9118 10.2669 30.8779 9.96582C30.844 9.66449 30.7645 9.37469 30.6387 9.09766C30.5177 8.81592 30.3337 8.58503 30.0869 8.40527C29.8449 8.22551 29.5157 8.13579 29.0996 8.13574C28.8769 8.13574 28.6563 8.17221 28.4385 8.24512C28.2206 8.31802 28.0219 8.4442 27.8428 8.62402C27.6685 8.79899 27.5284 9.04249 27.4219 9.35352C27.3154 9.65965 27.2617 10.0532 27.2617 10.5342V14.5801H25.4902V6.70703H27.0518V7.58301C27.2521 7.34675 27.486 7.14172 27.7559 6.96973C28.2593 6.64409 28.8794 6.48047 29.6152 6.48047ZM48.748 5.83887H44.2021V8.45605H47.876V10.2061H44.2021V14.5801H42.4521V4.08203H48.748V5.83887ZM62.5137 6.67773C62.7606 6.65829 63.001 6.66815 63.2334 6.70703V8.34766C63.001 8.27961 62.7317 8.25695 62.4268 8.28125C62.1267 8.30557 61.8553 8.39134 61.6133 8.53711C61.3715 8.66829 61.1733 8.83606 61.0186 9.04004C60.8686 9.24404 60.7572 9.47701 60.6846 9.73926C60.612 9.99685 60.5752 10.2768 60.5752 10.5781V14.5801H58.8184V6.70703H60.3652V7.96582C60.4243 7.85986 60.4888 7.75824 60.5605 7.66211C60.7251 7.4434 60.9219 7.26302 61.1494 7.12207C61.3429 6.99098 61.5559 6.88926 61.7881 6.81641C62.0251 6.73869 62.267 6.69235 62.5137 6.67773ZM67.8057 8.0625C67.3362 8.06252 66.9485 8.17982 66.6436 8.41309C66.3389 8.64144 66.1139 8.95232 65.9688 9.3457C65.8235 9.7345 65.751 10.1673 65.751 10.6436C65.751 11.1247 65.8215 11.5624 65.9619 11.9561C66.1071 12.3447 66.3269 12.6535 66.6221 12.8818C66.9174 13.1103 67.293 13.2246 67.748 13.2246C68.2174 13.2246 68.5953 13.1171 68.8809 12.9033C69.1711 12.6846 69.3811 12.3808 69.5117 11.9922C69.6473 11.6034 69.7158 11.1539 69.7158 10.6436C69.7158 10.1284 69.6473 9.67886 69.5117 9.29492C69.381 8.90617 69.1753 8.60445 68.8945 8.39062C68.6138 8.17213 68.2508 8.0625 67.8057 8.0625ZM53.3047 8.13574C52.8351 8.13574 52.4475 8.24222 52.1426 8.45605C51.8425 8.66504 51.6198 8.95977 51.4746 9.33887C51.3295 9.71303 51.2568 10.148 51.2568 10.6436C51.2568 11.4066 51.4288 12.0168 51.7725 12.4736C52.121 12.9256 52.6318 13.1514 53.3047 13.1514C54.0017 13.1514 54.5196 12.9177 54.8584 12.4512C55.1971 11.9846 55.3672 11.3822 55.3672 10.6436C55.3672 9.8807 55.1951 9.27324 54.8516 8.82129C54.5079 8.36444 53.9921 8.13575 53.3047 8.13574ZM76.8203 8.02637C76.1039 8.02637 75.5712 8.25013 75.2227 8.69727C74.9987 8.98144 74.8476 9.35094 74.7676 9.80566H78.6221C78.5589 9.29301 78.4236 8.89686 78.2139 8.61719C77.9186 8.22359 77.4543 8.02645 76.8203 8.02637Z\"\n fill=\"black\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_2976_9475\"\n x1=\"1.85883\"\n y1=\"1.92425\"\n x2=\"24.3072\"\n y2=\"9.64016\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop />\n <stop offset=\"1\" stopOpacity=\"0.4\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_2976_9475\"\n x1=\"25.6475\"\n y1=\"8.65468\"\n x2=\"10.7901\"\n y2=\"8.65468\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop />\n <stop offset=\"1\" stopOpacity=\"0.4\" />\n </linearGradient>\n </defs>\n </svg>\n </a>\n </AuthBrandingWrapper>\n );\n}\n","import { AuthBranding } from './AuthBranding';\nimport type { ReactNode } from 'react';\nimport { AuthContainerWrapper, AuthCard } from './styled';\n\nexport interface AuthContainerProps {\n children: ReactNode;\n}\n\n/**\n * Main container component for authentication forms.\n *\n * @component\n * @example\n * ```tsx\n * <AuthContainer>\n * <AuthHeader title=\"Sign In\" />\n * <form>...</form>\n * </AuthContainer>\n * ```\n *\n * @param {ReactNode} children - Form content\n */\nexport function AuthContainer({ children }: AuthContainerProps) {\n return (\n <AuthContainerWrapper>\n <AuthCard>{children}</AuthCard>\n <AuthBranding />\n </AuthContainerWrapper>\n );\n}\n","import { AuthHeaderWrapper, AuthHeaderTitle, AuthHeaderSubtitle } from './styled';\n\nexport interface AuthHeaderProps {\n title: string;\n subtitle?: string;\n}\n\n/**\n * Header component for authentication forms displaying title and optional subtitle.\n *\n * @component\n * @example\n * ```tsx\n * <AuthHeader\n * title=\"Welcome Back\"\n * subtitle=\"Sign in to continue\"\n * />\n * ```\n *\n * @param {string} title - Main heading text\n * @param {string} [subtitle] - Optional subheading text\n */\nexport function AuthHeader({ title, subtitle }: AuthHeaderProps) {\n return (\n <AuthHeaderWrapper>\n <AuthHeaderTitle>{title}</AuthHeaderTitle>\n {subtitle && <AuthHeaderSubtitle>{subtitle}</AuthHeaderSubtitle>}\n </AuthHeaderWrapper>\n );\n}\n","import { AlertTriangle } from 'lucide-react';\nimport { ErrorBannerWrapper, ErrorBannerContent, ErrorBannerIcon, ErrorBannerText } from './styled';\n\nexport interface AuthErrorBannerProps {\n error: string;\n}\n\n/**\n * Error message banner for authentication forms.\n */\nexport function AuthErrorBanner({ error }: { error?: string }) {\n if (!error) {\n return null;\n }\n\n return (\n <ErrorBannerWrapper>\n <ErrorBannerContent>\n <ErrorBannerIcon>\n <AlertTriangle />\n </ErrorBannerIcon>\n <ErrorBannerText>{error}</ErrorBannerText>\n </ErrorBannerContent>\n </ErrorBannerWrapper>\n );\n}\n","import type { InputHTMLAttributes } from 'react';\nimport { FormFieldWrapper, FormFieldLabel, FormFieldInput } from './styled';\n\nexport interface AuthFormFieldProps extends InputHTMLAttributes<HTMLInputElement> {\n label: string;\n id: string;\n}\n\n/**\n * Standard form input field with label for authentication forms.\n *\n * @component\n * @example\n * ```tsx\n * <AuthFormField\n * id=\"email\"\n * type=\"email\"\n * label=\"Email Address\"\n * />\n * ```\n *\n * @param {string} label - Label text\n * @param {string} id - Input element ID\n */\nexport function AuthFormField({ label, id, ...props }: AuthFormFieldProps) {\n return (\n <FormFieldWrapper>\n <FormFieldLabel htmlFor={id}>{label}</FormFieldLabel>\n <FormFieldInput id={id} {...props} />\n </FormFieldWrapper>\n );\n}\n","import { Check } from 'lucide-react';\nimport type { AuthConfig } from '../../types';\nimport {\n PasswordStrengthWrapper,\n PasswordStrengthRequirements,\n PasswordStrengthRequirement,\n} from './styled';\n\ninterface PasswordRequirement {\n label: string;\n test: (password: string) => boolean;\n}\n\nexport interface AuthPasswordStrengthIndicatorProps {\n password: string;\n config: AuthConfig;\n}\n\n/**\n * Password strength indicator showing requirement checklist.\n */\nexport function AuthPasswordStrengthIndicator({\n password,\n config,\n}: AuthPasswordStrengthIndicatorProps) {\n const requirements = createRequirements(config);\n\n return (\n <PasswordStrengthWrapper>\n <PasswordStrengthRequirements>\n {requirements.map((req) => (\n <PasswordStrengthRequirement key={req.label}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '1rem',\n height: '1rem',\n borderRadius: '50%',\n border: '2px solid',\n borderColor: req.test(password) ? 'transparent' : '#9ca3af',\n backgroundColor: req.test(password) ? '#059669' : 'white',\n transition: 'all 0.2s',\n }}\n >\n {req.test(password) && (\n <Check style={{ width: '0.75rem', height: '0.75rem', color: 'white' }} />\n )}\n </div>\n <span>{req.label}</span>\n </PasswordStrengthRequirement>\n ))}\n </PasswordStrengthRequirements>\n </PasswordStrengthWrapper>\n );\n}\n\nfunction createRequirements(config: AuthConfig): PasswordRequirement[] {\n const requirements: PasswordRequirement[] = [];\n\n if (config.passwordMinLength) {\n requirements.push({\n label: `At least ${config.passwordMinLength} characters`,\n test: (password) => password.length >= config.passwordMinLength,\n });\n }\n\n if (config.requireLowercase) {\n requirements.push({\n label: 'Contains lowercase letter',\n test: (password) => /[a-z]/.test(password),\n });\n }\n\n if (config.requireUppercase) {\n requirements.push({\n label: 'Contains uppercase letter',\n test: (password) => /[A-Z]/.test(password),\n });\n }\n\n if (config.requireNumber) {\n requirements.push({\n label: 'Contains number',\n test: (password) => /\\d/.test(password),\n });\n }\n\n if (config.requireSpecialChar) {\n requirements.push({\n label: 'Contains special character',\n test: (password) => /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/.test(password),\n });\n }\n\n return requirements;\n}\n","/**\n * Path utilities for handling navigation in auth flows.\n * Ensures proper path resolution when auth pages are served under a base path (e.g., /auth/)\n */\n\n/**\n * Resolves an auth route path relative to the current location.\n * If the current path is under /auth/, it will preserve that prefix.\n * Otherwise, it returns the path as-is.\n *\n * @param targetPath - The target auth path (e.g., '/sign-in', '/sign-up')\n * @returns The resolved path with proper base path handling\n *\n * @example\n * // Current URL: http://localhost:5174/auth/sign-in\n * resolveAuthPath('/sign-up') // Returns '/auth/sign-up'\n *\n * @example\n * // Current URL: http://localhost:5174/sign-in\n * resolveAuthPath('/sign-up') // Returns '/sign-up'\n */\nexport function resolveAuthPath(targetPath: string): string {\n if (typeof window === 'undefined') {\n return targetPath;\n }\n\n const currentPath = window.location.pathname;\n\n // Check if we're currently under /auth/ base path\n if (currentPath.startsWith('/auth/')) {\n // If target already has /auth/ prefix, return as-is\n if (targetPath.startsWith('/auth/')) {\n return targetPath;\n }\n // Add /auth/ prefix to the target path\n return `/auth${targetPath}`;\n }\n\n // Not under /auth/, return target path as-is\n return targetPath;\n}\n\n/**\n * Resolves an auth route URL with search params preserved.\n * Similar to resolveAuthPath but returns a full URL string with query parameters.\n *\n * @param targetPath - The target auth path (e.g., '/sign-in', '/sign-up')\n * @param searchParams - Optional URLSearchParams to append\n * @returns The resolved URL as a string\n *\n * @example\n * // Current URL: http://localhost:5174/auth/sign-in?redirect=...\n * resolveAuthUrl('/sign-up', searchParams) // Returns '/auth/sign-up?redirect=...'\n */\nexport function resolveAuthUrl(targetPath: string, searchParams?: URLSearchParams): string {\n const resolvedPath = resolveAuthPath(targetPath);\n\n if (!searchParams || searchParams.toString() === '') {\n return resolvedPath;\n }\n\n return `${resolvedPath}?${searchParams.toString()}`;\n}\n","import { useState, useMemo } from 'react';\nimport { useSearchParams, useNavigationAdapter } from '../../navigation';\nimport { Eye, EyeOff } from 'lucide-react';\nimport { AuthPasswordStrengthIndicator } from './AuthPasswordStrengthIndicator';\nimport type { InputHTMLAttributes } from 'react';\nimport type { AuthConfig } from '../../types';\nimport { resolveAuthUrl } from '../../lib/path-utils';\nimport {\n PasswordFieldWrapper,\n PasswordFieldLabelRow,\n PasswordFieldLabel,\n PasswordFieldForgotLink,\n PasswordFieldInputWrapper,\n PasswordFieldInput,\n PasswordFieldToggleButton,\n} from './styled';\n\nexport interface AuthPasswordFieldProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n id: string;\n showStrengthIndicator?: boolean;\n authConfig: AuthConfig;\n forgotPasswordLink?: {\n href: string;\n text?: string;\n };\n}\n\n/**\n * Password input field with visibility toggle and optional strength indicator.\n */\nexport function AuthPasswordField({\n label,\n id,\n showStrengthIndicator = false,\n authConfig,\n forgotPasswordLink,\n value,\n onFocus,\n ...props\n}: AuthPasswordFieldProps) {\n const searchParams = useSearchParams();\n const { Link } = useNavigationAdapter();\n const [showPassword, setShowPassword] = useState(false);\n const [showStrength, setShowStrength] = useState(false);\n\n // Resolve forgot password link with proper base path handling\n const resolvedForgotPasswordHref = useMemo(\n () => (forgotPasswordLink ? resolveAuthUrl(forgotPasswordLink.href, searchParams) : undefined),\n [forgotPasswordLink, searchParams]\n );\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (showStrengthIndicator) {\n setShowStrength(true);\n }\n onFocus?.(e);\n };\n\n return (\n <PasswordFieldWrapper>\n {(label || forgotPasswordLink) && (\n <PasswordFieldLabelRow>\n <PasswordFieldLabel htmlFor={id}>{label}</PasswordFieldLabel>\n {forgotPasswordLink && resolvedForgotPasswordHref && (\n <Link href={resolvedForgotPasswordHref} className=\"\">\n <PasswordFieldForgotLink as=\"span\">\n {forgotPasswordLink.text || 'Forget Password?'}\n </PasswordFieldForgotLink>\n </Link>\n )}\n </PasswordFieldLabelRow>\n )}\n <PasswordFieldInputWrapper>\n <PasswordFieldInput\n id={id}\n type={showPassword ? 'text' : 'password'}\n value={value}\n onFocus={handleFocus}\n {...props}\n />\n <PasswordFieldToggleButton\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? <EyeOff size={20} /> : <Eye size={20} />}\n </PasswordFieldToggleButton>\n </PasswordFieldInputWrapper>\n {showStrengthIndicator && showStrength && (\n <AuthPasswordStrengthIndicator password={String(value || '')} config={authConfig} />\n )}\n </PasswordFieldWrapper>\n );\n}\n","import { CircleCheck, Loader2 } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { SubmitButton, SubmitButtonIcon, SubmitButtonSpinner } from './styled';\n\nexport interface AuthSubmitButtonProps {\n children: ReactNode;\n isLoading?: boolean;\n confirmed?: boolean;\n disabled?: boolean;\n type?: 'button' | 'submit';\n onClick?: () => void;\n}\n\n/**\n * Primary button for authentication forms with loading and confirmed states.\n *\n * Supports two modes:\n * - **Form submit** (default): type=\"submit\" - triggers form's onSubmit handler\n * - **Action button**: type=\"button\" + onClick - executes custom logic without form submission\n *\n * @component\n * @example\n * ```tsx\n * // Form submit button (default)\n * <AuthSubmitButton isLoading={loading}>\n * Sign In\n * </AuthSubmitButton>\n *\n * // Action button with click handler\n * <AuthSubmitButton type=\"button\" onClick={handleClick} isLoading={loading}>\n * Verify Code\n * </AuthSubmitButton>\n * ```\n */\nexport function AuthSubmitButton({\n children,\n isLoading = false,\n confirmed = false,\n disabled = false,\n type = 'submit',\n onClick,\n}: AuthSubmitButtonProps) {\n return (\n <SubmitButton type={type} disabled={disabled || isLoading || confirmed} onClick={onClick}>\n {isLoading && (\n <SubmitButtonSpinner>\n <Loader2 size={20} />\n </SubmitButtonSpinner>\n )}\n {confirmed && (\n <SubmitButtonIcon>\n <CircleCheck size={20} />\n </SubmitButtonIcon>\n )}\n {children}\n </SubmitButton>\n );\n}\n","import { useSearchParams, useNavigationAdapter } from '../../navigation';\nimport { resolveAuthUrl } from '../../lib/path-utils';\nimport { AuthLinkWrapper, AuthLinkText, AuthLinkLink } from './styled';\n\nexport interface AuthLinkProps {\n text: string;\n linkText: string;\n href: string;\n}\n\n/**\n * Call-to-action link component for navigation between auth pages.\n *\n * @component\n * @example\n * ```tsx\n * <AuthLink\n * text=\"Don't have an account?\"\n * linkText=\"Sign up\"\n * href=\"/sign-up\"\n * />\n * ```\n *\n * @param {string} text - Regular text before the link\n * @param {string} linkText - Clickable link text\n * @param {string} href - Link URL\n */\nexport function AuthLink({ text, linkText, href }: AuthLinkProps) {\n const searchParams = useSearchParams();\n const { Link } = useNavigationAdapter();\n\n // Resolve auth path with proper base path handling and preserve search params\n const finalHref = resolveAuthUrl(href, searchParams);\n\n return (\n <AuthLinkWrapper>\n {text && <AuthLinkText>{text}</AuthLinkText>}\n {text && ' '}\n <Link href={finalHref} className=\"\">\n <AuthLinkLink as=\"span\">{linkText}</AuthLinkLink>\n </Link>\n </AuthLinkWrapper>\n );\n}\n","import { AuthDividerWrapper, AuthDividerLine, AuthDividerText } from './styled';\n\nexport interface AuthDividerProps {\n text?: string;\n}\n\n/**\n * Visual divider with optional centered text for auth forms.\n */\nexport function AuthDivider({ text = 'or' }: AuthDividerProps) {\n return (\n <AuthDividerWrapper>\n <AuthDividerLine />\n <AuthDividerText>{text}</AuthDividerText>\n <AuthDividerLine />\n </AuthDividerWrapper>\n );\n}\n","import type { OAuthProvider, OAuthProviderConfig } from '../types';\n\nexport const OAUTH_PROVIDER_CONFIG: Record<OAuthProvider, OAuthProviderConfig> = {\n google: {\n name: 'Google',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.717v2.258h2.908c1.702-1.567 2.684-3.874 2.684-6.615z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M9 18c2.43 0 4.467-.806 5.956-2.184l-2.908-2.258c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332C2.438 15.983 5.482 18 9 18z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.964 10.707c-.18-.54-.282-1.117-.282-1.707 0-.593.102-1.17.282-1.709V4.958H.957C.347 6.173 0 7.548 0 9c0 1.452.348 2.827.957 4.042l3.007-2.335z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0 5.482 0 2.438 2.017.957 4.958L3.964 7.29C4.672 5.163 6.656 3.58 9 3.58z\"\n fill=\"#EA4335\"\n />\n </svg>\n ),\n className: 'insforge-oauth-google',\n },\n github: {\n name: 'GitHub',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z\" />\n </svg>\n ),\n className: 'insforge-oauth-github',\n },\n discord: {\n name: 'Discord',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z\"\n fill=\"#5865F2\"\n />\n </svg>\n ),\n className: 'insforge-oauth-discord',\n },\n facebook: {\n name: 'Facebook',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M24 12.073C24 5.405 18.627 0 12 0S0 5.405 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047v-2.66c0-3.025 1.792-4.697 4.533-4.697 1.312 0 2.686.236 2.686.236v2.971H15.83c-1.49 0-1.955.93-1.955 1.886v2.264h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073z\"\n fill=\"#1877F2\"\n />\n </svg>\n ),\n className: 'insforge-oauth-facebook',\n },\n linkedin: {\n name: 'LinkedIn',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"\n fill=\"#0A66C2\"\n />\n </svg>\n ),\n className: 'insforge-oauth-linkedin',\n },\n microsoft: {\n name: 'Microsoft',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 23 23\" fill=\"none\">\n <path d=\"M0 0h11v11H0z\" fill=\"#F25022\" />\n <path d=\"M12 0h11v11H12z\" fill=\"#7FBA00\" />\n <path d=\"M0 12h11v11H0z\" fill=\"#00A4EF\" />\n <path d=\"M12 12h11v11H12z\" fill=\"#FFB900\" />\n </svg>\n ),\n className: 'insforge-oauth-microsoft',\n },\n apple: {\n name: 'Apple',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.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\" />\n </svg>\n ),\n className: 'insforge-oauth-apple',\n },\n x: {\n name: 'X',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <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\" />\n </svg>\n ),\n className: 'insforge-oauth-x',\n },\n instagram: {\n name: 'Instagram',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z\"\n fill=\"url(#instagram-gradient)\"\n />\n <defs>\n <linearGradient id=\"instagram-gradient\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor=\"#FD5949\" />\n <stop offset=\"50%\" stopColor=\"#D6249F\" />\n <stop offset=\"100%\" stopColor=\"#285AEB\" />\n </linearGradient>\n </defs>\n </svg>\n ),\n className: 'insforge-oauth-instagram',\n },\n tiktok: {\n name: 'TikTok',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M19.589 6.686a4.793 4.793 0 01-3.77-4.245V2h-3.445v13.672a2.896 2.896 0 01-5.201 1.743l-.002-.001.002.001a2.895 2.895 0 013.183-4.51v-3.5a6.329 6.329 0 00-5.394 10.692 6.33 6.33 0 0010.857-4.424V8.687a8.182 8.182 0 004.773 1.526V6.79a4.831 4.831 0 01-1.003-.104z\"\n fill=\"currentColor\"\n />\n </svg>\n ),\n className: 'insforge-oauth-tiktok',\n },\n spotify: {\n name: 'Spotify',\n svg: (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z\"\n fill=\"#1DB954\"\n />\n </svg>\n ),\n className: 'insforge-oauth-spotify',\n },\n};\n\n/**\n * Get OAuth provider configuration by provider name\n */\nexport function getProviderConfig(provider: OAuthProvider): OAuthProviderConfig | null {\n return OAUTH_PROVIDER_CONFIG[provider] || null;\n}\n\n/**\n * Get all available OAuth provider configurations\n */\nexport function getAllProviderConfigs(): Partial<Record<OAuthProvider, OAuthProviderConfig>> {\n return OAUTH_PROVIDER_CONFIG;\n}\n","import { Loader2 } from 'lucide-react';\nimport { getProviderConfig } from '../../config/oauth-providers';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport type { CSSProperties } from 'react';\nimport { OAuthButton, OAuthButtonIcon, SubmitButtonSpinner } from './styled';\n\nexport interface AuthOAuthButtonProps {\n provider: OAuthProvidersSchema;\n onClick: (provider: OAuthProvidersSchema) => void;\n disabled?: boolean;\n loading?: boolean;\n displayMode?: 'full' | 'short' | 'icon';\n style?: CSSProperties;\n}\n\n/**\n * OAuth provider button with adaptive display modes.\n */\nexport function AuthOAuthButton({\n provider,\n onClick,\n disabled,\n loading,\n displayMode = 'full',\n style,\n}: AuthOAuthButtonProps) {\n const config = getProviderConfig(provider);\n\n if (!config) {\n return null;\n }\n\n const getButtonText = () => {\n if (displayMode === 'full') {\n return `Continue with ${config.name}`;\n }\n if (displayMode === 'short') {\n return config.name;\n }\n return '';\n };\n\n const variant = displayMode === 'icon' ? 'iconOnly' : displayMode;\n\n return (\n <OAuthButton\n type=\"button\"\n onClick={() => onClick(provider)}\n $variant={variant}\n disabled={disabled || loading}\n style={style}\n >\n {loading ? (\n <SubmitButtonSpinner>\n <Loader2 size={18} />\n </SubmitButtonSpinner>\n ) : (\n <OAuthButtonIcon>{config.svg}</OAuthButtonIcon>\n )}\n {!loading && getButtonText() && <span>{getButtonText()}</span>}\n </OAuthButton>\n );\n}\n","import { AuthOAuthButton } from './AuthOAuthButton';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport { OAuthProvidersContainer } from './styled';\n\nexport interface AuthOAuthProvidersProps {\n providers: OAuthProvidersSchema[];\n onClick: (provider: OAuthProvidersSchema) => void;\n disabled?: boolean;\n loading?: OAuthProvidersSchema | null;\n}\n\n/**\n * Smart OAuth provider grid with adaptive layout.\n *\n * Automatically adjusts layout based on provider count:\n * - 1 provider: Full-width\n * - 2 or 4 providers: Two columns\n * - 3+ providers: Three columns\n */\nexport function AuthOAuthProviders({\n providers,\n onClick,\n disabled,\n loading,\n}: AuthOAuthProvidersProps) {\n if (!providers || providers.length === 0) {\n return null;\n }\n\n const count = providers.length;\n\n // Determine display mode based on count\n const getDisplayMode = () => {\n if (count === 1) {\n return 'full';\n }\n if (count === 2 || count === 4) {\n return 'short';\n }\n return 'icon';\n };\n\n // Calculate grid column style for each button\n // Grid is always 6 columns, but buttons span different widths based on total count\n const getGridColumnStyle = (index: number): React.CSSProperties => {\n // 1 button: span all 6 columns\n if (count === 1) {\n return { gridColumn: 'span 6' };\n }\n\n // 2 buttons: each spans 3 columns\n if (count === 2) {\n return { gridColumn: 'span 3' };\n }\n\n // 3 buttons: each spans 2 columns\n if (count === 3) {\n return { gridColumn: 'span 2 / span 2' };\n }\n\n // 4 buttons: 2 rows, each button spans 3 columns\n if (count === 4) {\n return { gridColumn: 'span 3' };\n }\n\n // 5+ buttons: each spans 2 columns, with last row centered if needed\n const totalRows = Math.ceil(count / 3);\n const lastRowStartIndex = (totalRows - 1) * 3;\n const isInLastRow = index >= lastRowStartIndex;\n\n if (!isInLastRow) {\n // Not in last row, use default span 2\n return { gridColumn: 'span 2 / span 2' };\n }\n\n // Calculate position in last row (0-based)\n const positionInLastRow = index - lastRowStartIndex;\n const itemsInLastRow = count - lastRowStartIndex;\n\n if (itemsInLastRow === 1) {\n // Last row has 1 item: center it at columns 3-4 (span 2 in middle)\n return { gridColumn: '3 / 5' };\n } else if (itemsInLastRow === 2) {\n // Last row has 2 items: center them symmetrically\n if (positionInLastRow === 0) {\n return { gridColumn: '2 / 4' }; // First button: cols 2-3\n } else {\n return { gridColumn: '4 / 6' }; // Second button: cols 4-5\n }\n } else {\n // Last row has 3 items: normal span 2\n return { gridColumn: 'span 2 / span 2' };\n }\n };\n\n return (\n <OAuthProvidersContainer\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(6, 1fr)',\n gap: '0.75rem',\n }}\n >\n {providers.map((provider, index) => (\n <AuthOAuthButton\n key={provider}\n provider={provider}\n onClick={onClick}\n disabled={disabled}\n loading={loading === provider}\n displayMode={getDisplayMode()}\n style={getGridColumnStyle(index)}\n />\n ))}\n </OAuthProvidersContainer>\n );\n}\n","import { useRef, KeyboardEvent, ClipboardEvent, ChangeEvent } from 'react';\nimport { VerificationCodeInputContainer, VerificationCodeInput } from './styled';\n\nexport interface AuthVerificationCodeInputProps {\n length?: number;\n value: string;\n onChange: (value: string) => void;\n disabled?: boolean;\n onComplete?: (code: string) => void;\n}\n\n/**\n * 6-digit verification code input component with auto-focus and paste support.\n */\nexport function AuthVerificationCodeInput({\n length = 6,\n value,\n onChange,\n disabled = false,\n onComplete,\n}: AuthVerificationCodeInputProps) {\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n\n const handleChange = (index: number, digit: string) => {\n // Only allow single digits\n if (digit.length > 1) {\n return;\n }\n\n // Only allow numbers\n if (digit && !/^\\d$/.test(digit)) {\n return;\n }\n\n // Update the value\n const newValue = value.split('');\n newValue[index] = digit;\n const updatedValue = newValue.join('');\n onChange(updatedValue);\n\n // Auto-focus next input if digit was entered\n if (digit && index < length - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n\n // Call onComplete if we just filled the last digit\n if (digit && index === length - 1 && updatedValue.length === length && onComplete) {\n onComplete(updatedValue);\n }\n };\n\n const handleKeyDown = (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n // Handle backspace\n if (e.key === 'Backspace') {\n if (!value[index] && index > 0) {\n // If current input is empty, focus previous input\n inputRefs.current[index - 1]?.focus();\n } else {\n // Clear current input\n handleChange(index, '');\n }\n }\n // Handle arrow keys\n else if (e.key === 'ArrowLeft' && index > 0) {\n inputRefs.current[index - 1]?.focus();\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text/plain').trim();\n\n // Only paste if it's all digits and correct length\n if (/^\\d+$/.test(pastedData) && pastedData.length === length) {\n onChange(pastedData);\n // Focus last input\n inputRefs.current[length - 1]?.focus();\n // Call onComplete after paste\n if (onComplete) {\n onComplete(pastedData);\n }\n }\n };\n\n return (\n <VerificationCodeInputContainer>\n {Array.from({ length }).map((_, index) => (\n <VerificationCodeInput\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={1}\n value={value[index] || ''}\n onChange={(e: ChangeEvent<HTMLInputElement>) => handleChange(index, e.target.value)}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n disabled={disabled}\n autoComplete=\"one-time-code\"\n />\n ))}\n </VerificationCodeInputContainer>\n );\n}\n","/** @jsxImportSource @emotion/react */\nimport styled from '@emotion/styled';\nimport { theme } from '../../styles/theme';\n\n/* ============================================\n FORM CONTAINER\n ============================================ */\nexport const FormWrapper = styled.form`\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: center;\n gap: ${theme.spacing[6]};\n`;\n\n/* ============================================\n VERIFICATION STEP\n ============================================ */\nexport const VerificationStepWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[6]};\n align-items: stretch;\n`;\n\nexport const VerificationStepDescriptionContainer = styled.div`\n width: 100%;\n background-color: ${theme.colors.bgGray};\n border-radius: ${theme.radius.lg};\n padding: ${theme.spacing[3]} ${theme.spacing[3]} ${theme.spacing[6]} ${theme.spacing[3]};\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[3]};\n`;\n\nexport const VerificationStepDescriptionTitle = styled.h3`\n color: ${theme.colors.black};\n font-family: ${theme.fontFamily.base};\n font-size: ${theme.fontSize.base};\n font-style: normal;\n font-weight: ${theme.fontWeight.semibold};\n line-height: 24px;\n margin: 0;\n`;\n\nexport const VerificationStepDescription = styled.p`\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textGray};\n text-align: left;\n font-family: ${theme.fontFamily.base};\n margin: 0;\n`;\n\nexport const VerificationEmail = styled.span`\n font-weight: ${theme.fontWeight.medium};\n color: ${theme.colors.text};\n`;\n\nexport const VerificationStepCodeContainer = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[10]};\n`;\n\nexport const VerificationStepCodeInputWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${theme.spacing[6]};\n`;\n\nexport const VerificationStepVerifyingText = styled.p`\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.textSecondary};\n text-align: center;\n font-family: ${theme.fontFamily.base};\n margin: 0;\n`;\n\nexport const VerificationStepResendContainer = styled.div`\n width: 100%;\n font-size: ${theme.fontSize.sm};\n text-align: center;\n color: ${theme.colors.textSecondary};\n font-family: ${theme.fontFamily.base};\n`;\n\nexport const VerificationStepResendButton = styled.button`\n color: ${theme.colors.text};\n font-weight: ${theme.fontWeight.medium};\n transition: all ${theme.transition.base};\n background: none;\n border: none;\n padding: 0;\n font-family: ${theme.fontFamily.base};\n font-size: ${theme.fontSize.sm};\n\n &:not(:disabled) {\n cursor: pointer;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n`;\n\n/* ============================================\n EMAIL VERIFICATION STATUS\n ============================================ */\nexport const VerifyStatusContainer = styled.div<{ $stretch?: boolean }>`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: ${(props: { $stretch?: boolean }) => (props.$stretch ? 'stretch' : 'center')};\n justify-content: center;\n gap: ${theme.spacing[6]};\n`;\n\nexport const VerifyStatusSpinner = styled.div`\n border-radius: ${theme.radius.full};\n height: ${theme.sizes.verifyCode};\n width: ${theme.sizes.verifyCode};\n border-bottom: 2px solid ${theme.colors.primary};\n`;\n\nexport const VerifyStatusSuccessContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: ${theme.spacing[4]};\n`;\n\nexport const VerifyStatusSuccessIcon = styled.div`\n width: ${theme.sizes.verifyIcon};\n height: ${theme.sizes.verifyIcon};\n border-radius: ${theme.radius.full};\n background-color: ${theme.colors.successBg};\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const VerifyStatusSuccessIconSvg = styled.div`\n width: ${theme.sizes.verifyIconInner};\n height: ${theme.sizes.verifyIconInner};\n color: ${theme.colors.successDark};\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\nexport const VerifyStatusTextCenter = styled.p`\n text-align: center;\n font-family: ${theme.fontFamily.base};\n font-size: ${theme.fontSize.sm};\n color: ${theme.colors.text};\n margin: 0;\n`;\n\n/* ============================================\n UTILITY CLASSES\n ============================================ */\nexport const Hidden = styled.div`\n display: none;\n`;\n\nexport const VisuallyHidden = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n`;\n","import { useState, useEffect } from 'react';\nimport { AuthVerificationCodeInput } from './AuthVerificationCodeInput';\nimport { AuthSubmitButton } from './AuthSubmitButton';\nimport { useInsforge } from '../../provider/InsforgeProvider';\nimport type { EmailVerificationMethod } from '../../types';\nimport {\n VerificationStepWrapper,\n VerificationStepDescriptionContainer,\n VerificationStepDescriptionTitle,\n VerificationStepDescription,\n VerificationEmail,\n VerificationStepCodeContainer,\n VerificationStepCodeInputWrapper,\n VerificationStepResendContainer,\n VerificationStepResendButton,\n} from '../forms/styled';\n\ninterface AuthEmailVerificationStepProps {\n email: string;\n method: EmailVerificationMethod;\n onVerifyCode?: (code: string) => Promise<void>;\n emailSent?: boolean;\n}\n\n/**\n * Email verification step component (pure UI, no container)\n *\n * Designed to be embedded within a form container.\n * Handles the email verification flow:\n * - Automatically sends verification email on mount\n * - Shows countdown timer for resend functionality\n * - Manages rate limiting for resend attempts\n * - Supports both code and link verification methods\n *\n * @param method - 'code' for OTP input, 'link' for magic link (default: 'code')\n */\nexport function AuthEmailVerificationStep({\n email,\n method,\n onVerifyCode,\n emailSent = false,\n}: AuthEmailVerificationStepProps) {\n const { sendVerificationEmail } = useInsforge();\n const [resendDisabled, setResendDisabled] = useState(emailSent ? true : false);\n const [resendCountdown, setResendCountdown] = useState(emailSent ? 60 : 0);\n const [isSending, setIsSending] = useState(false);\n const [verificationCode, setVerificationCode] = useState('');\n const [isVerifying, setIsVerifying] = useState(false);\n\n const isLinkMethod = method === 'link';\n // Default descriptions based on method\n const displayDescription = isLinkMethod\n ? \"We've sent an email to {email}. Please check your email to confirm your account before signing in. The confirmation link expires in 10 minutes.\"\n : \"We've sent a verification code to your inbox at {email}. Enter it below to proceed.\";\n\n // Countdown timer effect\n useEffect(() => {\n if (resendDisabled && resendCountdown > 0) {\n const timer = setInterval(() => {\n setResendCountdown((prev) => {\n if (prev <= 1) {\n setResendDisabled(false);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearInterval(timer);\n }\n }, [resendDisabled, resendCountdown]);\n\n const handleResend = async () => {\n setResendDisabled(true);\n setResendCountdown(60);\n setIsSending(true);\n\n try {\n await sendVerificationEmail(email);\n } catch {\n // If resend fails, re-enable the button immediately\n setResendDisabled(false);\n setResendCountdown(0);\n } finally {\n setIsSending(false);\n }\n };\n\n const handleSubmit = async () => {\n if (!onVerifyCode || verificationCode.length !== 6) {\n return;\n }\n\n setIsVerifying(true);\n\n try {\n await onVerifyCode(verificationCode);\n } finally {\n setIsVerifying(false);\n setVerificationCode('');\n }\n };\n\n return (\n <VerificationStepWrapper>\n {/* Description with email (only for link method) */}\n {isLinkMethod && (\n <VerificationStepDescriptionContainer>\n <VerificationStepDescriptionTitle>Verify Your Email</VerificationStepDescriptionTitle>\n <VerificationStepDescription>\n {displayDescription.split('{email}').map((part, index, array) => (\n <span key={index}>\n {part}\n {index < array.length - 1 && <VerificationEmail>{email}</VerificationEmail>}\n </span>\n ))}\n </VerificationStepDescription>\n </VerificationStepDescriptionContainer>\n )}\n\n {/* Description with email + code input (only for code method) */}\n {!isLinkMethod && (\n <VerificationStepCodeContainer>\n <VerificationStepCodeInputWrapper>\n <VerificationStepDescription>\n {displayDescription.split('{email}').map((part, index, array) => (\n <span key={index}>\n {part}\n {index < array.length - 1 && <VerificationEmail>{email}</VerificationEmail>}\n </span>\n ))}\n </VerificationStepDescription>\n <AuthVerificationCodeInput\n value={verificationCode}\n onChange={setVerificationCode}\n disabled={isVerifying}\n />\n </VerificationStepCodeInputWrapper>\n\n <AuthSubmitButton\n type=\"button\"\n isLoading={isVerifying}\n disabled={isVerifying || verificationCode.length !== 6}\n onClick={() => {\n void handleSubmit();\n }}\n >\n {isVerifying ? 'Verifying...' : 'Continue'}\n </AuthSubmitButton>\n </VerificationStepCodeContainer>\n )}\n\n {/* Resend Button */}\n <VerificationStepResendContainer>\n Didn't receive the email?{' '}\n <VerificationStepResendButton\n onClick={() => {\n void handleResend();\n }}\n disabled={resendDisabled || isSending}\n >\n {isSending\n ? 'Sending...'\n : resendDisabled\n ? `Retry in (${resendCountdown}s)`\n : 'Click to resend'}\n </VerificationStepResendButton>\n </VerificationStepResendContainer>\n </VerificationStepWrapper>\n );\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { AuthVerificationCodeInput } from './AuthVerificationCodeInput';\nimport { AuthSubmitButton } from './AuthSubmitButton';\nimport type { EmailVerificationMethod } from '../../types';\nimport {\n VerificationStepWrapper,\n VerificationStepDescriptionContainer,\n VerificationStepDescriptionTitle,\n VerificationStepDescription,\n VerificationEmail,\n VerificationStepCodeContainer,\n VerificationStepCodeInputWrapper,\n VerificationStepResendContainer,\n VerificationStepResendButton,\n} from '../forms/styled';\n\ninterface AuthResetPasswordVerificationStepProps {\n email: string;\n method: EmailVerificationMethod;\n onVerifyCode?: (code: string) => Promise<void>;\n onResendEmail: () => Promise<void>;\n}\n\n/**\n * Reset password verification step component\n *\n * Handles the verification flow for password reset:\n * - Shows appropriate UI based on method (code input or link message)\n * - Manages countdown timer for resend functionality\n * - Handles code verification for code method\n */\nexport function AuthResetPasswordVerificationStep({\n email,\n method,\n onVerifyCode,\n onResendEmail,\n}: AuthResetPasswordVerificationStepProps) {\n const [resendDisabled, setResendDisabled] = useState(true);\n const [resendCountdown, setResendCountdown] = useState(60);\n const [isSending, setIsSending] = useState(false);\n const [verificationCode, setVerificationCode] = useState('');\n const [isVerifying, setIsVerifying] = useState(false);\n\n const isLinkMethod = method === 'link';\n const displayDescription = isLinkMethod\n ? 'We have sent an email to {email}. Please check your email to reset your password. The link expires in 10 minutes.'\n : \"We've sent a reset password code to your inbox at {email}. Enter it below to proceed.\";\n\n // Countdown timer effect\n useEffect(() => {\n if (resendCountdown > 0) {\n const timer = setInterval(() => {\n setResendCountdown((prev) => {\n if (prev <= 1) {\n setResendDisabled(false);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearInterval(timer);\n }\n }, [resendCountdown]);\n\n const handleResend = useCallback(async () => {\n setResendDisabled(true);\n setResendCountdown(60);\n setIsSending(true);\n\n try {\n await onResendEmail();\n } catch {\n // If resend fails, re-enable the button immediately\n setResendDisabled(false);\n setResendCountdown(0);\n } finally {\n setIsSending(false);\n }\n }, [onResendEmail]);\n\n const handleSubmit = async () => {\n if (!onVerifyCode || verificationCode.length !== 6) {\n return;\n }\n\n setIsVerifying(true);\n\n try {\n await onVerifyCode(verificationCode);\n } finally {\n setIsVerifying(false);\n setVerificationCode('');\n }\n };\n\n return (\n <VerificationStepWrapper>\n {/* Description with email (only for link method) */}\n {isLinkMethod && (\n <VerificationStepDescriptionContainer>\n <VerificationStepDescriptionTitle>Check Your Email</VerificationStepDescriptionTitle>\n <VerificationStepDescription>\n {displayDescription.split('{email}').map((part, index, array) => (\n <span key={index}>\n {part}\n {index < array.length - 1 && <VerificationEmail>{email}</VerificationEmail>}\n </span>\n ))}\n </VerificationStepDescription>\n </VerificationStepDescriptionContainer>\n )}\n\n {/* Code Input (only for code method) */}\n {!isLinkMethod && (\n <VerificationStepCodeContainer>\n <VerificationStepCodeInputWrapper>\n <AuthVerificationCodeInput\n value={verificationCode}\n onChange={setVerificationCode}\n disabled={isVerifying}\n />\n </VerificationStepCodeInputWrapper>\n\n <AuthSubmitButton\n type=\"button\"\n isLoading={isVerifying}\n disabled={isVerifying || verificationCode.length !== 6}\n onClick={() => {\n void handleSubmit();\n }}\n >\n {isVerifying ? 'Verifying...' : 'Continue'}\n </AuthSubmitButton>\n </VerificationStepCodeContainer>\n )}\n\n {/* Resend Button */}\n <VerificationStepResendContainer>\n Didn't receive the email?{' '}\n <VerificationStepResendButton\n onClick={() => {\n void handleResend();\n }}\n disabled={resendDisabled || isSending}\n >\n {isSending\n ? 'Sending...'\n : resendDisabled\n ? `Retry in (${resendCountdown}s)`\n : 'Click to resend'}\n </VerificationStepResendButton>\n </VerificationStepResendContainer>\n </VerificationStepWrapper>\n );\n}\n","import {\n AuthContainer,\n AuthHeader,\n AuthErrorBanner,\n AuthFormField,\n AuthPasswordField,\n AuthSubmitButton,\n AuthLink,\n AuthDivider,\n AuthOAuthProviders,\n AuthEmailVerificationStep,\n} from '../atoms';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport type { FormEvent } from 'react';\nimport type { AuthConfig } from '../../types';\nimport { theme } from '../../styles/theme';\n\nexport interface SignInFormProps {\n email: string;\n password: string;\n onEmailChange: (email: string) => void;\n onPasswordChange: (password: string) => void;\n onSubmit: (e: FormEvent<HTMLFormElement>) => void;\n error?: string;\n loading?: boolean;\n oauthLoading?: OAuthProvidersSchema | null;\n onOAuthClick?: (provider: OAuthProvidersSchema) => void;\n authConfig: AuthConfig;\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n passwordLabel?: string;\n passwordPlaceholder?: string;\n forgotPasswordText?: string;\n forgotPasswordUrl?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n signUpText?: string;\n signUpLinkText?: string;\n signUpUrl?: string;\n dividerText?: string;\n showVerificationStep?: boolean;\n onVerifyCode?: (code: string) => Promise<void>;\n}\n\n/**\n * Pre-built sign-in form component (UI only, no business logic).\n */\nexport function SignInForm({\n email,\n password,\n onEmailChange,\n onPasswordChange,\n onSubmit,\n error,\n loading = false,\n oauthLoading = null,\n onOAuthClick,\n authConfig,\n title = 'Welcome Back',\n subtitle = 'Login to your account',\n emailLabel = 'Email',\n emailPlaceholder = 'example@email.com',\n passwordLabel = 'Password',\n passwordPlaceholder = '••••••',\n forgotPasswordText = 'Forget Password?',\n forgotPasswordUrl = '/forgot-password',\n submitButtonText = 'Sign In',\n loadingButtonText = 'Signing in...',\n signUpText = \"Don't have an account?\",\n signUpLinkText = 'Sign Up Now',\n signUpUrl = '/sign-up',\n dividerText = 'or',\n showVerificationStep = false,\n onVerifyCode,\n}: SignInFormProps) {\n return (\n <AuthContainer>\n <AuthHeader title={title} subtitle={subtitle} />\n\n <AuthErrorBanner error={error || ''} />\n\n {showVerificationStep ? (\n <AuthEmailVerificationStep\n email={email}\n method={authConfig.verifyEmailMethod}\n onVerifyCode={onVerifyCode}\n emailSent={false}\n />\n ) : (\n <form\n onSubmit={onSubmit}\n noValidate\n style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing[6] }}\n >\n <AuthFormField\n id=\"email\"\n type=\"email\"\n label={emailLabel}\n placeholder={emailPlaceholder}\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n required\n autoComplete=\"email\"\n />\n\n <AuthPasswordField\n id=\"password\"\n label={passwordLabel}\n placeholder={passwordPlaceholder}\n value={password}\n onChange={(e) => onPasswordChange(e.target.value)}\n required\n autoComplete=\"current-password\"\n authConfig={authConfig}\n forgotPasswordLink={\n forgotPasswordUrl\n ? {\n href: forgotPasswordUrl,\n text: forgotPasswordText,\n }\n : undefined\n }\n />\n\n <AuthSubmitButton isLoading={loading} disabled={loading || oauthLoading !== null}>\n {loading ? loadingButtonText : submitButtonText}\n </AuthSubmitButton>\n </form>\n )}\n\n {!showVerificationStep && (\n <>\n <AuthLink text={signUpText} linkText={signUpLinkText} href={signUpUrl} />\n\n {authConfig.oAuthProviders.length > 0 && onOAuthClick && (\n <>\n <AuthDivider text={dividerText} />\n <AuthOAuthProviders\n providers={authConfig.oAuthProviders}\n onClick={onOAuthClick}\n disabled={loading || oauthLoading !== null}\n loading={oauthLoading}\n />\n </>\n )}\n </>\n )}\n </AuthContainer>\n );\n}\n","import { useState, FormEvent } from 'react';\r\nimport { useSearchParams } from '../navigation';\r\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\r\nimport { useInsforge } from '../provider/InsforgeProvider';\r\nimport { usePublicAuthConfig } from '../hooks/usePublicAuthConfig';\r\nimport { SignInForm } from './forms/SignInForm';\r\n\r\ntype SignInStep = 'form' | 'awaiting-verification';\r\n\r\nexport interface SignInProps {\r\n title?: string;\r\n subtitle?: string;\r\n emailLabel?: string;\r\n emailPlaceholder?: string;\r\n passwordLabel?: string;\r\n passwordPlaceholder?: string;\r\n forgotPasswordText?: string;\r\n forgotPasswordUrl?: string;\r\n submitButtonText?: string;\r\n loadingButtonText?: string;\r\n signUpText?: string;\r\n signUpLinkText?: string;\r\n signUpUrl?: string;\r\n dividerText?: string;\r\n onError?: (error: Error) => void;\r\n}\r\n\r\n/**\r\n * Pre-built sign-in component with full authentication logic.\r\n *\r\n * @component\r\n * @example\r\n * ```tsx\r\n * <SignIn\r\n * onSuccess={(user) => console.log('Signed in:', user)}\r\n * onError={(error) => console.error('Error:', error)}\r\n * />\r\n * ```\r\n */\r\nexport function SignIn({ onError, ...uiProps }: SignInProps) {\r\n const { signIn, verifyEmail, loginWithOAuth } = useInsforge();\r\n const { authConfig } = usePublicAuthConfig();\r\n const [email, setEmail] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [error, setError] = useState('');\r\n const [loading, setLoading] = useState(false);\r\n const [step, setStep] = useState<SignInStep>('form');\r\n const [oauthLoading] = useState<OAuthProvidersSchema | null>(null);\r\n\r\n const searchParams = useSearchParams();\r\n const redirectUrl = searchParams.get('redirect');\r\n\r\n async function handleSubmit(e: FormEvent<HTMLFormElement>) {\r\n e.preventDefault();\r\n setLoading(true);\r\n setError('');\r\n\r\n try {\r\n const result = await signIn(email, password);\r\n if ('error' in result) {\r\n // Check if email verification is required (403 status code)\r\n if (result.statusCode === 403) {\r\n setStep('awaiting-verification');\r\n setLoading(false);\r\n return;\r\n }\r\n throw new Error(result.error);\r\n }\r\n const { user, accessToken, redirectTo } = result;\r\n const csrfToken = result.csrfToken;\r\n\r\n if (user) {\r\n const finalUrl = new URL(redirectTo || redirectUrl || '', window.location.origin);\r\n finalUrl.searchParams.set('access_token', accessToken);\r\n finalUrl.searchParams.set('user_id', user.id);\r\n finalUrl.searchParams.set('email', user.email);\r\n finalUrl.searchParams.set('name', user.profile?.name || '');\r\n if (csrfToken) {\r\n finalUrl.searchParams.set('csrf_token', csrfToken);\r\n }\r\n window.location.href = finalUrl.toString();\r\n }\r\n } catch (err: unknown) {\r\n const errorMessage = err instanceof Error ? err.message : 'Sign in failed';\r\n setError(errorMessage);\r\n if (onError) {\r\n onError(new Error(errorMessage));\r\n }\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function handleVerifyCode(code: string) {\r\n setError('');\r\n try {\r\n const result = await verifyEmail(code, email);\r\n\r\n if (!result) {\r\n throw new Error('Verification failed');\r\n }\r\n\r\n const finalUrl = new URL(result.redirectTo || redirectUrl || '', window.location.origin);\r\n finalUrl.searchParams.set('access_token', result.accessToken);\r\n finalUrl.searchParams.set('user_id', result.user.id);\r\n finalUrl.searchParams.set('email', result.user.email);\r\n finalUrl.searchParams.set('name', result.user.profile?.name || '');\r\n if (result.csrfToken) {\r\n finalUrl.searchParams.set('csrf_token', result.csrfToken);\r\n }\r\n window.location.href = finalUrl.toString();\r\n } catch (err: unknown) {\r\n const errorMessage = err instanceof Error ? err.message : 'Invalid verification code';\r\n setError(errorMessage);\r\n }\r\n }\r\n\r\n function handleOAuth(provider: OAuthProvidersSchema) {\r\n try {\r\n void loginWithOAuth(provider, redirectUrl || '');\r\n } catch (err: unknown) {\r\n const errorMessage = err instanceof Error ? err.message : 'OAuth login failed';\r\n setError(errorMessage);\r\n if (onError) {\r\n onError(new Error(errorMessage));\r\n }\r\n }\r\n }\r\n\r\n // If email auth is disabled after loading, don't show the form\r\n if (!authConfig) {\r\n return null;\r\n }\r\n\r\n return (\r\n <SignInForm\r\n email={email}\r\n password={password}\r\n onEmailChange={setEmail}\r\n onPasswordChange={setPassword}\r\n onSubmit={(e) => void handleSubmit(e)}\r\n error={error}\r\n loading={loading}\r\n oauthLoading={oauthLoading}\r\n onOAuthClick={handleOAuth}\r\n authConfig={authConfig}\r\n showVerificationStep={step === 'awaiting-verification'}\r\n onVerifyCode={handleVerifyCode}\r\n {...uiProps}\r\n />\r\n );\r\n}\r\n","import {\n AuthContainer,\n AuthHeader,\n AuthErrorBanner,\n AuthFormField,\n AuthPasswordField,\n AuthSubmitButton,\n AuthLink,\n AuthDivider,\n AuthOAuthProviders,\n AuthEmailVerificationStep,\n} from '../atoms';\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\nimport type { FormEvent } from 'react';\nimport type { AuthConfig } from '../../types';\nimport { theme } from '../../styles/theme';\n\nexport interface SignUpFormProps {\n email: string;\n password: string;\n onEmailChange: (email: string) => void;\n onPasswordChange: (password: string) => void;\n onSubmit: (e: FormEvent<HTMLFormElement>) => void;\n error?: string;\n loading?: boolean;\n oauthLoading?: OAuthProvidersSchema | null;\n onOAuthClick?: (provider: OAuthProvidersSchema) => void;\n authConfig: AuthConfig;\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n passwordLabel?: string;\n passwordPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n signInText?: string;\n signInLinkText?: string;\n signInUrl?: string;\n dividerText?: string;\n showVerificationStep?: boolean;\n onVerifyCode?: (code: string) => Promise<void>;\n}\n\n/**\n * Pre-built sign-up form component (UI only, no business logic).\n */\nexport function SignUpForm({\n email,\n password,\n onEmailChange,\n onPasswordChange,\n onSubmit,\n error,\n loading = false,\n oauthLoading = null,\n onOAuthClick,\n authConfig,\n title = 'Get Started',\n subtitle = 'Create your account',\n emailLabel = 'Email',\n emailPlaceholder = 'example@email.com',\n passwordLabel = 'Password',\n passwordPlaceholder = '••••••',\n submitButtonText = 'Sign Up',\n loadingButtonText = 'Creating account...',\n signInText = 'Already have an account?',\n signInLinkText = 'Login Now',\n signInUrl = '/sign-in',\n dividerText = 'or',\n showVerificationStep = false,\n onVerifyCode,\n}: SignUpFormProps) {\n return (\n <AuthContainer>\n <AuthHeader title={title} subtitle={subtitle} />\n\n <AuthErrorBanner error={error || ''} />\n\n {showVerificationStep ? (\n <AuthEmailVerificationStep\n email={email}\n method={authConfig.verifyEmailMethod}\n onVerifyCode={onVerifyCode}\n emailSent={true}\n />\n ) : (\n <form\n onSubmit={onSubmit}\n noValidate\n style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing[6] }}\n >\n <AuthFormField\n id=\"email\"\n type=\"email\"\n label={emailLabel}\n placeholder={emailPlaceholder}\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n required\n autoComplete=\"email\"\n />\n\n <AuthPasswordField\n id=\"password\"\n label={passwordLabel}\n placeholder={passwordPlaceholder}\n value={password}\n onChange={(e) => onPasswordChange(e.target.value)}\n required\n autoComplete=\"new-password\"\n showStrengthIndicator\n authConfig={authConfig}\n />\n\n <AuthSubmitButton isLoading={loading} disabled={loading || oauthLoading !== null}>\n {loading ? loadingButtonText : submitButtonText}\n </AuthSubmitButton>\n </form>\n )}\n\n {!showVerificationStep && (\n <>\n <AuthLink text={signInText} linkText={signInLinkText} href={signInUrl} />\n\n {authConfig.oAuthProviders.length > 0 && onOAuthClick && (\n <>\n <AuthDivider text={dividerText} />\n <AuthOAuthProviders\n providers={authConfig.oAuthProviders}\n onClick={onOAuthClick}\n disabled={loading || oauthLoading !== null}\n loading={oauthLoading}\n />\n </>\n )}\n </>\n )}\n </AuthContainer>\n );\n}\n","import { z } from 'zod';\n\n/**\n * Email validation schema\n */\nexport const emailSchema = z.string().min(1, 'Email is required').email('Invalid email address');\n\n/**\n * Password validation schema with configurable requirements\n */\nexport function createPasswordSchema(options?: {\n minLength?: number;\n requireUppercase?: boolean;\n requireLowercase?: boolean;\n requireNumber?: boolean;\n requireSpecialChar?: boolean;\n}) {\n const {\n minLength = 6,\n requireUppercase = false,\n requireLowercase = false,\n requireNumber = false,\n requireSpecialChar = false,\n } = options || {};\n\n let schema = z.string().min(minLength, `Password must be at least ${minLength} characters`);\n\n if (requireUppercase) {\n schema = schema.regex(/[A-Z]/, 'Password must contain at least one uppercase letter');\n }\n\n if (requireLowercase) {\n schema = schema.regex(/[a-z]/, 'Password must contain at least one lowercase letter');\n }\n\n if (requireNumber) {\n schema = schema.regex(/\\d/, 'Password must contain at least one number');\n }\n\n if (requireSpecialChar) {\n schema = schema.regex(\n /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/,\n 'Password must contain at least one special character'\n );\n }\n\n return schema;\n}\n\n/**\n * Default password schema (minimum 6 characters)\n */\nexport const passwordSchema = createPasswordSchema();\n\n/**\n * Validate email format\n */\nexport function validateEmail(email: string): { valid: boolean; error?: string } {\n const result = emailSchema.safeParse(email);\n if (result.success) {\n return { valid: true };\n }\n return { valid: false, error: result.error.message };\n}\n\n/**\n * Validate password format\n */\nexport function validatePassword(\n password: string,\n options?: Parameters<typeof createPasswordSchema>[0]\n): { valid: boolean; error?: string } {\n const schema = createPasswordSchema(options);\n const result = schema.safeParse(password);\n if (result.success) {\n return { valid: true };\n }\n return { valid: false, error: result.error.message };\n}\n\n/**\n * Validate password strength based on multiple criteria\n */\nexport function checkPasswordStrength(password: string): {\n score: number;\n feedback: string[];\n} {\n const feedback: string[] = [];\n let score = 0;\n\n if (password.length >= 8) {\n score += 1;\n } else {\n feedback.push('Use at least 8 characters');\n }\n\n if (password.length >= 12) {\n score += 1;\n }\n\n if (/[a-z]/.test(password) && /[A-Z]/.test(password)) {\n score += 1;\n } else {\n feedback.push('Use both uppercase and lowercase letters');\n }\n\n if (/\\d/.test(password)) {\n score += 1;\n } else {\n feedback.push('Include at least one number');\n }\n\n if (/[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/.test(password)) {\n score += 1;\n } else {\n feedback.push('Include at least one special character');\n }\n\n return { score, feedback };\n}\n","import { useState, FormEvent } from 'react';\r\nimport { useSearchParams } from '../navigation';\r\nimport type { OAuthProvidersSchema } from '@insforge/shared-schemas';\r\nimport { useInsforge } from '../provider/InsforgeProvider';\r\nimport { usePublicAuthConfig } from '../hooks/usePublicAuthConfig';\r\nimport { SignUpForm } from './forms/SignUpForm';\r\nimport { emailSchema, createPasswordSchema } from '../lib/validation';\r\n\r\ntype SignUpStep = 'form' | 'awaiting-verification';\r\n\r\nexport interface SignUpProps {\r\n title?: string;\r\n subtitle?: string;\r\n emailLabel?: string;\r\n emailPlaceholder?: string;\r\n passwordLabel?: string;\r\n passwordPlaceholder?: string;\r\n submitButtonText?: string;\r\n loadingButtonText?: string;\r\n signInText?: string;\r\n signInLinkText?: string;\r\n signInUrl?: string;\r\n dividerText?: string;\r\n onError?: (error: Error) => void;\r\n}\r\n\r\n/**\r\n * Pre-built sign-up component with full authentication logic.\r\n *\r\n * @component\r\n * @example\r\n * ```tsx\r\n * <SignUp\r\n * onError={(error) => console.error('Error:', error)}\r\n * />\r\n *\r\n * ```\r\n */\r\nexport function SignUp({ onError, ...uiProps }: SignUpProps) {\r\n const { signUp, verifyEmail, loginWithOAuth } = useInsforge();\r\n const { authConfig } = usePublicAuthConfig();\r\n const [email, setEmail] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [error, setError] = useState('');\r\n const [loading, setLoading] = useState(false);\r\n const [step, setStep] = useState<SignUpStep>('form');\r\n const [oauthLoading] = useState<OAuthProvidersSchema | null>(null);\r\n\r\n const searchParams = useSearchParams();\r\n const redirectUrl = searchParams.get('redirect');\r\n\r\n async function handleSubmit(e: FormEvent<HTMLFormElement>) {\r\n e.preventDefault();\r\n setLoading(true);\r\n setError('');\r\n\r\n // Check if authConfig is loaded\r\n if (!authConfig) {\r\n setError('Configuration not loaded. Please refresh the page.');\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // Validate email using Zod schema\r\n const emailValidation = emailSchema.safeParse(email);\r\n if (!emailValidation.success) {\r\n const firstError = emailValidation.error.issues[0];\r\n setError(firstError.message);\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // Validate password using dynamic Zod schema based on config\r\n const passwordZodSchema = createPasswordSchema({\r\n minLength: authConfig.passwordMinLength,\r\n requireUppercase: authConfig.requireUppercase,\r\n requireLowercase: authConfig.requireLowercase,\r\n requireNumber: authConfig.requireNumber,\r\n requireSpecialChar: authConfig.requireSpecialChar,\r\n });\r\n\r\n const passwordValidation = passwordZodSchema.safeParse(password);\r\n if (!passwordValidation.success) {\r\n const firstError = passwordValidation.error.issues[0];\r\n setError(firstError.message);\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n try {\r\n const result = await signUp(emailValidation.data, password);\r\n if ('error' in result) {\r\n throw new Error(result.error);\r\n }\r\n\r\n // Check if email verification is required\r\n if (result.requireEmailVerification && !result.accessToken) {\r\n setStep('awaiting-verification');\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // If we have an access token, proceed with success callback\r\n if (result.accessToken && result.user) {\r\n const csrfToken = result.csrfToken;\r\n const finalUrl = new URL(result.redirectTo || redirectUrl || '', window.location.origin);\r\n finalUrl.searchParams.set('access_token', result.accessToken);\r\n finalUrl.searchParams.set('user_id', result.user.id);\r\n finalUrl.searchParams.set('email', result.user.email);\r\n finalUrl.searchParams.set('name', result.user.profile?.name || '');\r\n if (csrfToken) {\r\n finalUrl.searchParams.set('csrf_token', csrfToken);\r\n }\r\n window.location.href = finalUrl.toString();\r\n }\r\n } catch (err: unknown) {\r\n const errorMessage = err instanceof Error ? err.message : 'Sign up failed';\r\n setError(errorMessage);\r\n if (onError) {\r\n onError(new Error(errorMessage));\r\n }\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function handleVerifyCode(code: string) {\r\n setError('');\r\n try {\r\n const result = await verifyEmail(code, email);\r\n\r\n if (!result) {\r\n throw new Error('Verification failed');\r\n }\r\n\r\n const finalUrl = new URL(result.redirectTo || redirectUrl || '', window.location.origin);\r\n finalUrl.searchParams.set('access_token', result.accessToken);\r\n finalUrl.searchParams.set('user_id', result.user.id);\r\n finalUrl.searchParams.set('email', result.user.email);\r\n finalUrl.searchParams.set('name', result.user.profile?.name || '');\r\n if (result.csrfToken) {\r\n finalUrl.searchParams.set('csrf_token', result.csrfToken);\r\n }\r\n window.location.href = finalUrl.toString();\r\n } catch (err: unknown) {\r\n const errorMessage = err instanceof Error ? err.message : 'Invalid verification code';\r\n setError(errorMessage);\r\n }\r\n }\r\n\r\n function handleOAuth(provider: OAuthProvidersSchema) {\r\n try {\r\n void loginWithOAuth(provider, redirectUrl || '');\r\n } catch (err: unknown) {\r\n const errorMessage = err instanceof Error ? err.message : 'OAuth login failed';\r\n setError(errorMessage);\r\n if (onError) {\r\n onError(new Error(errorMessage));\r\n }\r\n }\r\n }\r\n\r\n // If email auth is disabled after loading, don't show the form\r\n if (!authConfig) {\r\n return null;\r\n }\r\n\r\n return (\r\n <SignUpForm\r\n email={email}\r\n password={password}\r\n onEmailChange={setEmail}\r\n onPasswordChange={setPassword}\r\n onSubmit={(e) => void handleSubmit(e)}\r\n error={error}\r\n loading={loading}\r\n oauthLoading={oauthLoading}\r\n onOAuthClick={handleOAuth}\r\n authConfig={authConfig}\r\n showVerificationStep={step === 'awaiting-verification'}\r\n onVerifyCode={handleVerifyCode}\r\n {...uiProps}\r\n />\r\n );\r\n}\r\n","import {\n AuthContainer,\n AuthHeader,\n AuthErrorBanner,\n AuthFormField,\n AuthSubmitButton,\n AuthLink,\n AuthResetPasswordVerificationStep,\n} from '../atoms';\nimport type { FormEvent } from 'react';\nimport { theme } from '../../styles/theme';\n\ntype ResetPasswordMethod = 'code' | 'link';\n\nexport interface ForgotPasswordFormProps {\n email: string;\n onEmailChange: (email: string) => void;\n onSubmit: (e: FormEvent<HTMLFormElement>) => void;\n error?: string;\n loading?: boolean;\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n backToSignInText?: string;\n backToSignInUrl?: string;\n showVerificationStep?: boolean;\n resetPasswordMethod?: ResetPasswordMethod;\n onVerifyCode?: (code: string) => Promise<void>;\n onResendEmail?: () => Promise<void>;\n}\n\n/**\n * Pre-built forgot password form component (UI only, no business logic).\n */\nexport function ForgotPasswordForm({\n email,\n onEmailChange,\n onSubmit,\n error,\n loading = false,\n title = 'Forgot Password?',\n subtitle = \"Enter your email address and we'll send you a {method} to reset your password.\",\n emailLabel = 'Email',\n emailPlaceholder = 'example@email.com',\n submitButtonText = 'Reset Password',\n loadingButtonText = 'Sending...',\n backToSignInText = 'Remember your password?',\n backToSignInUrl = '/sign-in',\n showVerificationStep = false,\n resetPasswordMethod = 'code',\n onVerifyCode,\n onResendEmail,\n}: ForgotPasswordFormProps) {\n const displaySubtitle = subtitle.replace('{method}', resetPasswordMethod);\n\n return (\n <AuthContainer>\n <AuthHeader title={title} subtitle={displaySubtitle} />\n\n <AuthErrorBanner error={error || ''} />\n\n {showVerificationStep ? (\n <AuthResetPasswordVerificationStep\n email={email}\n method={resetPasswordMethod}\n onVerifyCode={onVerifyCode}\n onResendEmail={onResendEmail || (async () => {})}\n />\n ) : (\n <form\n onSubmit={onSubmit}\n noValidate\n style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing[6] }}\n >\n <AuthFormField\n id=\"email\"\n type=\"email\"\n label={emailLabel}\n placeholder={emailPlaceholder}\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n required\n autoComplete=\"email\"\n />\n\n <AuthSubmitButton isLoading={loading} disabled={loading}>\n {loading ? loadingButtonText : submitButtonText}\n </AuthSubmitButton>\n </form>\n )}\n\n {!showVerificationStep && (\n <AuthLink text={backToSignInText} linkText=\"Back to Sign In\" href={backToSignInUrl} />\n )}\n </AuthContainer>\n );\n}\n","import {\n AuthContainer,\n AuthHeader,\n AuthErrorBanner,\n AuthPasswordField,\n AuthSubmitButton,\n} from '../atoms';\nimport type { FormEvent } from 'react';\nimport type { AuthConfig } from '../../types';\nimport { theme } from '../../styles/theme';\nimport {\n VerifyStatusContainer,\n VerifyStatusSuccessContent,\n VerifyStatusSuccessIcon,\n VerifyStatusSuccessIconSvg,\n VerifyStatusTextCenter,\n} from './styled';\n\nexport interface ResetPasswordFormProps {\n newPassword: string;\n confirmPassword: string;\n onNewPasswordChange: (password: string) => void;\n onConfirmPasswordChange: (password: string) => void;\n onSubmit: (e: FormEvent<HTMLFormElement>) => void;\n error?: string;\n loading?: boolean;\n success?: boolean;\n authConfig: AuthConfig;\n title?: string;\n subtitle?: string;\n newPasswordLabel?: string;\n newPasswordPlaceholder?: string;\n confirmPasswordLabel?: string;\n confirmPasswordPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n successTitle?: string;\n}\n\n/**\n * Pre-built reset password form component (UI only, no business logic).\n */\nexport function ResetPasswordForm({\n newPassword,\n confirmPassword,\n onNewPasswordChange,\n onConfirmPasswordChange,\n onSubmit,\n error,\n loading = false,\n success = false,\n authConfig,\n title = 'Reset Password',\n subtitle = 'Enter your new password below.',\n newPasswordLabel = 'New Password',\n newPasswordPlaceholder = '••••••',\n confirmPasswordLabel = 'Confirm Password',\n confirmPasswordPlaceholder = '••••••',\n submitButtonText = 'Reset Password',\n loadingButtonText = 'Resetting...',\n successTitle = 'Password Reset Successful!',\n}: ResetPasswordFormProps) {\n let successMessage =\n 'Your password has been successfully reset. You can close this page and sign in with your new password.';\n if (authConfig && authConfig.verifyEmailMethod === 'code') {\n successMessage =\n 'Your password has been successfully reset. You can wait for redirect to sign in with your new password.';\n }\n\n // Success state\n if (success) {\n return (\n <AuthContainer>\n <VerifyStatusContainer $stretch>\n <VerifyStatusSuccessContent>\n <VerifyStatusSuccessIcon>\n <VerifyStatusSuccessIconSvg>\n <svg\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path d=\"M5 13l4 4L19 7\" />\n </svg>\n </VerifyStatusSuccessIconSvg>\n </VerifyStatusSuccessIcon>\n <VerifyStatusTextCenter style={{ fontSize: '1.5rem', fontWeight: 600 }}>\n {successTitle}\n </VerifyStatusTextCenter>\n <VerifyStatusTextCenter style={{ color: theme.colors.textSecondary }}>\n {successMessage}\n </VerifyStatusTextCenter>\n </VerifyStatusSuccessContent>\n </VerifyStatusContainer>\n </AuthContainer>\n );\n }\n\n return (\n <AuthContainer>\n <AuthHeader title={title} subtitle={subtitle} />\n\n <AuthErrorBanner error={error || ''} />\n\n <form\n onSubmit={onSubmit}\n noValidate\n style={{ display: 'flex', flexDirection: 'column', gap: theme.spacing[6] }}\n >\n <AuthPasswordField\n id=\"newPassword\"\n label={newPasswordLabel}\n placeholder={newPasswordPlaceholder}\n value={newPassword}\n onChange={(e) => onNewPasswordChange(e.target.value)}\n required\n autoComplete=\"new-password\"\n showStrengthIndicator\n authConfig={authConfig}\n />\n\n <AuthPasswordField\n id=\"confirmPassword\"\n label={confirmPasswordLabel}\n placeholder={confirmPasswordPlaceholder}\n value={confirmPassword}\n onChange={(e) => onConfirmPasswordChange(e.target.value)}\n required\n autoComplete=\"new-password\"\n authConfig={authConfig}\n />\n\n <AuthSubmitButton isLoading={loading} disabled={loading}>\n {loading ? loadingButtonText : submitButtonText}\n </AuthSubmitButton>\n </form>\n </AuthContainer>\n );\n}\n","import { useState, FormEvent } from 'react';\nimport { useSearchParams } from '../navigation';\nimport { useInsforge } from '../provider/InsforgeProvider';\nimport { usePublicAuthConfig } from '../hooks/usePublicAuthConfig';\nimport { ForgotPasswordForm } from './forms/ForgotPasswordForm';\nimport { ResetPasswordForm } from './forms/ResetPasswordForm';\nimport { emailSchema, createPasswordSchema } from '../lib/validation';\nimport { resolveAuthUrl } from '../lib/path-utils';\n\ntype ForgotPasswordStep = 'email' | 'password';\n\nexport interface ForgotPasswordProps {\n /** Text customization */\n title?: string;\n subtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n backToSignInText?: string;\n /** Callback when an error occurs */\n onError?: (error: Error) => void;\n}\n\n/**\n * Pre-built forgot password component with full business logic.\n *\n * Supports two password reset methods (auto-detected from backend config):\n * - **Link method**: Two-step flow (email → check email message)\n * User receives an email with a reset link to complete the process in a new tab\n * - **Code method**: Three-step flow (email → verify code → reset password)\n * User receives a verification code, enters it, then sets a new password\n *\n * @component\n * @example\n * ```tsx\n * <ForgotPassword\n * onError={(error) => console.error('Error:', error)}\n * />\n * ```\n */\nexport function ForgotPassword({ onError, ...uiProps }: ForgotPasswordProps) {\n const { sendResetPasswordEmail, exchangeResetPasswordToken, resetPassword } = useInsforge();\n const { authConfig } = usePublicAuthConfig();\n const searchParams = useSearchParams();\n\n const [step, setStep] = useState<ForgotPasswordStep>('email');\n const [email, setEmail] = useState('');\n const [resetToken, setResetToken] = useState('');\n const [newPassword, setNewPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const [success, setSuccess] = useState(false);\n const [showVerificationStep, setShowVerificationStep] = useState(false);\n\n // Step 1: Send reset email\n async function handleEmailSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setLoading(true);\n setError('');\n\n // Validate email using Zod schema\n const emailValidation = emailSchema.safeParse(email);\n if (!emailValidation.success) {\n const firstError = emailValidation.error.issues[0];\n setError(firstError.message);\n setLoading(false);\n return;\n }\n\n try {\n const result = await sendResetPasswordEmail(emailValidation.data);\n\n if (result?.success) {\n // Show verification step (link or code)\n setShowVerificationStep(true);\n } else {\n const errorMessage = result?.message || 'Failed to send reset email';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Failed to send reset email';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n } finally {\n setLoading(false);\n }\n }\n\n // Step 2: Verify code and get reset token (for code method)\n async function handleVerifyCode(code: string) {\n setError('');\n try {\n const result = await exchangeResetPasswordToken(email, code);\n\n if ('error' in result) {\n throw new Error(result.error.message || 'Failed to verify code');\n }\n\n if (result.token) {\n setResetToken(result.token);\n setStep('password');\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Invalid verification code';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n }\n\n // Resend reset email\n async function handleResendEmail() {\n await sendResetPasswordEmail(email);\n }\n\n // Step 3: Reset password\n async function handleResetPasswordSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setLoading(true);\n setError('');\n\n // Check passwords match\n if (newPassword !== confirmPassword) {\n setError('Passwords do not match');\n setLoading(false);\n return;\n }\n\n // Validate password using dynamic Zod schema\n if (!authConfig) {\n setError('Configuration not loaded');\n setLoading(false);\n return;\n }\n\n const passwordZodSchema = createPasswordSchema({\n minLength: authConfig.passwordMinLength,\n requireUppercase: authConfig.requireUppercase,\n requireLowercase: authConfig.requireLowercase,\n requireNumber: authConfig.requireNumber,\n requireSpecialChar: authConfig.requireSpecialChar,\n });\n\n const passwordValidation = passwordZodSchema.safeParse(newPassword);\n if (!passwordValidation.success) {\n const firstError = passwordValidation.error.issues[0];\n setError(firstError.message);\n setLoading(false);\n return;\n }\n\n try {\n const result = await resetPassword(resetToken, newPassword);\n\n if (result?.message) {\n setSuccess(true);\n // Navigate to sign-in with all search params preserved and proper base path handling\n const signInUrl = resolveAuthUrl('/sign-in', searchParams);\n // Redirect after a short delay to show success message\n setTimeout(() => {\n window.location.href = signInUrl;\n }, 2000);\n } else {\n const errorMessage = 'Failed to reset password';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Failed to reset password';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n } finally {\n setLoading(false);\n }\n }\n\n // If email auth config not loaded yet\n if (!authConfig) {\n return null;\n }\n\n // Step 1 & 2: Email input and verification (handled by ForgotPasswordForm)\n if (step === 'email') {\n return (\n <ForgotPasswordForm\n email={email}\n onEmailChange={setEmail}\n onSubmit={(e) => {\n void handleEmailSubmit(e);\n }}\n error={error}\n loading={loading}\n showVerificationStep={showVerificationStep}\n resetPasswordMethod={authConfig.resetPasswordMethod}\n onVerifyCode={handleVerifyCode}\n onResendEmail={handleResendEmail}\n {...uiProps}\n />\n );\n }\n\n // Step 3: Password reset (only for code method)\n // Use ResetPasswordForm with the obtained resetToken\n return (\n <ResetPasswordForm\n newPassword={newPassword}\n confirmPassword={confirmPassword}\n onNewPasswordChange={setNewPassword}\n onConfirmPasswordChange={setConfirmPassword}\n onSubmit={(e) => void handleResetPasswordSubmit(e)}\n error={error}\n loading={loading}\n success={success}\n authConfig={authConfig}\n {...uiProps}\n />\n );\n}\n","import { useState, FormEvent } from 'react';\nimport { useSearchParams } from '../navigation';\nimport { useInsforge } from '../provider/InsforgeProvider';\nimport { usePublicAuthConfig } from '../hooks/usePublicAuthConfig';\nimport { ResetPasswordForm } from './forms/ResetPasswordForm';\nimport { AuthContainer, AuthHeader } from './atoms';\nimport { createPasswordSchema } from '../lib/validation';\n\nexport interface ResetPasswordProps {\n /** Text customization */\n title?: string;\n subtitle?: string;\n newPasswordLabel?: string;\n newPasswordPlaceholder?: string;\n confirmPasswordLabel?: string;\n confirmPasswordPlaceholder?: string;\n submitButtonText?: string;\n loadingButtonText?: string;\n\n /** Callback when an error occurs */\n onError?: (error: Error) => void;\n}\n\n/**\n * Pre-built reset password page component with full business logic.\n *\n * Automatically reads the reset token from URL query parameter (?token=xxx).\n * Shows an error if token is missing.\n *\n * @component\n * @example\n * ```tsx\n * // Used at /reset-password?token=xxxxx\n * <ResetPassword />\n * ```\n */\nexport function ResetPassword({ onError, ...uiProps }: ResetPasswordProps) {\n const searchParams = useSearchParams();\n const token = searchParams.get('token');\n const { resetPassword } = useInsforge();\n const { authConfig } = usePublicAuthConfig();\n const [newPassword, setNewPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const [success, setSuccess] = useState(false);\n\n async function handleSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setLoading(true);\n setError('');\n\n // Check if authConfig is loaded\n if (!authConfig) {\n setError('Configuration not loaded. Please refresh the page.');\n setLoading(false);\n return;\n }\n\n // Check if passwords match\n if (newPassword !== confirmPassword) {\n setError('Passwords do not match');\n setLoading(false);\n return;\n }\n\n // Validate token\n if (!token) {\n setError('Reset token is missing');\n setLoading(false);\n return;\n }\n\n // Validate password using dynamic Zod schema based on config\n const passwordZodSchema = createPasswordSchema({\n minLength: authConfig.passwordMinLength,\n requireUppercase: authConfig.requireUppercase,\n requireLowercase: authConfig.requireLowercase,\n requireNumber: authConfig.requireNumber,\n requireSpecialChar: authConfig.requireSpecialChar,\n });\n\n const passwordValidation = passwordZodSchema.safeParse(newPassword);\n if (!passwordValidation.success) {\n const firstError = passwordValidation.error.issues[0];\n setError(firstError.message);\n setLoading(false);\n return;\n }\n\n try {\n const result = await resetPassword(token, newPassword);\n\n if (result?.message) {\n setSuccess(true);\n } else {\n const errorMessage = 'Failed to reset password';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n }\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Failed to reset password';\n setError(errorMessage);\n if (onError) {\n onError(new Error(errorMessage));\n }\n } finally {\n setLoading(false);\n }\n }\n\n // If email auth config not loaded yet\n if (!authConfig) {\n return null;\n }\n\n // If no token, show error\n if (!token) {\n return (\n <AuthContainer>\n <AuthHeader title=\"Invalid Reset Link\" subtitle=\"\" />\n <div\n style={{\n padding: '1.5rem',\n backgroundColor: '#FEE2E2',\n borderRadius: '0.5rem',\n border: '1px solid #DC2626',\n }}\n >\n <p\n style={{\n fontSize: '0.875rem',\n color: '#DC2626',\n margin: 0,\n fontFamily: 'var(--if-font-family)',\n }}\n >\n The password reset link is missing or invalid. Please request a new password reset link.\n </p>\n </div>\n </AuthContainer>\n );\n }\n\n // If success, show completion message\n if (success) {\n return (\n <AuthContainer>\n <div\n style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '1rem' }}\n >\n <div\n style={{\n width: '4rem',\n height: '4rem',\n borderRadius: '50%',\n backgroundColor: '#D1FAE5',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <svg\n style={{ width: '2rem', height: '2rem', color: '#059669' }}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path d=\"M5 13l4 4L19 7\" />\n </svg>\n </div>\n <h2\n style={{\n fontSize: '1.5rem',\n fontWeight: 600,\n color: '#000',\n margin: 0,\n textAlign: 'center',\n fontFamily: 'var(--if-font-family)',\n }}\n >\n Password Reset Successfully\n </h2>\n <p\n style={{\n fontSize: '0.875rem',\n color: '#828282',\n textAlign: 'center',\n margin: 0,\n fontFamily: 'var(--if-font-family)',\n }}\n >\n Your password has been reset successfully. You can now close this page and return to the\n login page in your original tab.\n </p>\n </div>\n </AuthContainer>\n );\n }\n\n // Show reset password form\n return (\n <ResetPasswordForm\n newPassword={newPassword}\n confirmPassword={confirmPassword}\n onNewPasswordChange={setNewPassword}\n onConfirmPasswordChange={setConfirmPassword}\n onSubmit={(e) => void handleSubmit(e)}\n error={error}\n loading={loading}\n success={false}\n authConfig={authConfig}\n {...uiProps}\n />\n );\n}\n","import { AuthContainer, AuthHeader } from '../atoms';\nimport {\n VerifyStatusContainer,\n VerifyStatusSpinner,\n VerifyStatusSuccessContent,\n VerifyStatusSuccessIcon,\n VerifyStatusSuccessIconSvg,\n VerifyStatusTextCenter,\n} from './styled';\nimport { theme } from '../../styles/theme';\n\nexport interface VerifyEmailStatusProps {\n status: 'verifying' | 'success' | 'error';\n error?: string;\n verifyingTitle?: string;\n successTitle?: string;\n successMessage?: string;\n errorTitle?: string;\n}\n\n/**\n * Email verification status display component (UI only, no business logic).\n */\nexport function VerifyEmailStatus({\n status,\n error,\n verifyingTitle = 'Verifying your email...',\n successTitle = 'Email Verified!',\n successMessage = 'Your email has been verified successfully. You can close this page and sign in to your app.',\n errorTitle = 'Verification Failed',\n}: VerifyEmailStatusProps) {\n if (status === 'verifying') {\n return (\n <AuthContainer>\n <VerifyStatusContainer>\n <AuthHeader title={verifyingTitle} />\n <VerifyStatusSpinner />\n </VerifyStatusContainer>\n </AuthContainer>\n );\n }\n\n if (status === 'error') {\n return (\n <AuthContainer>\n <VerifyStatusContainer $stretch>\n <AuthHeader\n title={errorTitle}\n subtitle={`${error || 'The verification link is invalid or has expired.'} Please try again or contact support if the problem persists. You can close this page and return to your app.`}\n />\n </VerifyStatusContainer>\n </AuthContainer>\n );\n }\n\n // Success state\n return (\n <AuthContainer>\n <VerifyStatusContainer $stretch>\n <VerifyStatusSuccessContent>\n <VerifyStatusSuccessIcon>\n <VerifyStatusSuccessIconSvg>\n <svg\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path d=\"M5 13l4 4L19 7\" />\n </svg>\n </VerifyStatusSuccessIconSvg>\n </VerifyStatusSuccessIcon>\n <VerifyStatusTextCenter style={{ fontSize: '1.5rem', fontWeight: 600 }}>\n {successTitle}\n </VerifyStatusTextCenter>\n <VerifyStatusTextCenter style={{ color: theme.colors.textSecondary }}>\n {successMessage}\n </VerifyStatusTextCenter>\n </VerifyStatusSuccessContent>\n </VerifyStatusContainer>\n </AuthContainer>\n );\n}\n","import { useEffect, useState } from 'react';\r\nimport { useInsforge } from '../provider/InsforgeProvider';\r\nimport { VerifyEmailStatus } from './forms/VerifyEmailStatus';\r\nimport { VerifyEmailResponse } from '@insforge/shared-schemas';\r\n\r\nexport interface VerifyEmailProps {\r\n /** Verification token (from URL query params) */\r\n token: string;\r\n /** Text customization */\r\n verifyingTitle?: string;\r\n successTitle?: string;\r\n successMessage?: string;\r\n errorTitle?: string;\r\n /** Callback when verification is successful */\r\n onSuccess?: (data: VerifyEmailResponse) => void;\r\n /** Callback when verification fails */\r\n onError?: (error: Error) => void;\r\n}\r\n\r\n/**\r\n * Pre-built email verification component with full business logic.\r\n *\r\n * Automatically verifies the email when mounted using the provided token.\r\n *\r\n * @component\r\n * @example\r\n * ```tsx\r\n * const token = new URLSearchParams(window.location.search).get('token');\r\n *\r\n * <VerifyEmail\r\n * token={token || ''}\r\n * onSuccess={(data) => {\r\n * console.log('Email verified!', data);\r\n * // Optionally navigate or close window\r\n * }}\r\n * onError={(error) => console.error('Verification failed:', error)}\r\n * />\r\n * ```\r\n */\r\nexport function VerifyEmail({ token, onSuccess, onError, ...uiProps }: VerifyEmailProps) {\r\n const { verifyEmail } = useInsforge();\r\n const [status, setStatus] = useState<'verifying' | 'success' | 'error'>('verifying');\r\n const [error, setError] = useState('');\r\n\r\n useEffect(() => {\r\n const verifyEmailFn = async () => {\r\n if (!token) {\r\n const errorMessage = 'Invalid verification link. Missing required token.';\r\n setError(errorMessage);\r\n setStatus('error');\r\n if (onError) {\r\n onError(new Error(errorMessage));\r\n }\r\n return;\r\n }\r\n\r\n try {\r\n const result = await verifyEmail(token);\r\n\r\n if (!result?.accessToken) {\r\n const errorMessage = result\r\n ? 'Verification succeeded but no access token received'\r\n : 'Email verification failed';\r\n setError(errorMessage);\r\n setStatus('error');\r\n if (onError) {\r\n onError(new Error(errorMessage));\r\n }\r\n return;\r\n }\r\n\r\n setStatus('success');\r\n if (onSuccess) {\r\n onSuccess(result);\r\n }\r\n } catch (err: unknown) {\r\n const errorMessage = err instanceof Error ? err.message : 'Email verification failed';\r\n setError(errorMessage);\r\n setStatus('error');\r\n if (onError) {\r\n onError(new Error(errorMessage));\r\n }\r\n }\r\n };\r\n\r\n void verifyEmailFn();\r\n }, [token, verifyEmail, onSuccess, onError]);\r\n\r\n return <VerifyEmailStatus status={status} error={error} {...uiProps} />;\r\n}\r\n","import { cloneElement, isValidElement } from 'react';\nimport { useInsforge } from '../provider/InsforgeProvider';\n\nexport interface SignOutButtonProps {\n children?: React.ReactNode;\n className?: string;\n afterSignOutUrl?: string;\n}\n\n/**\n * SignOutButton Component\n *\n * A simple unstyled button that signs out the current user.\n * If children is a valid React element, it will be rendered with the sign-out logic attached.\n *\n * @example\n * ```tsx\n * <SignOutButton />\n * ```\n *\n * @example\n * ```tsx\n * <SignOutButton afterSignOutUrl=\"/goodbye\">\n * <button className=\"custom-button\">Logout</button>\n * </SignOutButton>\n * ```\n */\nexport function SignOutButton({ children, className, afterSignOutUrl = '/' }: SignOutButtonProps) {\n const { signOut } = useInsforge();\n\n const handleClick = async () => {\n await signOut();\n window.location.href = afterSignOutUrl;\n };\n\n if (children && isValidElement(children)) {\n const originalOnClick = (children.props as { onClick?: (e: React.MouseEvent) => void })\n ?.onClick;\n\n return cloneElement(children, {\n onClick: async (e: React.MouseEvent) => {\n await handleClick();\n if (originalOnClick) {\n originalOnClick(e);\n }\n },\n } as Record<string, unknown>);\n }\n\n // Default button\n return (\n <button type=\"button\" className={className} onClick={() => void handleClick()}>\n {children || 'Sign out'}\n </button>\n );\n}\n","/** @jsxImportSource @emotion/react */\r\nimport styled from '@emotion/styled';\r\nimport { theme } from '../styles/theme';\r\n\r\n/* ============================================\r\n USER BUTTON\r\n ============================================ */\r\nexport const UserButtonContainer = styled.div`\r\n position: relative;\r\n display: inline-block;\r\n`;\r\n\r\nexport const UserButtonButton = styled.button<{ $detailed?: boolean }>`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: ${theme.spacing[2]};\r\n padding: ${theme.spacing[2]};\r\n border-radius: ${(props) => (props.$detailed ? theme.radius.sm : theme.radius.full)};\r\n background-color: ${(props) => (props.$detailed ? theme.colors.bgWhite : 'transparent')};\r\n border: ${(props) => (props.$detailed ? `1px solid ${theme.colors.border}` : 'none')};\r\n cursor: pointer;\r\n transition: all ${theme.transition.base};\r\n\r\n &:hover {\r\n ${(props) =>\r\n props.$detailed\r\n ? `\r\n background-color: ${theme.colors.bgLight};\r\n opacity: 1;\r\n `\r\n : `\r\n opacity: 0.8;\r\n `}\r\n }\r\n`;\r\n\r\nexport const UserButtonAvatar = styled.div`\r\n width: 2rem;\r\n height: 2rem;\r\n border-radius: ${theme.radius.full};\r\n background-color: ${theme.colors.primary};\r\n color: ${theme.colors.bgWhite};\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-weight: 600;\r\n font-size: ${theme.fontSize.sm};\r\n font-family: ${theme.fontFamily.base};\r\n overflow: hidden;\r\n`;\r\n\r\nexport const UserButtonAvatarImage = styled.img`\r\n border-radius: ${theme.radius.full};\r\n object-fit: cover;\r\n width: 100%;\r\n height: 100%;\r\n`;\r\n\r\nexport const UserButtonAvatarInitials = styled.span`\r\n color: ${theme.colors.bgWhite};\r\n font-weight: 600;\r\n font-size: ${theme.fontSize.sm};\r\n`;\r\n\r\nexport const UserButtonInfo = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 0.125rem;\r\n`;\r\n\r\nexport const UserButtonName = styled.div`\r\n font-size: ${theme.fontSize.sm};\r\n font-weight: 600;\r\n color: ${theme.colors.text};\r\n line-height: 1.25rem;\r\n text-align: left;\r\n font-family: ${theme.fontFamily.base};\r\n`;\r\n\r\nexport const UserButtonEmail = styled.div`\r\n font-size: ${theme.fontSize.xs};\r\n color: ${theme.colors.textSecondary};\r\n line-height: 1rem;\r\n text-align: left;\r\n font-family: ${theme.fontFamily.base};\r\n`;\r\n\r\nexport const UserButtonMenu = styled.div<{\r\n $openUpward?: boolean;\r\n $horizontalOffset?: number;\r\n}>`\r\n position: absolute;\r\n ${(props) =>\r\n props.$openUpward\r\n ? `\r\n bottom: 100%;\r\n margin-bottom: ${theme.spacing[2]};\r\n `\r\n : `\r\n top: 100%;\r\n margin-top: ${theme.spacing[2]};\r\n `}\r\n left: 0;\r\n ${(props) =>\r\n props.$horizontalOffset\r\n ? `\r\n transform: translateX(${props.$horizontalOffset}px);\r\n `\r\n : ''}\r\n background-color: ${theme.colors.bgWhite};\r\n border: 1px solid ${theme.colors.border};\r\n border-radius: ${theme.radius.md};\r\n box-shadow: ${theme.shadow.lg};\r\n padding: ${theme.spacing[2]};\r\n min-width: 200px;\r\n z-index: 50;\r\n`;\r\n\r\nexport const UserButtonMenuItem = styled.button<{ $signout?: boolean }>`\r\n display: flex;\r\n align-items: center;\r\n gap: ${theme.spacing[2]};\r\n padding: ${theme.spacing[2]};\r\n border-radius: ${theme.radius.sm};\r\n cursor: pointer;\r\n transition: background-color ${theme.transition.fast};\r\n font-size: ${theme.fontSize.sm};\r\n color: ${(props) => (props.$signout ? theme.colors.error : theme.colors.text)};\r\n font-family: ${theme.fontFamily.base};\r\n background: none;\r\n border: none;\r\n width: 100%;\r\n text-align: left;\r\n\r\n &:hover {\r\n background-color: ${theme.colors.bgLight};\r\n }\r\n`;\r\n\r\nexport const UserButtonMenuItemIcon = styled.div`\r\n width: 1.25rem;\r\n height: 1.25rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n svg {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n`;\r\n\r\n/* ============================================\r\n USER PROFILE MODAL\r\n ============================================ */\r\nexport const ProfileModalOverlay = styled.div`\r\n position: fixed;\r\n inset: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 100;\r\n padding: ${theme.spacing[4]};\r\n`;\r\n\r\nexport const ProfileModalContainer = styled.div`\r\n background-color: ${theme.colors.bgWhite};\r\n border-radius: ${theme.radius.xl};\r\n box-shadow: ${theme.shadow.lg};\r\n width: 100%;\r\n max-width: 400px;\r\n max-height: 90vh;\r\n overflow: hidden;\r\n display: flex;\r\n flex-direction: column;\r\n font-family: ${theme.fontFamily.base};\r\n`;\r\n\r\nexport const ProfileModalHeader = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: ${theme.spacing[4]} ${theme.spacing[6]};\r\n border-bottom: 1px solid ${theme.colors.border};\r\n`;\r\n\r\nexport const ProfileModalTitle = styled.h2`\r\n font-size: ${theme.fontSize.lg};\r\n font-weight: ${theme.fontWeight.semibold};\r\n color: ${theme.colors.text};\r\n margin: 0;\r\n`;\r\n\r\nexport const ProfileModalCloseButton = styled.button`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 2rem;\r\n height: 2rem;\r\n border-radius: ${theme.radius.md};\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n color: ${theme.colors.textSecondary};\r\n transition: all ${theme.transition.fast};\r\n\r\n &:hover {\r\n background-color: ${theme.colors.bgLight};\r\n color: ${theme.colors.text};\r\n }\r\n\r\n svg {\r\n width: 1.25rem;\r\n height: 1.25rem;\r\n }\r\n`;\r\n\r\nexport const ProfileModalBody = styled.div`\r\n padding: ${theme.spacing[6]};\r\n overflow-y: auto;\r\n flex: 1;\r\n`;\r\n\r\nexport const ProfileAvatarSection = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n margin-bottom: ${theme.spacing[6]};\r\n`;\r\n\r\nexport const ProfileAvatar = styled.div`\r\n width: 5rem;\r\n height: 5rem;\r\n border-radius: ${theme.radius.full};\r\n background-color: ${theme.colors.primary};\r\n color: ${theme.colors.bgWhite};\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-weight: ${theme.fontWeight.semibold};\r\n font-size: ${theme.fontSize['2xl']};\r\n overflow: hidden;\r\n`;\r\n\r\nexport const ProfileAvatarImage = styled.img`\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n`;\r\n\r\nexport const ProfileFieldsContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${theme.spacing[4]};\r\n`;\r\n\r\nexport const ProfileField = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${theme.spacing[1]};\r\n`;\r\n\r\nexport const ProfileFieldLabel = styled.label`\r\n font-size: ${theme.fontSize.sm};\r\n font-weight: ${theme.fontWeight.medium};\r\n color: ${theme.colors.textSecondary};\r\n text-transform: capitalize;\r\n`;\r\n\r\nexport const ProfileFieldValue = styled.div`\r\n font-size: ${theme.fontSize.base};\r\n color: ${theme.colors.text};\r\n padding: ${theme.spacing[2]} 0;\r\n word-break: break-word;\r\n`;\r\n\r\nexport const ProfileFieldInput = styled.input`\r\n width: 100%;\r\n height: ${theme.sizes.input.height};\r\n padding: 0 ${theme.spacing[3]};\r\n border: 1px solid ${theme.colors.border};\r\n border-radius: ${theme.radius.md};\r\n font-size: ${theme.fontSize.base};\r\n font-family: ${theme.fontFamily.base};\r\n color: ${theme.colors.text};\r\n background-color: ${theme.colors.bgWhite};\r\n transition: border-color ${theme.transition.fast};\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: ${theme.colors.borderFocus};\r\n }\r\n\r\n &:disabled {\r\n background-color: ${theme.colors.bgLight};\r\n color: ${theme.colors.textSecondary};\r\n cursor: not-allowed;\r\n }\r\n`;\r\n\r\nexport const ProfileModalFooter = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n gap: ${theme.spacing[3]};\r\n padding: ${theme.spacing[4]} ${theme.spacing[6]};\r\n border-top: 1px solid ${theme.colors.border};\r\n`;\r\n\r\nexport const ProfileButton = styled.button<{ $primary?: boolean }>`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: ${theme.spacing[2]};\r\n height: ${theme.sizes.button.height};\r\n padding: 0 ${theme.spacing[4]};\r\n border-radius: ${theme.radius.md};\r\n font-size: ${theme.fontSize.sm};\r\n font-weight: ${theme.fontWeight.medium};\r\n font-family: ${theme.fontFamily.base};\r\n cursor: pointer;\r\n transition: all ${theme.transition.fast};\r\n\r\n ${(props) =>\r\n props.$primary\r\n ? `\r\n background-color: ${theme.colors.primary};\r\n color: ${theme.colors.bgWhite};\r\n border: none;\r\n\r\n &:hover:not(:disabled) {\r\n background-color: ${theme.colors.primaryHover};\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n `\r\n : `\r\n background-color: ${theme.colors.bgWhite};\r\n color: ${theme.colors.text};\r\n border: 1px solid ${theme.colors.border};\r\n\r\n &:hover:not(:disabled) {\r\n background-color: ${theme.colors.bgLight};\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n `}\r\n`;\r\n\r\nexport const ProfileSpinner = styled.div`\r\n width: 1rem;\r\n height: 1rem;\r\n border: 2px solid transparent;\r\n border-top-color: currentColor;\r\n border-radius: ${theme.radius.full};\r\n animation: spin 0.6s linear infinite;\r\n\r\n @keyframes spin {\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n`;\r\n","import { useState, useEffect, useCallback } from 'react';\r\nimport { X } from 'lucide-react';\r\nimport { useInsforge } from '../provider/InsforgeProvider';\r\nimport {\r\n ProfileModalOverlay,\r\n ProfileModalContainer,\r\n ProfileModalHeader,\r\n ProfileModalTitle,\r\n ProfileModalCloseButton,\r\n ProfileModalBody,\r\n ProfileAvatarSection,\r\n ProfileAvatar,\r\n ProfileAvatarImage,\r\n ProfileFieldsContainer,\r\n ProfileField,\r\n ProfileFieldLabel,\r\n ProfileFieldValue,\r\n ProfileFieldInput,\r\n ProfileModalFooter,\r\n ProfileButton,\r\n ProfileSpinner,\r\n} from './styled';\r\n\r\nexport interface UserProfileModalProps {\r\n /** Called when the modal is closed */\r\n onClose: () => void;\r\n /** Called when an error occurs */\r\n onError?: (error: string) => void;\r\n}\r\n\r\n/** Fields that should be read-only */\r\nconst READ_ONLY_FIELDS = ['id', 'email', 'avatar_url', 'created_at', 'updated_at'];\r\n\r\n/** Fields that should not be displayed */\r\nconst HIDDEN_FIELDS = ['id', 'avatar_url'];\r\n\r\n/** Format field label for display */\r\nfunction formatFieldLabel(key: string): string {\r\n return key\r\n .replace(/_/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .toLowerCase();\r\n}\r\n\r\n/**\r\n * User profile modal component.\r\n * Displays user profile information with edit capability for allowed fields.\r\n */\r\nexport function UserProfileModal({ onClose, onError }: UserProfileModalProps) {\r\n const { user, updateUser, isLoaded } = useInsforge();\r\n const [isEditing, setIsEditing] = useState(false);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [imageError, setImageError] = useState(false);\r\n const [formData, setFormData] = useState<Record<string, string>>({});\r\n\r\n // Initialize form data when user changes\r\n useEffect(() => {\r\n if (user) {\r\n const initialData: Record<string, string> = {};\r\n\r\n // Add dynamic profile fields\r\n if (user.profile) {\r\n Object.entries(user.profile).forEach(([key, value]) => {\r\n if (!HIDDEN_FIELDS.includes(key) && typeof value === 'string') {\r\n initialData[key] = value;\r\n }\r\n });\r\n }\r\n\r\n setFormData(initialData);\r\n }\r\n }, [user]);\r\n\r\n // Validate avatar URL when it changes\r\n useEffect(() => {\r\n setImageError(false);\r\n\r\n const avatarUrl = user?.profile?.avatar_url;\r\n if (!avatarUrl) {\r\n return;\r\n }\r\n\r\n const checkImageUrl = async () => {\r\n try {\r\n const response = await fetch(avatarUrl, {\r\n method: 'HEAD',\r\n cache: 'no-cache',\r\n });\r\n if (!response.ok) {\r\n setImageError(true);\r\n }\r\n } catch {\r\n setImageError(true);\r\n }\r\n };\r\n\r\n void checkImageUrl();\r\n }, [user?.profile?.avatar_url]);\r\n\r\n const handleFieldChange = useCallback((key: string, value: string) => {\r\n setFormData((prev) => ({\r\n ...prev,\r\n [key]: value,\r\n }));\r\n }, []);\r\n\r\n const handleSave = useCallback(async () => {\r\n if (!user) return;\r\n\r\n setIsSaving(true);\r\n\r\n try {\r\n // Separate core fields from dynamic profile fields\r\n const { name, ...dynamicFields } = formData;\r\n\r\n const updateData: Parameters<typeof updateUser>[0] = {\r\n profile: {\r\n name,\r\n },\r\n };\r\n\r\n // Add dynamic fields if any\r\n if (Object.keys(dynamicFields).length > 0) {\r\n updateData.profile = dynamicFields;\r\n }\r\n\r\n const result = await updateUser(updateData);\r\n\r\n if (result?.error) {\r\n onError?.(result.error);\r\n } else {\r\n setIsEditing(false);\r\n }\r\n } catch (error) {\r\n onError?.(error instanceof Error ? error.message : 'Failed to update profile');\r\n } finally {\r\n setIsSaving(false);\r\n }\r\n }, [user, formData, updateUser, onError]);\r\n\r\n const handleCancel = useCallback(() => {\r\n // Reset form data to current user values\r\n if (user) {\r\n const resetData: Record<string, string> = {\r\n name: user.profile?.name || '',\r\n };\r\n\r\n if (user.profile) {\r\n Object.entries(user.profile).forEach(([key, value]) => {\r\n if (!HIDDEN_FIELDS.includes(key) && typeof value === 'string') {\r\n resetData[key] = value;\r\n }\r\n });\r\n }\r\n\r\n setFormData(resetData);\r\n }\r\n setIsEditing(false);\r\n }, [user]);\r\n\r\n const handleOverlayClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n if (e.target === e.currentTarget) {\r\n onClose();\r\n }\r\n },\r\n [onClose]\r\n );\r\n\r\n // Handle escape key\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n if (isEditing) {\r\n handleCancel();\r\n } else {\r\n onClose();\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener('keydown', handleEscape);\r\n return () => document.removeEventListener('keydown', handleEscape);\r\n }, [isEditing, handleCancel, onClose]);\r\n\r\n if (!isLoaded || !user) {\r\n return null;\r\n }\r\n\r\n const initials = user.profile?.name\r\n ? user.profile.name.charAt(0).toUpperCase()\r\n : user.email.split('@')[0].slice(0, 2).toUpperCase();\r\n\r\n // Build fields list: core fields + dynamic fields\r\n const fields: Array<{ key: string; value: string; readOnly: boolean }> = [];\r\n\r\n // Email is always first and read-only\r\n fields.push({ key: 'email', value: user.email, readOnly: true });\r\n\r\n // Name is editable\r\n fields.push({\r\n key: 'name',\r\n value: isEditing ? formData.name || '' : user.profile?.name || '',\r\n readOnly: false,\r\n });\r\n\r\n // Add dynamic profile fields\r\n if (user.profile) {\r\n Object.entries(user.profile).forEach(([key, value]) => {\r\n if (!HIDDEN_FIELDS.includes(key) && typeof value === 'string') {\r\n fields.push({\r\n key,\r\n value: isEditing ? (formData[key] ?? value) : value,\r\n readOnly: READ_ONLY_FIELDS.includes(key),\r\n });\r\n }\r\n });\r\n }\r\n\r\n return (\r\n <ProfileModalOverlay onClick={handleOverlayClick}>\r\n <ProfileModalContainer onClick={(e) => e.stopPropagation()}>\r\n <ProfileModalHeader>\r\n <ProfileModalTitle>Profile</ProfileModalTitle>\r\n <ProfileModalCloseButton onClick={onClose} aria-label=\"Close\">\r\n <X />\r\n </ProfileModalCloseButton>\r\n </ProfileModalHeader>\r\n\r\n <ProfileModalBody>\r\n <ProfileAvatarSection>\r\n <ProfileAvatar>\r\n {user.profile?.avatar_url && !imageError ? (\r\n <ProfileAvatarImage\r\n src={user.profile.avatar_url}\r\n alt={user.profile?.name || user.email}\r\n onError={() => setImageError(true)}\r\n />\r\n ) : (\r\n initials\r\n )}\r\n </ProfileAvatar>\r\n </ProfileAvatarSection>\r\n\r\n <ProfileFieldsContainer>\r\n {fields.map(({ key, value, readOnly }) => (\r\n <ProfileField key={key}>\r\n <ProfileFieldLabel>{formatFieldLabel(key)}</ProfileFieldLabel>\r\n {isEditing && !readOnly ? (\r\n <ProfileFieldInput\r\n type=\"text\"\r\n value={formData[key] ?? value}\r\n onChange={(e) => handleFieldChange(key, e.target.value)}\r\n disabled={isSaving}\r\n />\r\n ) : (\r\n <ProfileFieldValue>{value || '-'}</ProfileFieldValue>\r\n )}\r\n </ProfileField>\r\n ))}\r\n </ProfileFieldsContainer>\r\n </ProfileModalBody>\r\n\r\n <ProfileModalFooter>\r\n {isEditing ? (\r\n <>\r\n <ProfileButton onClick={handleCancel} disabled={isSaving}>\r\n Cancel\r\n </ProfileButton>\r\n <ProfileButton $primary onClick={() => void handleSave()} disabled={isSaving}>\r\n {isSaving && <ProfileSpinner />}\r\n {isSaving ? 'Saving...' : 'Save'}\r\n </ProfileButton>\r\n </>\r\n ) : (\r\n <ProfileButton $primary onClick={() => setIsEditing(true)}>\r\n Edit Profile\r\n </ProfileButton>\r\n )}\r\n </ProfileModalFooter>\r\n </ProfileModalContainer>\r\n </ProfileModalOverlay>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\nimport { LogOut, User } from 'lucide-react';\r\nimport { useInsforge } from '../provider/InsforgeProvider';\r\nimport { SignOutButton } from './SignOutButton';\r\nimport { UserProfileModal } from './UserProfileModal';\r\nimport {\r\n UserButtonContainer,\r\n UserButtonButton,\r\n UserButtonAvatar,\r\n UserButtonAvatarImage,\r\n UserButtonAvatarInitials,\r\n UserButtonInfo,\r\n UserButtonName,\r\n UserButtonEmail,\r\n UserButtonMenu,\r\n UserButtonMenuItem,\r\n UserButtonMenuItemIcon,\r\n} from './styled';\r\n\r\nexport interface UserButtonProps {\r\n afterSignOutUrl?: string;\r\n mode?: 'detailed' | 'simple';\r\n /** Whether to show the Profile menu item (default: true) */\r\n showProfile?: boolean;\r\n /** Callback when profile update fails */\r\n onProfileError?: (error: string) => void;\r\n}\r\n\r\n/**\r\n * User profile button with dropdown menu and sign-out functionality.\r\n *\r\n * Styles are powered by Emotion CSS-in-JS to prevent FOUC in SSR environments.\r\n */\r\nexport function UserButton({\r\n afterSignOutUrl = '/',\r\n mode = 'simple',\r\n showProfile = true,\r\n onProfileError,\r\n}: UserButtonProps) {\r\n const { user } = useInsforge();\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [showProfileModal, setShowProfileModal] = useState(false);\r\n const [imageError, setImageError] = useState(false);\r\n const [openUpward, setOpenUpward] = useState(false);\r\n const [horizontalOffset, setHorizontalOffset] = useState(0);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n\r\n // Validate image URL when avatarUrl changes\r\n useEffect(() => {\r\n setImageError(false);\r\n\r\n const avatarUrl = user?.profile?.avatar_url;\r\n if (!avatarUrl) {\r\n return;\r\n }\r\n\r\n const checkImageUrl = async () => {\r\n try {\r\n const response = await fetch(avatarUrl, {\r\n method: 'HEAD',\r\n cache: 'no-cache',\r\n });\r\n if (!response.ok) {\r\n setImageError(true);\r\n }\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n console.error('Error checking image URL:', error.message);\r\n }\r\n setImageError(true);\r\n }\r\n };\r\n\r\n void checkImageUrl();\r\n }, [user?.profile?.avatar_url]);\r\n\r\n // Detect position and determine menu placement (vertical and horizontal)\r\n useEffect(() => {\r\n if (isOpen && dropdownRef.current) {\r\n const buttonRect = dropdownRef.current.getBoundingClientRect();\r\n const viewportHeight = window.innerHeight;\r\n const viewportWidth = window.innerWidth;\r\n\r\n // Vertical positioning\r\n const spaceBelow = viewportHeight - buttonRect.bottom;\r\n const spaceAbove = buttonRect.top;\r\n const menuHeight = 200; // Estimate\r\n const shouldOpenUpward = spaceBelow < menuHeight && spaceAbove > spaceBelow;\r\n setOpenUpward(shouldOpenUpward);\r\n\r\n // Horizontal positioning\r\n // We need to wait for next tick to get the menu's actual width\r\n requestAnimationFrame(() => {\r\n if (menuRef.current) {\r\n const menuWidth = menuRef.current.offsetWidth;\r\n const menuRight = buttonRect.left + menuWidth;\r\n const viewportPadding = 16; // 16px padding from viewport edge\r\n\r\n // If menu would overflow right edge of viewport\r\n if (menuRight > viewportWidth - viewportPadding) {\r\n // Calculate how much to shift left\r\n const overflow = menuRight - (viewportWidth - viewportPadding);\r\n setHorizontalOffset(-overflow);\r\n } else {\r\n setHorizontalOffset(0);\r\n }\r\n }\r\n });\r\n } else {\r\n // Reset when closed\r\n setHorizontalOffset(0);\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n function handleClickOutside(event: MouseEvent) {\r\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n }\r\n\r\n if (isOpen) {\r\n document.addEventListener('mousedown', handleClickOutside);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n }, [isOpen]);\r\n\r\n if (!user) {\r\n return null;\r\n }\r\n\r\n const initials = user.profile?.name\r\n ? user.profile.name.charAt(0).toUpperCase()\r\n : user.email.split('@')[0].slice(0, 2).toUpperCase();\r\n\r\n return (\r\n <UserButtonContainer ref={dropdownRef}>\r\n <UserButtonButton\r\n $detailed={mode === 'detailed'}\r\n onClick={() => setIsOpen(!isOpen)}\r\n aria-expanded={isOpen}\r\n aria-haspopup=\"true\"\r\n >\r\n <UserButtonAvatar>\r\n {user.profile?.avatar_url && !imageError ? (\r\n <UserButtonAvatarImage\r\n src={user.profile.avatar_url}\r\n alt={user.email}\r\n onError={() => setImageError(true)}\r\n />\r\n ) : (\r\n <UserButtonAvatarInitials>{initials}</UserButtonAvatarInitials>\r\n )}\r\n </UserButtonAvatar>\r\n {mode === 'detailed' && (\r\n <UserButtonInfo>\r\n {user.profile?.name && <UserButtonName>{user.profile.name}</UserButtonName>}\r\n <UserButtonEmail>{user.email}</UserButtonEmail>\r\n </UserButtonInfo>\r\n )}\r\n </UserButtonButton>\r\n\r\n {isOpen && (\r\n <UserButtonMenu ref={menuRef} $openUpward={openUpward} $horizontalOffset={horizontalOffset}>\r\n {showProfile && (\r\n <UserButtonMenuItem\r\n onClick={() => {\r\n setShowProfileModal(true);\r\n setIsOpen(false);\r\n }}\r\n >\r\n <UserButtonMenuItemIcon>\r\n <User />\r\n </UserButtonMenuItemIcon>\r\n Profile\r\n </UserButtonMenuItem>\r\n )}\r\n <SignOutButton afterSignOutUrl={afterSignOutUrl}>\r\n <UserButtonMenuItem $signout onClick={() => setIsOpen(false)}>\r\n <UserButtonMenuItemIcon>\r\n <LogOut />\r\n </UserButtonMenuItemIcon>\r\n Sign out\r\n </UserButtonMenuItem>\r\n </SignOutButton>\r\n </UserButtonMenu>\r\n )}\r\n\r\n {showProfileModal && (\r\n <UserProfileModal onClose={() => setShowProfileModal(false)} onError={onProfileError} />\r\n )}\r\n </UserButtonContainer>\r\n );\r\n}\r\n","import { useInsforge } from '../provider/InsforgeProvider';\nimport { useEffect, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport type { InsforgeUser } from '../types';\nimport { resolveAuthPath } from '../lib/path-utils';\n\nexport interface ProtectProps {\n children: ReactNode;\n fallback?: ReactNode;\n redirectTo?: string;\n condition?: (user: InsforgeUser) => boolean;\n onRedirect?: (url: string) => void;\n}\n\n/**\n * Protected route component that redirects unauthenticated users.\n *\n * @component\n * @example\n * ```tsx\n * // Basic usage\n * <Protect redirectTo=\"/sign-in\">\n * <Dashboard />\n * </Protect>\n *\n * // With custom redirect handler (e.g., for Next.js router)\n * <Protect\n * redirectTo=\"/sign-in\"\n * onRedirect={(url) => router.push(url)}\n * >\n * <AdminPanel />\n * </Protect>\n *\n * // With custom condition (role-based access)\n * <Protect\n * redirectTo=\"/unauthorized\"\n * condition={(user) => user.role === 'admin'}\n * >\n * <AdminContent />\n * </Protect>\n * ```\n *\n * @param {ReactNode} children - Content to protect\n * @param {ReactNode} [fallback] - Fallback UI while loading\n * @param {string} [redirectTo='/sign-in'] - Redirect URL\n * @param {function} [condition] - Custom access condition\n * @param {function} [onRedirect] - Custom redirect handler (default: window.location)\n */\nexport function Protect({\n children,\n fallback,\n redirectTo = '/sign-in',\n condition,\n onRedirect,\n}: ProtectProps): ReactNode {\n const { userId, user } = useInsforge();\n\n // Resolve redirect path with proper base path handling\n const resolvedRedirectTo = useMemo(() => resolveAuthPath(redirectTo), [redirectTo]);\n\n useEffect(() => {\n // undefined = not loaded yet, don't redirect\n // null = loaded and signed out, redirect\n // string = signed in, check condition\n if (userId === null) {\n // Not signed in, redirect\n if (onRedirect) {\n onRedirect(resolvedRedirectTo);\n } else {\n window.location.href = resolvedRedirectTo;\n }\n } else if (userId && condition && user) {\n // Signed in but condition failed, redirect\n if (!condition(user)) {\n if (onRedirect) {\n onRedirect(resolvedRedirectTo);\n } else {\n window.location.href = resolvedRedirectTo;\n }\n }\n }\n }, [userId, resolvedRedirectTo, condition, user, onRedirect]);\n\n // Show fallback while loading (undefined = not loaded)\n if (userId === undefined) {\n return fallback || <div className=\"insforge-loading\">Loading...</div>;\n }\n\n // Don't render if not signed in (null = signed out)\n if (userId === null) {\n return fallback || null;\n }\n\n // Don't render if condition fails\n if (condition && user && !condition(user)) {\n return fallback || null;\n }\n\n return <>{children}</>;\n}\n","import { useInsforge } from '../provider/InsforgeProvider';\nimport type { ReactNode } from 'react';\n\nexport interface ConditionalProps {\n children: ReactNode;\n}\n\n/**\n * Conditional component that renders children only when user is signed in.\n *\n * Uses userId to determine rendering:\n * - undefined = not loaded yet (SSR or before hydration) -> render null\n * - null = loaded, user signed out -> render null\n * - string = loaded, user signed in -> render children\n *\n * This prevents hydration mismatches in Next.js SSR by ensuring\n * consistent rendering between server and client initial render.\n *\n * @component\n * @example\n * ```tsx\n * <SignedIn>\n * <Dashboard />\n * </SignedIn>\n * ```\n *\n * @param {ReactNode} children - React nodes to render when user is authenticated\n * @returns {JSX.Element | null} Renders children when signed in, null otherwise\n */\nexport function SignedIn({ children }: ConditionalProps) {\n const { userId } = useInsforge();\n\n // undefined = not loaded yet, render null (prevents hydration mismatch)\n // null = loaded but signed out, render null\n // string = signed in, render children\n if (userId) {\n return <>{children}</>;\n }\n\n return null;\n}\n","import { useInsforge } from '../provider/InsforgeProvider';\nimport type { ReactNode } from 'react';\n\nexport interface ConditionalProps {\n children: ReactNode;\n}\n\n/**\n * Conditional component that renders children only when user is signed out.\n *\n * Uses userId to determine rendering:\n * - undefined = not loaded yet (SSR or before hydration) -> render null\n * - null = loaded, user signed out -> render children\n * - string = loaded, user signed in -> render null\n *\n * This prevents hydration mismatches in Next.js SSR by ensuring\n * consistent rendering between server and client initial render.\n *\n * @component\n * @example\n * ```tsx\n * <SignedOut>\n * <SignIn />\n * </SignedOut>\n * ```\n *\n * @param {ReactNode} children - React nodes to render when user is not authenticated\n * @returns {JSX.Element | null} Renders children when signed out, null otherwise\n */\nexport function SignedOut({ children }: ConditionalProps) {\n const { userId } = useInsforge();\n\n // undefined = not loaded yet, render null (prevents hydration mismatch)\n // null = loaded and signed out, render children\n // string = signed in, render null\n if (userId === null) {\n return <>{children}</>;\n }\n\n return null;\n}\n","import { cloneElement, isValidElement } from 'react';\nimport { useInsforge } from '../provider/InsforgeProvider';\n\nexport interface SignInButtonProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n/**\n * SignInButton Component\n *\n * A simple unstyled button that redirects to the hosted sign-in page.\n * If children is a valid React element, it will be rendered with the redirect logic attached.\n *\n * @example\n * ```tsx\n * <SignInButton />\n * ```\n *\n * @example\n * ```tsx\n * <SignInButton>\n * <button className=\"your-button\">Login</button>\n * </SignInButton>\n * ```\n */\nexport function SignInButton({ children, className }: SignInButtonProps) {\n const { afterSignInUrl, baseUrl } = useInsforge();\n\n const handleClick = () => {\n const redirectUrl = new URL(afterSignInUrl, window.location.origin).href;\n const authUrl = new URL('/auth/sign-in', baseUrl);\n authUrl.searchParams.set('redirect', redirectUrl);\n window.location.replace(authUrl.toString());\n };\n\n if (children && isValidElement(children)) {\n const originalOnClick = (children.props as { onClick?: (e: React.MouseEvent) => void })\n ?.onClick;\n\n return cloneElement(children, {\n onClick: (e: React.MouseEvent) => {\n handleClick();\n if (originalOnClick) {\n originalOnClick(e);\n }\n },\n } as Record<string, unknown>);\n }\n\n // Default button\n return (\n <button type=\"button\" className={className} onClick={handleClick}>\n {children || 'Sign in'}\n </button>\n );\n}\n","import { cloneElement, isValidElement } from 'react';\nimport { useInsforge } from '../provider/InsforgeProvider';\n\nexport interface SignUpButtonProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n/**\n * SignUpButton Component\n *\n * A simple unstyled button that redirects to the hosted sign-up page.\n * If children is a valid React element, it will be rendered with the redirect logic attached.\n *\n * @example\n * ```tsx\n * <SignUpButton />\n * ```\n *\n * @example\n * ```tsx\n * <SignUpButton>\n * <button className=\"fancy-button\">Register Now</button>\n * </SignUpButton>\n * ```\n */\nexport function SignUpButton({ children, className }: SignUpButtonProps) {\n const { afterSignInUrl, baseUrl } = useInsforge();\n\n const handleClick = () => {\n const redirectUrl = new URL(afterSignInUrl, window.location.origin).href;\n const authUrl = new URL('/auth/sign-up', baseUrl);\n authUrl.searchParams.set('redirect', redirectUrl);\n window.location.replace(authUrl.toString());\n };\n\n if (children && isValidElement(children)) {\n const originalOnClick = (children.props as { onClick?: (e: React.MouseEvent) => void })\n ?.onClick;\n\n return cloneElement(children, {\n onClick: (e: React.MouseEvent) => {\n handleClick();\n if (originalOnClick) {\n originalOnClick(e);\n }\n },\n } as Record<string, unknown>);\n }\n\n // Default button\n return (\n <button type=\"button\" className={className} onClick={handleClick}>\n {children || 'Sign up'}\n </button>\n );\n}\n","import { useInsforge } from '../provider/InsforgeProvider';\n\n/**\n * Hook to access authentication methods\n *\n * @returns Object containing:\n * - `signIn`: Function to sign in with email and password\n * - `signUp`: Function to sign up with email and password\n * - `signOut`: Function to sign out the current user\n * - `isLoaded`: Boolean indicating if auth state has been loaded\n * - `isSignedIn`: Boolean indicating if user is currently signed in\n *\n * @example\n * ```tsx\n * function LoginForm() {\n * const { signIn, signUp, signOut, isLoaded, isSignedIn } = useAuth();\n *\n * async function handleLogin(email: string, password: string) {\n * try {\n * await signIn(email, password);\n * // User is now signed in\n * } catch (error) {\n * console.error('Sign in failed:', error);\n * }\n * }\n *\n * if (!isLoaded) return <div>Loading...</div>;\n *\n * return (\n * <form onSubmit={(e) => { e.preventDefault(); handleLogin(email, password); }}>\n * {/* form fields *\\/}\n * </form>\n * );\n * }\n * ```\n */\nexport function useAuth() {\n const { signIn, signUp, signOut, isLoaded, isSignedIn } = useInsforge();\n return { signIn, signUp, signOut, isLoaded, isSignedIn };\n}\n","import { useInsforge } from '../provider/InsforgeProvider';\n\n/**\n * Hook to access current user data\n *\n * @returns Object containing:\n * - `user`: Current user object (InsforgeUser | null)\n * - `isLoaded`: Boolean indicating if auth state has been loaded\n * - `updateUser`: Function to update user profile data (returns { error: string } | null)\n * - `setUser`: Internal function to manually set user state\n *\n * @example\n * ```tsx\n * function UserProfile() {\n * const { user, isLoaded, updateUser } = useUser();\n *\n * if (!isLoaded) return <div>Loading...</div>;\n * if (!user) return <div>Not signed in</div>;\n *\n * async function handleUpdate(name: string) {\n * const result = await updateUser({ name });\n * if (result?.error) {\n * console.error(result.error);\n * } else {\n * console.log('User updated successfully');\n * }\n * }\n *\n * return (\n * <div>\n * <p>Email: {user.email}</p>\n * {user.name && <p>Name: {user.name}</p>}\n * {user.avatarUrl && <img src={user.avatarUrl} alt=\"Avatar\" />}\n * </div>\n * );\n * }\n * ```\n */\nexport function useUser() {\n const { user, isLoaded, updateUser, setUser } = useInsforge();\n return { user, isLoaded, updateUser, setUser };\n}\n"]}
|